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

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

第 3 步:将 WordPress 应用程序上传到 Amazon S3

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

注意

虽然本教程未涵盖此内容,但您可使用 CodeDeploy 将应用程序从 GitHub 存储库部署到实例。有关更多信息,请参阅GitHub 将 CodeDeploy 集成

配置 Amazon S3 存储桶

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

您可以将Amazon CLI、Amazon S3 控制台或 Amazon S3 API 创建 Amazon S3 存储桶。创建存储桶后,请确保为存储桶和您的 IAM 用户赋予访问权限。

注意

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

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

创建 Amazon S3 存储桶 (CLI)

调用mb命令创建名为的 Amazon S3 存储桶codedeploydemobucket

aws s3 mb s3://codedeploydemobucket

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

  1. 通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

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

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

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

向 Amazon S3 存储桶和您的 IAM 用户赋予权限

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

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

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

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

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

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

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

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

请确保 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 定价

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

    cd /tmp/WordPress
    注意

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

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

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

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

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