View a markdown version of this page

将 PutBucketPolicy 和 Amazon SDK 搭配使用 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

PutBucketPolicy 和 Amazon SDK 搭配使用

以下代码示例演示了如何使用 PutBucketPolicy

Java
适用于 Java 的 SDK 2.x
注意

查看 GitHub,了解更多信息。在 Amazon 代码示例存储库中查找完整示例,了解如何进行设置和运行。

将存储桶策略应用于目录存储桶。

import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.PutBucketPolicyRequest; import software.amazon.awssdk.services.s3.model.S3Exception; import static com.example.s3.util.S3DirectoryBucketUtils.createDirectoryBucket; import static com.example.s3.util.S3DirectoryBucketUtils.createS3Client; import static com.example.s3.util.S3DirectoryBucketUtils.deleteDirectoryBucket; import static com.example.s3.util.S3DirectoryBucketUtils.getAwsAccountId; /** * Sets the following bucket policy for the specified S3 directory bucket. *<pre> * { * "Version":"2012-10-17", * "Statement": [ * { * "Sid": "AdminPolicy", * "Effect": "Allow", * "Principal": { * "AWS": "arn:aws:iam::<ACCOUNT_ID>:root" * }, * "Action": "s3express:*", * "Resource": "arn:aws:s3express:us-west-2:<ACCOUNT_ID>:bucket/<DIR_BUCKET_NAME> * } * ] * } * </pre> * This policy grants all S3 directory bucket actions to identities in the same account as the bucket. * * @param s3Client The S3 client used to interact with S3 * @param bucketName The name of the directory bucket * @param policyText The policy text to be applied */ public static void putDirectoryBucketPolicy(S3Client s3Client, String bucketName, String policyText) { logger.info("Setting policy on bucket: {}", bucketName); logger.info("Policy: {}", policyText); try { PutBucketPolicyRequest policyReq = PutBucketPolicyRequest.builder() .bucket(bucketName) .policy(policyText) .build(); s3Client.putBucketPolicy(policyReq); logger.info("Bucket policy set successfully!"); } catch (S3Exception e) { logger.error("Failed to set bucket policy: {} - Error code: {}", e.awsErrorDetails().errorMessage(), e.awsErrorDetails().errorCode(), e); throw e; } }
  • 有关 API 详细信息,请参阅《Amazon SDK for Java 2.x API Reference》中的 PutBucketPolicy

有关 Amazon SDK 开发人员指南和代码示例的完整列表,请参阅 使用 Amazon SDK 通过 Amazon S3 进行开发。本主题还包括有关入门的信息以及有关先前的 SDK 版本的详细信息。