AWS CodeDeploy
User Guide (API 版本 2014-10-06)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

将 AWS CodeDeploy 的修订推送到 Amazon S3

在规划修订(如计划 AWS CodeDeploy 的修订中所述)并将 AppSpec file添加到修订(如将应用程序规范文件添加到 AWS CodeDeploy 的修订中所述)后,您便已准备好捆绑组件文件并将修订推送到 Amazon S3。对于向 Amazon EC2 实例中进行的部署,在您推送修订后,可以使用 AWS CodeDeploy 将修订从 Amazon S3 部署到实例。

注意

AWS CodeDeploy 还可用于将已推送的修订部署到 GitHub。有关更多信息,请参阅 GitHub 文档。

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

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

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

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

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

To view your AWS account ID, see Finding Your AWS Account ID.

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

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

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

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

使用 AWS CLI 推送修订

注意

push 命令会将应用程序项目和 AppSpec file绑定到修订中。此修订的文件格式是压缩的 ZIP 文件。该命令不能与 AWS Lambda 部署一起使用,因为前者需要作为 JSON 格式或 YAML 格式的 AppSpec file的修订。

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

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

  • --s3-location:(字符串)必需。要上传到 Amazon S3 的应用程序修订的位置的相关信息。您必须指定一个 Amazon S3 存储桶和一个键。该键是修订的名称。AWS 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 file。该位置被指定为相对于当前目录的路径。如果未指定相对路径或者对路径使用了单个句点 (“.”),则使用当前目录。

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

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

在 Linux, OS X, or 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 的存储桶。

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

在推送成功后,可以使用 AWS CLI 或 AWS CodeDeploy 控制台从 Amazon S3 部署修订。使用 AWS CLI 部署此修订:

在 Linux, OS X, or 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 --your-deployment-group-name your-deployment-group-name --s3-location bucket=codedeploydemobucket,key=WordPressApp.zip,bundleType=zip

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

本页内容: