步骤 3:将“Hello, World!” 应用程序上传到 Amazon S3
现在,您将准备源内容并将其上传到一个位置(CodeDeploy 可从该位置部署源内容)。以下说明向您演示如何预置 Amazon S3 存储桶、为存储桶准备应用程序修订的文件、对修订的文件打包,然后将修订推送到存储桶。
注意
虽然本教程未涵盖此内容,但您可使用 CodeDeploy 将应用程序从 GitHub 存储库部署到实例。有关更多信息,请参阅 将 CodeDeploy 与 GitHub 集成。
预置 Amazon S3 存储桶
在 Amazon S3 中创建存储容器或存储桶,或者使用现有的存储桶。确保您可将修订上传到存储桶,并确保部署中使用的 Amazon EC2 实例可从存储桶下载修订。
您可以使用 Amazon CLI、Amazon S3 控制台或 Amazon S3 API 创建 Amazon S3 存储桶。创建存储桶后,请确保提供对存储桶和您的 CodeDeploy 用户的访问权限。
注意
对于所有 Amazon 账户,存储桶名称在 Amazon S3 中必须是唯一的。如果您无法使用 amzn-s3-demo-bucket,请尝试其他存储桶名称,例如 amzn-s3-demo-bucket 后跟短划线和您的姓名首字母或其他某个唯一标识符。之后,请确保将此教程中的任何 amzn-s3-demo-bucket 替换为您的存储桶名称。
必须在启动目标 Amazon EC2 实例的同一 Amazon 区域创建 Amazon S3 存储桶。例如,如果您在美国东部(弗吉尼亚州北部)区域创建存储桶,则您的目标 Amazon EC2 实例必须在美国东部(弗吉尼亚州北部)区域启动。
创建 Amazon S3 存储桶(CLI)
调用 mb 命令以创建一个名为 amzn-s3-demo-bucket 的 Amazon S3 存储桶:
aws s3 mb s3://amzn-s3-demo-bucket --regionregion
创建 Amazon S3 存储桶(控制台)
-
通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在 Amazon S3 控制台中,选择创建存储桶。
-
在 Bucket name 框中,键入存储桶的名称。
-
在 Region 列表中,选择目标区域,然后选择 Create。
对 Amazon S3 存储桶和您的 Amazon 账户授予权限
您必须拥有上传到 Amazon S3 存储桶的权限。您可以通过 Amazon S3 存储桶策略指定这些权限。例如,在以下 Amazon S3 存储桶策略中,使用通配符(*)允许 Amazon 账户 111122223333 将文件上传到名为 amzn-s3-demo-bucket 的 Amazon S3 存储桶中的任何目录:
{ "Statement": [ { "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-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 实例,从名为 amzn-s3-demo-bucket 的 Amazon S3 存储桶中的任何目录下载文件:
{ "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/CodeDeployDemo" ] } } ] }
有关如何生成和附加 Amazon S3 存储桶策略的信息,请参阅存储桶策略示例。
您在步骤 1:设置中创建的 CodeDeploy 管理用户还必须有权将修订上载到 Amazon S3 存储桶中。指定这一点的一种方法是通过 IAM policy(添加到用户的权限集)或 IAM 角色(允许用户代入)。以下 IAM policy 允许用户将修订上传到名为 amzn-s3-demo-bucket 的 Amazon S3 存储桶中的任意位置:
有关如何创建 IAM policy 的信息,请参阅《IAM 用户指南》中的创建 IAM policy。有关向权限集添加策略的信息,请参阅《Amazon IAM Identity Center 用户指南》中的创建权限集。
为存储桶准备应用程序的文件
确保在您的开发计算机上按如下方式整理网页、AppSpec 文件和脚本:
c:\ |-- temp\ |--HelloWorldApp\ |-- appspec.yml |-- before-install.bat |-- index.html
将应用程序的文件打包到单个存档文件并推送此存档文件
将这些文件打包到一个存档文件(称为应用程序修订)。
注意
将对象存储在存储桶中以及将应用程序修订传入和传出存储桶可能需支付费用。有关更多信息,请参阅 Amazon S3 定价
-
在开发计算机上,切换到这些文件存储到的文件夹:
cd c:\temp\HelloWorldApp注意
如果您未切换到此文件夹,则将在您的当前文件夹中启动文件打包。例如,如果您当前的文件夹是
c:\temp而非c:\temp\HelloWorldApp,则打包操作将从c:\temp文件夹中的文件和子文件夹开始,这可能包括HelloWorldApp子文件夹之外的内容。 -
调用 create-application 命令可向 CodeDeploy 注册名为
HelloWorld_App的新应用程序:aws deploy create-application --application-name HelloWorld_App -
调用 CodeDeploy push 命令可将文件捆绑在一起,将修订上传到 Amazon S3,并向 CodeDeploy 注册有关已上传修订的信息,所有这些只需一个操作即可完成。
aws deploy push --application-name HelloWorld_App --s3-location s3://amzn-s3-demo-bucket/HelloWorld_App.zip --ignore-hidden-files此命令将当前目录中的文件(不包括任何隐藏文件)捆绑到一个名为
HelloWorld_App.zip的存档文件中,将修订上传到amzn-s3-demo-bucket存储桶,然后向 CodeDeploy 注册有关已上传修订的信息。