💡

Serverless Framework で AWS SSO プロファイルが認識されない問題の解決方法

に公開

Serverless Framework で AWS SSO プロファイルを使用する際、「AWS profile doesn't seem to be configured」エラーに遭遇したことはありませんか。SSM パラメータの解決でエラーが発生し、デプロイができなくなる問題について、実際の事例とともに解決方法を簡単にまとめました。

発生した問題について

Serverless Framework で AWS SSO プロファイルを使ってデプロイを実行すると、次のようなエラーメッセージが表示されることがあります。

Error:
Cannot resolve serverless.yml: Variables resolution errored with:
  - Cannot resolve variable at "custom.userPoolClientId.development": AWS profile "default" doesn't seem to be configured,
  - Cannot resolve variable at "custom.userPoolClientId.production": AWS profile "default" doesn't seem to be configured,
  - Cannot resolve variable at "custom.hubspotAccessToken.default": AWS profile "default" doesn't seem to be configured,
  - Cannot resolve variable at "custom.hubspotAccessToken.production": AWS profile "default" doesn't seem to be configured

このエラーが発生する原因は、Serverless Framework が AWS SSO プロファイルを正しく認識できないためです。その結果、SSM パラメータの解決に失敗してしまいます。

serverless-better-credentials プラグインで解決する

この問題を解決するには、serverless-better-credentials プラグインを利用します。

プラグインのインストールから始めましょう。

npm install --save-dev serverless-better-credentials

次に、serverless.yml ファイルの plugins セクションにプラグインを追加します。

plugins:
  - serverless-better-credentials
  - serverless-prune-plugin  # 既存のプラグインがある場合

AWS SDK が設定ファイルを正しく読み込むために、環境変数の設定も必要です。

export AWS_SDK_LOAD_CONFIG=1

設定が完了したら、Serverless コマンドでデプロイを実行できます。

sls deploy --stage development
sls deploy --stage development --aws-profile default

プラグインが正しく動作していれば、ログに以下のようなコメントが出力されます。

[serverless-better-credentials]

Attempting to automatically open the SSO authorization page in your default browser.
✔ serverless-better-credentials: credentials resolved from config SsoCredentials: AWS_PROFILE (default)

Deploying shifter-userpools-trigger to stage development (us-east-1)
✔ Service deployed to stack shifter-userpools-trigger-development (82s)

もしうまく動かない場合は、SSO のセッションが切れている可能性もあります。ログインを再実行してみましょう。

# SSOログインの実行
aws sso login --profile default

まとめ

Serverless Framework で AWS SSO プロファイルを使用する際の問題は、serverless-better-credentials プラグインの導入によって解決できます。このプラグインにより、AWS SSO プロファイルの正しい認識が可能になり、SSM パラメータの正常な解決が実現されるでしょう。デプロイプロセスも安定化します。

複数の AWS アカウントを扱う開発環境において、この解決方法は特に威力を発揮するはずです。効率的な開発環境の構築に役立つでしょう。

参考資料

serverless-better-credentials GitHub

AWS CLI 公式ドキュメント - IAM Identity Center 認証の設定

Serverless Framework 公式ドキュメント

デジタルキューブ

Discussion