

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

# Amazon S3 來源動作參考
<a name="action-reference-S3"></a>

當新物件上傳至已設定的儲存貯體和物件金鑰時觸發管道。

**注意**  
此參考主題說明 CodePipeline 的 Amazon S3 來源動作，其中來源位置是針對版本控制設定的 Amazon S3 儲存貯體。如需 CodePipeline 中 Amazon S3 部署動作的參考資訊，請參閱 [Amazon S3 部署動作參考](action-reference-S3Deploy.md)。

您可以建立 Amazon S3 儲存貯體，以用作應用程式檔案的來源位置。

**注意**  
當您建立來源儲存貯體時，請確定您對儲存貯體啟用版本控制。如果您想要使用現有的 Amazon S3 儲存貯體，請參閱[使用版本控制](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html)在現有的儲存貯體上啟用版本控制。

如果您使用主控台建立或編輯管道，CodePipeline 會建立 EventBridge 規則，在 S3 來源儲存貯體發生變更時啟動管道。

**注意**  
對於 Amazon ECR、Amazon S3 或 CodeCommit 來源，您也可以使用輸入轉換項目建立來源覆寫，以針對管道事件在 EventBridge `revisionValue`中使用 ，其中 `revisionValue` 衍生自物件金鑰、遞交或映像 ID 的來源事件變數。如需詳細資訊，請參閱 [Amazon ECR 來源動作和 EventBridge 資源](create-cwe-ecr-source.md)、 [連線至已啟用事件來源的 Amazon S3 來源動作](create-S3-source-events.md)或 下程序中包含的輸入轉換項目選用步驟[CodeCommit 來源動作和 EventBridge](triggering.md)。

您必須已建立 Amazon S3 來源儲存貯體，並將來源檔案上傳為單一 ZIP 檔案，才能透過 Amazon S3 動作連接管道。

**注意**  
當 Amazon S3 是管道的來源提供者時，您可以將來源檔案壓縮為單一 .zip，並將 .zip 上傳至來源儲存貯體。您也可以上傳單一解壓縮檔案；不過，預期 .zip 檔案的下游動作會失敗。

