

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon S3 部署操作参考
<a name="action-reference-S3Deploy"></a>

您可以使用 Amazon S3 部署操作，向用于静态网站托管或归档的 Amazon S3 桶部署文件。您可以指定是否在将部署文件上传到桶之前提取部署文件。

**注意**  
本参考主题介绍了 Amazon S3 部署操作， CodePipeline 其中部署平台是配置为托管的 Amazon S3 存储桶。有关中 Amazon S3 源操作的参考信息 CodePipeline，请参阅[Amazon S3 源操作参考](action-reference-S3.md)。

**Topics**
+ [操作类型](#action-reference-S3Deploy-type)
+ [配置参数](#action-reference-S3Deploy-config)
+ [输入构件](#action-reference-S3Deploy-input)
+ [输出构件](#action-reference-S3Deploy-output)
+ [服务角色权限：S3 部署操作](#edit-role-s3deploy)
+ [操作配置示例](#action-reference-S3Deploy-example)
+ [另请参阅](#action-reference-S3Deploy-links)

## 操作类型
<a name="action-reference-S3Deploy-type"></a>
+ 类别：`Deploy`
+ 拥有者：`AWS`
+ 提供方：`S3`
+ 版本：`1`

## 配置参数
<a name="action-reference-S3Deploy-config"></a>

**BucketName**  
是否必需：是  
要用来存储源文件的 Amazon S3 桶的名称。

**Extract**  
是否必需：是  
如果为 true，则会规定在上传之前提取文件。否则，应用程序文件将保持压缩状态以供上传，如托管静态网站的情况。如果为 false，则 `ObjectKey` 为必填项。

**ObjectKey**  
这是有条件的。如果 `Extract` = false，则为必需  
以唯一方式标识 S3 桶中对象的 Amazon S3 对象密钥的名称。

**KMSEncryptionKeyarn**  
必需：否  
主机存储桶的 AWS KMS 加密密钥的 ARN。`KMSEncryptionKeyARN` 参数使用提供的 AWS KMS key对上传的构件进行加密。对于 KMS 密钥，您可以使用密钥 ID、密钥 ARN 或别名 ARN。  
别名只能在创建 KMS 密钥的账户中识别。对于跨账户操作，您只能使用密钥 ID 或密钥 ARN 来标识密钥。跨账户操作涉及使用其他账户（AccountB）的角色，因此指定密钥 ID 将使用其他账户（AccountB）的密钥。
CodePipeline 仅支持对称 KMS 密钥。请勿使用非对称 KMS 密钥对 S3 桶中的数据进行加密。

**CannedACL**  
必需：否  
`CannedACL` 参数将指定的[标准 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl) 应用于部署到 Amazon S3 的对象。这将覆盖已应用于对象的任何现有 ACL。

**CacheControl**  
必需：否  
该`CacheControl`参数控制存储桶中对象 requests/responses 的缓存行为。有关有效值的列表，请参阅 HTTP 操作的 [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) 标头字段。要在 `CacheControl` 中输入多个值，请在每个值之间使用逗号。您可以为 CLI 在每个逗号后添加一个空格（可选），如本示例所示：  

```
"CacheControl": "public, max-age=0, no-transform"
```

## 输入构件
<a name="action-reference-S3Deploy-input"></a>
+ **构件数：**`1`
+ **描述：**用于部署或存档的文件由 CodePipeline源存储库获取、压缩和上传。

## 输出构件
<a name="action-reference-S3Deploy-output"></a>
+ **构件数：**`0`
+ **描述：**输出构件不适用于此操作类型。

## 服务角色权限：S3 部署操作
<a name="edit-role-s3deploy"></a>

对于 S3 部署操作支持，将以下内容添加到策略语句中：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:PutObjectVersionAcl",
        "s3:GetBucketVersioning",
        "s3:GetBucketAcl",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::[[s3DeployBuckets]]",
        "arn:aws:s3:::[[s3DeployBuckets]]/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

------

要获得 S3 部署操作支持，如果您的 S3 对象具有标签，则您还必须在策略语句中添加以下权限：

```
"s3:GetObjectTagging",
"s3:GetObjectVersionTagging",
"s3:PutObjectTagging"
```

## 操作配置示例
<a name="action-reference-S3Deploy-example"></a>

下面展示了操作配置的示例。

### 当 `Extract` 设置为 `false` 时的示例配置
<a name="action-reference-S3Deploy-extractfalse"></a>

以下示例显示了在 `Extract` 字段设置为 `false` 的情况下，创建操作时的默认操作配置。

------
#### [ YAML ]

```
Name: Deploy
Actions:
  - Name: Deploy
    ActionTypeId:
      Category: Deploy
      Owner: AWS
      Provider: S3
      Version: '1'
    RunOrder: 1
    Configuration:
      BucketName: website-bucket
      Extract: 'false'
      ObjectKey: MyWebsite
    OutputArtifacts: []
    InputArtifacts:
      - Name: SourceArtifact
    Region: us-west-2
    Namespace: DeployVariables
```

------
#### [ JSON ]

```
{
    "Name": "Deploy",
    "Actions": [
        {
            "Name": "Deploy",
            "ActionTypeId": {
                "Category": "Deploy",
                "Owner": "AWS",
                "Provider": "S3",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "BucketName": "website-bucket",
                "Extract": "false",
                "ObjectKey": "MyWebsite"
                },
            "OutputArtifacts": [],
            "InputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "Region": "us-west-2",
            "Namespace": "DeployVariables"
        }
    ]
},
```

------

### 当 `Extract` 设置为 `true` 时的示例配置
<a name="action-reference-S3Deploy-extracttrue"></a>

以下示例显示了在 `Extract` 字段设置为 `true` 的情况下，创建操作时的默认操作配置。

------
#### [ YAML ]

```
Name: Deploy
Actions:
  - Name: Deploy
    ActionTypeId:
      Category: Deploy
      Owner: AWS
      Provider: S3
      Version: '1'
    RunOrder: 1
    Configuration:
      BucketName: website-bucket
      Extract: 'true'
    OutputArtifacts: []
    InputArtifacts:
      - Name: SourceArtifact
    Region: us-west-2
    Namespace: DeployVariables
```

------
#### [ JSON ]

```
{
    "Name": "Deploy",
    "Actions": [
        {
            "Name": "Deploy",
            "ActionTypeId": {
                "Category": "Deploy",
                "Owner": "AWS",
                "Provider": "S3",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "BucketName": "website-bucket",
                "Extract": "true"
                },
            "OutputArtifacts": [],
            "InputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "Region": "us-west-2",
            "Namespace": "DeployVariables"
        }
    ]
},
```

------

## 另请参阅
<a name="action-reference-S3Deploy-links"></a>

下列相关资源在您使用此操作的过程中会有所帮助。
+ [教程：创建以 Amazon S3 作为部署提供程序的管道](tutorials-s3deploy.md)：本教程将演示两个示例，引导您创建具有 S3 部署操作的管道。您可以下载示例文件，将文件上传到 CodeCommit 存储库，创建 S3 存储桶，然后配置存储桶以进行托管。接下来，您可以使用 CodePipeline 控制台创建管道并指定 Amazon S3 部署配置。
+ [Amazon S3 源操作参考](action-reference-S3.md)— 本操作参考提供了 Amazon S3 源操作的参考信息和示例 CodePipeline。