Serverless FrameworkでProfileが存在しないというエラーの対処法

どうも!大阪オフィスの西村祐二です。

AWS上でアプリケーションを開発する際に、STG用、本番用、開発用とプロファイルを分けてAssumeRoleして開発していくことがあると思います。

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-profiles.html

Serverless Frameworkでプロファイルを指定してサーバーレスアプリケーションをデプロイする際にProfile <profile-name> does not existというエラーになってしまう(2019/1/11時点)場面に遭遇しましたので、その対処法を備忘録かねてブログにしておきます。

環境

  • serverless framework
    • v1.35.1
  • node.js
    • v8.12.0
  • macOS
    • 10.14.2

解決法

もともと、指定したいプロファイルを~/.aws/configに記載していたのですが、

[profile hoge]
source_profile = default
role_arn = arn:aws:iam::123456777654:role/hoge
region = ap-northeast-1

~/.aws/credentialsにプロファイルの情報を記載するように変更します。これで、きちんとプロファイル指定することができました。

注意点としては、プロファイル情報をcredentialsファイルに設定するときは、プレフィックスの`profile`は不要となります。

[hoge]
source_profile = default
role_arn = arn:aws:iam::123456777654:role/hoge
region = ap-northeast-1

解決策2

$ export AWS_SDK_LOAD_CONFIG=1

上記コマンドで内部で使われているAWS_SDKで読み込み機能を有効にすることができます。

AWS_PROFILEの環境変数も利用することができるようになります。

さいごに

いかがだったでしょうか。

Serverless FrameworkでProfileを指定したデプロイ時に遭遇したエラーの対処方法について記載しました。

誰かの参考になれば幸いです。