

# 为 S3 存储桶配置屏蔽公共访问权限设置
<a name="configuring-block-public-access-bucket"></a>

Amazon S3 屏蔽公共访问权限提供接入点、存储桶、组织和账户的设置，帮助您管理对 Amazon S3 资源的公共访问。默认情况下，新存储桶、接入点和对象不允许公有访问。有关更多信息，请参阅 [阻止对您的 Amazon S3 存储的公有访问](access-control-block-public-access.md)。

**注意**  
存储桶级别的屏蔽公共访问权限设置与组织级别和账户级别的策略共同起作用。S3 采用存储桶级别配置与生效的账户级别配置之间最严格的设置（如果存在组织策略，则可由组织策略强制执行）。

您可以使用 S3 控制台、Amazon CLI、Amazon SDK 和 REST API 授予对一个或多个存储桶的公共访问权限。您还可以对已经设为公共的存储桶屏蔽公共访问权限。有关更多信息，请参阅以下部分。

要为账户中的每个存储桶配置“屏蔽公共访问权限”设置，请参阅[为您的账户配置屏蔽公共访问权限设置](configuring-block-public-access-account.md)。有关组织范围的集中管理，请参阅《Amazon Organizations 用户指南》**中的 [S3 策略](https://docs.amazonaws.cn/organizations/latest/userguide/orgs_manage_policies_s3.html)。

有关为接入点配置屏蔽公共访问权限的信息，请参阅 [在接入点上执行屏蔽公共访问权限操作](access-control-block-public-access.md#access-control-block-public-access-examples-access-point)。

## 使用 Amazon CLI
<a name="configuring-block-public-access-bucket-cli"></a>

要对存储桶屏蔽公共访问权限或删除公共访问权限屏蔽，请使用 Amazon CLI 服务 `s3api`。使用此服务的存储桶级别的操作如下所示：
+ `PutPublicAccessBlock`（对于存储桶）
+ `GetPublicAccessBlock`（对于存储桶）
+ `DeletePublicAccessBlock`（对于存储桶）
+ `GetBucketPolicyStatus`

有关更多信息和示例，请参阅《Amazon CLI 参考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-public-access-block.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-public-access-block.html)。

**注意**  
这些存储桶级别的操作不受组织级别策略的限制。但是，生效的公共访问行为仍将受到存储桶、账户和组织设置的最严格限制组合的约束。有关层次结构和策略交互的更多信息，请参阅[使用 S3 控制台](block-public-access-bucket.md)。

## 使用 Amazon 开发工具包
<a name="configuring-block-public-access-bucket-sdk"></a>

------
#### [ Java ]

```
AmazonS3 client = AmazonS3ClientBuilder.standard()
	  .withCredentials(<credentials>)
	  .build();

client.setPublicAccessBlock(new SetPublicAccessBlockRequest()
		.withBucketName(<bucket-name>)
		.withPublicAccessBlockConfiguration(new PublicAccessBlockConfiguration()
				.withBlockPublicAcls(<value>)
				.withIgnorePublicAcls(<value>)
				.withBlockPublicPolicy(<value>)
				.withRestrictPublicBuckets(<value>)));
```

**重要**  
此示例仅适用于使用 `AmazonS3` 客户端类的存储桶级别操作。对于账户级别的操作，请参阅以下示例。

------
#### [ Other SDKs ]

有关使用其它 Amazon SDK 的信息，请参阅《Amazon S3 API 参考》**中的 [Developing with Amazon S3 using the Amazon SDKs](https://docs.amazonaws.cn/AmazonS3/latest/API/sdk-general-information-section.html)。

------

## 使用 REST API
<a name="configuring-block-public-access-bucket-api"></a>

有关通过 REST API 使用 Amazon S3 屏蔽公共访问权限的信息，请参阅 *Amazon Simple Storage Service API 参考*中的以下主题。
+ 存储桶级别操作
  + [https://docs.amazonaws.cn/AmazonS3/latest/API/API_PutPublicAccessBlock.html](https://docs.amazonaws.cn/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
  + [https://docs.amazonaws.cn/AmazonS3/latest/API/API_GetPublicAccessBlock.html](https://docs.amazonaws.cn/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
  + [https://docs.amazonaws.cn/AmazonS3/latest/API/API_DeletePublicAccessBlock.html](https://docs.amazonaws.cn/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
  + [https://docs.amazonaws.cn/AmazonS3/latest/API/API_GetBucketPolicyStatus.html](https://docs.amazonaws.cn/AmazonS3/latest/API/API_GetBucketPolicyStatus.html)