将修订推送 CodeDeploy 到 Amazon S3(仅限 EC2/本地部署) - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将修订推送 CodeDeploy 到 Amazon S3(仅限 EC2/本地部署)

按照中所述计划修订版计划修订 CodeDeploy并按照中所述向修订版添加 AppSpec 文件后将应用程序规范文件添加到修订版中 CodeDeploy,就可以捆绑组件文件并将修订推送到 Amazon S3 了。对于部署到 Amazon EC2 实例,在推送修订之后,您可以使用 CodeDeploy 将修订从 Amazon S3 部署到实例。

注意

CodeDeploy 也可以用来部署已推送到的修订版 GitHub。有关更多信息,请参阅您的 GitHub 文档。

我们假定您已遵循 入门 CodeDeploy中的说明来设置 Amazon CLI。这对于调用稍后描述的 push 命令来说特别重要。

请确保您拥有 Amazon S3 存储桶。遵循创建存储桶中的说明。

如果要部署到 Amazon EC2 实例,则必须创建目标 Amazon S3 存储桶或者它必须存在于目标实例所在的区域中。例如,如果您要将修订部署到美国东部(弗吉尼亚州北部)区域的某些实例和美国西部(俄勒冈州)区域的其他实例,那么您必须在美国东部(弗吉尼亚州北部)区域的一个存储桶中部署一个修订副本,在美国西部(俄勒冈州)区域的另一个存储桶中部署同一修订的另一个副本。在此方案中,您随后需要分别在美国东部(弗吉尼亚州北部)区域和美国西部(俄勒冈州)区域中各创建一个单独的部署,即使两个区域和存储桶中的修订相同也是如此。

您必须拥有上传到 Amazon S3 存储桶的权限。您可以通过 Amazon S3 存储桶策略指定这些权限。例如,在以下 Amazon S3 存储桶策略中,使用通配符 (*) 允许 Amazon 账户将文件上传111122223333到 Amazon S3 存储桶中名为codedeploydemobucket的任何目录:

{ "Statement": [ { "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "111122223333" ] } } ] }

要查看您的 Amazon 账户 ID,请参阅查找您的 Amazon 账户 ID

要了解如何生成和附加 Amazon S3 存储桶策略,请参阅存储桶策略示例

调用 push 命令的用户必须至少具有将修订上传到每个目标 Amazon S3 存储桶的权限。例如,以下策略允许用户将修订上传到名为 codedeploydemobucket 的 Amazon S3 存储桶中的任意位置:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::codedeploydemobucket/*" } ] }

要了解如何创建和附加 IAM policy,请参阅使用策略

使用推送修订版 Amazon CLI

注意

push命令将应用程序工件和 AppSpec 文件捆绑到修订版中。此修订的文件格式是压缩的 ZIP 文件。该命令不能用于 Amazon Lambda 或 Amazon ECS 部署,因为每个部署都需要一个 JSON 格式或 YAML 格式文件的修订版。 AppSpec

调用 push 命令以便为部署绑定和推送修订。它的参数包括:

  • --application-name:(字符串)必需。要与 CodeDeploy应用程序修订版关联的应用程序的名称。

  • --s3-location:(字符串)必需。要上传到 Amazon S3 的应用程序修订的位置的相关信息。您必须指定一个 Amazon S3 存储桶和一个键。关键是修订的名称。 CodeDeploy 在上传内容之前对其进行压缩。采用格式 s3://your-S3-bucket-name/your-key.zip

  • --ignore-hidden-files--no-ignore-hidden-files:(布尔值)可选。使用 --no-ignore-hidden-files 标志(默认值)会将隐藏文件绑定和上传到 Amazon S3。使用 --ignore-hidden-files 标志不会将隐藏文件绑定和上传到 Amazon S3。

  • --source(字符串)可选。要部署的内容以及开发计算机上要压缩并上传到 Amazon S3 AppSpec 的文件的位置。该位置被指定为相对于当前目录的路径。如果未指定相对路径或者对路径使用了单个句点(“.”),则使用当前目录。

  • --description(字符串)可选。用于概述应用程序修订的注释。如果未指定,则使用默认字符串 “按 Amazon CLI '时间'UTC上传”,其中'时间'是协调世界时 (UTC) 中的当前系统时间。

您可以使用推送 Amazon EC2 部署的修订。 Amazon CLI 示例推送命令如下所示:

在 Linux、macOS 或 Unix 中:

aws deploy push \ --application-name WordPress_App \ --description "This is a revision for the application WordPress_App" \ --ignore-hidden-files \ --s3-location s3://codedeploydemobucket/WordPressApp.zip \ --source .

在 Windows 中:

aws deploy push --application-name WordPress_App --description "This is a revision for the application WordPress_App" --ignore-hidden-files --s3-location s3://codedeploydemobucket/WordPressApp.zip --source .

此命令执行以下操作:

  • 将已绑定的文件与名为 WordPress_App 的应用程序关联。

  • 将描述附加到修订。

  • 忽略隐藏文件。

  • 为修订 WordPressApp.zip 命名并将其推送到名为 codedeploydemobucket 的存储桶。

  • 将根目录中的所有文件绑定到修订。

推送成功后,您可以使用 Amazon CLI 或 CodeDeploy 控制台从 Amazon S3 部署修订。要部署此修订版,请执行以下 Amazon CLI操作:

在 Linux、macOS 或 Unix 中:

aws deploy create-deployment \ --application-name WordPress_App \ --deployment-config-name your-deployment-config-name \ --deployment-group-name your-deployment-group-name \ --s3-location bucket=codedeploydemobucket,key=WordPressApp.zip,bundleType=zip

在 Windows 中:

aws deploy create-deployment --application-name WordPress_App --deployment-config-name your-deployment-config-name --deployment-group-name your-deployment-group-name --s3-location bucket=codedeploydemobucket,key=WordPressApp.zip,bundleType=zip

有关更多信息,请参阅 使用创建部署 CodeDeploy