**Topics**
+ [動作類型](#action-reference-S3-type)
+ [組態參數](#action-reference-S3-config)
+ [Input artifacts (輸入成品)](#action-reference-S3-input)
+ [輸出成品](#action-reference-S3-output)
+ [輸出變數](#action-reference-S3-variables)
+ [服務角色許可：S3 來源動作](#edit-role-s3source)
+ [動作宣告](#action-reference-S3-example)
+ [另請參閱](#action-reference-S3-links)

## 動作類型
<a name="action-reference-S3-type"></a>
+ 類別：`Source`
+ 擁有者：`AWS`
+ 提供者：`S3`
+ 版本：`1`

## 組態參數
<a name="action-reference-S3-config"></a>

**S3 儲存貯體**  
必要：是  
要偵測來源變更的 Amazon S3 儲存貯體名稱。

**S3ObjectKey**  
必要：是  
要偵測來源變更的 Amazon S3 物件金鑰名稱。

**AllowOverrideForS3ObjectKey**  
必要：否  
`AllowOverrideForS3ObjectKey` 控制來自 的來源覆寫是否可以`StartPipelineExecution`覆寫已在來源動作`S3ObjectKey`中設定的 。如需使用 S3 物件金鑰覆寫來源的詳細資訊，請參閱 [使用來源修訂覆寫啟動管道](pipelines-trigger-source-overrides.md)。  
如果您省略 `AllowOverrideForS3ObjectKey`，CodePipeline 會將此參數設定為 ，以預設方式覆寫來源動作中的 S3 ObjectKey`false`。
此參數的有效值：  
+ `true`：如果設定，預先設定的 S3 物件金鑰可以在管道執行期間由來源修訂覆寫覆寫。
**注意**  
如果您想要允許所有 CodePipeline 使用者在啟動新的管道執行時覆寫預先設定的 S3 物件金鑰，您必須將 `AllowOverrideForS3ObjectKey`設定為 `true`。
+ `false`: 

  如果設定，CodePipeline 將不允許使用來源修訂覆寫覆寫 S3 物件金鑰。這也是此參數的預設值。

**PollForSourceChanges**  
必要：否  
`PollForSourceChanges` 控制 CodePipeline 是否輪詢 Amazon S3 來源儲存貯體以進行來源變更。我們建議您改用 CloudWatch Events 和 CloudTrail 來偵測來源變更。如需設定 CloudWatch Events 的詳細資訊，請參閱 [使用 S3 來源和 CloudTrail 追蹤 (CLI) 遷移輪詢管道](update-change-detection.md#update-change-detection-cli-S3)或 [使用 S3 來源和 CloudTrail 追蹤遷移輪詢管道 (CloudFormation 範本）](update-change-detection.md#update-change-detection-cfn-s3)。  
如果您想要設定 CloudWatch Events，您必須`PollForSourceChanges`將 設定為 `false`，以避免重複的管道執行。
此參數的有效值：  
+ `true`：如果設定，CodePipeline 會輪詢來源位置以進行來源變更。
**注意**  
如果您省略 `PollForSourceChanges`，CodePipeline 會預設為輪詢來源位置以進行來源變更。此行為同於包含 `PollForSourceChanges` 且設定為 `true`。
+ `false`：如果設定，CodePipeline 不會輪詢來源位置以進行來源變更。如果您想要設定 CloudWatch Events 規則來偵測來源變更，請使用此設定。

## Input artifacts (輸入成品)
<a name="action-reference-S3-input"></a>
+ **成品數量：**`0`
+ **描述：**輸入成品不適用於此動作類型。

## 輸出成品
<a name="action-reference-S3-output"></a>
+ **成品數量：** `1`
+ **描述：**提供設定為連線至管道的來源儲存貯體中可用的成品。從儲存貯體產生的成品是 Amazon S3 動作的輸出成品。Amazon S3 物件中繼資料 (ETag 和版本 ID) 會顯示在 CodePipeline 中，做為觸發管道執行的來源修訂。

## 輸出變數
<a name="action-reference-S3-variables"></a>

設定時，此動作會產生變數，供管道中的下游動作的動作組態所參考。即使此動作沒有命名空間，此動作產生的變數仍可視為輸出變數。您可以設定動作的命名空間，讓這些變數可供下游動作的組態使用。

如需 CodePipeline 中變數的詳細資訊，請參閱 [變數參考](reference-variables.md)。

**BucketName**  
與觸發管道的來源變更相關的 Amazon S3 儲存貯體名稱。

**ETag**  
物件的實體標籤，此物件與觸發管道的來源變更有關。ETag 是物件的 MD5 雜湊。ETag 只會反映物件內容的變更，而非中繼資料的變更。

**ObjectKey**  
與觸發管道的來源變更相關的 Amazon S3 物件金鑰名稱。

**VersionId**  
物件版本的版本 ID，此物件與觸發管道的來源變更有關。

## 服務角色許可：S3 來源動作
<a name="edit-role-s3source"></a>

對於 S3 來源動作支援，請將下列項目新增至您的政策陳述式：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:GetBucketVersioning",
        "s3:GetBucketAcl",
        "s3:GetBucketLocation",
        "s3:GetObjectTagging",
        "s3:GetObjectVersionTagging"
      ],
      "Resource": [
        "arn:aws:s3:::[[S3Bucket]]",
        "arn:aws:s3:::[[S3Bucket]]/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

------

## 動作宣告
<a name="action-reference-S3-example"></a>

------
#### [ YAML ]

```
Name: Source
Actions:
  - RunOrder: 1
    OutputArtifacts:
      - Name: SourceArtifact
    ActionTypeId:
      Provider: S3
      Owner: AWS
      Version: '1'
      Category: Source
    Region: us-west-2
    Name: Source
    Configuration:
      S3Bucket: amzn-s3-demo-source-bucket
      S3ObjectKey: my-application.zip
      PollForSourceChanges: 'false'
    InputArtifacts: []
```

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

```
{
    "Name": "Source",
    "Actions": [
        {
            "RunOrder": 1,
            "OutputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "ActionTypeId": {
                "Provider": "S3",
                "Owner": "AWS",
                "Version": "1",
                "Category": "Source"
            },
            "Region": "us-west-2",
            "Name": "Source",
            "Configuration": {
                "S3Bucket": "amzn-s3-demo-source-bucket",
                "S3ObjectKey": "my-application.zip",
                "PollForSourceChanges": "false"
            },
            "InputArtifacts": []
        }
    ]
},
```

------

## 另請參閱
<a name="action-reference-S3-links"></a>

以下相關資源可協助您使用此動作。
+ [教學：建立簡易管道 (S3 儲存貯體)](tutorials-simple-s3.md) – 本教學課程提供範例應用程式規格檔案，以及範例 CodeDeploy 應用程式和部署群組。使用此教學課程建立管道，其中包含部署到 Amazon EC2 執行個體的 Amazon S3 來源。 Amazon EC2 