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

本指南中的过程支持新的控制台设计。如果您选择使用较旧版本的控制台,可以在本指南中找到许多仍然适用的概念和基本过程。要访问新控制台中的帮助,请选择信息图标。

步骤 3:将您的 WordPress 应用程序上传到 Amazon S3

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

注意

虽然本教程未涵盖此内容,但您可使用 CodeDeploy 将应用程序从 GitHub 存储库部署到实例。有关更多信息,请参阅将 CodeDeploy 与 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 存储桶。

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 存储桶中的任何目录:

{ "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.

Now is a good time to verify the Amazon S3 bucket will allow download requests from each participating Amazon EC2 instance. You can specify this through an Amazon S3 bucket policy. For example, in the following Amazon S3 bucket policy, using the wildcard character (*) allows any Amazon EC2 instance with an attached IAM instance profile containing the ARN arn:aws-cn:iam::80398EXAMPLE:role/CodeDeployDemo to download files from any directory in the Amazon S3 bucket named codedeploydemobucket:

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

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

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

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

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

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

请确保 WordPress 应用程序文件 AppSpec file和脚本在您的开发计算机上的组织结构如下:

/tmp/ |--WordPress/ |-- appspec.yml |-- scripts/ | |-- change_permissions.sh | |-- create_test_db.sh | |-- install_dependencies.sh | |-- start_server.sh | |-- stop_server.sh |-- wp-admin/ | |-- (various files...) |-- wp-content/ | |-- (various files...) |-- wp-includes/ | |-- (various files...) |-- index.php |-- license.txt |-- readme.html |-- (various files ending with .php...)

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

将 WordPress 应用程序文件和 AppSpec file 捆绑到存档文件(称为应用程序修订)中。

注意

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

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

    cd /tmp/WordPress

    注意

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

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

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

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

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