View a markdown version of this page

Amazon S3 源操作参考 - AWS CodePipeline

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

Amazon S3 源操作参考

当新对象上传到配置的存储桶和对象密钥时,源操作会触发管道。

本参考主题介绍了 Amazon S3 源操作, CodePipeline 其中源位置是为版本控制配置的 Amazon S3 存储桶。有关中的 Amazon S3 部署操作的参考信息 CodePipeline,请参阅Amazon S3 部署操作参考

在连接管道之前,创建 Amazon S3 源存储桶,启用版本控制,并将源文件作为单个 ZIP 文件上传。

您可以在 Amazon S3 中创建新的存储桶或选择现有的 Amazon S3 存储桶作为应用程序文件的源位置。有关启用版本控制的更多信息,请参阅 Amazon S3 用户指南中的使用版本控制。

当 Amazon S3 是您的管道的源提供商时,您可以将一个或多个源文件压缩成一个.zip,然后将.zip 上传到您的源存储桶。您也可以上传单个解压缩文件;但是,期望.zip 文件的下游操作将失败。

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

您还可以使用输入转换条目创建源代码覆盖,将输入 EventBridge 用于管道事件,其中源事件源自对象密钥、提交或图像 ID 的源事件变量。revisionValue revisionValue有关更多信息,请参阅以下过程中包含的输入转换条目的可选步骤连接到启用事件源的 Amazon S3 源操作

操作类型

  • 类别:Source

  • 拥有者:AWS

  • 提供方:S3

  • 版本:1

配置参数

S3Bucket

是否必需:是

要在其中检测源更改的 Amazon S3 桶的名称。

S3ObjectKey

是否必需:是

要在其中检测源更改的 Amazon S3 对象键的名称。

AllowOverrideForS3ObjectKey

必需:否

AllowOverrideForS3ObjectKey 控制 StartPipelineExecution 的源覆盖是否可以覆盖源操作中已配置的 S3ObjectKey。有关使用 S3 对象键进行源覆盖的更多信息,请参阅使用源修订覆盖启动管道

重要

如果省略AllowOverrideForS3ObjectKey,则 CodePipeline 默认为通过将此参数设置为 ObjectKey 在源操作中覆盖 S3 的false功能。

此参数的有效值:

  • true:如果设置了此项,则在管道执行过程中,可以通过源修订覆盖来覆盖预配置的 S3 对象键。

    注意

    如果您打算允许所有 CodePipeline 用户在开始新的管道执行时覆盖预先配置的 S3 对象密钥,则必须AllowOverrideForS3ObjectKeytrue设置为。

  • false:

    如果设置, CodePipeline 将不允许使用源版本替代覆盖 S3 对象密钥。这也是此参数的默认值。

PollForSourceChanges

必需:否

PollForSourceChanges控制是否 CodePipeline 轮询 Amazon S3 源存储桶以了解源代码更改。我们建议您改用 CloudWatch 事件 CloudTrail来检测源代码更改。有关配置 CloudWatch 事件的更多信息,请参阅使用 S3 源和跟 CloudTrail 踪 (CLI) 迁移轮询管道使用 S3 源和 CloudTrail 跟踪迁移轮询管道 (CloudFormation 模板)

重要

如果您打算配置 CloudWatch 事件,则必须设置PollForSourceChangesfalse避免重复执行管道。

此参数的有效值:

  • true:如果已设置,则 CodePipeline 轮询您的来源位置以了解源代码的变化。

    注意

    如果省略PollForSourceChanges,则 CodePipeline 默认对来源位置进行轮询以了解源代码的更改。如果包括 PollForSourceChanges 并将其设置为 true,则此行为相同。

  • false:如果已设置,则 CodePipeline 不对来源位置进行轮询以了解源代码更改。如果您打算配置 CloudWatch 事件规则以检测源代码更改,请使用此设置。

输入构件

  • 构件数:0

  • 描述:输入构件不适用于此操作类型。

输出构件

  • 构件数:1

  • 描述:提供在源存储桶中配置为连接到管道的可用构件。从桶中生成的构件是 Amazon S3 操作的输出构件。Amazon S3 对象元数据(ETag 和版本 ID) CodePipeline 作为触发的管道执行的源版本显示在中。

输出变量

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

有关中变量的更多信息 CodePipeline,请参阅变量参考

BucketName

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

ETag

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

ObjectKey

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

VersionId

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

服务角色权限:S3 源操作

对于 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" } } } ] }

操作声明

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": [] } ] },

下列相关资源在您使用此操作的过程中会有所帮助。