

# ACL を無効にする前提条件。
<a name="object-ownership-migrating-acls-prerequisites"></a>

Amazon S3 のバケットアクセスコントロールリスト (ACL) は、S3 バケット内の個々のオブジェクトに対する詳細なアクセス許可を定義し、それらのオブジェクトにアクセスして変更できる AWS アカウントまたはグループを指定できるメカニズムです。Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。オブジェクトごとに個別にアクセスを制御する必要がある状況を除き、アクセスの管理には AWS Identity and Access Management (IAM) とバケットポリシーを使用し、ACL を無効にしておくことをお勧めします。

バケットで ACL が有効になっている場合は、ACL を無効にする前に、次の前提条件を満たしてください。

**Topics**
+ [

## バケットとオブジェクト ACL を確認し、ACL アクセス権限を移行します。
](#object-ownership-acl-permissions)
+ [

## 承認に ACL を必要としたリクエストを特定する
](#object-ownership-acl-identify)
+ [

## ACL 関連の条件キーを使用するバケットポリシーを確認および更新します。
](#object-ownership-bucket-policies)
+ [

## ユースケースの例
](#object-ownership-migrating-acls)

## バケットとオブジェクト ACL を確認し、ACL アクセス権限を移行します。
<a name="object-ownership-acl-permissions"></a>

ACL を無効にすると、バケットおよびオブジェクト ACL によって付与される許可がアクセスに影響しなくなります。ACL を無効にする前に、バケットとオブジェクト ACL を確認します。

IAM ポリシーでは、既存のバケットとオブジェクト ACL にはそれぞれ同等のものが含まれます。次のバケットポリシー例は、バケットおよびオブジェクト ACL の `READ` と `WRITE` の許可は IAM 許可にマッピングされます。各 ACL が IAM アクセス許可に変換される方法の詳細については、[ACL アクセス許可とアクセスポリシーのアクセス許可のマッピング](acl-overview.md#acl-access-policy-permission-mapping) を参照してください。

ACL を無効にする前に:
+ バケット ACL が AWS アカウント外へのアクセスを許可している場合は、まず、バケット ACL のアクセス許可をバケットポリシーに移行する必要があります。
+ 次に、バケット ACL をデフォルトのプライベート ACL にリセットします。
+ オブジェクトレベルの ACL アクセス許可を確認し、バケットポリシーに移行することもお勧めします。

バケット ACL がアカウント外の他のユーザーに読み取りまたは書き込みアクセス許可を付与している場合は、ACL を無効にする前に、これらのアクセス許可をバケットポリシーに移行する必要があります。これらのアクセス許可を移行した後、**[オブジェクトの所有権]** を *[バケット所有者強制]* 設定にすることができます。アカウントの外部で読み取りまたは書き込みアクセスを許可するバケット ACL を移行しないと、[バケット所有者の強制] 設定を適用するリクエストが失敗し、[InvalidBucketAclWithObjectOwnership](object-ownership-error-responses.md#object-ownership-error-responses-invalid-acl) エラーコードを返します。

バケット ACL が AWS アカウント の外部へのアクセスを許可する場合は、ACL を無効にする前にバケット ACL アクセス権限をバケットポリシーに移行し、バケット ACL をデフォルトのプライベート ACL にリセットする必要があります。移行とリセットを行わない場合、ACL を無効にするために [バケット所有者の強制] 設定を適用するリクエストは失敗し、[InvalidBucketAclWithObjectOwnership](object-ownership-error-responses.md#object-ownership-error-responses-invalid-acl) エラーコードが返されます。また、オブジェクト ACL アクセス権限を確認し、バケットポリシーに移行することをお勧めします。

バケットポリシーへの ACL アクセス権限を確認し、移行するには、以下のトピックを参照してください。

**Topics**
+ [

### バケットポリシーの例
](#migrate-acl-permissions-bucket-policies)
+ [

### S3 コンソールを使用した、ACL アクセス権限の確認と移行
](#review-migrate-acl-console)
+ [

### AWS CLI を使用して、ACL アクセス権限を確認して移行します。
](#review-migrate-acl-cli)

### バケットポリシーの例
<a name="migrate-acl-permissions-bucket-policies"></a>

これらのバケットポリシーの例は、`READ` と `WRITE` バケット、サードパーティー AWS アカウントの ACL アクセス権限をバケットポリシーに移行およびバケット化およびオブジェクト化する方法を示しています。`READ_ACP` と `WRITE_ACP` ACL は、ACL 関連のアクセス許可 (`s3:GetBucketAcl`、`s3:GetObjectAcl`、`s3:PutBucketAcl`、`s3:PutObjectAcl`) を付与するため、ポリシーとの関連性は低くなります。

**Example — バケットの `READ` ACL**  
バケットの内容の一覧表示を AWS アカウント `111122223333` に許可する `READ` ACL がバケットにある場合、バケットに対して `s3:ListBucket`、`s3:ListBucketVersions`、`s3:ListBucketMultipartUploads` の各アクセス許可を付与するバケットポリシーを記述できます。    
****  

```
{
		"Version":"2012-10-17",		 	 	 
		"Statement": [
			{
				"Sid": "Permission to list the objects in a bucket",
				"Effect": "Allow",
				"Principal": {
					"AWS": [

						"arn:aws:iam::111122223333:root"
					]
				},
				"Action": [
					"s3:ListBucket",
					"s3:ListBucketVersions",
					"s3:ListBucketMultipartUploads"
				],
				"Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
			}
		]
	}
```

**Example — バケット内の各オブジェクトの `READ` ACL**  
AWS アカウント `111122223333` にアクセスを許可する `READ` ACL がバケット内の各オブジェクトにある場合、バケット内の各オブジェクトに対する `s3:GetObject` アクセス許可と `s3:GetObjectVersion` アクセス許可をこのアカウントに付与するバケットポリシーを記述できます。    
****  

```
{
		"Version":"2012-10-17",		 	 	 
		"Statement": [
			{
				"Sid": "Read permission for every object in a bucket",
				"Effect": "Allow",
				"Principal": {
					"AWS": [
						"arn:aws:iam::111122223333:root"
					]
				},
				"Action": [
					"s3:GetObject",
					"s3:GetObjectVersion"
				],
				"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
			}
		]
	}
```
この例のリソースエレメントは、特定のオブジェクトへのアクセスを許可します。  

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/OBJECT-KEY"
```

**Example — バケットにオブジェクトを書き込むアクセス許可を付与する `WRITE` ACL**  
バケットへのオブジェクトの書き込み許可を AWS アカウント `111122223333` に付与する `WRITE` ACL がバケットにある場合は、バケットに `s3:PutObject` 許可を付与するバケットポリシーを記述できます。    
****  

```
{
		"Version":"2012-10-17",		 	 	 
		"Statement": [
			{
				"Sid": "Permission to write objects to a bucket",
				"Effect": "Allow",
				"Principal": {
					"AWS": [
						"arn:aws:iam::111122223333:root"
					]
				},
				"Action": [
					"s3:PutObject"
				],
				"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
			}
		]
	}
```

### S3 コンソールを使用した、ACL アクセス権限の確認と移行
<a name="review-migrate-acl-console"></a>

**バケットの ACL アクセス権限を確認する方法**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. **[バケット]** リストで、バケット名を選択します。

1. **[アクセス許可]** タブを選択します。

1. **アクセスコントロールリスト (ACL)** で、バケット ACL アクセス権限を確認します。

**オブジェクトの ACL アクセス権限を確認する方法**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. **[Buckets]** (バケット) リストで、オブジェクトが含まれるバケットの名前を選択します。

1. [**オブジェクト**] リストで、オブジェクト名を選択します。

1. **[アクセス許可]** タブを選択します。

1. **アクセスコントロールリスト (ACL)** で、オブジェクト ACL アクセス権限を確認します。

**ACL アクセス権限を移行してバケット ACL を更新します**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. **[バケット]** リストで、バケット名を選択します。

1. **アクセス許可**タブの **バケットポリシー**で **編集**をクリックします。

1. **ポリシー**ボックスで、バケットポリシーを追加または更新します。

   バケットポリシーの例ついては、[バケットポリシーの例](#migrate-acl-permissions-bucket-policies)」 と「[ユースケースの例](#object-ownership-migrating-acls) を参照してください。

1. **[Save changes]** (変更の保存) をクリックします。

1. [バケット ACL を更新](managing-acls.md)して、他のグループ、または AWS アカウント への ACL アクセス権限を削除します。

1. オブジェクト所有権に[**バケット所有者の強制**設定を適用](object-ownership-existing-bucket.md)します。

### AWS CLI を使用して、ACL アクセス権限を確認して移行します。
<a name="review-migrate-acl-cli"></a>

1. バケットのバケット ACL を返すには、[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-acl.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-acl.html) AWS CLI コマンドを使用します。

   ```
   aws s3api get-bucket-acl --bucket amzn-s3-demo-bucket
   ```

   例えば、このバケット ACL は `WRITE` と `READ` にサードパーティーのアカウントへのアクセスを付与します。この ACL では、サードパーティーアカウントは[正規ユーザー ID](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId) で識別します。[バケット所有者の強制] 設定を適用して ACL を無効にするには、サードパーティアカウントのこれらの許可をバケットポリシーに移行する必要があります。

   ```
   {
   		"Owner": {
   			"ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
   		},
   		"Grants": [
   			{
   				"Grantee": {
   					"ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID",
   					"Type": "CanonicalUser"
   				},
   				"Permission": "FULL_CONTROL"
   			},
   			{
   				"Grantee": {
   					"ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID",
   					"Type": "CanonicalUser"
   				},
   				"Permission": "READ"
   			},
   			{
   				"Grantee": {
   					"ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID",
   					"Type": "CanonicalUser"
   				},
   				"Permission": "WRITE"
   			}
   		]
   	}
   ```

   その他の ACL の例については、[ユースケースの例](#object-ownership-migrating-acls) を参照してください。

1. バケット ACL アクセス権限をバケットポリシーに移行します。

   この例のバケットポリシーは、サードパーティアカウントの `s3:PutObject` と `s3:ListBucket` アクセス許可を付与します。バケットポリシーでは、サードパーティーアカウントは AWS アカウント ID (`111122223333`)で識別されます。

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
   
   	policy.json:
   	{
   		"Version": "2012-10-17",		 	 	 
   		"Statement": [
   			{
   				"Sid": "PolicyForCrossAccountAllowUpload",
   				"Effect": "Allow",
   				"Principal": {
   					"AWS": [
   						"arn:aws:iam::111122223333:root"
   					]
   				},
   				"Action": [
   					"s3:PutObject",
   					"s3:ListBucket"
   				],
   				"Resource": [
   					"arn:aws:s3:::amzn-s3-demo-bucket",
   					"arn:aws:s3:::amzn-s3-demo-bucket/*"
   			}
   		]
   	}
   ```

   バケットポリシーの例については、[バケットポリシーの例](#migrate-acl-permissions-bucket-policies) と [ユースケースの例](#object-ownership-migrating-acls) を参照してください。

1. 特定のオブジェクトの ACL を返すには、[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object-acl.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object-acl.html) AWS CLI コマンドを使用します。

   ```
   aws s3api get-object-acl --bucket amzn-s3-demo-bucket --key EXAMPLE-OBJECT-KEY
   ```

1. 必要に応じて、オブジェクト ACL アクセス権限をバケットポリシーに移行します。

   このリソースエレメントの例では、バケットポリシーの特定のオブジェクトへのアクセスを付与します。

   ```
   "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/EXAMPLE-OBJECT-KEY"
   ```

1. バケットの ACL をデフォルトの ACL にリセットします。

   ```
   aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
   ```

1. オブジェクト所有者に[[バケット所有者の強制] 設定を適用](object-ownership-existing-bucket.md)します。

## 承認に ACL を必要としたリクエストを特定する
<a name="object-ownership-acl-identify"></a>

承認に ACL を必要とした Amazon S3 リクエストを特定するには、Amazon S3 サーバーアクセスログまたは AWS CloudTrail の `aclRequired` 値を使用します。リクエストが承認に ACL を必要としたか、ACL を指定する `PUT` リクエストがある場合、文字列は `Yes` です。ACL が不要であったか、`bucket-owner-full-control` の既定 ACL を設定するか、リクエストがバケットポリシーで許可されている場合、`aclRequired` 値の文字列は Amazon S3 サーバーアクセスログでは「`-`」となり、CloudTrail では存在しません。期待される `aclRequired` 値の詳細については、「[一般的な Amazon S3 リクエストの `aclRequired` 値](acl-overview.md#aclrequired-s3)」を参照してください。

`PutBucketAcl` または `PutObjectAcl` リクエストに ACL ベースのアクセス許可を付与するヘッダーが含まれている場合は、`bucket-owner-full-control` 既定 ACL を除き、ACL を無効にする前にこれらのヘッダーを削除する必要があります。待機しないと、リクエストは失敗します。

承認に ACL を必要としたその他すべてのリクエストについては、これらの ACL アクセス許可をバケットポリシーに移行します。次に、バケット所有者の強制設定を有効にする前に、バケットの ACL をすべて削除します。

**注記**  
オブジェクトの ACL は削除しないでください。削除すると、アクセス許可をオブジェクトの ACL に依存しているアプリケーションはアクセスできなくなります。

承認に ACL を必要としたリクエストがない場合は、ACL の無効化に進むことができます。リクエストの識別方法の詳細については、「[Amazon S3 アクセスログを使用したリクエストの識別](using-s3-access-logs-to-identify-requests.md)」と「[CloudTrail を使用した Amazon S3 リクエストの識別](cloudtrail-request-identification.md)」を参照してください。

## ACL 関連の条件キーを使用するバケットポリシーを確認および更新します。
<a name="object-ownership-bucket-policies"></a>

[バケット所有者の強制] 設定を適用して ACL を無効にすると、リクエストでバケット所有者の完全制御 ACL が使用されているか、ACL が指定されていない場合にのみ、新しいオブジェクトをバケットにアップロードできます。ACL を無効にする前に、ACL 関連の条件キーのバケットポリシーを確認します。

バケットポリシーが ACL 関連の条件キーを使用して、`bucket-owner-full-control` 既定 ACL (例えば、`s3:x-amz-acl`) では、バケットポリシーを更新する必要はありません。次のバケットポリシーでは、`s3:x-amz-acl` S3 の規定 ACL `bucket-owner-full-control` リクエストを必要とする `PutObject` を使用します。このポリシーでは、*引き続き*オブジェクトライターが `bucket-owner-full-control` 既定 ACL を指定する必要があります。ただし、ACL が無効になっているバケットは引き続きこの ACL を受け入れるため、クライアント側の変更は不要で、リクエストは引き続き成功します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "OnlyAllowWritesToMyBucketWithBucketOwnerFullControl",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/ExampleUser"
                ]
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        }
    ]
}
```

------

ただし、バケットポリシーで異なる ACL を必要とする ACL 関連の条件キーを使用する場合は、この条件キーを削除する必要があります。この例のバケットポリシーには、 S3 の `public-read` ACL を `PutObject` リクエストして、ACL が無効になる前に更新する必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Only allow writes to my bucket with public read access",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/ExampleUser"                ]
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "public-read"
                }
            }
        }
    ]
}
```

------

## ユースケースの例
<a name="object-ownership-migrating-acls"></a>

以下の例では、特定のユースケースでの ACL アクセス権限をバケットポリシーに移行する方法を示します。

**Topics**
+ [

### サーバーアクセスのログ記録用の S3 ログ配信グループへのアクセスを付与する
](#object-ownership-server-access-logs)
+ [

### バケット内のオブジェクトへのパブリック読み取りアクセスを付与します
](#object-ownership-public-read)
+ [

### S3 バケットへのアクセス権を Amazon ElastiCache (Redis OSS) に付与する
](#object-ownership-elasticache-redis)

### サーバーアクセスのログ記録用の S3 ログ配信グループへのアクセスを付与する
<a name="object-ownership-server-access-logs"></a>

バケット所有者の強制設定を適用してサーバーアクセスログ送信先バケット (別名 **ターゲットバケット) の ACL を無効にするには、バケットの S3 ログ配信グループへの ACL アクセス許可をバケットポリシーのログ記録サービスプリンシパル (`logging.s3.amazonaws.com`) に移行する必要があります。ログ配信許可の詳細については、[ログ配信許可](enable-server-access-logging.md#grant-log-delivery-permissions-general) を参照してください。

このバケット ACL は、S3 ログ配信グループへの `WRITE` と `READ_ACP` アクセスを許可します。

```
{
    "Owner": {
        "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
    }, 
    "Grants": [
        {
            "Grantee": {
                "Type": "CanonicalUser", 
                "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
            }, 
            "Permission": "FULL_CONTROL"
        }, 
        {
            "Grantee": {
                "Type": "Group", 
                "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery"
            }, 
            "Permission": "WRITE"
        }, 
        {
            "Grantee": {
                "Type": "Group", 
                "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery"
            }, 
            "Permission": "READ_ACP"
        }
    ]
}
```

**S3 ログ配信グループのバケット ACL アクセス権限を、バケットポリシーのロギングサービスプリンシパルに移行します。**

1. 次のバケットポリシーをバケットに追加して、例の値を置き換えます。

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
   
   policy.json:						{
       {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "S3ServerAccessLogsPolicy",
               "Effect": "Allow",
               "Principal": {
                   "Service": "logging.s3.amazonaws.com"
               },
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/EXAMPLE-LOGGING-PREFIX*",
               "Condition": {
                   "ArnLike": {
                       "aws:SourceArn": "arn:aws:s3:::SOURCE-BUCKET-NAME"
                   },
                   "StringEquals": {
                       "aws:SourceAccount": "SOURCE-AWS-ACCOUNT-ID"
                   }
               }
           }
       ]
   }
   ```

1. バケットの ACL をデフォルトの ACL にリセットします。

   ```
   aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
   ```

1. オブジェクト所有権の[バケット所有者の強制](object-ownership-existing-bucket.md) を送信先バケットに適用します。

### バケット内のオブジェクトへのパブリック読み取りアクセスを付与します
<a name="object-ownership-public-read"></a>

オブジェクト ACL がバケット内のすべてのオブジェクトへのパブリック読み取りアクセスを許可する場合、これらの ACL アクセス権限をバケットポリシーに移行できます。

このオブジェクト ACL は、バケット内のオブジェクトへのパブリック読み取りアクセスを許可します。

```
{
    "Owner": {
        "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
    },
    "Grants": [
        {
            "Grantee": {
                "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        },
        {
            "Grantee": {
                "Type": "Group",
                "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
            },
            "Permission": "READ"
        }
    ]
}
```

**パブリック読み取り ACL アクセス権限をバケットポリシーに移行します。**

1. バケット内のすべてのオブジェクトへのパブリック読み取りアクセスを許可するには、例の値を置き換えて、次のバケットポリシーを追加します。

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
   
   policy.json:
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PublicReadGetObject",
               "Effect": "Allow",
               "Principal": "*",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket/*"
               ]
           }
       ]
   }
   ```

   バケットポリシー内の特定のオブジェクトへのパブリックアクセスを許可するには、`Resource` エレメントに次の形式を使用します。

   ```
   "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/OBJECT-KEY"
   ```

   特定のプレフィックスを持つすべてのオブジェクトへのパブリックアクセスを許可するには、`Resource` エレメントに次の形式を使用します。

   ```
   "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/PREFIX/*"
   ```

1. オブジェクト所有者に[[バケット所有者の強制] 設定を適用](object-ownership-existing-bucket.md)します。

### S3 バケットへのアクセス権を Amazon ElastiCache (Redis OSS) に付与する
<a name="object-ownership-elasticache-redis"></a>

S3 バケットに [ElastiCache (Redis OSS) のバックアップをエクスポート](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html)できます。これにより、ElastiCache の外部からバックアップにアクセスできます。バックアップを S3 バケットにエクスポートするには、スナップショットをバケットにコピーするための ElastiCache 許可を付与する必要があります。バケット ACL で ElastiCache にアクセス許可を付与した場合は、[バケット所有者の強制] 設定を適用して ACL を無効にする前に、これらの許可をバケットポリシーに移行する必要があります。詳細については、*Amazon ElastiCache ユーザーガイド* の [ Amazon S3 バケットへの ElastiCache アクセスの許可](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-grant-access) を参照してください。

次の例は、ElastiCache に許可を付与するバケット ACL アクセス許可を示しています。

```
{
    "Owner": {
        "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
    },
    "Grants": [
        {
            "Grantee": {
                "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        },
        {
            "Grantee": {
                "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353",
                "Type": "CanonicalUser"
            },
            "Permission": "READ"
        },
        {
            "Grantee": {
                "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353",
                "Type": "CanonicalUser"
            },
            "Permission": "WRITE"
        },
        {
            "Grantee": {
                "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353",
                "Type": "CanonicalUser"
            },
            "Permission": "READ_ACP"
        }
    ]
}
```

**ElastiCache (Redis OSS) のバケット ACL アクセス許可をバケットポリシーに移行するには**

1. 次のバケットポリシーをバケットに追加し、例の値を置き換えます。

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
   
   policy.json:
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Stmt15399483",
               "Effect": "Allow",
               "Principal": {
                   "Service": "Region.elasticache-snapshot.amazonaws.com"
               },
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:ListBucket",
                   "s3:GetBucketAcl",
                   "s3:ListMultipartUploadParts",
                   "s3:ListBucketMultipartUploads"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket",
                   "arn:aws:s3:::amzn-s3-demo-bucket/*"
               ]
           }
       ]
   }
   ```

1. バケットの ACL をデフォルトの ACL にリセットします。

   ```
   aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
   ```

1. オブジェクト所有者に[[バケット所有者の強制] 設定を適用](object-ownership-existing-bucket.md)します。