Amazon S3 バケットに対し、オブジェクトをアップロードするアクセス権を、別の AWS アカウントのユーザーに与えるにはどうすれば良いですか?

最終更新日: 2021 年 2 月 10 日

別のアカウントの AWS Identity and Access Management (IAM) ユーザーに対し、Amazon Simple Storage Service (Amazon S3) バケットへのアクセス権を付与したいと思います。ユーザーが Amazon S3 バケットにオブジェクトをアップロードしようとしています。このクロスアカウントのアクセスを許可するにはどうすれば良いですか?

解決方法

以下の手順に従って、アカウント A の IAM ユーザーに、アカウント B の S3 バケットにオブジェクトをアップロードするアクセス権を付与します。

1.    アカウント A から、IAM ユーザーにポリシーをアタッチします。ポリシーでは、アカウント B のバケットで s3:PutObject および s3:PutObjectAcl アクションを実行できるようユーザーに許可する必要があります。

例:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl"      
            ],
            "Resource": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
            ]
        }
    ]
}

注: アップロード中にオブジェクトのアクセスコントロールリスト (ACL) を指定しなければならないユーザーには、s3:PutObjectAcl のアクセス許可が必要です。このアクセス許可がない場合、(bucket-owner-full control ACL などの) ACL を使用してオブジェクトをアップロードしようとしたユーザーには、アクセス拒否エラーが返されます。

2.    アカウント A から、IAM ユーザーの Amazon リソースネーム (ARN) を取得します。

3.    アカウント B から、アカウント A の IAM ユーザーにバケットポリシーをアタッチし、s3:PutObject および s3:PutObjectAcl アクションを実行する権限を与えます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DelegateS3Access",
            "Effect": "Allow",
            "Principal": {"AWS": "arn:aws:iam::999999999999:user/UploadData"},
            "Action": ["s3:PutObject", "s3:PutObjectAcl"],
            "Resource": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
            ]
        }
    ]
}

重要: [プリンシパル] の値には、アカウント A の IAM ユーザーの ARN を必ず入力します。

アカウント A で IAM ユーザーポリシーを設定し、アカウント B でバケットポリシーを設定した後、対象の IAM ユーザーは Amazon S3 にオブジェクトをアップロードできるようになります。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?