第 3 步:上传您的 “你好,世界!” 应用程序添加到 Amazon S3 - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

第 3 步:上传您的 “你好,世界!” 应用程序添加到 Amazon S3

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

注意

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

配置 Amazon S3 存储桶

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

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

注意

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

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

创建 Amazon S3 存储桶 (CLI)

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

aws s3 mb s3://codedeploydemobucket

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

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

  2. 在 Amazon S3 控制台中,选择创建存储桶

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

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

向 Amazon S3 存储桶和您的 IAM 用户授予权限

您必须具有上传到 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 存储桶是否允许来自每个参与的 Amazon EC2 实例的下载请求的好时机。您可以通过 Amazon S3 存储桶策略指定此权限。例如,在以下 Amazon S3 存储桶策略中,使用通配符 (*) 允许任何带有包含 ARN 的 IAM 实例配置文件的 Amazon EC2 实例arn:aws:iam::444455556666:role/CodeDeployDemo从 Amazon S3 存储桶中任何名为codedeploydemobucket

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

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

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

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

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

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

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

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

将应用程序的文件捆绑到单个存档文件中,然后推送归档文件

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

注意

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

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

    cd c:\temp\HelloWorldApp
    注意

    如果您未切换到此文件夹,则将在您的当前文件夹中启动文件打包。例如,如果您当前的文件夹是 c:\temp 而非 c:\temp\HelloWorldApp,则打包操作将从 c:\temp 文件夹中的文件和子文件夹开始,这可能包括 HelloWorldApp 子文件夹之外的内容。

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

    aws deploy create-application --application-name HelloWorld_App
  3. 调用 CodeDeploypush命令可将文件捆绑在一起,将修订上传到 Amazon S3,并向 CodeDeploy 注册有关已上传修订的信息,所有这些只需一个操作即可完成。

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

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