

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 管理目錄儲存貯體政策
<a name="directory-bucket-bucket-policy"></a>

您可以使用 Amazon S3 主控台、 AWS SDKs 和 AWS CLI 來新增、刪除、更新和檢視 Amazon S3 目錄儲存貯體的儲存貯體政策。如需詳細資訊，請參閱下列主題。如需 Supported 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 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 在**儲存貯體**清單中，選擇您要為其新增政策的儲存貯體名稱。

1. 選擇**許可**索引標籤。

1. 在 **Bucket policy (儲存貯體政策)** 下方，選擇 **Edit (編輯)**。**Edit bucket policy** (編輯儲存貯體政策) 頁面隨即出現。

1. 若要自動產生政策，請選擇**政策產生器**。

   如果您選擇**政策產生器**， AWS 政策產生器會在新視窗中開啟。

   如果您不想使用 AWS 政策產生器，您可以在**政策**區段中新增或編輯 JSON 陳述式。

   1. 在 **AWS 政策產生器**頁面上，針對**選取政策類型**，選擇 **S3 儲存貯體政策**。

   1. 在提供的欄位中輸入資訊，以新增陳述式，然後選擇 **Add Statement** (新增陳述式)。針對您想要新增的任意數量陳述式重複此步驟。如需這些欄位的詳細資訊，請參閱《*IAM 使用者指南》*中的 [IAM JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。
**注意**  
為了您的方便，**編輯儲存貯體政策**頁面會在**政策**文字欄位上方顯示目前儲存貯體的**儲存貯體 ARN **(Amazon Resource Name)。您可以複製此 ARN，以在 **AWS Policy Generator** ( 政策產生器) 頁面上的陳述式中使用。

   1. 完成新增陳述式後，選擇 **Generate Policy** (產生政策)。

   1. 複製產生的政策文字，選擇 **Close** (關閉)，然後退回 Amazon S3 主控台中的 **Edit bucket policy** (編輯儲存貯體政策) 頁面。

1. 在**政策**方塊中，從政策產生器編輯現有政策或貼上儲存貯體 AWS 政策。請務必先處理安全性警告、錯誤、一般警告，以及建議，然後再儲存政策。
**注意**  
儲存貯體政策的大小限制為 20 KB。

1. 選擇 **Save changes** (儲存變更)，這會讓您回到 **Permissions** (許可) 索引標籤。

### 使用 AWS SDKs
<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 SDKs
<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)。