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

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

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

注意

虽然本教程未涵盖此内容,但您可使用 AWS CodeDeploy 将应用程序从 GitHub 存储库部署到实例。有关更多信息,请参阅 将 AWS 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. 调用 AWS CodeDeploy push 命令可将文件打包在一起,将修订上传到 Amazon S3,并向 AWS CodeDeploy 注册有关已上传修订的信息,所有这些步骤通过一个操作完成。

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

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