步骤 3:将“Hello, World!” 应用程序上传到 Amazon S3 - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

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

注意

尽管本教程中没有介绍,但您可以使用 CodeDeploy 将应用程序从 GitHub 存储库部署到实例。有关更多信息,请参阅 CodeDeploy 与集成 GitHub

预置 Amazon S3 存储桶

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

您可以使用 Amazon CLI、亚马逊 S3 控制台或亚马逊 S3 API 来创建 Amazon S3 存储桶。创建存储桶后,请确保向存储桶和您的 CodeDeploy用户授予访问权限。

注意

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

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

创建 Amazon S3 存储桶(CLI)

调用 mb 命令以创建一个名为 DOC-EXAMPLE-BUCKET 的 Amazon S3 存储桶:

aws s3 mb s3://DOC-EXAMPLE-BUCKET --region region

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

  1. 打开 Amazon S3 控制台,网址为:https://console.aws.amazon.com/s3/

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

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

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

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

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

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

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

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

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

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

您在中创建的 CodeDeploy 管理员用户还步骤 1:设置必须有权将修订版上传到 Amazon S3 存储桶。指定这一点的一种方法是通过 IAM policy(添加到用户的权限集)或 IAM 角色(允许用户代入)。以下 IAM policy 允许用户将修订上传到名为 DOC-EXAMPLE-BUCKET 的 Amazon S3 存储桶中的任意位置:

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

有关如何创建 IAM policy 的信息,请参阅《IAM 用户指南》中的创建 IAM policy。有关向权限集添加策略的信息,请参阅《Amazon IAM Identity Center 用户指南》中的创建权限集

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

确保网页、 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. 调用 p CodeDeploy ush 命令将文件捆绑在一起,将修订上传到 Amazon S3,并在其中注册 CodeDeploy 有关已上传修订的信息,所有这些操作只需一个操作即可。

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

    此命令将当前目录中的文件(不包括任何隐藏文件)捆绑到名为的单个存档文件中HelloWorld_App.zip,将修订版上传到DOC-EXAMPLE-BUCKET存储桶,并在其中注册 CodeDeploy 有关已上传修订的信息。