

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

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

将新对象上传到配置的存储桶和对象键时触发管道。

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

您可以创建一个 Amazon S3 桶，用作应用程序文件的源位置。

**注意**  
在您创建源存储桶时，请确保在存储桶上启用版本控制。如果您要使用现有 Amazon S3 桶，请参阅[使用版本控制](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html)，以在现有的桶上启用版本控制。

如果您使用控制台创建或编辑管道，则 CodePipeline 会创建一个 EventBridge 规则，该规则在 S3 源存储桶发生更改时启动您的管道。

**注意**  
对于 Amazon ECR、Amazon S3 或 CodeCommit 源，您还可以使用输入转换条目创建源替换，以便`revisionValue`在 EventBridge 管道事件中使用 in，其中派生自对象密钥、提交或图像 ID 的源事件变量。`revisionValue`有关更多信息，请参阅[Amazon ECR 源操作和 EventBridge 资源](create-cwe-ecr-source.md)、[连接到启用事件源的 Amazon S3 源操作](create-S3-source-events.md)或[CodeCommit 源操作和 EventBridge](triggering.md)下的流程中包含的输入转换条目的可选步骤。

您必须事先创建 Amazon S3 源桶并将源文件作为单个 ZIP 文件上传，然后才能通过 Amazon S3 操作连接管道。

**注意**  
当 Amazon S3 是您的管道的源提供程序时，您可以将一个或多个源文件压缩到单个 .zip 文件中，然后将 .zip 文件上传到源桶。您也可以上传单个解压缩的文件；但是，需要 .zip 文件的下游操作将失败。

