

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

# 將 CodeDeploy 的修訂推送至 Amazon S3 （僅限 EC2/內部部署部署）
<a name="application-revisions-push"></a>

如 中所述規劃修訂[規劃 CodeDeploy 的修訂](application-revisions-plan.md)並將 AppSpec 檔案新增至 中所述的修訂後[將應用程式規格檔案新增至 CodeDeploy 的修訂版](application-revisions-appspec-file.md)，您就可以綁定元件檔案並將修訂推送至 Amazon S3。對於部署到 Amazon EC2 執行個體，在推送修訂之後，您可以使用 CodeDeploy 將修訂從 Amazon S3 部署到執行個體。

**注意**  
CodeDeploy 也可用於部署已推送至 GitHub 的修訂。如需詳細資訊，請參閱您的 GitHub 文件。

我們假設您已完成[CodeDeploy 入門](getting-started-codedeploy.md)中的說明來設定 AWS CLI。這對於呼叫稍後描述的 **push** 命令特別重要。

請確定您有 Amazon S3 儲存貯體。遵循[建立儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html)體中的指示。

如果您的部署是 Amazon EC2 執行個體，則必須在與目標執行個體相同的區域中建立或存在目標 Amazon S3 儲存貯體。例如，如果您想要將修訂部署到美國東部 （維吉尼亞北部） 區域中的某些執行個體和美國西部 （奧勒岡） 區域中的其他執行個體，則必須在美國東部 （維吉尼亞北部） 區域中有一個儲存貯體，其中包含一個修訂複本，以及美國西部 （奧勒岡） 區域中另一個儲存貯體，其中包含另一個相同修訂複本。在此案例中，您將需要建立兩個不同的部署，一個在美國東部 （維吉尼亞北部） 區域，另一個在美國西部 （奧勒岡） 區域，即使區域和儲存貯體的修訂相同。

您必須具有上傳到 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 儲存貯體政策，請參閱[儲存貯體政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)。

呼叫 **push**命令的使用者至少必須具有將修訂上傳至每個目標 Amazon S3 儲存貯體的許可。例如，以下政策允許使用者在名為 的 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 政策，請參閱[使用政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html#AddingPermissions_Console)。

## 使用 推送修訂 AWS CLI
<a name="push-with-cli"></a>

**注意**  
 `push` 命令會將應用程式成品和 AppSpec 檔案封裝成修訂版。此修訂的檔案格式，是壓縮的 ZIP 檔案。此命令無法與 AWS Lambda 或 Amazon ECS 部署搭配使用，因為每個 預期修訂為 JSON 格式或 YAML 格式的 AppSpec 檔案。

呼叫 **push** 命令來綁定並推送部署的修訂。它的參數是：
+  **--application-name**：(字串) 必要。要與應用程式修訂版建立關聯的 CodeDeploy 應用程式名稱。
+  **--s3-location**：(字串) 必要。要上傳至 Amazon S3 的應用程式修訂位置資訊。您必須指定 Amazon S3 儲存貯體和金鑰。金鑰是修訂版的名稱。CodeDeploy 會在上傳內容之前壓縮內容。使用 `s3://amzn-s3-demo-bucket/your-key.zip` 格式。
+  **--ignore-hidden-files** 或 **--no-ignore-hidden-files**：(布林值) 選用。使用 `--no-ignore-hidden-files`旗標 （預設） 將隱藏的檔案綁定並上傳至 Amazon S3。使用 `--ignore-hidden-files`旗標來不要綁定隱藏檔案並上傳至 Amazon S3。
+  **--source** (字串) 選用。要部署的內容位置，以及開發機器上要壓縮並上傳至 Amazon S3 的 AppSpec 檔案。該位置指定為相對於目前目錄的路徑。如果未指定相對路徑，或為路徑使用單一句點 (".")，則會使用目前目錄。
+  **--description** (字串) 選用。用於總結應用程式修訂的評論。如果未指定，則會使用預設字串 "Uploaded by AWS CLI 'time' UTC"，其中 'time' 是國際標準時間 (UTC) 的目前系統時間。

您可以使用 AWS CLI 推送 Amazon EC2 部署的修訂。推送命令的範例如下所示：

在 Linux、macOS 或 Unix 中：

```
aws deploy push \
  --application-name WordPress_App \
  --description "This is a revision for the application WordPress_App" \
  --ignore-hidden-files \
  --s3-location s3://amzn-s3-demo-bucket/WordPressApp.zip \
  --source .
```

 在 Windows 上：

```
aws deploy push --application-name WordPress_App --description "This is a revision for the application WordPress_App" --ignore-hidden-files --s3-location s3://amzn-s3-demo-bucket/WordPressApp.zip --source .
```

 此命令會執行下列動作：
+  將已綁定檔案與名為 `WordPress_App` 的應用程式建立關聯。
+  將描述連接至修訂。
+  忽略隱藏檔案。
+  為修訂 `WordPressApp.zip` 命名，並將其推送至名為 `amzn-s3-demo-bucket` 的儲存貯體。
+  將根目錄中的所有檔案綁定至修訂。

推送成功後，您可以使用 AWS CLI 或 CodeDeploy 主控台從 Amazon S3 部署修訂。若要使用 部署此修訂 AWS CLI：

 在 Linux、macOS 或 Unix 中：

```
aws deploy create-deployment \
  --application-name WordPress_App \ 
  --deployment-config-name your-deployment-config-name \ 
  --deployment-group-name your-deployment-group-name \ 
  --s3-location bucket=amzn-s3-demo-bucket,key=WordPressApp.zip,bundleType=zip
```

 在 Windows 上：

```
aws deploy create-deployment --application-name WordPress_App --deployment-config-name your-deployment-config-name --deployment-group-name your-deployment-group-name --s3-location bucket=amzn-s3-demo-bucket,key=WordPressApp.zip,bundleType=zip
```

 如需詳細資訊，請參閱[使用 CodeDeploy 建立部署](deployments-create.md)。