別の AWS アカウントの AWS Identity and Access Management (IAM) ユーザーが、私の Amazon Simple Storage Service (Amazon S3) バケットへオブジェクトをアップロードしました。そのオブジェクトにアクセスしようとすると、「HTTP 403: Access Denied」(アクセスが拒否されました) というエラーが表示されます。 どうすればこの問題を解決できますか。

デフォルトでは、オブジェクトをアップロードした AWS アカウントが、そのオブジェクトの所有者です。これは、バケットの所有者が別のアカウントである場合でも同じです。オブジェクトにアクセスするには、オブジェクト所有者がバケット所有者に対して明示的にアクセスを許可する必要があります。オブジェクト所有者は、オブジェクトのアクセスコントロールリスト (ACL) を更新することにより、オブジェクトのフルコントロールの許可をバケット所有者に付与できます。オブジェクト所有者は、入力またはコピーオペレーション時に、またはオブジェクトがバケットに追加された後でオブジェクトの ACL を更新できます。

入力またはコピーオペレーション時にアクセス許可を付与する

オブジェクト所有者は、入力またはコピーオペレーション時に、オブジェクトの ACL でバケット所有者にフルコントロールを許可するように指定できます。

入力オペレーションの場合、オブジェクト所有者は、次のコマンドを実行して許可を付与できます。

aws s3api put-object --bucket destination_bucket --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --acl bucket-owner-full-control

単一のオブジェクトのコピーオペレーションの場合、オブジェクト所有者は、以下のコマンドのいずれかを実行して許可を付与できます。

aws s3api copy-object --bucket destination_bucket --key source_bucket/myobject --acl bucket-owner-full-control

または

aws s3 cp s3://sourcebucket/myobject s3://destinationbucket/ --acl bucket-owner-full-control

複数のオブジェクトのコピーオペレーションの場合、オブジェクト所有者は、以下のコマンドを実行して許可を付与できます。

aws s3 cp s3://sourcebucket/ s3://destinationbucket/ --acl bucket-owner-full-control --recursive

オブジェクトがバケットに追加された後でアクセスを許可する

別のアカウントでオブジェクトがすでにバケットに追加されている場合、オブジェクト所有者は、以下のように put-object-acl コマンドを実行して、バケット所有者にアクセスを許可できます。

aws s3api put-object-acl --bucket bucketname --key keyname --acl bucket-owner-full-control

オブジェクトがバケット所有者にフルコントロールを許可するように指定する

バケットポリシーを使用して、別のアカウントによってバケットにアップロードされたすべてのオブジェクトで、ACL を "bucket-owner-full-control" に設定するよう指定することができます。次のポリシー例では、入力リクエストで ACL を "bucket-owner-full-control" に設定している場合にのみ、特定の IAM ユーザーはオブジェクトをバケットに入れることができます。

警告: このポリシー例では、Upload Part オペレーションを使用したマルチパートアップロードはサポートされません。

{
    "Id": "Policy1541018284691",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1541018283275",
            "Action": [
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::testbucket /*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            },
            "Principal": {
                "AWS": [
                    "arn:aws:iam::xxxxxxxxxxxxx:user/iam"
                ]
            }
        }
    ]
}

このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2016 年 2 月 26 日

更新日: 2018 年 12 月 20 日