**Topics**
+ [操作类型](#action-reference-S3-type)
+ [配置参数](#action-reference-S3-config)
+ [输入构件](#action-reference-S3-input)
+ [输出构件](#action-reference-S3-output)
+ [输出变量](#action-reference-S3-variables)
+ [服务角色权限：S3 源操作](#edit-role-s3source)
+ [操作声明](#action-reference-S3-example)
+ [另请参阅](#action-reference-S3-links)

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

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

**S3Bucket**  
是否必需：是  
要在其中检测源更改的 Amazon S3 桶的名称。

**S3 ObjectKey**  
是否必需：是  
要在其中检测源更改的 Amazon S3 对象键的名称。

**AllowOverrideForS3ObjectKey**  
必需：否  
`AllowOverrideForS3ObjectKey` 控制 `StartPipelineExecution` 的源覆盖是否可以覆盖源操作中已配置的 `S3ObjectKey`。有关使用 S3 对象键进行源覆盖的更多信息，请参阅[使用源修订覆盖启动管道](pipelines-trigger-source-overrides.md)。  
如果省略`AllowOverrideForS3ObjectKey`，则 CodePipeline 默认能够通过将此参数设置为， ObjectKey 在源操作中覆盖 S3。`false`
此参数的有效值：  
+ `true`：如果设置了此项，则在管道执行过程中，可以通过源修订覆盖来覆盖预配置的 S3 对象键。
**注意**  
如果您打算允许所有 CodePipeline 用户在开始新的管道执行时覆盖预先配置的 S3 对象密钥，则必须`AllowOverrideForS3ObjectKey`将`true`设置为。
+ `false`: 

  如果已设置， CodePipeline 则不允许使用源修订版本覆盖覆盖 S3 对象密钥。这也是此参数的默认值。

**PollForSourceChanges**  
必需：否  
`PollForSourceChanges`控制是否对 Amazon S3 源存储桶进行 CodePipeline 轮询以了解源代码更改。我们建议您改用 “ CloudWatch 事件” 和 CloudTrail “检测源更改”。有关配置 CloudWatch 事件的更多信息，请参阅[使用 S3 源和跟 CloudTrail 踪 (CLI) 迁移轮询管道](update-change-detection.md#update-change-detection-cli-S3)或[使用 S3 源和 CloudTrail 跟踪（CloudFormation 模板）迁移轮询管道](update-change-detection.md#update-change-detection-cfn-s3)。  
如果要配置 CloudWatch 事件，则必须将设置为`PollForSourceChanges``false`以避免重复的管道执行。
此参数的有效值：  
+ `true`: 如果已设置，则会对您的来源位置进行 CodePipeline 轮询以了解源位置是否有更改。
**注意**  
如果省略`PollForSourceChanges`，则 CodePipeline 默认为对源位置进行轮询以查看源更改。如果包括 `PollForSourceChanges` 并将其设置为 `true`，则此行为相同。
+ `false`: 如果已设置，则 CodePipeline 不对源位置进行轮询以了解源位置是否有更改。如果您打算配置 CloudWatch 事件规则以检测源更改，请使用此设置。

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

## 输出构件
<a name="action-reference-S3-output"></a>
+ **构件数：**`1`
+ **描述：**提供在源存储桶中配置为连接到管道的可用构件。从桶中生成的构件是 Amazon S3 操作的输出构件。Amazon S3 对象元数据（ETag 和版本 ID）显示为触发管道执行的源修订版。 CodePipeline 

## 输出变量
<a name="action-reference-S3-variables"></a>

配置后，此操作会生成变量，该变量可由管道中下游操作的操作配置引用。此操作生成的变量可视为输出变量，即使操作没有命名空间也是如此。您可以使用命名空间配置操作，以使这些变量可用于下游操作的配置。

有关中变量的更多信息 CodePipeline，请参阅[变量参考](reference-variables.md)。

**BucketName**  
与触发管道的源更改相关的 Amazon S3 存储桶的名称。

**ETag**  
与触发管道的源更改相关的对象的实体标签。 ETag 是对象的 MD5 哈希值。 ETag 仅反映对象内容的更改，而不反映其元数据的更改。

**ObjectKey**  
与触发管道的源更改相关的 Amazon S3 对象键的名称。

**VersionId**  
与触发管道的源更改相关的对象版本的版本 ID。

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

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

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:GetBucketVersioning",
        "s3:GetBucketAcl",
        "s3:GetBucketLocation",
        "s3:GetObjectTagging",
        "s3:GetObjectVersionTagging"
      ],
      "Resource": [
        "arn:aws:s3:::[[S3Bucket]]",
        "arn:aws:s3:::[[S3Bucket]]/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

------

## 操作声明
<a name="action-reference-S3-example"></a>

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

```
Name: Source
Actions:
  - RunOrder: 1
    OutputArtifacts:
      - Name: SourceArtifact
    ActionTypeId:
      Provider: S3
      Owner: AWS
      Version: '1'
      Category: Source
    Region: us-west-2
    Name: Source
    Configuration:
      S3Bucket: amzn-s3-demo-source-bucket
      S3ObjectKey: my-application.zip
      PollForSourceChanges: 'false'
    InputArtifacts: []
```

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

```
{
    "Name": "Source",
    "Actions": [
        {
            "RunOrder": 1,
            "OutputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "ActionTypeId": {
                "Provider": "S3",
                "Owner": "AWS",
                "Version": "1",
                "Category": "Source"
            },
            "Region": "us-west-2",
            "Name": "Source",
            "Configuration": {
                "S3Bucket": "amzn-s3-demo-source-bucket",
                "S3ObjectKey": "my-application.zip",
                "PollForSourceChanges": "false"
            },
            "InputArtifacts": []
        }
    ]
},
```

------

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

下列相关资源在您使用此操作的过程中会有所帮助。
+ [教程：创建一个简单的管道（S3 存储桶）](tutorials-simple-s3.md)— 本教程提供了示例应用程序规范文件以及示例 CodeDeploy应用程序和部署组。使用本教程可创建具有 Amazon S3 源的管道，用于向 Amazon EC2 实例进行部署。