

# 在 Amazon CLI 中使用 API 级 (s3api) 命令
<a name="cli-services-s3-apicommands"></a>

API 级命令（包含在 `s3api` 命令集中）提供对 Amazon Simple Storage Service (Amazon S3) API 的直接访问，并且可以执行高级别 `s3` 命令中未公开的某些操作。这些命令等同于对服务功能提供 API 级访问的其他 Amazon 服务的命令。有关 `s3` 命令的更多信息，请参阅 [在 Amazon CLI 中使用高级（s3）命令](cli-services-s3-commands.md)。

本主题提供了若干示例，以演示如何使用映射到 Amazon S3 API 的低级别命令。此外，您可以在[《Amazon CLI 版本 2 参考指南》](https://docs.amazonaws.cn/cli/latest/reference/s3api/index.html)的 `s3api` 部分中找到每个 S3 API 命令的示例。

**Topics**
+ [先决条件](#cli-services-s3-apicommands-prereqs)
+ [应用自定义 ACL](#cli-services-s3-apicommands-acls)
+ [配置日志记录策略](#cli-services-s3-apicommands-logpol)
+ [资源](#cli-services-s3-apicommands-resources)

## 先决条件
<a name="cli-services-s3-apicommands-prereqs"></a>

要运行 `s3api` 命令，您需要：
+ 安装和配置 Amazon CLI。有关更多信息，请参阅 [安装或更新最新版本的 Amazon CLI](getting-started-install.md) 和 [Amazon CLI 身份验证和访问凭证](cli-chap-authentication.md)。
+ 您使用的配置文件必须具有允许示例代码执行Amazon操作的权限。
+ 需了解如下 Amazon S3 术语：
  + **存储桶** – 顶级 Amazon S3 文件夹。
  + **前缀 ** – 存储桶中的 Amazon S3 文件夹。
  + **对象 ** – 托管在 Amazon S3 存储桶中的任何项。

## 应用自定义 ACL
<a name="cli-services-s3-apicommands-acls"></a>

对于高级别命令，您可以使用 `--acl` 选项对 Amazon S3 对象应用预定义的访问控制列表 (ACL)。但不能使用该命令设置存储桶范围的 ACL。不过，您可以通过使用 ```[put-bucket-acl](https://docs.amazonaws.cn/cli/latest/reference/s3api/put-bucket-acl.html)` API 级命令来执行此操作。

下面的示例说明如何向两个 Amazon 用户（*user1@example.com* 和 *user2@example.com*）授予完全控制权限，并向所有人授予读取权限。“everyone”的标识符来自作为参数传递的特殊 URI。

```
$ aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --grant-full-control 'emailaddress="user1@example.com",emailaddress="user2@example.com"' --grant-read 'uri="http://acs.amazonaws.com/groups/global/AllUsers"'
```

有关如何构建 ACL 的详细信息，请参阅 * Amazon Simple Storage Service API 参考*中的 [PUT Bucket acl](https://docs.amazonaws.cn/AmazonS3/latest/API/RESTBucketPUTacl.html)。CLI 中的 `s3api` ACL 命令（如 `put-bucket-acl`）使用相同的 [简化参数表示法](https://docs.amazonaws.cn/cli/latest/userguide/cli-usage-shorthand.html)。

## 配置日志记录策略
<a name="cli-services-s3-apicommands-logpol"></a>

API 命令 `put-bucket-logging` 配置存储桶日志记录策略。

在下面的示例中，已向Amazon用户 *user@example.com* 授予对日志文件的完全控制权限，而向所有用户授予了读取访问权限。请注意，还需要使用 `put-bucket-acl` 命令向 Amazon S3 的日志传输系统（由 URI 指定）授予必要的权限，以读取和向存储桶写入日志。

```
$ aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --grant-read-acp 'URI="http://acs.amazonaws.com/groups/s3/LogDelivery"' --grant-write 'URI="http://acs.amazonaws.com/groups/s3/LogDelivery"'
$ aws s3api put-bucket-logging --bucket amzn-s3-demo-bucket --bucket-logging-status file://logging.json
```

上一个命令中的 `logging.json` 文件具有以下内容。

```
{
  "LoggingEnabled": {
    "TargetBucket": "amzn-s3-demo-bucket",
    "TargetPrefix": "amzn-s3-demo-bucketLogs/",
    "TargetGrants": [
      {
        "Grantee": {
          "Type": "AmazonCustomerByEmail",
          "EmailAddress": "user@example.com"
        },
        "Permission": "FULL_CONTROL"
      },
      {
        "Grantee": {
          "Type": "Group",
          "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
        },
        "Permission": "READ"
      }
    ]
  }
}
```

## 资源
<a name="cli-services-s3-apicommands-resources"></a>

《Amazon CLI 参考：》****
+ [https://docs.amazonaws.cn/cli/latest/reference/s3api/index.html](https://docs.amazonaws.cn/cli/latest/reference/s3api/index.html)
+ [https://docs.amazonaws.cn/cli/latest/reference/s3api/put-bucket-acl.html](https://docs.amazonaws.cn/cli/latest/reference/s3api/put-bucket-acl.html)
+ [https://docs.amazonaws.cn/cli/latest/reference/s3api/put-bucket-logging.html](https://docs.amazonaws.cn/cli/latest/reference/s3api/put-bucket-logging.html)

《服务参考：》****
+ 《Amazon S3 开发人员指南》**中的[使用 Amazon S3 存储桶](https://docs.amazonaws.cn//AmazonS3/latest/userguide/UsingBucket.html)
+ 《Amazon S3 用户指南》**中的[使用 Amazon S3 对象](https://docs.amazonaws.cn//AmazonS3/latest/userguide/UsingObjects.html)
+ 《Amazon S3 用户指南》**中的[使用前缀和分隔符按层次结构列出密钥](https://docs.amazonaws.cn//AmazonS3/latest/userguide/ListingKeysHierarchy.html)
+ 《Amazon S3 用户指南》**中的[使用 适用于 .NET 的 Amazon SDK（低级别）中止到 S3 存储桶的分段上传](https://docs.amazonaws.cn//AmazonS3/latest/userguide/LLAbortMPUnet.html)