STS は、AWS リソースへのアクセスを制御できる一時的なセキュリティ認証情報を使用して、信頼できるユーザーを作成および提供するために使用されます。
シナリオとしては以下がある。
リージョン名 | エンドポイント |
---|---|
グローバル | st.amazonaws.com |
アジアパシフィック(東京) | sts.ap-northeast-1.amazonaws.com |
アジアパシフィック (大阪) | sts.ap-northeast-3.amazonaws.com |
米国東部(バージニア北部) | sts.us-east-1.amazonaws.com |
AWS CLI で VPC エンドポイント経由でアクセスする - ablog
AWS CLI でうまく行かない場合は、--debugオプションをつけてデバッグログを出力する。
以下はグローバルエンドポイントにアクセスしてタイムアウトしている。('client_region': 'us-east-1')
aws s3 cp test.txt s3://arn:aws:s3:ap-northeast-1:123456789012:accesspoint/foo/bar/ --acl bucket-owner-full-control --profile account1 --debug (中略) 2021-07-29 17:29:45,221 - Thread-3 - botocore.endpoint - DEBUG - Making request for OperationModel(name=PutObject) with params: {'body': <s3transfer.utils.ReadFileChunk object at 0x7f3a4777f110>, 'url': u'https://s3.amazonaws.com/foo/bar/test.txt', 'headers': {'Expect': '100-continue', u'Content-Type': 'text/plain', u'x-amz-acl': 'bucket-owner-full-control', 'User-Agent': 'aws-cli/1.18.147 Python/2.7.18 Linux/4.14.232-177.418.amzn2.x86_64 botocore/1.18.6'}, 'context': {'auth_type': None, 'client_region': 'us-east-1★', 'signing': {'bucket': u'arn:aws:s3:ap-northeast-1:123456789012:accesspoint/foo'}, 'has_streaming_input': True, 'client_config': <botocore.config.Config object at 0x7f3a47896410>, 's3_accesspoint': {'region': u'ap-northeast-1', 'account': u'123456789012', 'partition': u'aws', 'name': u'foo'}}, 'query_string': {}, 'url_path': u'/foo/bar/test.txt', 'method': u'PUT'}
##APIの呼び出しに使用されるIAMの情報を確認。 $ aws sts get-caller-identity --region ap-northeast-1 --endpoint https://sts.ap-northeast-1.amazonaws.com { "Account": "<アカウントBのAWSアカウントID>", "UserId": "XXXXXXXXXXXXXXXXXXXX:i-xxxxxxxxxxxxxxxx", "Arn": "arn:aws:sts::<アカウントBのAWSアカウントID>:assumed-role/demo-Role-B/i-xxxxxxxxxxxxxxxx" }
#別アカウントの権限を借り受ける $ aws sts assume-role --role-arn "arn:aws:iam::<アカウントAのAWSアカウントID>:role/demo-Role-A" --role-session-name "demo-session" --endpoint https://sts.ap-northeast-1.amazonaws.com --region ap-northeast-1 { "AssumedRoleUser": { "AssumedRoleId": "XXXXXXXXXXXXXXXXXXXXX:demo-session", "Arn": "arn:aws:sts::<アカウントAのAWSアカウントID>:assumed-role/demo-Role-A/demo-session" }, "Credentials": { "SecretAccessKey": "<シークレットアクセスキー>", "SessionToken": "<セッショントークン>", "Expiration": "2019-07-09T01:53:10Z", "AccessKeyId": "<アクセスキー>" } } #出力された内容を環境変数に設定 $export AWS_ACCESS_KEY_ID="<アクセスキー>" $export AWS_SECRET_ACCESS_KEY="<シークレットアクセスキー>" $export AWS_SESSION_TOKEN="<セッショントークン>" #APIの呼び出しに使用されるIAMの情報がdemo-Role-Aになっていることを確認 $ aws sts get-caller-identity --region ap-northeast-1 --endpoint https://sts.ap-northeast-1.amazonaws.com { "Account": "<アカウントAのAWSアカウントID>", "UserId": "XXXXXXXXXXXXXXXXXXXXX:demo-session", "Arn": "arn:aws:sts::<アカウントAのAWSアカウントID>:assumed-role/demo-Role-A/demo-session" }
一般向けサイト
ITエンジニア向けサイト
英語サイト
Portfolio
Copyright (c) 2024 クラウドのインフラ技術 All Rights Reserved.