他の AWS アカウントによってオブジェクトがアップロードされたときに、Simple Storage Service (Amazon S3) バケットのオブジェクトの所有権を変更する方法を教えてください。

最終更新日: 2021 年 12 月 17 日

S3 オブジェクト所有権を使用して Amazon Simple Storage Service (Amazon S3) バケット内のオブジェクトの所有権を変更しようとしています。これを行うにはどうすればよいですか?

簡単な説明

重要:S3 内のオブジェクトは、アップロードした AWS アカウントによって自動的に所有されなくなりました。

S3 Object Ownershipsでバケット所有者が適用された設定により、Amazon S3 バケット内のすべてのオブジェクトをバケット所有者が所有できるようになりました。バケット所有者強制機能では、すべてのアクセスコントロールリスト (ACL) も無効化されるため、S3 に保存されているデータのアクセス管理が簡素化されます。

デフォルトでは、新しく作成されたバケットでは、[Bucket owner enforced] 設定が有効になっています。ただし、既存のバケットの場合、ACL を明示的に無効にしない限り、Amazon S3 オブジェクトはアップロードした AWS アカウントによって引き続き所有されます。既存のバケット内のオブジェクトの所有権を変更するには、「S3 バケット内のパブリックに所有されているオブジェクトの所有権を変更するにはどうすればよいですか?」を参照してください。

解決方法

他の AWS アカウントによってアップロードされたオブジェクトのオブジェクト所有権を変更する

注:S3 オブジェクト所有権を使用してバケットのオブジェクト所有権を変更する前に、s3: PutBucketOwnershipControls アクションにアクセスできることを確認してください。そうしないと、バケット内のオブジェクトのオブジェクト所有権を表示できません。S3 のアクセス権限の詳細については、「Amazon S3 のアクション、リソース、条件キー」を参照してください。

既存の Amazon S3 バケット内のオブジェクトのオブジェクト所有権を変更する (ACL を無効にする)

既存の Amazon S3 バケット内のオブジェクトの所有権を変更しようとしている場合は、[S3 オブジェクトの所有権] で [ACL disabled] オプションを選択します。このオプションを使用すると、バケット所有者は S3 バケット内のすべてのオブジェクトを完全に制御でき、所有権をバケット所有者のアカウントに移行できます。

このオプションを使用すると、S3 バケット内のデータにアクセスする権限には影響しなくなりました。このオプションでは、存在するオブジェクトや ACL disabled オプションの設定後に追加したオブジェクトを含む、バケット内のすべてのオブジェクトの所有権が変更されます。アクセスコントロールを定義するには、バケットポリシーを使用します

注:既存の ACL で外部 AWS アカウントまたは他のグループへのアクセス権が付与されている場合、[バケット所有者] の設定は機能しません。Bucket owner enforced 設定を適用するには、バケット ACL がバケット所有者のみにフルコントロールを付与する必要があります。バケット所有者強制設定を有効にする前に ACL を無効にするための前提条件を参照してください

他の AWS アカウントによってアップロードされたオブジェクトへのアクセス権を付与する (ACL を有効にする)

有効な ACL のリストから、[S3 オブジェクト所有権] で [バケット所有者優先] オプションを選択します。このバケットにアップロードされた新しいオブジェクトは、 bucket-owner-full-control のデフォルト ACL を持つバケット所有者によって所有されます。ただし、[バケット所有者優先] 設定は既存のオブジェクトの所有権には影響しません。バケット所有者の優先設定と ACL の詳細については、「マルチアカウント環境で Amazon S3 オブジェクトの所有権を強制する」を参照してください。

オブジェクトの所有権をアップロードした AWS アカウントに変更する (ACL を有効にする)

オブジェクトをアップロードした AWS アカウントにオブジェクトの所有権を譲渡するには、[S3 Object Ownership] で [Object writer] オプションを有効にします。このオプションでは、オブジェクトをアップロードした AWS アカウントがオブジェクトを所有していることを確認します。これにより、オブジェクト所有者はオブジェクトを完全に制御でき、ACL を使用して他のユーザにそのオブジェクトへのアクセス権を付与できます。