Amazon S3 源操作参考 - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon S3 源操作参考

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

注意

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

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

注意

在您创建源存储桶时,请确保在存储桶上启用版本控制。如果您要使用现有 Amazon S3 桶,请参阅使用版本控制,以在现有的桶上启用版本控制。

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

注意

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

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

注意

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

操作类型

  • 类别:Source

  • 拥有者:AWS

  • 提供方:S3

  • 版本:1

配置参数

S3Bucket

必需:是

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

S3ObjectKey

必需:是

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

AllowOverrideForS3ObjectKey

必需:否

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

重要

如果省略 AllowOverrideForS3ObjectKey,CodePipeline 默认会将此参数设置为 false,以覆盖源操作中的 S3 对象键。

此参数的有效值:

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

    注意

    如果您打算让所有 CodePipeline 用户能够在开始执行新管道时覆盖预配置的 S3 对象键,则必须将 AllowOverrideForS3ObjectKey 设置为 true

  • false:

    如果设置了此项,则 CodePipeline 将不允许使用源修订覆盖来覆盖 S3 对象键。这也是此参数的默认值。

PollForSourceChanges

必需:否

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

重要

如果要配置 CloudWatch Events,您必须将 PollForSourceChanges 设置为 false 以避免重复的管道执行。

此参数的有效值:

  • true:如果设置此值,则 CodePipeline 轮询您源位置中的源更改。

    注意

    如果省略 PollForSourceChanges,则 CodePipeline 默认轮询您源位置中的源更改。如果包括 PollForSourceChanges 并将其设置为 true,则此行为相同。

  • false:如果设置此值,则 CodePipeline 不轮询您源位置中的源更改。如果您要配置 CloudWatch Events 规则来检测源更改,请使用此设置。

输入构件

  • 构件数: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": [] } ] },

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