「AMIRole」という新しい IAM ロールを作成し、それに「AmazonS3FullAccess」ポリシーをアタッチしました。次に、この IAM ロールで EC2 インスタンスを起動します。
インスタンスに SSH 接続すると、次のように AWS アクセス キーとシークレット キーにアクセスできます。
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/AMIRole
{
"Code" : "Success",
"LastUpdated" : "2016-12-21T16:05:26Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "ABCDEFJK",
"SecretAccessKey" : "SECRET",
"Token" : "TOKEN",
"Expiration" : "2016-12-21T22:38:16Z"
}
ただし、このロールでバケットを作成しようとすると、この AWS KEY が存在しないというエラーが表示されます。
>>> import boto3
>>> s3 = boto3.resource("s3", aws_access_key_id="ABCDEFJK", aws_secret_access_key="SECRET")
>>> s3.create_bucket(Bucket="something-specific-uuid")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/boto3/resources/factory.py", line 520, in do_action
response = action(self, *args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/boto3/resources/action.py", line 83, in __call__
response = getattr(parent.meta.client, operation_name)(**params)
File "/usr/lib/python2.7/dist-packages/botocore/client.py", line 159, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/lib/python2.7/dist-packages/botocore/client.py", line 494, in _make_api_call
raise ClientError(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (InvalidAccessKeyId) when calling the CreateBucket operation: The AWS Access Key Id you provided does not exist in our records.
私の目標は、ローテーション アクセス/シークレット キーを持つ AMI を作成して、AMI を AWS Marketplace に配置できるようにすることです。