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

管理目录存储桶的存储桶策略

您可以使用 Amazon S3 控制台和 Amazon SDK 添加、删除、更新和查看 Amazon S3 目录桶的桶策略。有关更多信息,请参阅以下主题。有关 S3 Express One Zone 支持的 Amazon Identity and Access Management(IAM)操作和条件键的更多信息,请参阅适用于 S3 Express One Zone 的 Amazon Identity and Access Management(IAM)。有关目录存储桶的存储桶策略示例,请参阅S3 Express One Zone 目录存储桶策略示例

添加存储桶策略

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

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

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

  3. 选择目录桶选项卡。

  4. 目录存储桶列表中,选择要将文件夹和文件上传到的存储桶的名称。

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

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

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

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

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

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

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

      注意

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

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

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

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

    注意

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

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

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--azid--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--azid--x-s3 --policy file://bucket_policy.json

bucket_policy.json:

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

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

查看存储桶策略

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

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

aws s3api get-bucket-policy --bucket bucket-base-name--azid--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--azid--x-s3

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