

# ディレクトリバケットポリシーの管理
<a name="directory-bucket-bucket-policy"></a>

Amazon S3 コンソール、AWS SDK、AWS CLI を使用して、Amazon S3 ディレクトリバケットのバケットポリシーを追加、削除、更新、表示できます。詳細については、以下のトピックを参照してください。サポートされている AWS Identity and Access Management (IAM) アクションの詳細については、「[IAM を使用したリージョンエンドポイント API オペレーションの承認](s3-express-security-iam.md)」を参照してください。ディレクトリバケットのバケット ポリシーの例については、「[ディレクトリバケットのバケットポリシーの例](s3-express-security-iam-example-bucket-policies.md)」を参照してください。

**Topics**
+ [バケットポリシーの追加](#directory-bucket-bucket-policy-add)
+ [バケットポリシーの表示](#directory-bucket-bucket-policy-view)
+ [バケットポリシーを削除する](#directory-bucket-bucket-policy-delete)

## バケットポリシーの追加
<a name="directory-bucket-bucket-policy-add"></a>

バケットポリシーをディレクトリバケットに追加するには、Amazon S3 コンソール、AWS SDK、または AWS CLI を使用できます。

### S3 コンソールの使用
<a name="directory-bucket-bucket-policy-add-console"></a>

**バケットポリシーを作成または編集するには**

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

1. 左のナビゲーションペインで、**[ディレクトリバケット]** を選択します。

1. **[ディレクトリバケット]** リストで、ポリシーを追加するバケットの名前を選択します。

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

1. **[バケットポリシー]** で **[編集]** を選択します。**[バケットポリシーを編集]** ページが表示されます。

1. ポリシーを自動的に生成するには、**[Policy Generator]** を選択します。

   **[Policy Generator]** を選択すると、新しいウィンドウで AWS Policy Generator が開きます。

   AWS Policy Generator を使用しない場合は、**[ポリシー]** セクションで JSON ステートメントを追加または編集できます。

   1. **[Select Type of Policy]** (ポリシーの種類の選択) の **[AWS Policy Generator]** ページで、**[S3 Bucket Policy]** (S3 バケットポリシー)を選択します。

   1. 提供されたフィールドに情報を入力してステートメントを追加し、**ステートメントの追加**を選択します。このステップを、追加するステートメントの数だけ繰り返します。ポリシーステートメントの詳細については、*IAM ユーザーガイド*の [IAM JSON ポリシーのエレメントのリファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)を参照してください。
**注記**  
わかりやすいように、**[バケットポリシーの編集]** ページでは、現在のバケットの **[バケット ARN]** (Amazon リソースネーム) が **[ポリシー]** テキストフィールドの上に表示されます。この ARN をコピーして、**AWSポリシージェネレータ**のステートメントで使用できます。

   1. ステートメントの追加が完了したら、**ポリシーの生成**を選択します。

   1. 生成されたポリシーテキストをコピーし、[**閉じる**] を選択すると、Amazon S3 コンソールの**バケットポリシーの編集**ページに戻ります。

1. **[Policy]** (ポリシー) ボックスで、既存のポリシーを編集するか、AWS Policy Generator からバケットポリシーを貼り付けます。ポリシーを保存する前に、セキュリティ警告、エラー、一般的な警告、および提案を解決してください。
**注記**  
バケットポリシーのサイズは 20 KB に制限されています。

1. **[Save changes]** (変更の保存) を選択すると、**[Permissions]** (アクセス許可) タブへ戻ります。

### AWS SDK の使用
<a name="directory-bucket-bucket-policy-add-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  
`PutBucketPolicy` AWS SDK for Java 2.x   

```
public static void setBucketPolicy(S3Client s3Client, String bucketName, String policyText) {
     
       //sample policy text
       /**
        * policy_statement = {
         *         'Version': '2012-10-17',
         *         'Statement': [
         *             {
         *                 'Sid': 'AdminPolicy',
         *                 'Effect': 'Allow',
         *                 'Principal': {
         *                     "AWS": "111122223333"
         *                 },
         *                 'Action': 's3express:*',
         *                 'Resource': 'arn:aws:s3express:region:111122223333:bucket/bucket-base-name--zone-id--x-s3'
         *             }
         *         ]
         *     }
         */
         System.out.println("Setting policy:");
         System.out.println("----");
         System.out.println(policyText);
         System.out.println("----");
         System.out.format("On Amazon S3 bucket: \"%s\"\n", bucketName);
         
         try {
             PutBucketPolicyRequest policyReq = PutBucketPolicyRequest.builder()
                     .bucket(bucketName)
                     .policy(policyText)
                     .build();
             s3Client.putBucketPolicy(policyReq);
             System.out.println("Done!");
         }    
         
         catch (S3Exception e) {
             System.err.println(e.awsErrorDetails().errorMessage());
             System.exit(1);
         }
    }
```

------

### の使用AWS CLI
<a name="directory-bucket-delete-cli"></a>

この例では、AWS CLI を使用してバケットポリシーをディレクトリバケットに追加する方法を示します。このコマンドを使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

```
aws s3api put-bucket-policy --bucket bucket-base-name--zone-id--x-s3 --policy file://bucket_policy.json
```

bucket\$1policy.json:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AdminPolicy",
            "Effect": "Allow",
            "Principal": {
                "AWS": "111122223333"
            },
            "Action": "s3express*",
            "Resource": "arn:aws:s3express:us-west-2:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3"
        }
    ]
}
```

------

詳細については、「AWS Command Line Interface」の「[put-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-policy.html)」を参照してください。

## バケットポリシーの表示
<a name="directory-bucket-bucket-policy-view"></a>

ディレクトリバケットのバケットポリシーを表示するには、次の例を使用します。

### の使用AWS CLI
<a name="directory-bucket-bucket-policy-view-cli"></a>

この例では、AWS CLI を使用してディレクトリバケットにアタッチされたバケットポリシーを表示する方法を示します。このコマンドを使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

```
aws s3api get-bucket-policy --bucket bucket-base-name--zone-id--x-s3
```

詳細については、「AWS Command Line Interface」の「[get-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-policy.html)」を参照してください。

## バケットポリシーを削除する
<a name="directory-bucket-bucket-policy-delete"></a>

ディレクトリバケットのバケットポリシーを削除するには、次の例を使用します。

### AWS SDK の使用
<a name="directory-bucket-bucket-policy-delete-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  
`DeleteBucketPolicy` AWS SDK for Java 2.x   

```
public static void deleteBucketPolicy(S3Client s3Client, String bucketName) {
      try {
          DeleteBucketPolicyRequest deleteBucketPolicyRequest = DeleteBucketPolicyRequest
                  .builder()
                  .bucket(bucketName)
                  .build()
          s3Client.deleteBucketPolicy(deleteBucketPolicyRequest);
          System.out.println("Successfully deleted bucket policy");
      }
      
      catch (S3Exception e) {
          System.err.println(e.awsErrorDetails().errorMessage());
          System.exit(1);
      }
```

------

### の使用AWS CLI
<a name="directory-bucket-delete-cli"></a>

この例では、AWS CLI を使用してディレクトリバケットのバケットポリシーを削除する方法を示します。このコマンドを使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

```
aws s3api delete-bucket-policy --bucket bucket-base-name--zone-id--x-s3
```

詳細については、「AWS Command Line Interface」の「[delete-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-bucket-policy.html)」を参照してください。