

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

# 步驟 3：上傳您的「hello， world！」 應用程式至 Amazon S3
<a name="tutorials-windows-upload-application"></a>

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

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

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

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

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

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

**注意**  
所有 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-windows-upload-application-create-s3-bucket-cli)
+ [建立 Amazon S3 儲存貯體 （主控台）](#tutorials-windows-upload-application-create-s3-bucket-console)
+ [將許可授予 Amazon S3 儲存貯體和 AWS 您的帳戶](#tutorials-windows-upload-application-create-s3-bucket-grant-permission)

### 建立 Amazon S3 儲存貯體 (CLI)
<a name="tutorials-windows-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-windows-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-windows-upload-application-create-s3-bucket-grant-permission"></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)。

您在 中建立的 CodeDeploy 管理使用者[步驟 1：設定](getting-started-setting-up.md)也必須具有將修訂上傳至 Amazon S3 儲存貯體的許可。其中一種指定方式是透過您新增至使用者許可集或 IAM 角色 （您允許使用者擔任） 的 IAM 政策。下列 IAM 政策允許使用者在名為 的 Amazon S3 儲存貯體中的任何位置上傳修訂`amzn-s3-demo-bucket`：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	   
  "Statement":[
    {
      "Effect":"Allow",
      "Action":["s3:PutObject"],
      "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*"
    }
  ]
}
```

------

如需如何建立 IAM 政策的資訊，請參閱《[IAM 使用者指南》中的建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。 **如需將政策新增至許可集的資訊，請參閱*AWS IAM Identity Center 《 使用者指南*》中的[建立許可集](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html)。

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

請確定網頁、AppSpec 檔案和指令碼在您的開發機器上組織如下：

```
c:\
  |-- temp\
        |--HelloWorldApp\
             |-- appspec.yml
             |-- before-install.bat
             |-- index.html
```

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

將檔案綁定到封存檔案 (稱為應用程式「修訂版本」**)。

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

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

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

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

   ```
   aws deploy create-application --application-name HelloWorld_App
   ```

1. 呼叫 CodeDeploy [推送](https://docs.aws.amazon.com/cli/latest/reference/deploy/push.html)命令，將檔案綁定在一起、上傳修訂至 Amazon S3，以及向 CodeDeploy 註冊有關上傳修訂的資訊，全部都在一個動作中。

   ```
   aws deploy push --application-name HelloWorld_App --s3-location s3://amzn-s3-demo-bucket/HelloWorld_App.zip --ignore-hidden-files
   ```

   此命令會將目前目錄中的檔案 （不含任何隱藏檔案） 封裝至名為 的單一封存檔案`HelloWorld_App.zip`、上傳修訂至 儲存**amzn-s3-demo-bucket**貯體，以及向 CodeDeploy 註冊有關上傳修訂的資訊。