この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
どうも!大阪オフィスの西村祐二です。
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を指定したデプロイ時に遭遇したエラーの対処方法について記載しました。
誰かの参考になれば幸いです。