目的
Serverless Frameworkを用いてAWSにデプロイする際に、IAMのユーザがMFAであった際に、セッショントークンが必要となる。その際のセッショントークンの取得方法と設定方法をまとめた。
環境
ShiroUz@MBP serverless % sls -v
Serverless: Running "serverless" installed locally (in service node_modules)
Framework Core: 2.66.1 (local)
Plugin: 5.5.1
SDK: 4.3.0
Components: 3.18.0
ShiroUz@MBP serverless % sw_vers
ProductName: macOS
ProductVersion: 11.6
BuildVersion: 20G165
ShiroUz@MBP serverless % aws --version
aws-cli/2.3.4 Python/3.9.7 Darwin/20.6.0 source/x86_64 prompt/off
セッショントークンの取得
MFAデバイスを使用しているため以下の対応が必要でした。
ShiroUz@MBP layer % aws sts get-session-token --serial-number MFA_ARN --token-code MFA_TOKEN_CODE --region us-east-1 --profile PROFILE_NAME
{
"Credentials": {
"AccessKeyId": "xxxxxxxxx",
"SecretAccessKey": "yyyyyyyyyy",
"SessionToken": "zzzzzzzzzzzz",
"Expiration": "2021-11-21T17:57:30+00:00"
}
}
MFA_ARN: IAMのユーザで確認できるMFAのARN (e.g.arn:aws:iam::yyyyyyyyyy:user/xxx
)
MFA_TOKEN_CODE: MFAのデバイスで確認できる6桁の数値
PROFILE_NAME:~/.aws/configに記載のあるプロファイル名
セッショントークン等の設定
$ sls deploy
を実行するためにも、以下のようにして、アクセスキー、シークレットキー、セッショントークンを設定する必要があります。なお、credentialに書き込んでいないのは、Expirationが設定されているため、直接環境変数に設定しても、問題ないと判断しているからです。
ShiroUz@MBP serverless % export AWS_ACCESS_KEY_ID=xxxxxxxxx
ShiroUz@MBP serverless % export AWS_SECRET_ACCESS_KEY=yyyyyyyyyy
ShiroUz@MBP serverless % export AWS_SESSION_TOKEN=zzzzzzzzzzzz
完了後、sls deploy
が可能となる。