步骤 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 存储桶。创建存储桶后,请确保提供对存储桶和您的 AWS 账户的访问权限。
注意
对于所有 AWS 账户,存储桶名称在 Amazon S3 中必须是唯一的。如果您无法使用 amzn-s3-demo-bucket,请尝试其他存储桶名称,例如 amzn-s3-demo-bucket 后跟短划线和您的姓名首字母或其他某个唯一标识符。之后,请确保将此教程中的任何 amzn-s3-demo-bucket 替换为您的存储桶名称。
必须在启动目标 Amazon EC2 实例的同一 AWS 区域创建 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 存储桶和 AWS 账户授予权限
您必须拥有上传到 Amazon S3 存储桶的权限。您可以通过 Amazon S3 存储桶策略指定这些权限。例如,在以下 Amazon S3 存储桶策略中,使用通配符(*)允许 AWS 账户 111122223333 将文件上传到名为 amzn-s3-demo-bucket 的 Amazon S3 存储桶中的任何目录:
{ "Statement": [ { "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "AWS": [ "111122223333" ] } } ] }
要查看您的 AWS 账户 ID,请参阅查找您的 AWS 账户 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 存储桶策略的信息,请参阅存储桶策略示例。
有关如何创建和附加 IAM policy 的信息,请参阅使用策略。
为存储桶准备应用程序的文件
请确保 WordPress 应用程序文件 AppSpec 文件和脚本在您的开发计算机上的组织结构如下:
/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 文件打包到存档文件(称为应用程序修订)中。
注意
将对象存储在存储桶中以及将应用程序修订传入和传出存储桶可能需支付费用。有关更多信息,请参阅 Amazon S3 定价
-
在开发计算机上,切换到这些文件存储到的文件夹:
cd /tmp/WordPress注意
如果您未切换到此文件夹,则将在您的当前文件夹中启动文件打包。例如,如果您当前的文件夹是
/tmp而非/tmp/WordPress,则打包操作将从tmp文件夹中的文件和子文件夹开始,这可能包括WordPress子文件夹之外的内容。 -
调用 create-application 命令可注册名为
WordPress_App的新应用程序:aws deploy create-application --application-name WordPress_App -
调用 CodeDeploy push 命令可将文件捆绑在一起,将修订上传到 Amazon S3,并向 CodeDeploy 注册有关已上传修订的信息,所有这些只需一个操作即可完成。
aws deploy push \ --application-name WordPress_App \ --s3-location s3://amzn-s3-demo-bucket/WordPressApp.zip \ --ignore-hidden-files此命令将当前目录中的文件(不包括任何隐藏文件)捆绑到一个名为
WordPressApp.zip的存档文件中,将修订上传到amzn-s3-demo-bucket存储桶,然后向 CodeDeploy 注册有关已上传修订的信息。