

# 为 Amazon S3 on Outposts 存储桶添加或编辑存储桶策略
<a name="S3OutpostsBucketPolicyEdit"></a>

存储桶策略是基于资源的 Amazon Identity and Access Management (IAM) 策略，您可以使用该策略向存储桶及其中对象授予访问权限。只有存储桶拥有者才能将策略与存储桶关联。附加到存储桶的权限适用于存储桶拥有者拥有的存储桶中所有对象。存储桶策略的大小限制为 20 KB。有关更多信息，请参阅 [存储桶策略](S3onOutposts.md#S3OutpostsBucketPolicies)。

以下主题显示如何使用 Amazon Web Services 管理控制台、Amazon Command Line Interface (Amazon CLI) 或 适用于 Java 的 Amazon SDK 更新 Amazon S3 on Outposts 存储桶策略。

## 使用 S3 控制台
<a name="s3-outposts-bucket-edit-policy"></a>

**创建或编辑存储桶策略**

1. 登录到 Amazon Web Services 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 在左侧导航窗格中，选择 **Outposts buckets**（Outposts 存储桶）。

1. 选择您要编辑其权限的 Outposts 存储桶。

1. 选择**权限**选项卡。

1. 在 **Outposts bucket policy**（Outposts 存储桶策略）部分，要创建或编辑新策略，请选择 **Edit**（编辑）。

   现在，您可以添加或编辑 S3 on Outposts 存储桶策略。有关更多信息，请参阅 [使用 S3 on Outposts 设置 IAM](S3OutpostsIAM.md)。

## 使用 Amazon CLI
<a name="S3OutpostsPutBucketPolicyCLI"></a>

以下 Amazon CLI 示例在 Outpost 存储桶上放置策略。

1. 将以下存储桶策略保存到 JSON 文件中。在本示例中，文件命名为 `policy1.json`。将 `user input placeholders` 替换为您自己的信息。

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

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Id":"testBucketPolicy",
      "Statement":[
         {
            "Sid":"st1",
            "Effect":"Allow",
            "Principal":{
               "AWS":"arn:aws:iam::123456789012:root"
            },
            "Action":[
               "s3-outposts:GetObject",
               "s3-outposts:PutObject",
               "s3-outposts:DeleteObject",
               "s3-outposts:ListBucket"
            ],
            "Resource":"arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-01ac5d28a6a232904/bucket/amzn-s3-demo-bucket"
         }
      ]
   }
   ```

------

1. 将 JSON 文件作为 `put-bucket-policy` CLI 命令的一部分提交。要运行此命令，请将 `user input placeholders` 替换为您自己的信息。

   ```
   aws s3control put-bucket-policy --account-id 123456789012 --bucket arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outposts-bucket --policy file://policy1.json
   ```

## 使用适用于 Java 的 Amazon 软件开发工具包
<a name="S3OutpostsPutBucketPolicyJava"></a>

以下 SDK for Java 示例在 Outpost 存储桶上放置策略。

```
import com.amazonaws.services.s3control.model.*;

public void putBucketPolicy(String bucketArn) {

    String policy = "{\"Version\":\"2012-10-17\",\"Id\":\"testBucketPolicy\",\"Statement\":[{\"Sid\":\"st1\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"" + AccountId+ "\"},\"Action\":\"s3-outposts:*\",\"Resource\":\"" + bucketArn + "\"}]}";

    PutBucketPolicyRequest reqPutBucketPolicy = new PutBucketPolicyRequest()
            .withAccountId(AccountId)
            .withBucket(bucketArn)
            .withPolicy(policy);

    PutBucketPolicyResult respPutBucketPolicy = s3ControlClient.putBucketPolicy(reqPutBucketPolicy);
    System.out.printf("PutBucketPolicy Response: %s%n", respPutBucketPolicy.toString());

}
```