管理目录存储桶的存储桶策略 - Amazon Simple Storage Service

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

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

添加存储桶策略

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

创建或编辑存储桶策略
  1. 登录到 AWS 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(策略生成器),AWS 策略生成器将在新窗口中打开。

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

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

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

      注意

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

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

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

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

    注意

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

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

SDK for Java 2.x

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

此示例显示如何使用 AWS 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/amzn-s3-demo-bucket--usw2-az1--x-s3" } ] }

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

查看存储桶策略

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

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

aws s3api get-bucket-policy --bucket bucket-base-name--azid--x-s3

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

删除存储桶策略

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

SDK for Java 2.x

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 删除目录存储桶的存储桶策略。要使用该命令,请将用户输入占位符 替换为您自己的信息。

aws s3api delete-bucket-policy --bucket bucket-base-name--azid--x-s3

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