View a markdown version of this page

管理目录存储桶策略 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

管理目录存储桶策略

可以使用 Amazon S3 控制台、Amazon SDK 和 Amazon CLI 来添加、删除、更新和查看 Amazon S3 目录存储桶的存储桶策略。有关更多信息,请参阅以下主题。有关受支持的 Amazon Identity and Access Management(IAM)操作的更多信息,请参阅 使用 IAM 对区域端点 API 操作进行授权。有关目录存储桶的存储桶策略示例,请参阅目录存储桶的存储桶策略示例。

添加存储桶策略

要向目录存储桶添加存储桶策略,您可以使用 Amazon S3 控制台、Amazon SDK 或 Amazon CLI。

创建或编辑存储桶策略
  1. 登录到 Amazon Web Services 管理控制台,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/。

  2. 在左侧导航窗格中,选择目录存储桶。

  3. 在目录存储桶列表中,选择要向其添加策略的存储桶的名称。

  4. 选择 Permissions(权限)选项卡。

  5. 在 Bucket policy(存储桶策略)下,请选择 Edit(编辑)。将出现 Edit bucket policy(编辑存储桶策略)页面。

  6. 要自动生成策略,请选择策略生成器。

    如果选择 Policy generator(策略生成器),Amazon 策略生成器将在新窗口中打开。

    如果您不想使用 Amazon 策略生成器,则可以在策略部分添加或编辑 JSON 语句。

    1. 在 Amazon 策略生成器页面上,对于选择策略类型,选择 S3 存储桶策略。

    2. 通过在提供的字段中输入信息来添加语句,然后选择添加语句。对您要添加的所需数量的语句重复此步骤。有关这些字段的更多信息,请参阅《IAM 用户指南》中的 IAM JSON 策略元素参考。

      注意

      为方便起见,编辑桶策略页面会在策略文本字段上方显示当前桶的桶 ARN(Amazon 资源名称)。您可以复制此 ARN,以便在 Amazon 策略生成器页面上的语句中使用。

    3. 添加完语句后,请选择生成策略。

    4. 复制生成的策略文本,请选择 Close(关闭),然后返回到 Amazon S3 控制台中的 Edit bucket policy(编辑存储桶策略)页面。

  7. 在 Policy(策略)框中,编辑现有策略或从 Amazon 策略生成器粘贴存储桶策略。确保在保存策略之前解决安全警告、错误、一般警告和建议。

    注意

    存储桶策略的大小限制为 20 KB。

  8. 选择保存更改,此操作将让您返回到权限选项卡。

SDK for Java 2.x
例

PutBucketPolicy Amazon 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); } }

此示例显示如何使用 Amazon CLI 将存储桶策略添加到目录存储桶。要使用该命令,请将用户输入占位符 替换为您自己的信息。

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

bucket_policy.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" } ] }

有关更多信息,请参阅 Amazon Command Line Interface 中的 put-bucket-policy。

查看存储桶策略

要查看目录存储桶的存储桶策略,请使用以下示例。

此示例说明如何使用 Amazon CLI 查看附加到目录存储桶的存储桶策略。要使用该命令,请将用户输入占位符 替换为您自己的信息。

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

有关更多信息,请参阅 Amazon Command Line Interface 中的 get-bucket-policy。

删除存储桶策略

要删除目录存储桶的存储桶策略,请使用以下示例。

SDK for Java 2.x
例

DeleteBucketPolicy Amazon 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); }

此示例显示如何使用 Amazon CLI 删除目录存储桶的存储桶策略。要使用该命令,请将用户输入占位符 替换为您自己的信息。

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

有关更多信息,请参阅 Amazon Command Line Interface 中的 delete-bucket-policy。