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...
...