17
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS SSOプロファイルでもTerraformやSAM-CLIを実行する方法

Last updated at Posted at 2020-03-28

AWS SSOとAWS CLI V2

AWS CLI V2ではプロファイルにAWS SSOフォーマットを選択することができます。

[profile abc]
sso_start_url = https://your-company.awsapps.com/start
sso_region = us-west-2
sso_account_id = 1234567890
sso_role_name = AdministratorAccess
region = ap-northeast-1

これにより秘匿情報(secret key)を ~/.aws/credentials へ書く必要がなくなりました。
それだけではなく複数のAWSアカウントをAWS SSOで集中管理している場合は個別のAWSアカウントでIAMユーザーを作る必要もありません。
AWS SSOでAWSマネージメントコンソールとaws cliの実行権限を一貫した方法で一挙に管理することができます。バンザイ!

AWS SSOの問題

ところが、この新しいプロファイルの方式はaws cli v2以外のツールではほとんどサポートされていません。

ツール issue
terraform Support AWS CLI v2 AWS Single Sign-On · Issue #10851 · terraform-providers/terraform-provider-aws
(2021/01/29)サポートされました!
> Support for AWS Single-Sign On (SSO) cached credentials has been merged and will release with version 3.26.0 of the Terraform AWS Provider later today.
sam cli Should sam local support named profiles created by aws cli v2 sso commands? · Issue #1843 · awslabs/aws-sam-cli
(2020/09/30) サポートされました!
> sriram-mv commented 5 hours ago
> Resolving this issue as latest release has the supported boto3 versions.
mssh (EC2 Instance Connect) AWS SSO Support does not work · Issue #17 · aws/aws-ec2-instance-connect-cli
(2021/11/10)サポートされたようです。
https://github.com/aws/aws-ec2-instance-connect-cli/issues/17#issuecomment-964560769
serverless framework Add support for AWS CLI v2 SSO profiles · Issue #7567 · serverless/serverless
(2023/09/04)次の回避策がありました:
thomasmichaelwallace/serverless-better-credentials: Better AWS credentials resolution plugin for serverless

各Issueを見てもらえばわかりますがなかなか難航しているようです。単純にAWS SSOをフル活用しているところが少なく需要が少ないということもありますが、aws-sdkのメジャーバージョンが変わったり認証周りのコードに変更が加わったりで対応に大きなコストがかかることが背景にあるようです。2,3ヶ月以上経ってもことが前に進んでいる気配がないことからすぐの対応は期待できそうにないことが伺えます。

解決策: aws2-wrapツールを使う

linaro-its/aws2-wrap: Simple script to export current AWS SSO credentials or run a sub-process with them
このツールを使ってterraformやsamの実行をラップしてやると、それらコマンドの実行直前にaws ssoプロファイルから一時的な認証トークンを生成してくれます。いわば新しい認証方式から古い認証方式への翻訳機の役割を果たしてくれるわけですね。

17
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?