AWS CodeDeploy
User Guide (API Version 2014-10-06)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

步骤 3:将您的“Hello, World!”应用程序上传到 Amazon S3

现在,您将准备源内容并将其上传到一个位置(AWS CodeDeploy 可从该位置部署源内容)。以下说明向您演示如何预置 Amazon S3 存储桶、为存储桶准备应用程序修订的文件、对修订的文件打包,然后将修订推送到存储桶。

注意

虽然本教程未涵盖此内容,但您可使用 AWS CodeDeploy 将应用程序从 GitHub 存储库部署到实例。有关更多信息,请参阅 GitHub

预置 Amazon S3 存储桶

在 Amazon S3 中创建存储容器或存储桶 - 或使用现有存储桶。确保您可将修订上传到存储桶,并确保部署中使用的 Amazon EC2 实例可从存储桶下载修订。

您可使用 AWS CLI、Amazon S3 控制台或 Amazon S3 API 创建 Amazon S3 存储桶。创建存储桶后,请确保提供对存储桶和您的 IAM 用户的访问权限。

注意

对于所有 AWS 账户,存储桶名称在 Amazon S3 中必须是唯一的。如果您无法使用 codedeploydemobucket,请尝试其他存储桶名称,例如 codedeploydemobucket,后跟破折号和您的姓名首字母或某个其他唯一标识符。之后,请确保将本教程中的任何 codedeploydemobucket 替换为您的存储桶名称。

必须在启动目标 Amazon EC2 实例的同一 AWS 区域中创建 Amazon S3 存储桶。例如,如果您在美国东部(弗吉尼亚北部)地区中创建存储桶,则必须在美国东部(弗吉尼亚北部)地区中启动您的目标 Amazon EC2 实例。

创建 Amazon S3 存储桶 (CLI)

调用 mb 命令可创建名为 codedeploydemobucket 的 Amazon S3 存储桶:

Copy
aws s3 mb s3://codedeploydemobucket

创建 Amazon S3 存储桶(控制台)

  1. 通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. 在 Amazon S3 控制台中,选择 Create bucket

  3. Bucket name 框中,键入存储桶的名称。

  4. Region 列表中,选择目标区域,然后选择 Create

提供针对 Amazon S3 存储桶和您的 IAM 用户的权限

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

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

现在是验证 Amazon S3 存储桶将允许来自每个参与 Amazon EC2 实例的下载请求的最佳时机。您可以通过 Amazon S3 存储桶策略指定这一点。例如,在以下 Amazon S3 存储桶策略中,使用通配符 (*) 可让任何 Amazon EC2 实例 (具有包含 ARN arn:aws:iam::80398EXAMPLE:role/CodeDeployDemo 的附加 IAM 实例配置文件) 从名为 codedeploydemobucket 的 Amazon S3 存储桶中的任何目录下载文件:

Copy
{ "Statement": [ { "Action": ["s3:Get*", "s3:List*"], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "arn:aws:iam::80398EXAMPLE:role/CodeDeployDemo" ] } } ] }

有关如何生成和附加 Amazon S3 存储桶策略的信息,请参阅存储桶策略示例

您的账户必须具有将修订上传到 Amazon S3 存储桶的权限。一种方式是通过 IAM 策略指定此权限。以下 IAM 策略允许您的 IAM 用户将修订上传到名为 codedeploydemobucket 的 Amazon S3 存储桶中的任意位置:

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

有关如何创建和附加 IAM 策略的信息,请参阅使用策略

为存储桶准备应用程序的文件

确保在您的开发计算机上按如下方式整理网页、AppSpec 文件和脚本:

Copy
c:\ |-- temp\ |--HelloWorldApp\ |-- appspec.yml |-- before-install.bat |-- index.html

将应用程序的文件打包到单个存档文件并推送此存档文件

将这些文件打包到一个存档文件(称为应用程序修订)。

注意

将对象存储在存储桶中以及将应用程序修订传入和传出存储桶可能需支付费用。有关更多信息,请参阅 Amazon S3 定价

  1. 在开发计算机上,切换到这些文件存储到的文件夹:

    Copy
    cd c:\temp\HelloWorldApp

    注意

    如果您未切换到此文件夹,则将在您的当前文件夹中启动文件打包。例如,如果您的当前文件夹为 c:\temp 而不是 c:\temp\HelloWorldApp,则打包将从 c:\temp 文件夹(此文件夹可能不只是包含 HelloWorldApp 子文件夹)中的文件和子文件夹开始。

  2. 调用 create-application 命令可向 AWS CodeDeploy 注册名为 HelloWorld_App 的新应用程序:

    Copy
    aws deploy create-application --application-name HelloWorld_App
  3. 调用 AWS CodeDeploy push 命令可将文件打包在一起,将修订上传到 Amazon S3,并向 AWS CodeDeploy 注册有关已上传修订的信息,所有这些步骤通过一个操作完成。

    Copy
    aws deploy push --application-name HelloWorld_App --s3-location s3://codedeploydemobucket/HelloWorld_App.zip --ignore-hidden-files

    此命令将当前目录中的文件(不包括任何隐藏文件)打包到一个名为 HelloWorld_App.zip 的存档文件中,将修订上传到 codedeploydemobucket 存储桶,然后向 AWS CodeDeploy 注册有关已上传修订的信息。