aws-vault で amplify init できない
Amplify のチュートリアルをやっていてamplify init
でさっそくつまづいた。
$ aws init
? Enter a name for the project myapp
? Enter a name for the environment dev
...
init failed
Error: ENOENT: no such file or directory, open '/Users/USERNAME/.aws/credentials'
at Object.openSync (fs.js:440:3)
at Proxy.readFileSync (fs.js:342:35)
...
aws-cli の認証情報が~/.aws/credentials
に存在しないためエラーが起きている。
しかしその認証情報は意図的にローカルに保管しないようにしているのであって、なんとかうまいこと動くようにしたい。
解決策
AWS CLI のレファレンス できちんと触れられていた。
~/.aws/config
のプロファイル情報に次のように追記する。
[profile PROFILE_NAME]
region=ap-northeast-1
mfa_serial=arn:aws:iam::AWS_ACCOUNT_MFA:mfa/MFA_NAME
+ credential_process=aws-vault exec PROFILE_NAME --json
こうしておけばaws-vault exec
経由でamplify
をCLIから実行できるようになった。
aws-vault exec PROFILE_NAME amplify init
を実行して設定項目を埋めていき、以下のようにこのプロファイルを指定すれば、正しく認証してAPIと通信してくれる。
? Do you want to use an AWS profile? Yes
? Please choose the profile you want to use PROFILE_NAME
⠙ Initializing project in the cloud...
...