

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 步驟 3：將 WordPress 應用程式上傳至 Amazon S3
<a name="tutorials-wordpress-upload-application"></a>

現在，您將準備來源內容並將其上傳至 CodeDeploy 可以從中部署該內容的位置。下列指示說明如何佈建 Amazon S3 儲存貯體、準備儲存貯體的應用程式修訂版檔案、綁定修訂版的檔案，然後將修訂版推送至儲存貯體。

**注意**  
雖然本教學課程未涵蓋，但您可以使用 CodeDeploy 將應用程式從 GitHub 儲存庫部署到執行個體。如需詳細資訊，請參閱[將 CodeDeploy 與 GitHub 整合](integrations-partners-github.md)。

**Topics**
+ [佈建 Amazon S3 儲存貯體](#tutorials-wordpress-upload-application-create-s3-bucket)
+ [準備儲存貯體的應用程式檔案](#tutorials-wordpress-upload-application-prepare-application-files)
+ [將應用程式的檔案綁定到單一封存檔案中，並推送封存檔案](#tutorials-wordpress-upload-application-bundle-and-push-archive)

## 佈建 Amazon S3 儲存貯體
<a name="tutorials-wordpress-upload-application-create-s3-bucket"></a>

在 Amazon S3 中建立儲存容器或*儲存貯*體，或使用現有的儲存貯體。請確定您可以將修訂版上傳至儲存貯體，而且部署中使用的 Amazon EC2 執行個體可以從儲存貯體下載修訂版。

您可以使用 AWS CLI、Amazon S3 主控台或 Amazon S3 APIs 來建立 Amazon S3 儲存貯體。建立儲存貯體之後，請務必授予儲存貯體和帳戶的 AWS 存取許可。

**注意**  
所有 AWS 帳戶的 Amazon S3 儲存貯體名稱必須是唯一的。如果您無法使用 **amzn-s3-demo-bucket**，請嘗試不同的儲存貯體名稱 (例如後接破折號和您的縮寫或其他唯一識別符的 **amzn-s3-demo-bucket**)。然後，請務必將在本教學中看到的所有 **amzn-s3-demo-bucket** 都替代為您的儲存貯體名稱。  
Amazon S3 儲存貯體必須在啟動目標 Amazon EC2 執行個體的相同 AWS 區域中建立。例如，如果您在美國東部 （維吉尼亞北部） 區域建立儲存貯體，則必須在美國東部 （維吉尼亞北部） 區域啟動目標 Amazon EC2 執行個體。

**Topics**
+ [建立 Amazon S3 儲存貯體 (CLI)](#tutorials-wordpress-upload-application-create-s3-bucket-cli)
+ [建立 Amazon S3 儲存貯體 （主控台）](#tutorials-wordpress-upload-application-create-s3-bucket-console)
+ [將許可授予 Amazon S3 儲存貯體和 AWS 帳戶](#tutorials-wordpress-upload-application-create-s3-bucket-grant-permissions)

### 建立 Amazon S3 儲存貯體 (CLI)
<a name="tutorials-wordpress-upload-application-create-s3-bucket-cli"></a>

呼叫 **mb**命令來建立名為 的 Amazon S3 儲存貯體**amzn-s3-demo-bucket**：

```
aws s3 mb s3://amzn-s3-demo-bucket --region region
```

### 建立 Amazon S3 儲存貯體 （主控台）
<a name="tutorials-wordpress-upload-application-create-s3-bucket-console"></a>

1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在 Amazon S3 主控台中，選擇**建立儲存貯**體。

1. 在 **Bucket name (儲存貯體名稱)** 方塊中，輸入儲存貯體的名稱。

1. 在 **Region (區域)** 清單中，選擇目標區域，然後選擇 **Create (建立)**。

### 將許可授予 Amazon S3 儲存貯體和 AWS 帳戶
<a name="tutorials-wordpress-upload-application-create-s3-bucket-grant-permissions"></a>

您必須具有上傳到 Amazon S3 儲存貯體的許可。您可以透過 Amazon S3 儲存貯體政策指定這些許可。例如，在下列 Amazon S3 儲存貯體政策中，使用萬用字元 (\$1) `111122223333` 可讓 AWS 帳戶將檔案上傳至名為 的 Amazon S3 儲存貯體中的任何目錄`amzn-s3-demo-bucket`：

```
{
    "Statement": [
        {
            "Action": [
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Principal": {
                "AWS": [
                    "111122223333"
                ]
            }
        }
    ]
}
```

若要檢視 AWS 您的帳戶 ID，請參閱[尋找 AWS 您的帳戶 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId)。

現在是驗證 Amazon S3 儲存貯體是否允許從每個參與的 Amazon EC2 執行個體下載請求的好時機。您可以透過 Amazon S3 儲存貯體政策指定此項目。例如，在下列 Amazon S3 儲存貯體政策中，使用萬用字元 (\$1) 允許任何具有連接 IAM 執行個體描述檔的 Amazon EC2 執行個體`arn:aws:iam::444455556666:role/CodeDeployDemo`，其中包含 ARN，從名為 的 Amazon S3 儲存貯體中的任何目錄下載檔案`amzn-s3-demo-bucket`：

```
{
    "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 儲存貯體政策的資訊，請參閱[儲存貯體政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)。

如需如何建立和連接 IAM 政策的資訊，請參閱[使用政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html#AddingPermissions_Console)。

## 準備儲存貯體的應用程式檔案
<a name="tutorials-wordpress-upload-application-prepare-application-files"></a>

請確定 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...)
```

## 將應用程式的檔案綁定到單一封存檔案中，並推送封存檔案
<a name="tutorials-wordpress-upload-application-bundle-and-push-archive"></a>

將 WordPress 應用程式檔案和 AppSpec 檔案綁定到封存檔案 （稱為應用程式*修訂*)。

**注意**  
可能會向您收取下列作業的費用：在儲存貯體中存放物件，以及將應用程式修訂傳入和傳出儲存貯體。如需詳細資訊，請參閱 [Simple Storage Service (Amazon S3) 定價](https://aws.amazon.com/s3/pricing/)。

1. 在開發電腦上，切換至檔案存放所在的資料夾：

   ```
   cd /tmp/WordPress
   ```
**注意**  
如果您未切換至此資料夾，將會在目前的資料夾開始檔案綁定。例如，如果您的目前資料夾是 `/tmp`，而不是 `/tmp/WordPress`，則會開始綁定 `tmp` 資料夾中的檔案和子資料夾，而此資料夾可能不只包含 `WordPress` 子資料夾。

1. 呼叫 **create-application** 命令，向名為 **WordPress\$1App** 的新應用程式註冊：

   ```
   aws deploy create-application --application-name WordPress_App
   ```

1. 呼叫 CodeDeploy [推送](https://docs.aws.amazon.com/cli/latest/reference/deploy/push.html)命令，將檔案綁定在一起、上傳修訂至 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 註冊有關上傳修訂的資訊。