View a markdown version of this page

Amazon S3 部署操作参考 - AWS CodePipeline

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

Amazon S3 部署操作参考

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

注意

本参考主题描述了部署平台是为 CodePipeline 托管配置的 Amazon S3 存储桶时的 Amazon S3 部署操作。有关中的 Amazon S3 源操作的参考信息 CodePipeline,请参阅Amazon S3 源操作参考

操作类型

  • 类别:Deploy

  • 拥有者:AWS

  • 提供方:S3

  • 版本:1

配置参数

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 来识别密钥。 Cross-account 操作涉及使用来自其他账户(AccountB)的角色,因此指定密钥 ID 将使用来自其他账户(AccountB)的密钥。

重要

CodePipeline 仅支持对称 KMS 密钥。请勿使用非对称 KMS 密钥对 S3 桶中的数据进行加密。

CannedACL

必需:否

CannedACL 参数将指定的标准 ACL 应用于部署到 Amazon S3 的对象。这将覆盖已应用于对象的任何现有 ACL。

CacheControl

必需:否

CacheControl参数控制存储桶中对象 requests/responses 的缓存行为。有关有效值的列表,请参阅 HTTP 操作的 Cache-Control 标头字段。要在 CacheControl 中输入多个值,请在每个值之间使用逗号。您可以为 CLI 在每个逗号后添加一个空格(可选),如本示例所示:

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

输入构件

  • 构件数:1

  • 描述:用于部署或存档的文件从源存储库获取、压缩并由 CodePipeline上传。

输出构件

  • 构件数:0

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

服务角色权限:S3 部署操作

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

操作配置示例

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

Extract 设置false 时的配置示例

以下示例显示了在 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 时的配置示例

以下示例显示了在 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" } ] },

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

  • 教程:创建以 Amazon S3 作为部署提供程序的管道:本教程将演示两个示例,引导您创建具有 S3 部署操作的管道。您可以下载示例文件,将文件上传到 CodeCommit 存储库,创建 S3 存储桶并配置存储桶以进行托管。接下来,您使用 CodePipeline 控制台创建管道并指定 Amazon S3 部署配置。

  • Amazon S3 源操作参考— 本操作参考提供了中 Amazon S3 源操作的参考信息和示例 CodePipeline。