

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

# 動作結構參考
<a name="action-reference"></a>

本節僅供動作組態參考。如需管道結構的概念介紹，請參閱 [CodePipeline 管道結構參考](reference-pipeline-structure.md)。

CodePipeline 中的每個動作提供者都會在管道結構中使用一組必要和選用的組態欄位。本節依動作提供者提供下列參考資訊：
+ 管道結構動作區塊中包含 `ActionType` 欄位的有效值，例如 `Owner` 和 `Provider`。
+ 管道結構動作區段中包含 `Configuration` 參數的說明和其他參考資訊 (必要和選用)。
+ 有效的 JSON 範例和 YAML 動作欄位。

本節會定期更新，包含更多的動作提供者。目前提供下列動作提供者的參考資訊：

**Topics**
+ [Amazon EC2 動作參考](action-reference-EC2Deploy.md)
+ [Amazon ECR 來源動作參考](action-reference-ECR.md)
+ [`ECRBuildAndPublish` 組建動作參考](action-reference-ECRBuildAndPublish.md)
+ [Amazon ECS 和 CodeDeploy 藍綠部署動作參考](action-reference-ECSbluegreen.md)
+ [Amazon Elastic Container Service 部署動作參考](action-reference-ECS.md)
+ [Amazon Elastic Kubernetes Service `EKS` 部署動作參考](action-reference-EKS.md)
+ [AWS Lambda 部署動作參考](action-reference-LambdaDeploy.md)
+ [Amazon S3 部署動作參考](action-reference-S3Deploy.md)
+ [Amazon S3 來源動作參考](action-reference-S3.md)
+ [AWS AppConfig 部署動作參考](action-reference-AppConfig.md)
+ [CloudFormation 部署動作參考](action-reference-CloudFormation.md)
+ [CloudFormation StackSets](action-reference-StackSets.md)
+ [AWS CodeBuild 組建和測試動作參考](action-reference-CodeBuild.md)
+ [AWS CodePipeline 叫用動作參考](action-reference-PipelineInvoke.md)
+ [AWS CodeCommit 來源動作參考](action-reference-CodeCommit.md)
+ [AWS CodeDeploy 部署動作參考](action-reference-CodeDeploy.md)
+ [適用於 Bitbucket Cloud、GitHub、GitHub Enterprise Server、GitLab.com, 和 GitLab 自我管理動作的 CodeStarSourceConnection](action-reference-CodestarConnectionSource.md)
+ [命令動作參考](action-reference-Commands.md)
+ [AWS Device Farm 測試動作參考](action-reference-DeviceFarm.md)
+ [Elastic Beanstalk 部署動作參考](action-reference-Beanstalk.md)
+ [Amazon Inspector `InspectorScan` 調用動作參考](action-reference-InspectorScan.md)
+ [AWS Lambda 叫用動作參考](action-reference-Lambda.md)
+ [AWS OpsWorks 部署動作參考](action-reference-OpsWorks.md)
+ [AWS Service Catalog部署動作參考](action-reference-ServiceCatalog.md)
+ [AWS Step Functions](action-reference-StepFunctions.md)

# Amazon EC2 動作參考
<a name="action-reference-EC2Deploy"></a>

您可以使用 Amazon EC2 `EC2`動作將應用程式程式碼部署到您的部署機群。您的部署機群可以包含 Amazon EC2 Linux 執行個體或 Linux SSM 受管節點。您的執行個體必須安裝 SSM 代理程式。

**注意**  
此動作僅支援 Linux 執行個體類型。支援的機群大小上限為 500 個執行個體。

動作會根據指定的最大值選擇多個執行個體。首先會選擇先前執行個體中失敗的執行個體。如果執行個體已收到相同輸入成品的部署，例如先前動作失敗的案例，則動作會略過特定執行個體上的部署。

**注意**  
只有 V2 類型管道才支援此動作。

**Topics**
+ [動作類型](#action-reference-EC2Deploy-type)
+ [組態參數](#action-reference-EC2Deploy-parameters)
+ [Input artifacts (輸入成品)](#action-reference-EC2Deploy-input)
+ [輸出成品](#action-reference-EC2Deploy-output)
+ [EC2 部署動作的服務角色政策許可](#action-reference-EC2Deploy-permissions-action)
+ [部署規格檔案參考](#action-reference-EC2Deploy-spec-reference)
+ [動作宣告](#action-reference-EC2Deploy-example)
+ [部署規格範例的動作宣告](#action-reference-EC2Deploy-example-spec)
+ [另請參閱](#action-reference-EC2Deploy-links)

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

## 組態參數
<a name="action-reference-EC2Deploy-parameters"></a>

**InstanceTagKey**  
必要：是  
您在 Amazon EC2 中建立之執行個體的標籤索引鍵，例如 `Name`。

**InstanceTagValue**  
必要：否  
您在 Amazon EC2 中建立之執行個體的標籤值，例如 `my-instances`。  
未指定此值時，具有 **InstanceTagKey** 的所有執行個體都會相符。

**InstanceType**  
必要：是  
在 Amazon EC2 中建立的執行個體或 SSM 節點類型。有效值為 `EC2` 和 `SSM_MANAGED_NODE`。  
您必須已在所有執行個體上建立、標記和安裝 SSM 代理程式。  
建立執行個體時，您可以建立或使用現有的 EC2 執行個體角色。若要避免`Access Denied`錯誤，您必須將 S3 儲存貯體許可新增至執行個體角色，才能將執行個體許可授予 CodePipeline 成品儲存貯體。建立預設角色，或使用範圍縮小為管道區域成品儲存貯體的`s3:GetObject`許可來更新現有角色。

**TargetDirectory**  
必要：是 （如果指定指令碼）  
要在 Amazon EC2 執行個體上使用的目錄，以執行指令碼。

**DeploySpec**  
必要：是 （如果指定了部署規格）  
用於設定部署安裝和生命週期事件的檔案。如需部署規格欄位描述和資訊，請參閱 [部署規格檔案參考](#action-reference-EC2Deploy-spec-reference)。若要檢視指定部署規格檔案的動作組態，請參閱 中的範例[部署規格範例的動作宣告](#action-reference-EC2Deploy-example-spec)。

**MaxBatch**  
必要：否  
允許平行部署的執行個體數目上限。

**MaxError**  
必要：否  
部署期間允許的執行個體錯誤數目上限。

**TargetGroupNameList**  
必要：否  
部署的目標群組名稱清單。您必須已建立目標群組。  
目標群組提供一組執行個體來處理特定請求。如果指定目標群組，執行個體將在部署前從目標群組中移除，並在部署後新增至目標群組。

**PreScript**  
必要：否  
動作部署階段之前要執行的指令碼。

**PostScript**  
必要：是  
動作部署階段之後要執行的指令碼。

下圖顯示選取**使用動作組態之動作**的**編輯**頁面範例。

![\[使用動作組態指定 EC2Deploy 動作之新管道的編輯動作頁面\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/ec2deploy-action.png)


下圖顯示選取**使用 DeploySpec 檔案**之動作的**編輯**頁面範例。

![\[使用 EC2Deploy 動作選項來使用規格檔案之新管道的編輯動作頁面\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/ec2deploy-action-spec.png)


## Input artifacts (輸入成品)
<a name="action-reference-EC2Deploy-input"></a>
+ **成品數量：** `1`
+ **描述：**如果有提供的檔案，以支援部署期間的指令碼動作。

## 輸出成品
<a name="action-reference-EC2Deploy-output"></a>
+ **成品數量：** `0`
+ **描述：**輸出成品不適用於此動作類型。

## EC2 部署動作的服務角色政策許可
<a name="action-reference-EC2Deploy-permissions-action"></a>

當 CodePipeline 執行 動作時，CodePipeline 服務角色需要下列許可，並針對具有最低權限的存取適當縮小範圍。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "StatementWithAllResource",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "elasticloadbalancing:DescribeTargetGroupAttributes",
                "elasticloadbalancing:DescribeTargetGroups",
                "elasticloadbalancing:DescribeTargetHealth",
                "ssm:CancelCommand",
                "ssm:DescribeInstanceInformation",
                "ssm:ListCommandInvocations"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "StatementForLogs",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:111122223333:log-group:/aws/codepipeline/{{pipelineName}}:*"
            ]
        },
        {
            "Sid": "StatementForElasticloadbalancing",
            "Effect": "Allow",
            "Action": [
                "elasticloadbalancing:DeregisterTargets",
                "elasticloadbalancing:RegisterTargets"
            ],
            "Resource": [
                "arn:aws:elasticloadbalancing:us-east-1:111122223333:targetgroup/[[targetGroupName]]/*"
            ]
        },
        {
            "Sid": "StatementForSsmOnTaggedInstances",
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/{{tagKey}}": "{{tagValue}}"
                }
            }
        },
        {
            "Sid": "StatementForSsmApprovedDocuments",
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1::document/AWS-RunPowerShellScript",
                "arn:aws:ssm:us-east-1::document/AWS-RunShellScript"
            ]
        }
    ]
}
```

------

### CloudWatch 日誌中管道的日誌群組
<a name="action-reference-EC2Deploy-logs"></a>

當 CodePipeline 執行動作時，CodePipeline 會使用管道的名稱建立日誌群組，如下所示。這可讓您縮小使用管道名稱記錄資源的許可範圍。

```
/aws/codepipeline/MyPipelineName
```

下列記錄許可包含在上述服務角色的更新中。
+ logs:CreateLogGroup
+ logs:CreateLogStream
+ logs:PutLogEvents

若要使用動作詳細資訊對話方塊頁面在主控台中檢視日誌，必須將檢視日誌的許可新增至主控台角色。如需詳細資訊，請參閱 中的主控台許可政策範例[在主控台中檢視運算日誌所需的許可](security-iam-permissions-console-logs.md)。

### CloudWatch 日誌的服務角色政策許可
<a name="w2aac56c13c21c11"></a>

當 CodePipeline 執行動作時，CodePipeline 會使用管道的名稱建立日誌群組，如下所示。這可讓您縮小使用管道名稱記錄資源的許可範圍。

```
/aws/codepipeline/MyPipelineName
```

若要使用動作詳細資訊對話方塊頁面在主控台中檢視日誌，必須將檢視日誌的許可新增至主控台角色。如需詳細資訊，請參閱 中的主控台許可政策範例[在主控台中檢視運算日誌所需的許可](security-iam-permissions-console-logs.md)。

## 部署規格檔案參考
<a name="action-reference-EC2Deploy-spec-reference"></a>

CodePipeline 執行 動作時，您可以指定規格檔案來設定執行個體的部署。部署規格檔案會指定要安裝的內容，以及要執行哪些生命週期事件關聯，以回應部署生命週期事件。部署規格檔案一律為 YAML 格式。部署規格檔案用於：
+ 將應用程式修訂中的來源檔案，映射至執行個體上的目標。
+ 指定已部署檔案的自訂許可。
+ 指定在部署程序各階段在每個執行個體上執行的指令碼。

部署規格檔案支援 CodeDeploy 使用 AppSpec 檔案支援的特定部署組態參數。您可以直接使用現有的 AppSpec 檔案，並忽略任何不支援的參數。如需 CodeDeploy 中 AppSpec 檔案的詳細資訊，請參閱 *[CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html) 使用者指南*中的應用程式規格檔案參考。

檔案部署參數指定如下。
+ `files` - 部署規格檔案會`destination:`為部署檔案指定 `source:`和 。
+ `scripts` - 部署的指令碼事件。支援兩個事件： `BeforeDeploy`和 `AfterDeploy`。
+ `hooks` - 事件的生命週期關聯。支援下列掛鉤：`ApplicationStop`、`BeforeInstall`、`ApplicationStart`、 `AfterInstall`和 `ValidateService`。
**注意**  
勾點參數適用於 AppSpec 與 CodeDeploy 的相容性，且僅適用於 0.0 版 (AppSpec 格式）。對於此格式，CodePipeline 將盡最大努力對事件進行映射。

規格檔案中必須使用正確的 YAML 間距；否則，如果部署規格檔案中的位置和空間數不正確，就會引發錯誤。如需有關間距的詳細資訊，請參閱 [YAML](http://www.yaml.org/) 規格。

範例部署規格檔案如下。

```
version: 0.1
files:
  - source: /index.html
    destination: /var/www/html/
scripts:
  BeforeDeploy:
    - location: scripts/install_dependencies
      timeout: 300
      runas: myuser
  AfterDeploy:
    - location: scripts/start_server
      timeout: 300
      runas: myuser
```

若要檢視指定部署規格檔案的動作組態，請參閱 中的範例[部署規格範例的動作宣告](#action-reference-EC2Deploy-example-spec)。

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

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

```
name: DeployEC2
actions:
- name: EC2
  actionTypeId:
    category: Deploy
    owner: AWS
    provider: EC2
    version: '1'
  runOrder: 1
  configuration:
    InstanceTagKey: Name
    InstanceTagValue: my-instances
    InstanceType: EC2
    PostScript: "test/script.sh",
    TargetDirectory: "/home/ec2-user/deploy"
  outputArtifacts: []
  inputArtifacts:
  - name: SourceArtifact
  region: us-east-1
```

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

```
{
    "name": "DeployEC2",
    "actions": [
        {
            "name": "EC2Deploy",
            "actionTypeId": {
                "category": "Deploy",
                "owner": "AWS",
                "provider": "EC2",
                "version": "1"
            },
            "runOrder": 1,
            "configuration": {
                "InstanceTagKey": "Name",
                "InstanceTagValue": "my-instances",
                "InstanceType": "EC2",
                "PostScript": "test/script.sh",
                "TargetDirectory": "/home/ec2-user/deploy"
            },
            "outputArtifacts": [],
            "inputArtifacts": [
                {
                    "name": "SourceArtifact"
                }
            ],
            "region": "us-east-1"
        }
    ]
},
```

------

## 部署規格範例的動作宣告
<a name="action-reference-EC2Deploy-example-spec"></a>

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

```
name: DeployEC2
actions:
- name: EC2
  actionTypeId:
    category: Deploy
    owner: AWS
    provider: EC2
    version: '1'
  runOrder: 1
  configuration:
    DeploySpec: "deployspec.yaml"
    InstanceTagKey: Name
    InstanceTagValue: my-instances
    InstanceType: EC2
  outputArtifacts: []
  inputArtifacts:
  - name: SourceArtifact
  region: us-east-1
```

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

```
{
    "name": "DeployEC2",
    "actions": [
        {
            "name": "EC2Deploy",
            "actionTypeId": {
                "category": "Deploy",
                "owner": "AWS",
                "provider": "EC2",
                "version": "1"
            },
            "runOrder": 1,
            "configuration": {
                "DeploySpec": "deployspec.yaml",
                "InstanceTagKey": "Name",
                "InstanceTagValue": "my-instances",
                "InstanceType": "EC2"
            },
            "outputArtifacts": [],
            "inputArtifacts": [
                {
                    "name": "SourceArtifact"
                }
            ],
            "region": "us-east-1"
        }
    ]
},
```

------

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

以下相關資源可協助您使用此動作。
+  [教學課程：使用 CodePipeline 部署至 Amazon EC2 執行個體](tutorials-ec2-deploy.md) – 本教學課程會逐步引導您建立 EC2 執行個體，您將在其中部署指令碼檔案，以及使用 EC2 動作建立管道。
+ [EC2 部署動作失敗並顯示錯誤訊息 `No such file`](troubleshooting.md#troubleshooting-ec2-deploy) – 本主題說明使用 EC2 動作對找不到錯誤的檔案進行故障診斷。

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

將新映像推送至 Amazon ECR 儲存庫時觸發管道。此動作提供參考推送至 Amazon ECR 之映像的 URI 的映像定義檔案。此來源動作通常與 CodeCommit 等另一個來源動作搭配使用，以允許所有其他來源成品的來源位置。如需詳細資訊，請參閱[教學課程：使用 Amazon ECR 來源和 ECS-to-CodeDeploy 部署建立管道](tutorials-ecs-ecr-codedeploy.md)。

當您使用主控台建立或編輯管道時，CodePipeline 會建立 EventBridge 規則，在儲存庫發生變更時啟動管道。

**注意**  
對於 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 ECR 儲存庫並推送映像，才能透過 Amazon ECR 動作連接管道。

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

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

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

**RepositoryName**  
必要：是  
推送映像的 Amazon ECR 儲存庫名稱。

**ImageTag**  
必要：否  
用於映像的標籤。  
如果未指定 `ImageTag` 的數值，則預設值為 `latest`。

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

## 輸出成品
<a name="action-reference-ECR-output"></a>
+ **成品數量：** `1`
+ **描述：**這個動作會產生包含 `imageDetail.json` 檔案的成品，而此檔案包含觸發管道執行之映像的 URI。如需 `imageDetail.json` 詳細資訊，請參閱 [Amazon ECS 藍/綠部署動作的 imageDetail.json 檔案](file-reference.md#file-reference-ecs-bluegreen)。

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

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

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

**RegistryId**  
與包含儲存庫之登錄相關聯的 AWS 帳戶 ID。

**RepositoryName**  
推送映像的 Amazon ECR 儲存庫名稱。

**ImageTag**  
用於映像的標籤。  
覆寫來源修訂時，不會輸出`ImageTag`輸出變數

**ImageDigest**  
映像資訊清單的 `sha256` 摘要。

**ImageURI**  
映像的 URI。

## 服務角色許可：Amazon ECR 動作
<a name="edit-role-ecr"></a>

對於 Amazon ECR 支援，請將下列項目新增至您的政策陳述式：

```
{
    "Effect": "Allow",
    "Action": [
        "ecr:DescribeImages"
    ],
    "Resource": "resource_ARN"
},
```

如需此動作的詳細資訊，請參閱 [Amazon ECR 來源動作參考](#action-reference-ECR)。

## 動作宣告 (Amazon ECR 範例）
<a name="action-reference-ECR-example"></a>

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

```
Name: Source
Actions:
  - InputArtifacts: []
    ActionTypeId:
      Version: '1'
      Owner: AWS
      Category: Source
      Provider: ECR
    OutputArtifacts:
      - Name: SourceArtifact
    RunOrder: 1
    Configuration:
      ImageTag: latest
      RepositoryName: my-image-repo

    Name: ImageSource
```

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

```
{
    "Name": "Source",
    "Actions": [
        {
            "InputArtifacts": [],
            "ActionTypeId": {
                "Version": "1",
                "Owner": "AWS",
                "Category": "Source",
                "Provider": "ECR"
            },
            "OutputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "RunOrder": 1,
            "Configuration": {
                "ImageTag": "latest",
                "RepositoryName": "my-image-repo"
            },
            "Name": "ImageSource"
        }
    ]
},
```

------

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

以下相關資源可協助您使用此動作。
+ [教學課程：使用 Amazon ECR 來源和 ECS-to-CodeDeploy 部署建立管道](tutorials-ecs-ecr-codedeploy.md) – 本教學課程提供範例應用程式規格檔案，以及範例 CodeDeploy 應用程式和部署群組，以使用部署至 Amazon ECS 執行個體的 CodeCommit 和 Amazon ECR 來源建立管道。

# `ECRBuildAndPublish` 組建動作參考
<a name="action-reference-ECRBuildAndPublish"></a>

此建置動作可讓您在來源發生變更時，自動建置和推送新映像。此動作會根據指定的 Docker 檔案位置建置，並推送映像。此建置動作與 CodePipeline 中的 Amazon ECR 來源動作不同，這會在 Amazon ECR 來源儲存庫發生變更時觸發管道。如需該動作的相關資訊，請參閱 [Amazon ECR 來源動作參考](action-reference-ECR.md)。

這不是會觸發管道的來源動作。此動作會建置映像，並將其推送到您的 Amazon ECR 映像儲存庫。

您必須已建立 Amazon ECR 儲存庫，並將 Dockerfile 新增至原始程式碼儲存庫，例如 GitHub，才能將動作新增至管道。

**重要**  
此動作使用 CodePipeline 受管 CodeBuild 運算在建置環境中執行命令。執行命令動作會產生個別費用 AWS CodeBuild。

**注意**  
此動作僅適用於 V2 類型管道。

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

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

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

**ECRRepositoryName**  
必要：是  
推送映像的 Amazon ECR 儲存庫名稱。

**DockerFilePath**  
必要：否  
用於建置映像的 Docker 檔案位置。或者，如果不是在根層級，您可以提供備用 Docker 檔案位置。  
如果`DockerFilePath`未指定 的值，則值預設為來源儲存庫根層級。

**ImageTags**  
必要：否  
用於映像的標籤。您可以輸入多個標籤做為以逗號分隔的字串清單。  
如果未指定 `ImageTags` 的數值，則預設值為 `latest`。

**RegistryType**  
必要：否  
指定儲存庫是公有還是私有。有效值為 `private | public`。  
如果未指定 `RegistryType` 的數值，則預設值為 `private`。

## Input artifacts (輸入成品)
<a name="action-reference-ECRBuildAndPublish-input"></a>
+ **成品數量：** `1`
+ **描述：**來源動作產生的成品，其中包含建置映像所需的 Dockerfile。

## 輸出成品
<a name="action-reference-ECRBuildAndPublish-output"></a>
+ **成品數量：** `0`

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

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

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

**ECRImageDigestId **  
映像資訊清單的 `sha256` 摘要。

**ECRRepositoryName **  
推送映像的 Amazon ECR 儲存庫名稱。

## 服務角色許可：`ECRBuildAndPublish`動作
<a name="edit-role-ECRBuildAndPublish"></a>

如需 `ECRBuildAndPublish`動作支援，請將下列內容新增至您的政策陳述式：

```
{
    "Statement": [
         {
            "Sid": "ECRRepositoryAllResourcePolicy",
            "Effect": "Allow",
            "Action": [
                "ecr:DescribeRepositories",
                "ecr:GetAuthorizationToken",
                "ecr-public:DescribeRepositories",
                "ecr-public:GetAuthorizationToken"
            ],
        "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
                "ecr:InitiateLayerUpload",
                "ecr:UploadLayerPart",
                "ecr:CompleteLayerUpload",
                "ecr:PutImage",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchCheckLayerAvailability"
            ],
            "Resource": "PrivateECR_Resource_ARN"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr-public:GetAuthorizationToken",
                "ecr-public:DescribeRepositories",
                "ecr-public:InitiateLayerUpload",
                "ecr-public:UploadLayerPart",
                "ecr-public:CompleteLayerUpload",
                "ecr-public:PutImage",
                "ecr-public:BatchCheckLayerAvailability",
                "sts:GetServiceBearerToken"
            ],
            "Resource": "PublicECR_Resource_ARN"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sts:GetServiceBearerToken"
            ],
            "Resource": "*"
        }
    ]
}
```

此外，如果 `Commands`動作尚未新增下列許可，請將下列許可新增至您的服務角色，以檢視 CloudWatch 日誌。

```
{
    "Effect": "Allow",
    "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream", 
        "logs:PutLogEvents"
    ],
    "Resource": "resource_ARN"
},
```

**注意**  
使用服務角色政策陳述式中的資源型許可，將許可範圍縮小到管道資源層級。

如需此動作的詳細資訊，請參閱 [`ECRBuildAndPublish` 組建動作參考](#action-reference-ECRBuildAndPublish)。

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

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

```
name: ECRBuild
actionTypeId:
  category: Build
  owner: AWS
  provider: ECRBuildAndPublish
  version: '1'
runOrder: 1
configuration:
  ECRRepositoryName: actions/my-imagerepo
outputArtifacts: []
inputArtifacts:
- name: SourceArtifact
region: us-east-1
namespace: BuildVariables
```

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

```
{
    "name": "ECRBuild",
    "actionTypeId": {
        "category": "Build",
        "owner": "AWS",
        "provider": "ECRBuildAndPublish",
        "version": "1"
    },
    "runOrder": 1,
    "configuration": {
        "ECRRepositoryName": "actions/my-imagerepo"
    },
    "outputArtifacts": [],
    "inputArtifacts": [
        {
            "name": "SourceArtifact"
        }
    ],
    "region": "us-east-1",
    "namespace": "BuildVariables"
},
```

------

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

以下相關資源可協助您使用此動作。
+ [教學課程：使用 CodePipeline (V2 類型） 建置 Docker 映像並將其推送至 Amazon ECR](tutorials-ecr-build-publish.md) – 本教學課程提供範例 Dockerfile 和說明，以建立管道，在來源儲存庫變更時將映像推送至 ECR，然後部署至 Amazon ECS。

# Amazon Elastic Container Service 和 CodeDeploy 藍綠部署動作參考
<a name="action-reference-ECSbluegreen"></a>

您可以在 中設定管道 AWS CodePipeline ，以使用藍/綠部署來部署容器應用程式。在藍/綠部署中，您可以與舊版本一起啟動應用程式的新版本，並在重新路由流量到新版本之前進行測試。您也可以監控部署程序，並在發生問題時快速轉返。

已完成的管道會偵測映像或任務定義檔案的變更，並使用 CodeDeploy 將流量路由和部署到 Amazon ECS 叢集和負載平衡器。CodeDeploy 會在您的負載平衡器上建立新的接聽程式，該接聽程式可以透過特殊連接埠將新任務設為目標。您也可以將管道設定為使用來源位置，例如儲存 Amazon ECS 任務定義的 CodeCommit 儲存庫。

建立管道之前，您必須已建立 Amazon ECS 資源、CodeDeploy 資源，以及負載平衡器和目標群組。您必須已經在映像儲存庫中標記並存放映像，並將任務定義和 AppSpec 檔案上傳到您的檔案儲存庫。

**注意**  
本主題說明 CodePipeline 的 Amazon ECS 至 CodeDeploy 藍/綠部署動作。如需 CodePipeline 中 Amazon ECS 標準部署動作的參考資訊，請參閱 [Amazon Elastic Container Service 部署動作參考](action-reference-ECS.md)。

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

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

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

**ApplicationName**  
必要：是  
CodeDeploy 中的應用程式名稱。建立管道之前，您必須已在 CodeDeploy 中建立應用程式。

**DeploymentGroupName**  
必要：是  
針對您為 CodeDeploy 應用程式建立的 Amazon ECS 任務集指定的部署群組。在建立管道之前，您必須已在 CodeDeploy 中建立部署群組。

**TaskDefinitionTemplateArtifact**  
必要：是  
將任務定義檔案提供給部署動作的輸入成品名稱。這通常是來源動作的輸出成品名稱。當您使用 主控台時，來源動作輸出成品的預設名稱為 `SourceArtifact`。

**AppSpecTemplateArtifact**  
必要：是  
將 AppSpec 檔案提供給部署動作的輸入成品名稱。當您的管道執行時，此值即會更新。這通常是來源動作的輸出成品名稱。當您使用 主控台時，來源動作輸出成品的預設名稱為 `SourceArtifact`。對於 AppSpec 檔案中`TaskDefinition`的 ，您可以保留`<TASK_DEFINITION>`預留位置文字，[如下所示](tutorials-ecs-ecr-codedeploy.md#tutorials-ecs-ecr-codedeploy-taskdefinition)。

**AppSpecTemplatePath**  
必要：否  
存放在管道來源檔案位置的 AppSpec 檔案的檔案名稱，例如管道的 CodeCommit 儲存庫。預設檔案名稱為 `appspec.yaml`。如果您的 AppSpec 檔案具有相同的名稱，且存放在檔案儲存庫的根層級，則不需要提供檔案名稱。如果路徑不是預設值，請輸入路徑和檔案名稱。

**TaskDefinitionTemplatePath**  
必要：否  
存放在管道檔案來源位置的任務定義檔案名稱，例如管道的 CodeCommit 儲存庫。預設檔案名稱為 `taskdef.json`。如果您的任務定義檔案具有相同的名稱，且存放在檔案儲存庫的根層級，則不需要提供檔案名稱。如果路徑不是預設值，請輸入路徑和檔案名稱。

**Image<Number>ArtifactName**  
必要：否  
將映像提供給部署動作的輸入成品名稱。這通常是影像儲存庫的輸出成品，例如來自 Amazon ECR 來源動作的輸出。  
的可用值`<Number>`為 1 到 4。

**Image<Number>ContainerName**  
必要：否  
可從映像儲存庫取得的映像名稱，例如 Amazon ECR 來源儲存庫。  
的可用值`<Number>`為 1 到 4。

## Input artifacts (輸入成品)
<a name="action-reference-ECSbluegreen-input"></a>
+ **成品數量：**`1 to 5`
+ **描述：**`CodeDeployToECS`動作會先在來源檔案儲存庫中尋找任務定義檔案和 AppSpec 檔案，接著在映像儲存庫中尋找映像，然後動態產生任務定義的新修訂，最後執行 AppSpec 命令，將任務集和容器部署到叢集。

  `CodeDeployToECS` 動作會尋找將映像 URI 映射至映像`imageDetail.json`的檔案。當您將變更遞交至 Amazon ECR 映像儲存庫時，管道 ECR 來源動作會為該遞交建立 `imageDetail.json` 檔案。您也可以為未自動化動作的管道手動新增 `imageDetail.json` 檔案。如需 `imageDetail.json` 詳細資訊，請參閱 [Amazon ECS 藍/綠部署動作的 imageDetail.json 檔案](file-reference.md#file-reference-ecs-bluegreen)。

  `CodeDeployToECS` 動作會動態產生任務定義的新修訂。在此階段中，此動作會將任務定義檔案中的預留位置取代為從 imageDetail.json 檔案擷取的影像 URI。例如，如果您將 *IMAGE1\$1NAME* 設定為 Image1ContainerName 參數，則應將預留位置 *<IMAGE1\$1NAME>* 指定為任務定義檔案中影像欄位的值。在此情況下，CodeDeployToECS 動作會將預留位置 *<IMAGE1\$1NAME>* 取代為您指定為 Image1ArtifactName 的成品中，從 imageDetail.json 擷取的實際影像 URI。

  對於任務定義更新，CodeDeploy `AppSpec.yaml` 檔案包含 `TaskDefinition` 屬性。

  ```
  TaskDefinition: <TASK_DEFINITION>
  ```

  建立新任務定義後，`CodeDeployToECS`動作會更新此屬性。

  對於 `TaskDefinition` 欄位的值，預留位置文字必須是 <TASK\$1DEFINITION>。`CodeDeployToECS` 動作會將此預留位置取代為動態產生的任務定義的實際 ARN。

## 輸出成品
<a name="action-reference-ECSbluegreen-output"></a>
+ **成品數量：**`0`
+ **描述：**輸出成品不適用於此動作類型。

## 服務角色許可：`CodeDeployToECS`動作
<a name="edit-role-codedeploy-ecs"></a>

對於 `CodeDeployToECS`動作 （藍/綠部署），以下是使用 CodeDeploy 建立管道到 Amazon ECS 藍/綠部署動作所需的最低許可。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCodeDeployDeploymentActions",
            "Action": [
                "codedeploy:CreateDeployment",
                "codedeploy:GetDeployment"
            ],
            "Resource": [
                "arn:aws:codedeploy:*:111122223333:deploymentgroup:[[ApplicationName]]/*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "AllowCodeDeployApplicationActions",
            "Action": [
                "codedeploy:GetApplication",
                "codedeploy:GetApplicationRevision",
                "codedeploy:RegisterApplicationRevision"
            ],
            "Resource": [
                "arn:aws:codedeploy:*:111122223333:application:[[ApplicationName]]",
                "arn:aws:codedeploy:*:111122223333:application:[[ApplicationName]]/*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "AllowCodeDeployDeploymentConfigAccess",
            "Action": [
                "codedeploy:GetDeploymentConfig"
            ],
            "Resource": [
                "arn:aws:codedeploy:*:111122223333:deploymentconfig:*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "AllowECSRegisterTaskDefinition",
            "Action": [
                "ecs:RegisterTaskDefinition"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "AllowPassRoleToECS",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::111122223333:role/[[PassRoles]]"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "ecs.amazonaws.com",
                        "ecs-tasks.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

您可以選擇在 Amazon ECS 中使用標記授權。選擇加入後，您必須授予下列許可：`ecs:TagResource`。如需如何選擇加入和判斷是否需要許可和是否強制執行標籤授權的詳細資訊，請參閱《Amazon Elastic Container Service 開發人員指南》中的[標記授權時間表](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#tag-resources-timeline)。

您還必須新增`iam:PassRole`許可，才能將 IAM 角色用於任務。如需詳細資訊，請參閱 [Amazon ECS 任務執行 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html)和[任務的 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)。

您也可以將 `ecs-tasks.amazonaws.com`新增至`iam:PassedToService`條件下的 服務清單，如上述範例所示。

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

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

```
Name: Deploy
Actions:
  - Name: Deploy
    ActionTypeId:
      Category: Deploy
      Owner: AWS
      Provider: CodeDeployToECS
      Version: '1'
    RunOrder: 1
    Configuration:
      AppSpecTemplateArtifact: SourceArtifact
      ApplicationName: ecs-cd-application
      DeploymentGroupName: ecs-deployment-group
      Image1ArtifactName: MyImage
      Image1ContainerName: IMAGE1_NAME
      TaskDefinitionTemplatePath: taskdef.json
      AppSpecTemplatePath: appspec.yaml
      TaskDefinitionTemplateArtifact: SourceArtifact
    OutputArtifacts: []
    InputArtifacts:
      - Name: SourceArtifact
      - Name: MyImage
    Region: us-west-2
    Namespace: DeployVariables
```

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

```
{
    "Name": "Deploy",
    "Actions": [
        {
            "Name": "Deploy",
            "ActionTypeId": {
                "Category": "Deploy",
                "Owner": "AWS",
                "Provider": "CodeDeployToECS",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "AppSpecTemplateArtifact": "SourceArtifact",
                "ApplicationName": "ecs-cd-application",
                "DeploymentGroupName": "ecs-deployment-group",
                "Image1ArtifactName": "MyImage",
                "Image1ContainerName": "IMAGE1_NAME",
                "TaskDefinitionTemplatePath": "taskdef.json",
                "AppSpecTemplatePath": "appspec.yaml",
                "TaskDefinitionTemplateArtifact": "SourceArtifact"
            },
            "OutputArtifacts": [],
            "InputArtifacts": [
                {
                    "Name": "SourceArtifact"
                },
                {
                    "Name": "MyImage"
                }
            ],
            "Region": "us-west-2",
            "Namespace": "DeployVariables"
        }
    ]
}
```

------

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

以下相關資源可協助您使用此動作。
+ [教學課程：使用 Amazon ECR 來源和 ECS-to-CodeDeploy 部署建立管道](tutorials-ecs-ecr-codedeploy.md) – 本教學課程會逐步引導您建立藍/綠部署所需的 CodeDeploy 和 Amazon ECS 資源。本教學課程說明如何將 Docker 映像推送至 Amazon ECR，並建立列出 Docker 映像名稱、容器名稱、Amazon ECS 服務名稱和負載平衡器組態的 Amazon ECS 任務定義。此教學課程接著會逐步引導您建立部署的 AppSpec 檔案和管道。
**注意**  
本主題和教學課程說明 CodePipeline 的 CodeDeploy/ECS 藍/綠動作。 CodePipeline 如需 CodePipeline 中 ECS 標準動作的相關資訊，請參閱[教學課程：使用 CodePipeline 持續部署](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-cd-pipeline.html)。
+ *AWS CodeDeploy 使用者指南* – 如需如何在藍/綠部署中使用負載平衡器、生產接聽程式、目標群組和 Amazon ECS 應用程式的詳細資訊，請參閱[教學課程：部署 Amazon ECS 服務](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorial-ecs-deployment.html)。*AWS CodeDeploy 使用者指南*中的此參考資訊提供使用 Amazon ECS 和 進行藍/綠部署的概觀 AWS CodeDeploy。
+ *Amazon Elastic Container Service 開發人員指南* – 如需有關使用 Docker 映像和容器、ECS 服務和叢集，以及 ECS 任務集的詳細資訊，請參閱[什麼是 Amazon ECS？](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/)

# Amazon Elastic Container Service 部署動作參考
<a name="action-reference-ECS"></a>

您可以使用 Amazon ECS 動作來部署 Amazon ECS 服務和任務集。Amazon ECS 服務是部署到 Amazon ECS 叢集的容器應用程式。Amazon ECS 叢集是在雲端託管容器應用程式的執行個體集合。部署需要您在 Amazon ECS 中建立的任務定義，以及 CodePipeline 用來部署映像的映像定義檔案。

**重要**  
CodePipeline 的 Amazon ECS 標準部署動作會根據 Amazon ECS 服務所使用的修訂來建立任務定義的專屬修訂。如果您為任務定義建立新的修訂，但未更新 Amazon ECS 服務，部署動作會忽略這些修訂。

建立管道之前，您必須已建立 Amazon ECS 資源、在映像儲存庫中標記並存放映像，並將 BuildSpec 檔案上傳到您的檔案儲存庫。

**注意**  
此參考主題說明 CodePipeline 的 Amazon ECS 標準部署動作。如需 CodePipeline 中 Amazon ECS 至 CodeDeploy 藍/綠部署動作的參考資訊，請參閱 [Amazon Elastic Container Service 和 CodeDeploy 藍綠部署動作參考](action-reference-ECSbluegreen.md)。

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

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

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

**ClusterName**  
必要：是  
Amazon ECS 中的 Amazon ECS 叢集。

**ServiceName**  
必要：是  
您在 Amazon ECS 中建立的 Amazon ECS 服務。

**FileName**  
必要：否  
映像定義檔案的名稱、描述服務容器名稱的 JSON 檔案，以及映像和標籤。您可以將此檔案用於 ECS 標準部署。如需詳細資訊，請參閱[Input artifacts (輸入成品)](#action-reference-ECS-input)及[Amazon ECS 標準部署動作的 imagedefinitions.json 檔案](file-reference.md#pipelines-create-image-definitions)。

**DeploymentTimeout**  
必要：否  
Amazon ECS 部署動作會在幾分鐘內逾時。逾時值可設定為不超過此動作的預設逾時值上限。例如：  

```
"DeploymentTimeout": "15"
```

## Input artifacts (輸入成品)
<a name="action-reference-ECS-input"></a>
+ **成品數量：** `1`
+ **描述：** 動作會在管道的來源`imagedefinitions.json`檔案儲存庫中尋找 檔案。映像定義文件是 JSON 檔案，描述您的 Amazon ECS 容器名稱和映像和標籤。CodePipeline 使用 檔案從您的映像儲存庫擷取映像，例如 Amazon ECR。您可以為動作未自動化的管道手動新增 `imagedefinitions.json` 檔案。如需 `imagedefinitions.json` 詳細資訊，請參閱 [Amazon ECS 標準部署動作的 imagedefinitions.json 檔案](file-reference.md#pipelines-create-image-definitions)。

  動作需要已推送至映像儲存庫的現有映像。由於映像映射是由 `imagedefinitions.json` 檔案提供，因此動作不需要將 Amazon ECR 來源做為來源動作包含在管道中。

## 輸出成品
<a name="action-reference-ECS-output"></a>
+ **成品數量：** `0`
+ **描述：**輸出成品不適用於此動作類型。

## 服務角色許可：Amazon ECS 標準動作
<a name="edit-role-ecs"></a>

對於 Amazon ECS，以下是使用 Amazon ECS 部署動作建立管道所需的最低許可。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "TaskDefinitionPermissions",
            "Effect": "Allow",
            "Action": [
                "ecs:DescribeTaskDefinition",
                "ecs:RegisterTaskDefinition"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "ECSServicePermissions",
            "Effect": "Allow",
            "Action": [
                "ecs:DescribeServices",
                "ecs:UpdateService"
            ],
            "Resource": [
                "arn:aws:ecs:*:111122223333:service/[[clusters]]/*"
            ]
        },
        {
            "Sid": "ECSTagResource",
            "Effect": "Allow",
            "Action": [
                "ecs:TagResource"
            ],
            "Resource": [
                "arn:aws:ecs:*:111122223333:task-definition/[[taskDefinitions]]:*"
            ],
            "Condition": {
                "StringEquals": {
                    "ecs:CreateAction": [
                        "RegisterTaskDefinition"
                    ]
                }
            }
        },
        {
            "Sid": "IamPassRolePermissions",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::111122223333:role/[[passRoles]]"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "ecs.amazonaws.com",
                        "ecs-tasks.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

您可以選擇在 Amazon ECS 中使用標記授權。選擇加入後，您必須授予下列許可：`ecs:TagResource`。如需如何選擇加入和判斷是否需要許可和是否強制執行標籤授權的詳細資訊，請參閱《Amazon Elastic Container Service 開發人員指南》中的[標記授權時間表](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#tag-resources-timeline)。

您必須新增`iam:PassRole`許可，才能將 IAM 角色用於任務。如需詳細資訊，請參閱 [Amazon ECS 任務執行 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html)和[任務的 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)。使用下列政策文字。

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

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

```
Name: DeployECS
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: ECS
  Version: '1'
RunOrder: 2
Configuration:
  ClusterName: my-ecs-cluster
  ServiceName: sample-app-service
  FileName: imagedefinitions.json
  DeploymentTimeout: '15'
OutputArtifacts: []
InputArtifacts:
  - Name: my-image
```

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

```
{
    "Name": "DeployECS",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "ECS",
        "Version": "1"
    },
    "RunOrder": 2,
    "Configuration": {
        "ClusterName": "my-ecs-cluster",
        "ServiceName": "sample-app-service",
        "FileName": "imagedefinitions.json",
        "DeploymentTimeout": "15"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "my-image"
        }
    ]
},
```

------

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

以下相關資源可協助您使用此動作。
+ 如需示範如何使用 ECRBuildandPublish 動作推送映像，然後使用 ECS 標準動作部署至 Amazon ECS [教學課程：使用 CodePipeline (V2 類型） 建置 Docker 映像並將其推送至 Amazon ECR](tutorials-ecr-build-publish.md)的教學課程，請參閱 。
+ [教學課程：使用 CodePipeline 持續部署](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-cd-pipeline.html) – 本教學課程說明如何建立存放在 CodeCommit 等來源檔案儲存庫中的 Dockerfile。接下來，本教學課程會示範如何整合 CodeBuild BuildSpec 檔案，該檔案會建置 Docker 映像並將其推送至 Amazon ECR，並建立您的 imagedefinitions.json 檔案。最後，您建立 Amazon ECS 服務和任務定義，然後使用 Amazon ECS 部署動作建立管道。
**注意**  
本主題和教學課程說明 CodePipeline 的 Amazon ECS 標準部署動作。如需 CodePipeline 中 Amazon ECS 到 CodeDeploy 藍/綠部署動作的相關資訊，請參閱 [教學課程：使用 Amazon ECR 來源和 ECS-to-CodeDeploy 部署建立管道](tutorials-ecs-ecr-codedeploy.md)。
+ *Amazon Elastic Container Service 開發人員指南* – 如需有關使用 Docker 映像和容器、Amazon ECS 服務和叢集，以及 Amazon ECS 任務集的詳細資訊，請參閱[什麼是 Amazon ECS？](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/)

# Amazon Elastic Kubernetes Service `EKS` 部署動作參考
<a name="action-reference-EKS"></a>

您可以使用 `EKSDeploy`動作來部署 Amazon EKS 服務。部署需要 CodePipeline 用來部署映像的 Kubernetes 資訊清單檔案。

建立管道之前，您必須已建立 Amazon EKS 資源，並將映像存放在映像儲存庫中。或者，您可以為叢集提供 VPC 資訊。

**重要**  
此動作使用 CodePipeline 受管 CodeBuild 運算在建置環境中執行命令。執行命令動作會產生個別費用 AWS CodeBuild。

**注意**  
部署動作僅適用於 V2 `EKS` 類型管道。

EKS 動作同時支援公有和私有 EKS 叢集。私有叢集是 EKS 建議的類型；不過，支援這兩種類型。

跨帳戶動作支援 EKS 動作。若要新增跨帳戶 EKS 動作，請在動作宣告中`actionRoleArn`從您的目標帳戶新增 。

**Topics**
+ [動作類型](#action-reference-EKS-type)
+ [組態參數](#action-reference-EKS-config)
+ [Input artifacts (輸入成品)](#action-reference-EKS-input)
+ [輸出成品](#action-reference-EKS-output)
+ [環境變數](#action-reference-EKS-env-variables)
+ [輸出變數](#action-reference-EKS-output-vars)
+ [服務角色政策許可](#action-reference-EKS-service-role)
+ [動作宣告](#action-reference-EKS-example)
+ [另請參閱](#action-reference-EKS-links)

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

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

**ClusterName**  
必要：是  
Amazon EKS 中的 Amazon EKS 叢集。

**Helm 下方的選項**  
當 **Helm** 是選取的部署工具時，以下是可用的選項。    
**HelmReleaseName **  
必要：是 （僅適用於 **Helm** 類型）  
部署的版本名稱。  
**HelmChartLocation **  
必要：是 （僅適用於 **Helm** 類型）  
部署的圖表位置。  
**HelmValuesFiles **  
必要：否 （僅適用於 **Helm** 類型為選用）  
若要覆寫 helm 值檔案，請在 helm Chart 位置中輸入逗號分隔 helm 值檔案。

**Kubectl 下的選項**  
以下是當 **Kubectl** 是選取的部署工具時可用的選項。    
**ManifestFiles**  
必要：是 （僅適用於 **Kubectl** 類型）  
資訊清單檔案的名稱、描述服務容器名稱的文字檔案，以及映像和標籤。您可以使用此檔案來參數化映像 URI 和其他資訊。您可以將環境變數用於此目的。  
 您可以將此檔案存放在管道的來源儲存庫中。

**命名空間**  
必要：否  
要在 `kubectl`或 `helm`命令中使用的 kubernetes namepsace。

**子網路**  
必要：否  
叢集 VPC 的子網路。這些是連接到叢集的相同 VPC 的一部分。您也可以提供尚未連接到叢集的子網路，並在此處指定它們。

**SecurityGroupIds**  
必要：否  
叢集 VPC 的安全群組。這些是連接到叢集的相同 VPC 的一部分。您也可以提供尚未連接到叢集的安全群組，並在此處指定。

## Input artifacts (輸入成品)
<a name="action-reference-EKS-input"></a>
+ **成品數量：** `1`
+ **描述：** 動作會在管道的來源檔案儲存庫中尋找 Kubernetes 資訊清單檔案或 Helm Chart。如果您想要使用存放在 S3 儲存貯體中的 .tgz 格式的 Helm Chart，您可以透過將 S3 儲存貯體/金鑰設定為來源動作來執行此操作。例如，提供的物件金鑰為 `my-chart-0.1.0.tgz`。

## 輸出成品
<a name="action-reference-EKS-output"></a>
+ **成品數量：** `0`
+ **描述：**輸出成品不適用於此動作類型。

## 環境變數
<a name="action-reference-EKS-env-variables"></a>

用於取代資訊清單檔案或 Helm Chart 值檔案中的影像儲存庫或影像標籤等變數。

**金錀**  
鍵值環境變數對中的索引鍵，例如 `$IMAGE_TAG`。

**Value**  
鍵/值對的值，例如 `v1.0`。該值可以使用管道動作或管道變數的輸出變數進行參數化。例如，管道可以有一個使用 建立 ECR 映像的 ECRBuildAndPublish 動作`${codepipeline.PipelineExecutionId}`，而 EKS 動作可以使用 `${codepipeline.PipelineExecutionId}`作為環境變數的值。

## 輸出變數
<a name="action-reference-EKS-output-vars"></a>

**EKSClusterName**  
Amazon EKS 中的 Amazon EKS 叢集。

## 服務角色政策許可
<a name="action-reference-EKS-service-role"></a>

若要執行此動作，管道的服務角色政策中必須具備下列許可。
+ **EC2 動作：**當 CodePipeline 執行動作時，需要 EC2 執行個體許可。請注意，這與建立 EKS 叢集時所需的 EC2 執行個體角色不同。

  如果您使用的是現有的服務角色，若要使用此動作，您將需要為服務角色新增下列許可。
  + ec2:CreateNetworkInterface
  + ec2:DescribeDhcpOptions
  + ec2:DescribeNetworkInterfaces
  + ec2:DeleteNetworkInterface
  + ec2：DescribeSubnets
  + ec2：DescribeSecurityGroups
  + ec2：DescribeVpcs
+ **EKS 動作：**當 CodePipeline 執行動作時，需要 EKS 叢集許可。請注意，這與建立 EKS 叢集時所需的 IAM EKS 叢集角色不同。

  如果您使用的是現有的服務角色，若要使用此動作，您將需要為服務角色新增下列許可。
  + eks:DescribeCluster
+ **日誌串流動作：**CodePipeline 執行動作時，CodePipeline 會使用管道的名稱建立日誌群組，如下所示。這可讓您縮小使用管道名稱記錄資源的許可範圍。

  ```
  /aws/codepipeline/MyPipelineName
  ```

  如果您使用的是現有的服務角色，若要使用此動作，您將需要為服務角色新增下列許可。
  + logs:CreateLogGroup
  + logs:CreateLogStream
  + logs:PutLogEvents

在服務角色政策陳述式中，將許可範圍縮小至資源層級，如下列範例所示。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster"
            ],
            "Resource": "arn:aws:eks:*:111122223333:cluster/YOUR_CLUSTER_NAME"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:CreateNetworkInterfacePermission",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeVpcs",
                "ec2:DescribeRouteTables"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:CreateLogGroup",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:*:111122223333:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME",
                "arn:aws:logs:*:111122223333:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*"
            ]
        }
    ]
}
```

------

若要使用動作詳細資訊對話方塊頁面在主控台中檢視日誌，必須將檢視日誌的許可新增至主控台角色。如需詳細資訊，請參閱 中的主控台許可政策範例[在主控台中檢視運算日誌所需的許可](security-iam-permissions-console-logs.md)。

### 新增 服務角色做為叢集的存取項目
<a name="action-reference-EKS-service-role-access"></a>

在管道的服務角色政策中提供許可後，您可以透過新增 CodePipeline 服務角色做為叢集的存取項目來設定叢集許可。

您也可以使用具有更新許可的動作角色。如需詳細資訊，請參閱 中的教學課程範例[步驟 4：建立 CodePipeline 服務角色的存取項目](tutorials-eks-deploy.md#tutorials-eks-deploy-access-entry)。

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

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

```
Name: DeployEKS
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: EKS
  Version: '1'
RunOrder: 2
Configuration:
  ClusterName: my-eks-cluster
  ManifestFiles: ManifestFile.json
OutputArtifacts: []
InputArtifacts:
  - Name: SourceArtifact
```

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

```
{
    "Name": "DeployECS",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "EKS",
        "Version": "1"
    },
    "RunOrder": 2,
    "Configuration": {
        "ClusterName": "my-eks-cluster",
        "ManifestFiles": "ManifestFile.json"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "SourceArtifact"
        }
    ]
},
```

------

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

以下相關資源可協助您使用此動作。
+ 如需示範如何建立 EKS 叢集和 Kubernetes 資訊清單檔案，以將 動作新增至管道的教學[教學課程：使用 CodePipeline 部署至 Amazon EKS](tutorials-eks-deploy.md)課程，請參閱 。

# AWS Lambda 部署動作參考
<a name="action-reference-LambdaDeploy"></a>

您可以使用 AWS Lambda 部署動作來管理無伺服器部署的應用程式程式碼。您可以部署 函數，並使用流量部署的部署策略，如下所示：
+ 流量轉移的 Canary 和線性部署
+ 一次全部部署

**注意**  
只有 V2 類型管道才支援此動作。

**Topics**
+ [動作類型](#action-reference-LambdaDeploy-type)
+ [組態參數](#action-reference-LambdaDeploy-parameters)
+ [Input artifacts (輸入成品)](#action-reference-LambdaDeploy-input)
+ [輸出成品](#action-reference-LambdaDeploy-output)
+ [輸出變數](#action-reference-LambdaDeploy-output-variables)
+ [Lambda 部署動作的服務角色政策許可](#action-reference-LambdaDeploy-permissions-action)
+ [動作宣告](#action-reference-LambdaDeploy-example)
+ [另請參閱](#action-reference-LambdaDeploy-links)

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

## 組態參數
<a name="action-reference-LambdaDeploy-parameters"></a>

**FunctionName**  
必要：是  
您在 Lambda 中建立的函數名稱，例如 `MyLambdaFunction`。  
您必須已建立版本。

**FunctionAlias**  
必要：否  
您在 Lambda 中建立的函數別名，以及要部署到的函數，例如 `live`。別名必須存在，並在動作執行開始時具有一個版本。（這會是復原目標版本。)  
如果未提供，動作會將來源成品部署到 `$LATEST`並建立新的版本。在此使用案例中，部署策略和目標版本選項不可用。

**PublishedTargetVersion**  
必要：否  
要部署到 FunctionAlias 的所需 Lambda 函數版本。它可以是管道或動作層級變數，例如 `#{variables.lambdaTargetVersion}`。版本必須在動作執行開始時發佈。  
如果未提供輸入成品，則為必要項。

**DeployStrategy**  
必要：否 （預設為 `AllAtOnce`)  
  
決定 Lambda 部署動作用來將流量從 Lambda 函數的原始版本轉移到 **FunctionAlias** 新版本的速率。可用的部署策略為 Canary 或線性。接受的格式：  
+ `AllAtOnce` - 

  將所有流量一次轉移到更新的 Lambda 函數。

   如果未指定，則預設值為 `AllAtOnce`)
+ `Canary10Percent5Minutes` - 在第一個增量中轉移 10% 的流量。剩餘的 90% 會在五分鐘之後部署。

  您可以變更百分比和分鐘的值。
+ `Linear10PercentEvery1Minute` - 每分鐘轉移 10% 的流量，直到轉移所有流量為止。

  您可以變更百分比和分鐘的值。
此欄位適用下列考量：  
+ 等待時間上限為 2 天。
+ 只有在提供 **FunctionAlias** 時才可用。


**警示**  
必要：否  
針對 Lambda 部署設定的警示名稱逗號分隔清單。最多可新增 10 則警示。當監控的警示進入 ALARM 狀態時，動作會失敗。

下圖顯示 動作的編輯頁面範例。

![\[使用 Lambda 部署動作編輯新管道的動作頁面\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/lambdadeploy-edit-screen.png)


## Input artifacts (輸入成品)
<a name="action-reference-LambdaDeploy-input"></a>
+ **成品數量：** `1`
+ **描述：**如果有提供的檔案，以支援部署期間的指令碼動作。

## 輸出成品
<a name="action-reference-LambdaDeploy-output"></a>
+ **成品數量：** `0`
+ **描述：**輸出成品不適用於此動作類型。

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

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

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

**FunctionVersion**  
已部署的新 Lambda 函數版本。

## Lambda 部署動作的服務角色政策許可
<a name="action-reference-LambdaDeploy-permissions-action"></a>

當 CodePipeline 執行 動作時，CodePipeline 服務角色需要下列許可，並針對具有最低權限的存取適當縮小範圍。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "StatementForLambda",
            "Effect": "Allow",
            "Action": [
                "lambda:GetAlias",
                "lambda:GetFunctionConfiguration",
                "lambda:GetProvisionedConcurrencyConfig",
                "lambda:PublishVersion",
                "lambda:UpdateAlias",
                "lambda:UpdateFunctionCode"
            ],
            "Resource": [
                "arn:aws:lambda:us-east-1:111122223333:function:{{FunctionName}}",
                "arn:aws:lambda:us-east-1:111122223333:function:{{FunctionName}}:*"
            ]
        },
        {
            "Sid": "StatementForCloudWatch",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:DescribeAlarms"
            ],
            "Resource": [
                "arn:aws:cloudwatch:us-east-1:111122223333:alarm:{{AlarmNames}}"
            ]
        },
        {
            "Sid": "StatementForLogs1",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:111122223333:log-group:/us-east-1/codepipeline/{{pipelineName}}",
                "arn:aws:logs:us-east-1:111122223333:log-group:/us-east-1/codepipeline/{{pipelineName}}:*"
            ]
        },
        {
            "Sid": "StatementForLogs2",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:111122223333:log-group:/us-east-1/codepipeline/{{pipelineName}}:log-stream:*"
            ]
        }
    ]
}
```

------

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

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

```
name: Deploy
actionTypeId:
  category: Deploy
  owner: AWS
  provider: Lambda
  version: '1'
runOrder: 1
configuration:
  DeployStrategy: Canary10Percent5Minutes
  FunctionAlias: aliasV1
  FunctionName: MyLambdaFunction
outputArtifacts: []
inputArtifacts:
- name: SourceArtifact
region: us-east-1
namespace: DeployVariables
```

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

```
{
    "name": "Deploy",
    "actionTypeId": {
        "category": "Deploy",
        "owner": "AWS",
        "provider": "Lambda",
        "version": "1"
    },
    "runOrder": 1,
    "configuration": {
        "DeployStrategy": "Canary10Percent5Minutes",
        "FunctionAlias": "aliasV1",
        "FunctionName": "MyLambdaFunction"
    },
    "outputArtifacts": [],
    "inputArtifacts": [
        {
            "name": "SourceArtifact"
        }
    ],
    "region": "us-east-1",
    "namespace": "DeployVariables"
},
```

------

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

以下相關資源可協助您使用此動作。
+  [教學課程：使用 CodePipeline 進行 Lambda 函數部署](tutorials-lambda-deploy.md) – 本教學課程會逐步引導您建立範例 Lambda 函數，您將在其中建立別名和版本、將壓縮的 Lambda 函數新增至來源位置，以及在管道中執行 Lambda 動作。

# Amazon S3 部署動作參考
<a name="action-reference-S3Deploy"></a>

您可以使用 Amazon S3 部署動作，將檔案部署到 Amazon S3 儲存貯體，以進行靜態網站託管或封存。您可以指定是否要在上傳至儲存貯體之前擷取部署檔案。

**注意**  
此參考主題說明 CodePipeline 的 Amazon S3 部署動作，其中部署平台是設定為託管的 Amazon S3 儲存貯體。如需 CodePipeline 中 Amazon S3 來源動作的參考資訊，請參閱 [Amazon S3 來源動作參考](action-reference-S3.md)。

**Topics**
+ [動作類型](#action-reference-S3Deploy-type)
+ [組態參數](#action-reference-S3Deploy-config)
+ [Input artifacts (輸入成品)](#action-reference-S3Deploy-input)
+ [輸出成品](#action-reference-S3Deploy-output)
+ [服務角色許可：S3 部署動作](#edit-role-s3deploy)
+ [動作組態範例](#action-reference-S3Deploy-example)
+ [另請參閱](#action-reference-S3Deploy-links)

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

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

**BucketName**  
必要：是  
要部署檔案的 Amazon S3 儲存貯體名稱。

**擷取**  
必要：是  
如果為 true，指定要在上傳之前擷取檔案。否則，應用程式檔案會保持壓縮以供上傳，例如託管靜態網站的情況。如果為 false，則需要 `ObjectKey` 。

**ObjectKey**  
條件式。在 `Extract` = false 時需要  
Amazon S3 物件金鑰的名稱，可唯一識別 S3 儲存貯體中的物件。

**KMSEncryptionKeyARN**  
必要：否  
主機儲存貯體 AWS KMS 加密金鑰的 ARN。`KMSEncryptionKeyARN` 參數會使用提供的 來加密上傳的成品 AWS KMS key。對於 KMS 金鑰，您可以使用金鑰 ID、金鑰 ARN 或別名 ARN。  
只有建立 KMS 金鑰的帳戶才能辨識別名。如果是跨帳戶動作，您只可以使用金鑰 ID 或金鑰 ARN 來識別金鑰。跨帳戶動作涉及使用來自其他帳戶 (AccountB) 的角色，因此指定金鑰 ID 將使用其他帳戶 (AccountB) 中的金鑰。
CodePipeline 僅支援對稱 KMS 金鑰。請勿使用非對稱 KMS 金鑰來加密 S3 儲存貯體中的資料。

**CannedACL**  
必要：否  
`CannedACL` 參數會將指定的[固定 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl) 套用至部署到 Amazon S3 的物件。這會覆寫已套用至物件的任何現有 ACL。

**CacheControl**  
必要：否  
`CacheControl` 參數控制儲存貯體中物件的請求/回應的快取行為。如需有效值的清單，請參閱 HTTP 操作的 [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) 標頭欄位。若要在 `CacheControl` 中輸入多個值，請在各值之間使用逗號。如此 CLI 範例所示，您可以在每個逗號後面加上空格 (選用)：  

```
"CacheControl": "public, max-age=0, no-transform"
```

## Input artifacts (輸入成品)
<a name="action-reference-S3Deploy-input"></a>
+ **成品數量：**`1`
+ **描述：**用於部署或封存的檔案是從來源儲存庫取得、壓縮，並由 CodePipeline 上傳。

## 輸出成品
<a name="action-reference-S3Deploy-output"></a>
+ **成品數量：** `0`
+ **描述：**輸出成品不適用於此動作類型。

## 服務角色許可：S3 部署動作
<a name="edit-role-s3deploy"></a>

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

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:PutObjectVersionAcl",
        "s3:GetBucketVersioning",
        "s3:GetBucketAcl",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::[[s3DeployBuckets]]",
        "arn:aws:s3:::[[s3DeployBuckets]]/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

------

針對 S3 部署動作支援，如果您的 S3 物件有標籤，您還必須將下列許可新增至政策陳述式：

```
"s3:GetObjectTagging",
"s3:GetObjectVersionTagging",
"s3:PutObjectTagging"
```

## 動作組態範例
<a name="action-reference-S3Deploy-example"></a>

以下顯示動作組態的範例。

### 設定為 `Extract` 時的範例組態 `false`
<a name="action-reference-S3Deploy-extractfalse"></a>

下列範例顯示在 `Extract` 欄位設定為 的情況下建立動作時的預設動作組態`false`。

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

```
Name: Deploy
Actions:
  - Name: Deploy
    ActionTypeId:
      Category: Deploy
      Owner: AWS
      Provider: S3
      Version: '1'
    RunOrder: 1
    Configuration:
      BucketName: website-bucket
      Extract: 'false'
      ObjectKey: MyWebsite
    OutputArtifacts: []
    InputArtifacts:
      - Name: SourceArtifact
    Region: us-west-2
    Namespace: DeployVariables
```

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

```
{
    "Name": "Deploy",
    "Actions": [
        {
            "Name": "Deploy",
            "ActionTypeId": {
                "Category": "Deploy",
                "Owner": "AWS",
                "Provider": "S3",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "BucketName": "website-bucket",
                "Extract": "false",
                "ObjectKey": "MyWebsite"
                },
            "OutputArtifacts": [],
            "InputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "Region": "us-west-2",
            "Namespace": "DeployVariables"
        }
    ]
},
```

------

### 設定為 `Extract` 時的範例組態 `true`
<a name="action-reference-S3Deploy-extracttrue"></a>

下列範例顯示在 `Extract` 欄位設定為 的情況下建立動作時的預設動作組態`true`。

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

```
Name: Deploy
Actions:
  - Name: Deploy
    ActionTypeId:
      Category: Deploy
      Owner: AWS
      Provider: S3
      Version: '1'
    RunOrder: 1
    Configuration:
      BucketName: website-bucket
      Extract: 'true'
    OutputArtifacts: []
    InputArtifacts:
      - Name: SourceArtifact
    Region: us-west-2
    Namespace: DeployVariables
```

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

```
{
    "Name": "Deploy",
    "Actions": [
        {
            "Name": "Deploy",
            "ActionTypeId": {
                "Category": "Deploy",
                "Owner": "AWS",
                "Provider": "S3",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "BucketName": "website-bucket",
                "Extract": "true"
                },
            "OutputArtifacts": [],
            "InputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "Region": "us-west-2",
            "Namespace": "DeployVariables"
        }
    ]
},
```

------

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

以下相關資源可協助您使用此動作。
+ [教學課程：建立使用 Amazon S3 做為部署提供者的管道](tutorials-s3deploy.md) – 本教學課程會逐步解說使用 S3 部署動作建立管道的兩個範例。您可以下載範例檔案、將檔案上傳至 CodeCommit 儲存庫、建立 S3 儲存貯體，以及設定儲存貯體進行託管。接著，您可以使用 CodePipeline 主控台來建立管道，並指定 Amazon S3 部署組態。
+ [Amazon S3 來源動作參考](action-reference-S3.md) – 此動作參考提供 CodePipeline 中 Amazon S3 來源動作的參考資訊和範例。

# 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 

# AWS AppConfig 部署動作參考
<a name="action-reference-AppConfig"></a>

AWS AppConfig 是 的功能 AWS Systems Manager。AppConfig 支援對任何大小的應用程式進行受控部署，並包含內建的驗證檢查和監控。您可以使用 AppConfig 搭配託管於 Amazon EC2 執行個體 AWS Lambda、容器、行動應用程式或 IoT 裝置上的應用程式。

`AppConfig` 部署動作是一種 AWS CodePipeline 動作，可將管道來源位置中存放的組態部署至指定的 AppConfig *應用程式*、*環境*和*組態*設定檔。它使用 AppConfig *部署策略*中定義的偏好設定。

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

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

**應用程式**  
必要：是  
包含組態和部署詳細資訊的 AWS AppConfig 應用程式 ID。

**Environment**  
必要：是  
部署組態的 AWS AppConfig 環境 ID。

**ConfigurationProfile**  
必要：是  
要部署的 AWS AppConfig 組態設定檔 ID。

**InputArtifactConfigurationPath**  
必要：是  
要部署之輸入成品內組態資料的檔案路徑。

**DeploymentStrategy**  
必要：否  
用於部署的 AWS AppConfig 部署策略。

## Input artifacts (輸入成品)
<a name="action-reference-AppConfig-input"></a>
+ **成品數量：** `1`
+ **描述：**部署動作的輸入成品。

## 輸出成品
<a name="action-reference-AppConfig-output"></a>

不適用。

## 服務角色許可：`AppConfig`動作
<a name="edit-role-appconfig"></a>

CodePipeline 執行 動作時，CodePipeline 服務角色政策需要下列許可，適當範圍縮減至資源層級，以維持最低權限的存取。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "appconfig:StartDeployment",
                "appconfig:StopDeployment",
                "appconfig:GetDeployment"
            ],
            "Resource": [
                "arn:aws:appconfig:*:111122223333:application/[[Application]]",
                "arn:aws:appconfig:*:111122223333:application/[[Application]]/*",
                "arn:aws:appconfig:*:111122223333:deploymentstrategy/*"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

## 動作組態範例
<a name="action-reference-AppConfig-example"></a>

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

```
name: Deploy
actions:
  - name: Deploy
    actionTypeId:
      category: Deploy
      owner: AWS
      provider: AppConfig
      version: '1'
    runOrder: 1
    configuration:
      Application: 2s2qv57
      ConfigurationProfile: PvjrpU
      DeploymentStrategy: frqt7ir
      Environment: 9tm27yd
      InputArtifactConfigurationPath: /
    outputArtifacts: []
    inputArtifacts:
      - name: SourceArtifact
    region: us-west-2
    namespace: DeployVariables
```

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

```
{
    "name": "Deploy",
    "actions": [
        {
            "name": "Deploy",
            "actionTypeId": {
                "category": "Deploy",
                "owner": "AWS",
                "provider": "AppConfig",
                "version": "1"
            },
            "runOrder": 1,
            "configuration": {
                "Application": "2s2qv57",
                "ConfigurationProfile": "PvjrpU",
                "DeploymentStrategy": "frqt7ir",
                "Environment": "9tm27yd",
                "InputArtifactConfigurationPath": "/"
            },
            "outputArtifacts": [],
            "inputArtifacts": [
                {
                    "name": "SourceArtifact"
                }
            ],
            "region": "us-west-2",
            "namespace": "DeployVariables"
        }
    ]
}
```

------

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

以下相關資源可協助您使用此動作。
+ [AWS AppConfig](https://docs.aws.amazon.com/systems-manager/latest/userguide/appconfig.html) – 如需 AWS AppConfig 部署的相關資訊，請參閱 *AWS Systems Manager 使用者指南*。
+ [教學課程：建立使用 AWS AppConfig 做為部署提供者的管道](tutorials-AppConfig.md) – 本教學課程可協助您開始設定簡單的部署組態檔案和 AppConfig 資源，並說明如何使用 主控台建立具有 an AWS AppConfig 部署動作的管道。

# CloudFormation 部署動作參考
<a name="action-reference-CloudFormation"></a>

在 CloudFormation 堆疊上執行 操作。堆疊是您可以單一單位管理的一組 AWS 資源。堆疊中的資源都是由堆疊的 CloudFormation 範本定義。變更集會建立比較，無須變更原始堆疊即可檢視。如需可在堆疊和變更集上執行之 CloudFormation 動作類型的相關資訊，請參閱 `ActionMode` 參數。

若要針對堆疊操作失敗 CloudFormation 的動作建構錯誤訊息，CodePipeline 會 CloudFormation `DescribeStackEvents`呼叫 API。如果動作 IAM 角色具有存取該 API 的許可，則有關第一個失敗資源的詳細資訊將包含在 CodePipeline 錯誤訊息中。否則，如果角色政策沒有適當的許可，CodePipeline 將忽略存取 API，並改為顯示一般錯誤訊息。若要這樣做，必須將 `cloudformation:DescribeStackEvents`許可新增至管道的服務角色或其他 IAM 角色。

如果您不希望資源詳細資訊出現在管道錯誤訊息中，您可以透過移除許可來撤銷動作 IAM 角色的此`cloudformation:DescribeStackEvents`許可。

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

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

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

**ActionMode**  
必要：是  
`ActionMode` 是 動作在堆疊或變更集 CloudFormation 上執行的名稱。以下是可用的動作模式：  
+ `CHANGE_SET_EXECUTE` 根據一組指定的資源更新，為資源堆疊執行變更集。在此動作中， 會 CloudFormation 開始修改堆疊。
+ `CHANGE_SET_REPLACE` 根據您提交的堆疊名稱和範本建立變更組 (若不存在的話)。如果變更集存在， 會將其 CloudFormation 刪除，然後建立新的變更集。
+ `CREATE_UPDATE` 建立堆疊 (如果堆疊不存在)。如果堆疊存在， 會 CloudFormation 更新堆疊。使用此動作來更新現有堆疊。與 不同`REPLACE_ON_FAILURE`，如果堆疊存在且處於失敗狀態，CodePipeline 不會刪除和取代堆疊。
+ `DELETE_ONLY` 刪除堆疊。若您指定不存在的堆疊，動作會成功完成，而不會刪除任何堆疊。
+ `REPLACE_ON_FAILURE` 建立堆疊 (若堆疊不存在)。如果堆疊存在且處於失敗狀態， 會 CloudFormation 刪除堆疊，然後建立新的堆疊。如果堆疊未處於失敗狀態， 會 CloudFormation 更新它。

  若在 CloudFormation中顯示下列任何狀態類型，堆疊會處於故障狀態：
  + `ROLLBACK_FAILED`
  + `CREATE_FAILED`
  + `DELETE_FAILED`
  + `UPDATE_ROLLBACK_FAILED`

  使用此動作來自動取代故障的堆疊，無須復原或故障診斷。
**重要**  
建議您使用 `REPLACE_ON_FAILURE` 僅作為測試目的，因為它可能會刪除您的堆疊。

**StackName**  
必要：是  
`StackName` 是現有堆疊或您希望建立之堆疊的名稱。

**功能**  
必要：有條件  
使用 `Capabilities` 可確認範本具有自行建立和更新一些資源的功能，而且這些功能是根據範本中的資源類型來決定。  
如果您的堆疊範本中有 IAM 資源，或您直接從包含巨集的範本建立堆疊，則此屬性為必要。為了讓 CloudFormation 動作以這種方式成功運作，您必須明確確認您希望它使用下列其中一個功能來執行此操作：  
+ `CAPABILITY_IAM` 
+ `CAPABILITY_NAMED_IAM` 
+ `CAPABILITY_AUTO_EXPAND` 
 您可以透過在功能間使用逗號 (無空格) 來指定多個功能。[動作宣告](#action-reference-CloudFormation-example) 中的範例顯示具有 CAPABILITY\$1IAM 和 CAPABILITY\$1AUTO\$1EXPAND 屬性的項目。  
如需 的詳細資訊`Capabilities`，請參閱 *AWS CloudFormation API 參考*中 [UpdateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html) 下的屬性。

**ChangeSetName**  
必要：有條件  
`ChangeSetName` 是現有變更集或您希望為指定堆疊建立之新變更集的名稱。  
 針對下列動作模式，此屬性為必要：CHANGE\$1SET\$1REPLACE 和 CHANGE\$1SET\$1EXECUTE。針對其他所有動作模式，可忽略此屬性。

**RoleArn**  
必要：有條件  
`RoleArn` 是在指定堆疊中的資源上操作時 CloudFormation 所假設 IAM 服務角色的 ARN。執行變更集時，不會套用 `RoleArn`。若您不使用 CodePipeline 來建立變更集，請確定變更集或堆疊具有關聯角色。  
此角色必須與正在執行之動作的角色位於相同的帳戶中，如動作宣告 中所設定`RoleArn`。
針對下列動作模式，此屬性為必要：  
+ CREATE\$1UPDATE
+ REPLACE\$1ON\$1FAILURE
+ DELETE\$1ONLY
+ CHANGE\$1SET\$1REPLACE
CloudFormation 為範本提供 S3-signed URL；因此，這`RoleArn`不需要存取成品儲存貯體的許可。不過， 動作`RoleArn`*確實*需要存取成品儲存貯體的許可，才能產生已簽署的 URL。

**TemplatePath**  
必要：有條件  
`TemplatePath` 代表 CloudFormation 範本檔案。您將檔案包含在此動作的輸入成品中。該檔案名稱遵循此格式：  
`Artifactname::TemplateFileName`  
`Artifactname` 是出現在 CodePipeline 中的輸入成品名稱。例如，來源階段的成品名稱為 `SourceArtifact` 且 `template-export.json` 檔案名稱建立 `TemplatePath` 名稱，如此範例所顯示：  

```
"TemplatePath": "SourceArtifact::template-export.json"
```
針對下列動作模式，此屬性為必要：  
+ CREATE\$1UPDATE
+ REPLACE\$1ON\$1FAILURE
+ CHANGE\$1SET\$1REPLACE
針對其他所有動作模式，可忽略此屬性。  
包含 CloudFormation 範本內文的範本檔案長度下限為 1 位元組，長度上限為 1 MB。對於 CodePipeline 中的 CloudFormation 部署動作，輸入成品大小上限一律為 256 MB。如需詳細資訊，請參閱[AWS CodePipeline 中的配額](limits.md)和 [CloudFormation 的限制](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html)。

**OutputFileName**  
必要：否  
使用 `OutputFileName`指定輸出檔案名稱，例如 CodePipeline `CreateStackOutput.json`新增至此動作的管道輸出成品。JSON 檔案包含 CloudFormation 堆疊中 `Outputs`區段的內容。  
如果您未指定名稱，CodePipeline 不會產生輸出檔案或成品。

**ParameterOverrides**  
必要：否  
參數會定義於您的堆疊範本中，並可讓您在建立或更新堆疊時為其提供值。您可以使用 JSON 物件在您的範本中設定參數值。(這些值會覆寫範本組態檔案中設定的值。) 如需使用參數覆寫的詳細資訊，請參閱 [組態屬性 (JSON 物件)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-action-reference.html#w4363ab1c13c13b9)。  
我們建議您大多數的參數值都使用範本組態檔案。僅對管道執行前未知的值使用參數覆寫。如需詳細資訊，請參閱*AWS CloudFormation 《 使用者指南*》中的[使用參數覆寫函數搭配 CodePipeline 管道](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-parameter-override-functions.html)。  
所有參數名稱都必須在堆疊範本中存在。

**TemplateConfiguration**  
必要：否  
`TemplateConfiguration` 是範本組態檔案。您將檔案包含在此動作的輸入成品中。它可以包含範本參數值和堆疊政策。如需範本組態檔案格式的詳細資訊，請參閱[AWS CloudFormation 成品](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-cfn-artifacts.html)。  
範本組態檔案名稱遵循此格式：  
`Artifactname::TemplateConfigurationFileName`  
`Artifactname` 是出現在 CodePipeline 中的輸入成品名稱。例如，來源階段的成品名稱為 `SourceArtifact` 且 `test-configuration.json` 檔案名稱建立 `TemplateConfiguration` 名稱，如此範例所顯示：  

```
"TemplateConfiguration": "SourceArtifact::test-configuration.json"
```

## Input artifacts (輸入成品)
<a name="action-reference-CloudFormation-input"></a>
+ **成品數量：** `0 to 10`
+ **描述：**作為輸入， CloudFormation 動作可選擇性地接受用於這些目的的成品：
  + 提供要執行的堆疊範本檔案。(請參閱 `TemplatePath` 參數。)
  + 提供要使用的範本組態檔案。(請參閱 `TemplateConfiguration` 參數。) 如需範本組態檔案格式的詳細資訊，請參閱[AWS CloudFormation 成品](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-cfn-artifacts.html)。
  + 提供將 Lambda 函數部署為 CloudFormation 堆疊一部分的成品。

## 輸出成品
<a name="action-reference-CloudFormation-output"></a>
+ **成品數量：** `0 to 1`
+ **Description: (描述：)** 如果指定 `OutputFileName` 參數，則此動作會產生一個包含具有指定名稱的 JSON 檔案的輸出成品。JSON 檔案包含 CloudFormation 堆疊中 Outputs (輸出) 區段的內容。

  如需您可為 CloudFormation 動作建立輸出區段的詳細資訊，請參閱 [Outputs (輸出)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html)。

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

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

對於 CloudFormation 動作，變數會從堆疊範本 `Outputs`區段中指定的任何值產生。請注意，產生輸出的唯一 CloudFormation 動作模式是造成堆疊建立或更新的模式，例如堆疊建立、堆疊更新和變更集執行。產生變數的相應動作模式如下：
+ `CHANGE_SET_EXECUTE`
+ `CHANGE_SET_REPLACE`
+ `CREATE_UPDATE`
+ `REPLACE_ON_FAILURE`

如需詳細資訊，請參閱[變數參考](reference-variables.md)。如需教學，向您展示如何在使用 CloudFormation 輸出變數的管道中，使用 CloudFormation 部署動作建立管道，請參閱 [教學課程：建立使用 AWS CloudFormation 部署動作變數的管道](tutorials-cloudformation-action.md)。

## 服務角色許可： CloudFormation 動作
<a name="edit-role-cloudformation"></a>

CodePipeline 執行 動作時，CodePipeline 服務角色政策需要下列許可，適當範圍縮小至管道資源 ARN，以維持最低權限的存取。例如，將下列項目新增至您的政策陳述式：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCFNStackAccess",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:UpdateStack",
                "cloudformation:DeleteStack",
                "cloudformation:DescribeStacks",
                "cloudformation:DescribeStackResources",
                "cloudformation:DescribeStackEvents",
                "cloudformation:GetTemplate",
                "cloudformation:DescribeChangeSet",
                "cloudformation:CreateChangeSet",
                "cloudformation:DeleteChangeSet",
                "cloudformation:ExecuteChangeSet"
            ],
            "Resource": [
                "arn:aws:cloudformation:*:111122223333:stack/[[cfnDeployStackNames]]/*"
            ]
        },
        {
            "Sid": "ValidateTemplate",
            "Effect": "Allow",
            "Action": [
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowIAMPassRole",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::111122223333:role/[[cfnExecutionRoles]]"
            ],
            "Condition": {
                "StringEqualsIfExists": {
                    "iam:PassedToService": [
                        "cloudformation.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

請注意， `cloudformation:DescribeStackEvents`許可是選用的。它允許 CloudFormation 動作顯示更詳細的錯誤訊息。如果您不希望資源詳細資訊出現在管道錯誤訊息中，可以從 IAM 角色撤銷此許可。

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

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

```
Name: ExecuteChangeSet
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: CloudFormation
  Version: '1'
RunOrder: 2
Configuration:
  ActionMode: CHANGE_SET_EXECUTE
  Capabilities: CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND
  ChangeSetName: pipeline-changeset
  ParameterOverrides: '{"ProjectId": "my-project","CodeDeployRole": "CodeDeploy_Role_ARN"}'
  RoleArn: CloudFormation_Role_ARN
  StackName: my-project--lambda
  TemplateConfiguration: 'my-project--BuildArtifact::template-configuration.json'
  TemplatePath: 'my-project--BuildArtifact::template-export.yml'
OutputArtifacts: []
InputArtifacts:
  - Name: my-project-BuildArtifact
```

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

```
{
    "Name": "ExecuteChangeSet",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "CloudFormation",
        "Version": "1"
    },
    "RunOrder": 2,
    "Configuration": {
        "ActionMode": "CHANGE_SET_EXECUTE",
        "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND",
        "ChangeSetName": "pipeline-changeset",
        "ParameterOverrides": "{\"ProjectId\": \"my-project\",\"CodeDeployRole\": \"CodeDeploy_Role_ARN\"}",
        "RoleArn": "CloudFormation_Role_ARN",
        "StackName": "my-project--lambda",
        "TemplateConfiguration": "my-project--BuildArtifact::template-configuration.json",
        "TemplatePath": "my-project--BuildArtifact::template-export.yml"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
             "Name": "my-project-BuildArtifact"
        }
    ]
},
```

------

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

以下相關資源可協助您使用此動作。
+ [組態屬性參考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-action-reference.html) – *AWS CloudFormation 使用者指南*中的此參考章節提供這些 CodePipeline 參數的更多說明和範例。
+ [AWS CloudFormation API 參考](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/) – *AWS CloudFormation API 參考*中的 [CreateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html) 參數說明 範本的 CloudFormation 堆疊參數。

# CloudFormation StackSets 部署動作參考
<a name="action-reference-StackSets"></a>

CodePipeline 可讓您在 CI/CD 程序中執行 CloudFormation StackSets 操作。您可以使用堆疊集，透過使用單一 CloudFormation 範本在跨 AWS 區域的 AWS 帳戶中建立堆疊。每個堆疊中包含的所有資源都由堆疊集的 CloudFormation 範本定義。建立堆疊集時，您可以指定要使用的範本，以及範本所需的任何參數和功能。

如需 for CloudFormation StackSets 概念的詳細資訊，請參閱*AWS CloudFormation 《 使用者指南*》中的 [StackSets 概念](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html)。

您可以將管道與 CloudFormation StackSets 透過兩種不同的動作類型整合在一起：
+ `CloudFormationStackSet` 動作會從存放在管道來源位置的範本建立或更新堆疊集或堆疊執行個體。每次建立或更新堆疊集時，都會啟動對指定執行個體進行這些變更的部署。在 主控台中，您可以在建立或編輯管道時選擇 **CloudFormation 堆疊集**動作提供者。
+ `CloudFormationStackInstances` 動作會將變更從`CloudFormationStackSet`動作部署到指定的執行個體、建立新的堆疊執行個體，以及定義參數覆寫到指定的執行個體。在 主控台中，您可以在編輯現有管道時選擇 **CloudFormation Stack Instances** 動作提供者。

您可以使用這些動作來部署到目標 AWS 帳戶或目標 AWS Organizations 組織單位 IDs。

**注意**  
若要部署至目標 AWS Organizations 帳戶或組織單位 IDs，並使用服務受管許可模型，您必須在 AWS CloudFormation StackSets 和 AWS Organizations 之間啟用受信任的存取。如需詳細資訊，請參閱[使用 Stacksets AWS CloudFormation 啟用受信任存取](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-cloudformation.html#integrate-enable-ta-cloudformation)。

**Topics**
+ [How CloudFormation StackSets 動作的運作方式](#action-reference-StackSets-concepts)
+ [如何在管道中建構 StackSets 動作](#action-reference-StackSets-bestpractices)
+ [`CloudFormationStackSet` 動作](#action-reference-StackSet)
+ [CloudFormationStackInstances 動作](#action-reference-StackInstances)
+ [服務角色許可：`CloudFormationStackSet`動作](#edit-role-cfn-stackset)
+ [服務角色許可：`CloudFormationStackInstances`動作](#edit-role-cfn-stackinstances)
+ [堆疊集操作的許可模型](#action-reference-StackSets-permissions)
+ [範本參數資料類型](#action-reference-StackSets-datatypes)
+ [另請參閱](#action-reference-CloudFormation-links)

## How CloudFormation StackSets 動作的運作方式
<a name="action-reference-StackSets-concepts"></a>

`CloudFormationStackSet` 動作會根據動作是否第一次執行來建立或更新資源。

`CloudFormationStackSet` 動作會*建立*或*更新*堆疊集，並將這些變更部署到指定的執行個體。

**注意**  
如果您使用此動作進行包含新增堆疊執行個體的更新，則會先部署新的執行個體，最後完成更新。新執行個體會先收到舊版本，然後將更新套用至所有執行個體。
+ *建立*：未指定執行個體且堆疊集不存在時，**CloudFormationStackSet** 動作會在不建立任何執行個體的情況下建立堆疊集。
+ *更新*：針對已建立的堆疊集執行 **CloudFormationStackSet** 動作時，動作會更新堆疊集。如果未指定執行個體且堆疊集已存在，則會更新所有執行個體。如果使用此動作更新特定執行個體，則所有剩餘的執行個體都會移至 OUTDATED 狀態。

  您可以使用 **CloudFormationStackSet** 動作，以下列方式更新堆疊集。
  + 更新部分或所有執行個體上的範本。
  + 更新部分或全部執行個體上的參數。
  + 更新堆疊集的執行角色 （這必須符合管理員角色中指定的執行角色）。
  + 變更許可模型 （只有在未建立執行個體時）。
  + `AutoDeployment` 如果堆疊集許可模型為 ，請啟用/停用 `Service Managed`。
  + 如果堆疊集許可模型為 ，則擔任成員帳戶中的委派管理員`Service Managed`。
  + 更新管理員角色。
  + 更新堆疊集上的描述。
  + 將部署目標新增至堆疊集更新，以建立新的堆疊執行個體。

`CloudFormationStackInstances` 動作會建立新的堆疊執行個體或更新過時的堆疊執行個體。當堆疊集更新時，執行個體會變得過時，但並非所有執行個體都會更新。
+ *建立*：如果堆疊已存在，則`CloudFormationStackInstances`動作只會更新執行個體，而不會建立堆疊執行個體。
+ *更新*：執行`CloudFormationStackSet`動作後，如果範本或參數僅在部分執行個體中更新，則其餘項目將標示為 `OUTDATED`。在稍後的管道階段中， 會以波浪`CloudFormationStackInstances`更新堆疊集中的其餘執行個體，以便所有執行個體都標示為 `CURRENT`。此動作也可以用來在新的或現有的執行個體上新增其他執行個體或覆寫參數。

在更新過程中， `CloudFormationStackSet`和 `CloudFormationStackInstances`動作可以指定新的部署目標，以建立新的堆疊執行個體。

在更新過程中， `CloudFormationStackSet`和 `CloudFormationStackInstances`動作不會刪除堆疊集、執行個體或資源。當動作更新堆疊但未指定要更新的所有執行個體時，未指定進行更新的執行個體會從更新中移除，並設為 狀態`OUTDATED`。

在部署期間，`OUTDATED`如果部署到執行個體失敗，堆疊執行個體也可以顯示 的狀態。

## 如何在管道中建構 StackSets 動作
<a name="action-reference-StackSets-bestpractices"></a>

根據最佳實務，您應該建構管道，以便建立堆疊集，並最初部署到子集或單一執行個體。在您測試部署並檢視產生的堆疊集之後，請新增 `CloudFormationStackInstances`動作，以建立和更新剩餘的執行個體。

使用 主控台或 CLI 建立建議的管道結構，如下所示：

1. 使用來源動作 （必要） 和 `CloudFormationStackSet`動作做為部署動作來建立管道。執行您的管道。

1. 當您的管道第一次執行時，`CloudFormationStackSet`動作會*建立*堆疊集和至少一個初始執行個體。驗證堆疊集建立，並檢閱初始執行個體的部署。例如，對於帳戶 Account-A 的初始堆疊集建立，其中 `us-east-1`是指定的區域，則會使用堆疊集建立堆疊執行個體：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/action-reference-StackSets.html)

1. 編輯管道以新增 `CloudFormationStackInstances`做為第二個部署動作，為您指定的目標建立/更新堆疊執行個體。例如，針對指定 `Account-A` `us-east-2`和 `eu-central-1`區域的帳戶建立堆疊執行個體時，會建立剩餘的堆疊執行個體，且初始執行個體會保持更新，如下所示：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/action-reference-StackSets.html)

1. 視需要執行管道，以更新堆疊集，並更新或建立堆疊執行個體。

當您啟動堆疊更新，其中您已從動作組態中移除部署目標，則未指定進行更新的堆疊執行個體會從部署中移除，並移至 OUTDATED 狀態。例如，針對從動作組態中移除`us-east-2`區域`Account-A`之帳戶的堆疊執行個體更新，會建立剩餘的堆疊執行個體，並將移除的執行個體設定為 OUTDATED，如下所示：


****  

| 堆疊執行個體 | 區域 | 狀態 | 
| --- | --- | --- | 
| StackInstanceID-1 | us-east-1 | CURRENT | 
| StackInstanceID-2 | us-east-2 | 過期 | 
| StackInstanceID-3 | eu-central-1 | CURRENT | 

如需部署堆疊集的最佳實務的詳細資訊，請參閱《 *AWS CloudFormation 使用者指南*》中的 StackSets 的[最佳實務](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-bestpractices.html)。

## `CloudFormationStackSet` 動作
<a name="action-reference-StackSet"></a>

此動作會從存放在管道來源位置的範本建立或更新堆疊集。

定義堆疊集之後，您可以在組態參數中指定的目標帳戶和區域中建立、更新或刪除堆疊。建立、更新和刪除堆疊時，您可以指定其他偏好設定，例如要執行操作的區域順序、堆疊操作停止的容錯能力百分比，以及同時在堆疊上執行操作的帳戶數量。

堆疊集是區域性資源。如果您在一個 AWS 區域中建立堆疊集，則無法從其他區域存取它。

當此動作用作堆疊集的更新動作時，如果沒有部署到至少一個堆疊執行個體，則不允許更新堆疊。

**Topics**
+ [動作類型](#action-reference-StackSet-type)
+ [組態參數](#action-reference-StackSet-config)
+ [Input artifacts (輸入成品)](#action-reference-StackSet-input)
+ [輸出成品](#action-reference-StackSet-output)
+ [輸出變數](#action-reference-StackSet-variables)
+ [**CloudFormationStackSet** 動作組態範例](#action-reference-StackSet-example)

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

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

**StackSetName**  
必要：是  
要與堆疊集相關聯的名稱。此名稱在建立該名稱的區域中必須是唯一的。  
名稱只能包含英數字元和連字號字元。它必須以字母字元開頭，且不超過 128 個字元。

**Description**  
必要：否  
堆疊集的描述。您可以使用此描述堆疊集的目的或其他相關資訊。

**TemplatePath**  
必要：是  
定義堆疊集中資源的範本位置。這必須指向大小上限為 460，800 個位元組的範本。  
輸入來源成品名稱和範本檔案的路徑，格式為 `"InputArtifactName::TemplateFileName"`，如下列範例所示。  

```
SourceArtifact::template.txt
```

**Parameters**  
必要：否  
部署期間更新之堆疊集的範本參數清單。  
您可以提供參數做為常值清單或檔案路徑：  
+ 您可以輸入下列速記語法格式的參數：`ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string`。如需這些資料類型的詳細資訊，請參閱 [範本參數資料類型](#action-reference-StackSets-datatypes)。

  下列範例顯示名為 `BucketName`的參數，其值為 `amzn-s3-demo-source-bucket`。

  ```
  ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket
  ```

  下列範例顯示具有多個參數的項目：

  ```
                                                                                                        
    ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket
    ParameterKey=Asset1,ParameterValue=true              
    ParameterKey=Asset2,ParameterValue=true
  ```
+ 您可以輸入檔案的位置，其中包含以 格式輸入的範本參數覆寫清單`"InputArtifactName::ParametersFileName"`，如下列範例所示。

  ```
  SourceArtifact::parameters.txt
  ```

  下列範例顯示 的檔案內容`parameters.txt`。

  ```
  [
      {
          "ParameterKey": "KeyName",
          "ParameterValue": "true"
      },
      {
          "ParameterKey": "KeyName",
          "ParameterValue": "true"
      }
  ]
  ```

**功能**  
必要：否  
表示範本可以建立和更新資源，具體取決於範本中的資源類型。  
如果您在堆疊範本中有 IAM 資源，或直接從包含巨集的範本建立堆疊，則必須使用此屬性。若要讓 CloudFormation 動作以這種方式成功運作，您必須使用下列其中一項功能：  
+ `CAPABILITY_IAM` 
+ `CAPABILITY_NAMED_IAM` 
 您可以使用逗號指定多個功能，而且功能之間沒有空格。中的範例[**CloudFormationStackSet** 動作組態範例](#action-reference-StackSet-example)顯示具有多個功能的項目。

**PermissionModel**  
必要：否  
決定如何建立和管理 IAM 角色。如果未指定 欄位，則會使用預設值。如需相關資訊，請參閱[堆疊集操作的許可模型](#action-reference-StackSets-permissions)。  
有效的值如下：  
+ `SELF_MANAGED` （預設）：您必須建立管理員和執行角色，才能部署到目標帳戶。
+ `SERVICE_MANAGED`： CloudFormation StackSets 會自動建立部署到 AWS Organizations 管理的帳戶所需的 IAM 角色。這需要 帳戶成為 組織的成員。
只有在堆疊集中沒有堆疊執行個體時，才能變更此參數。

****AdministrationRoleArn****  
由於 CloudFormation StackSets 跨多個帳戶執行操作，您必須先在這些帳戶中定義必要的許可，才能建立堆疊集。
必要：否  
此參數對於 SELF\$1MANAGED 許可模型是選用的，不用於 SERVICE\$1MANAGED 許可模型。
管理員帳戶中用於執行堆疊集操作的 IAM 角色 ARN。  
名稱可包含英數字元，以下任一個字元：\$1\$1=、.@- 且不含空格。名稱不區分大小寫。此角色名稱的長度下限為 20 個字元，上限為 2048 個字元。角色名稱在帳戶中必須是唯一的。此處指定的角色名稱必須是現有的角色名稱。如果您未指定角色名稱，則會將其設定為 AWSCloudFormationStackSetAdministrationRole。如果您指定 ServiceManaged，則不得定義角色名稱。

****ExecutionRoleName****  
由於 CloudFormation StackSets 跨多個帳戶執行操作，您必須先在這些帳戶中定義必要的許可，才能建立堆疊集。
必要：否  
此參數對於 SELF\$1MANAGED 許可模型是選用的，不用於 SERVICE\$1MANAGED 許可模型。
用於執行堆疊集操作的目標帳戶中的 IAM 角色名稱。名稱可包含英數字元，以下任一個字元：\$1\$1=、.@- 且不含空格。名稱不區分大小寫。此角色名稱的長度下限為 1 個字元，上限為 64 個字元。角色名稱在帳戶中必須是唯一的。此處指定的角色名稱必須是現有的角色名稱。如果您使用的是自訂執行角色，請勿指定此角色。如果您未指定角色名稱，則會將其設定為 `AWSCloudFormationStackSetExecutionRole`。如果您將 Service\$1Managed 設定為 true，則不得定義角色名稱。

****OrganizationsAutoDeployment****  
必要：否  
此參數是 SERVICE\$1MANAGED 許可模型的選用參數，不會用於 SELF\$1MANAGED 許可模型。
描述 CloudFormation StackSets 是否自動部署到 AWS 新增至目標組織或組織單位 (OU) 的 Organizations 帳戶。如果已指定 `OrganizationsAutoDeployment` ，請勿指定 `DeploymentTargets`和 `Regions`。  
如果未提供 的輸入`OrganizationsAutoDeployment`，則預設值為 `Disabled`。
有效的值如下：  
+ `Enabled`。 必要：否。

  StackSets 會自動將額外的堆疊執行個體部署到新增至指定區域中目標組織或組織單位 (OU) 的 AWS Organizations 帳戶。如果帳戶已從目標組織或 OU 中移除， CloudFormation StackSets 會從指定區域中的帳戶刪除堆疊執行個體。
+ `Disabled`。 必要：否。

  StackSets 不會自動將其他堆疊執行個體部署到新增至指定區域中目標組織或組織單位 (OU) 的 AWS Organizations 帳戶。
+ `EnabledWithStackRetention`。 必要：否。

  從目標組織或 OU 移除帳戶時，會保留堆疊資源。

****DeploymentTargets****  
必要：否  
對於 SERVICE\$1MANAGED 許可模型，您可以為部署目標提供組織根 ID 或組織單位 IDs。對於 SELF\$1MANAGED 許可模型，您只能提供帳戶。
選取此參數時，您還必須選取**區域**。
應建立/更新堆疊集執行個體 AWS 的帳戶或組織單位 IDs 清單。  
+ **帳戶**：

  您可以將帳戶做為常值清單或檔案路徑提供：
  + *文字*：以速記語法格式 輸入參數`account_ID,account_ID`，如下列範例所示。

    ```
    111111222222,333333444444
    ```
  + *檔案路徑：*檔案的位置，其中包含應建立/更新堆疊集執行個體 AWS 的帳戶清單，格式為 `InputArtifactName::AccountsFileName`。如果您使用檔案路徑來指定**帳戶**或 **OrganizationalUnitIds**，檔案格式必須是 JSON，如下列範例所示。

    ```
    SourceArtifact::accounts.txt
    ```

    下列範例顯示 的檔案內容`accounts.txt`。

    ```
    [
        "111111222222"
    ]
    ```

    下列範例顯示列出多個帳戶`accounts.txt`時 的檔案內容：

    ```
    [
        "111111222222","333333444444"
    ]
    ```
+ **OrganizationalUnitIds**：
**注意**  
此參數是 SERVICE\$1MANAGED 許可模型的選用參數，不會用於 SELF\$1MANAGED 許可模型。如果您選擇 **OrganizationsAutoDeployment**，請勿使用此項目。

  更新相關聯堆疊執行個體 AWS 的組織單位。

  您可以提供組織單位 IDs 做為常值清單或檔案路徑：
  + *文字*：輸入以逗號分隔的字串陣列，如下列範例所示。

    ```
    ou-examplerootid111-exampleouid111,ou-examplerootid222-exampleouid222
    ```
  + *檔案路徑：*檔案的位置，其中包含要在其中建立或更新堆疊集執行個體的 OrganizationalUnitIds清單。如果您使用檔案路徑來指定**帳戶**或 **OrganizationalUnitIds**，檔案格式必須是 JSON，如下列範例所示。

    輸入檔案的路徑，格式為 `InputArtifactName::OrganizationalUnitIdsFileName`。

    ```
    SourceArtifact::OU-IDs.txt
    ```

    下列範例顯示 的檔案內容`OU-IDs.txt`：

    ```
    [
        "ou-examplerootid111-exampleouid111","ou-examplerootid222-exampleouid222"
    ]
    ```

****區域****  
必要：否  
選取此參數時，您還必須選取 **DeploymentTargets**。
建立或更新堆疊集執行個體 AWS 的區域清單。區域會依輸入順序更新。  
輸入格式為 的有效 AWS 區域清單`Region1,Region2`，如下列範例所示。  

```
us-west-2,us-east-1
```

****FailureTolerancePercentage****  
必要：否  
在 CloudFormation 停止該區域中的操作之前，此堆疊操作可能失敗的每個區域的帳戶百分比。如果在區域中停止操作， CloudFormation 不會在後續區域中嘗試操作。根據指定的百分比計算帳戶數量時， 會*向下* CloudFormation 四捨五入到下一個整數。

****MaxConcurrentPercentage****  
必要：否  
執行此操作時，一次可用的帳戶百分比上限。根據指定的百分比計算帳戶數量時， 會*向下* CloudFormation 四捨五入到下一個整數。如果四捨五入會導致零， 會改為將數字 CloudFormation 設定為 1。雖然您使用此設定來指定*最大值*，但對於大型部署，由於服務限流，同時執行的帳戶實際數量可能會較低。

**RegionConcurrencyType**  
必要：否  
您可以設定區域並行部署參數，指定堆疊集是否應依序或平行部署到 AWS 區域 。指定區域並行在多個 之間 AWS 區域 平行部署堆疊時，這可能會導致更快的整體部署時間。  
+ *平行*：只要區域的部署失敗不超過指定的容錯能力，就會同時執行堆疊集部署。
+ *循序*：只要區域的部署失敗不超過指定的容錯能力，就會一次執行一個堆疊集部署。順序部署是預設選項。

**ConcurrencyMode**  
必要：否  
並行模式可讓您選擇並行層級在堆疊集操作期間的行為，無論是嚴格或軟容錯能力。**嚴格容錯能力**會降低部署速度，由於每次故障會使並行值減少，因此堆疊集操作會發生故障。**軟性容錯能力**會優先考慮部署速度，同時仍利用 CloudFormation 安全功能。  
+ `STRICT_FAILURE_TOLERANCE`：此選項會動態降低並行層級，以確保失敗的帳戶數目永遠不會超過特定的容錯能力。這是預設行為。
+ `SOFT_FAILURE_TOLERANCE`：此選項會將容錯能力與實際並行分離。這可讓堆疊集操作在設定的並行層級執行，無論失敗次數為何。

**CallAs**  
必要：否  
此參數是`SERVICE_MANAGED`許可模型的選用參數，不會用於`SELF_MANAGED`許可模型。
指定您是擔任組織的管理帳戶，還是成員帳戶中的委派管理員。  
如果此參數設定為 `DELEGATED_ADMIN`，請確定管道 IAM 角色具有 `organizations:ListDelegatedAdministrators` 許可。否則，在執行 時發生類似下列的錯誤時，動作將會失敗：`Account used is not a delegated administrator`。
+ `SELF`：堆疊集部署將在登入管理帳戶時使用服務受管許可。
+ `DELEGATED_ADMIN`：堆疊集部署將在登入委派管理員帳戶時使用服務受管許可。

### Input artifacts (輸入成品)
<a name="action-reference-StackSet-input"></a>

您必須在`CloudFormationStackSet`動作中包含至少一個包含堆疊集範本的輸入成品。您可以為部署目標、帳戶和參數的清單包含更多輸入成品。
+ **成品數量：** `1 to 3`
+ **描述：**您可以包含要提供的成品：
  + 堆疊範本檔案。(請參閱 `TemplatePath` 參數。)
  + 參數檔案。(請參閱 `Parameters` 參數。)
  + 帳戶檔案。(請參閱 `DeploymentTargets` 參數。)

### 輸出成品
<a name="action-reference-StackSet-output"></a>
+ **成品數量：** `0`
+ **描述：**輸出成品不適用於此動作類型。

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

如果您設定此動作，它會產生變數，可供管道中下游動作的動作組態參考。您可以設定動作的命名空間，讓這些變數可供下游動作的組態使用。
+ **StackSetId**：堆疊集的 ID。
+ **OperationId**：堆疊集操作的 ID。

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

### **CloudFormationStackSet** 動作組態範例
<a name="action-reference-StackSet-example"></a>

下列範例顯示 **CloudFormationStackSet** 動作的動作組態。

#### 自我管理許可模型的範例
<a name="action-reference-StackSet-example-selfmanaged"></a>

下列範例顯示 **CloudFormationStackSet** 動作，其中輸入的部署目標為 AWS 帳戶 ID。

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

```
Name: CreateStackSet
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: CloudFormationStackSet
  Version: '1'
RunOrder: 1
Configuration:
  DeploymentTargets: '111111222222'
  FailureTolerancePercentage: '20'
  MaxConcurrentPercentage: '25'
  PermissionModel: SELF_MANAGED
  Regions: us-east-1
  StackSetName: my-stackset
  TemplatePath: 'SourceArtifact::template.json'
OutputArtifacts: []
InputArtifacts:
  - Name: SourceArtifact
Region: us-west-2
Namespace: DeployVariables
```

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

```
{
    "Name": "CreateStackSet",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "CloudFormationStackSet",
        "Version": "1"
    },
    "RunOrder": 1,
    "Configuration": {
        "DeploymentTargets": "111111222222",
        "FailureTolerancePercentage": "20",
        "MaxConcurrentPercentage": "25",
        "PermissionModel": "SELF_MANAGED",
        "Regions": "us-east-1",
        "StackSetName": "my-stackset",
        "TemplatePath": "SourceArtifact::template.json"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "SourceArtifact"
        }
    ],
    "Region": "us-west-2",
    "Namespace": "DeployVariables"
}
```

------

#### 服務受管許可模型的範例
<a name="action-reference-StackSet-example-servicemanaged"></a>

下列範例顯示服務受管許可模型的 **CloudFormationStackSet** 動作，其中自動部署至 AWS Organizations 的選項已啟用堆疊保留。

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

```
Name: Deploy
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: CloudFormationStackSet
  Version: '1'
RunOrder: 1
Configuration:
  Capabilities: 'CAPABILITY_IAM,CAPABILITY_NAMED_IAM'
  OrganizationsAutoDeployment: EnabledWithStackRetention
  PermissionModel: SERVICE_MANAGED
  StackSetName: stacks-orgs
  TemplatePath: 'SourceArtifact::template.json'
OutputArtifacts: []
InputArtifacts:
  - Name: SourceArtifact
Region: eu-central-1
Namespace: DeployVariables
```

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

```
{
    "Name": "Deploy",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "CloudFormationStackSet",
        "Version": "1"
    },
    "RunOrder": 1,
    "Configuration": {
        "Capabilities": "CAPABILITY_IAM,CAPABILITY_NAMED_IAM",
        "OrganizationsAutoDeployment": "EnabledWithStackRetention",
        "PermissionModel": "SERVICE_MANAGED",
        "StackSetName": "stacks-orgs",
        "TemplatePath": "SourceArtifact::template.json"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "SourceArtifact"
        }
    ],
    "Region": "eu-central-1",
    "Namespace": "DeployVariables"
}
```

------

## CloudFormationStackInstances 動作
<a name="action-reference-StackInstances"></a>

此動作會建立新的執行個體，並將堆疊集部署至指定的執行個體。「堆疊執行個體」是針對區域內某個目標帳戶中的堆疊所做的參考。堆疊執行個體可以在沒有堆疊的情況下存在；例如，如果堆疊建立不成功，堆疊執行個體會顯示堆疊建立失敗的原因。堆疊執行個體僅與一個堆疊集相關聯。

在初始建立堆疊集之後，您可以使用 新增堆疊執行個體`CloudFormationStackInstances`。在建立或更新堆疊集執行個體操作期間，可以在堆疊執行個體層級覆寫範本參數值。

每個堆疊集都有一個範本和一組範本參數。當您更新範本或範本參數時，您可以更新整個集的參數。然後，所有執行個體狀態都會設為 ，`OUTDATED`直到變更部署到該執行個體為止。

若要覆寫特定執行個體上的參數值，例如，如果範本包含 的參數`stage`，其值為 `prod`，您可以覆寫該參數的值為 `beta`或 `gamma`。

**Topics**
+ [動作類型](#action-reference-StackInstances-type)
+ [組態參數](#action-reference-StackInstances-config)
+ [Input artifacts (輸入成品)](#action-reference-StackInstances-input)
+ [輸出成品](#action-reference-StackInstances-output)
+ [輸出變數](#action-reference-StackInstances-variables)
+ [動作組態範例](#action-reference-StackInstances-example)

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

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

**StackSetName**  
必要：是  
要與堆疊集相關聯的名稱。此名稱在建立該名稱的區域中必須是唯一的。  
名稱只能包含英數字元和連字號字元。它必須以字母字元開頭，且不超過 128 個字元。

****DeploymentTargets****  
必要：否  
對於 SERVICE\$1MANAGED 許可模型，您可以為部署目標提供組織根 ID 或組織單位 IDs。對於 SELF\$1MANAGED 許可模型，您只能提供帳戶。
選取此參數時，您還必須選取**區域**。
應建立/更新堆疊集執行個體 AWS 的帳戶或組織單位 IDs 清單。  
+ **帳戶**：

  您可以將帳戶做為常值清單或檔案路徑提供：
  + *文字*：以速記語法格式 輸入參數`account_ID,account_ID`，如下列範例所示。

    ```
    111111222222,333333444444
    ```
  + *檔案路徑：*檔案的位置，其中包含應建立/更新堆疊集執行個體 AWS 的帳戶清單，格式為 `InputArtifactName::AccountsFileName`。如果您使用檔案路徑來指定**帳戶**或 **OrganizationalUnitIds**，檔案格式必須是 JSON，如下列範例所示。

    ```
    SourceArtifact::accounts.txt
    ```

    下列範例顯示 的檔案內容`accounts.txt`：

    ```
    [
        "111111222222"
    ]
    ```

    下列範例顯示列出多個帳戶`accounts.txt`時 的檔案內容：

    ```
    [
        "111111222222","333333444444"
    ]
    ```
+ **OrganizationalUnitIds**：
**注意**  
此參數是 SERVICE\$1MANAGED 許可模型的選用參數，不會用於 SELF\$1MANAGED 許可模型。如果您選擇 **OrganizationsAutoDeployment**，請勿使用此項目。

  更新相關聯堆疊執行個體 AWS 的組織單位。

  您可以提供組織單位 IDs 做為常值清單或檔案路徑。
  + *文字*：輸入以逗號分隔的字串陣列，如下列範例所示。

    ```
    ou-examplerootid111-exampleouid111,ou-examplerootid222-exampleouid222
    ```
  + *檔案路徑：*檔案的位置，其中包含要在其中建立或更新堆疊集執行個體的 OrganizationalUnitIds清單。如果您使用檔案路徑來指定**帳戶**或 **OrganizationalUnitIds**，檔案格式必須是 JSON，如下列範例所示。

    輸入檔案的路徑，格式為 `InputArtifactName::OrganizationalUnitIdsFileName`。

    ```
    SourceArtifact::OU-IDs.txt
    ```

    下列範例顯示 的檔案內容`OU-IDs.txt`：

    ```
    [
        "ou-examplerootid111-exampleouid111","ou-examplerootid222-exampleouid222"
    ]
    ```

****區域****  
必要：是  
選取此參數時，您還必須選取 **DeploymentTargets**。
建立或更新堆疊集執行個體 AWS 的區域清單。區域會依輸入順序更新。  
輸入有效 AWS 區域的清單，格式為：`Region1,Region2`，如下列範例所示。  

```
us-west-2,us-east-1
```

**ParameterOverrides**  
必要：否  
您要在所選堆疊執行個體中覆寫的堆疊集參數清單。覆寫的參數值會套用至指定帳戶和區域中的所有堆疊執行個體。  
您可以提供參數做為常值清單或檔案路徑：  
+ 您可以輸入下列速記語法格式的參數：`ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string`。如需這些資料類型的詳細資訊，請參閱 [範本參數資料類型](#action-reference-StackSets-datatypes)。

  下列範例顯示名為 `BucketName`的參數，其值為 `amzn-s3-demo-source-bucket`。

  ```
  ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket
  ```

  下列範例顯示具有多個參數的項目。

  ```
                                                                                                        
    ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket
    ParameterKey=Asset1,ParameterValue=true              
    ParameterKey=Asset2,ParameterValue=true
  ```
+ 您可以輸入檔案的位置，其中包含以 格式輸入的範本參數覆寫清單`InputArtifactName::ParameterOverridessFileName`，如下列範例所示。

  ```
  SourceArtifact::parameter-overrides.txt
  ```

  下列範例顯示 的檔案內容`parameter-overrides.txt`。

  ```
  [
      {
          "ParameterKey": "KeyName",
          "ParameterValue": "true"
      },
      {
          "ParameterKey": "KeyName",
          "ParameterValue": "true"
      }
  ]
  ```

****FailureTolerancePercentage****  
必要：否  
在 CloudFormation 停止該區域中的操作之前，此堆疊操作可能失敗的每個區域的帳戶百分比。如果在區域中停止操作， CloudFormation 不會在後續區域中嘗試操作。根據指定的百分比計算帳戶數量時， 會*向下* CloudFormation 四捨五入到下一個整數。

****MaxConcurrentPercentage****  
必要：否  
一次執行此操作的帳戶百分比上限。根據指定的百分比計算帳戶數量時， 會*向下* CloudFormation 四捨五入到下一個整數。如果四捨五入會導致零， 會改為將數字 CloudFormation 設定為 1。雖然您指定*上限*，但對於大型部署，由於服務限流，同時處理的實際帳戶數量可能會較低。

**RegionConcurrencyType**  
必要：否  
您可以設定區域並行部署參數，指定堆疊集是否應依序或平行部署到 AWS 區域 。指定區域並行在多個 之間 AWS 區域 平行部署堆疊時，這可能會導致更快的整體部署時間。  
+ *平行*：只要區域的部署失敗不超過指定的容錯能力，就會同時執行堆疊集部署。
+ *循序*：只要區域的部署失敗不超過指定的容錯能力，就會一次執行一個堆疊集部署。順序部署是預設選項。

**ConcurrencyMode**  
必要：否  
並行模式可讓您選擇並行層級在堆疊集操作期間的行為，無論是嚴格或軟容錯能力。**嚴格容錯能力**會降低部署速度，由於每次故障會使並行值減少，因此堆疊集操作會發生故障。**軟性容錯能力**會優先考慮部署速度，同時仍利用 CloudFormation 安全功能。  
+ `STRICT_FAILURE_TOLERANCE`：此選項會動態降低並行層級，以確保失敗的帳戶數目永遠不會超過特定的容錯能力。這是預設行為。
+ `SOFT_FAILURE_TOLERANCE`：此選項會將容錯能力與實際並行分離。這可讓堆疊集操作在設定的並行層級執行，無論失敗次數為何。

**CallAs**  
必要：否  
此參數是`SERVICE_MANAGED`許可模型的選用參數，不會用於`SELF_MANAGED`許可模型。
指定您是擔任組織的管理帳戶，還是成員帳戶中的委派管理員。  
如果此參數設定為 `DELEGATED_ADMIN`，請確定管道 IAM 角色具有 `organizations:ListDelegatedAdministrators` 許可。否則，在執行 時發生類似下列的錯誤時，動作將會失敗：`Account used is not a delegated administrator`。
+ `SELF`：堆疊集部署將在登入管理帳戶時使用服務受管許可。
+ `DELEGATED_ADMIN`：堆疊集部署將在登入委派管理員帳戶時使用服務受管許可。

### Input artifacts (輸入成品)
<a name="action-reference-StackInstances-input"></a>

`CloudFormationStackInstances` 可以包含列出部署目標和參數的成品。
+ **成品數量：** `0 to 2`
+ **描述：**作為輸入，堆疊集動作可選擇性地接受用於這些目的的成品：
  + 提供要使用的參數檔案。(請參閱 `ParameterOverrides` 參數。)
  + 提供要使用的目標帳戶檔案。(請參閱 `DeploymentTargets` 參數。)

### 輸出成品
<a name="action-reference-StackInstances-output"></a>
+ **成品數量：** `0`
+ **描述：**輸出成品不適用於此動作類型。

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

設定時，此動作會產生變數，供管道中的下游動作的動作組態所參考。您可以設定動作的命名空間，讓這些變數可供下游動作的組態使用。
+ **StackSetId**：堆疊集的 ID。
+ **OperationId**：堆疊集操作的 ID。

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

### 動作組態範例
<a name="action-reference-StackInstances-example"></a>

下列範例顯示 **CloudFormationStackInstances** 動作的動作組態。

#### 自我管理許可模型的範例
<a name="action-reference-StackInstances-example-selfmanaged"></a>

下列範例顯示 **CloudFormationStackInstances** 動作，其中輸入的部署目標為 AWS 帳戶 ID `111111222222`。

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

```
Name: my-instances
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: CloudFormationStackInstances
  Version: '1'
RunOrder: 2
Configuration:
  DeploymentTargets: '111111222222'
  Regions: 'us-east-1,us-east-2,us-west-1,us-west-2'
  StackSetName: my-stackset
OutputArtifacts: []
InputArtifacts:
  - Name: SourceArtifact
Region: us-west-2
```

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

```
{
    "Name": "my-instances",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "CloudFormationStackInstances",
        "Version": "1"
    },
    "RunOrder": 2,
    "Configuration": {
        "DeploymentTargets": "111111222222",
        "Regions": "us-east-1,us-east-2,us-west-1,us-west-2",
        "StackSetName": "my-stackset"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "SourceArtifact"
        }
    ],
    "Region": "us-west-2"
}
```

------

#### 服務受管許可模型的範例
<a name="action-reference-StackInstances-example-servicemanaged"></a>

下列範例顯示服務受管許可模型的 **CloudFormationStackInstances** 動作，其中部署目標為 AWS Organizations 組織單位 ID `ou-1111-1example`。

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

```
Name: Instances
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: CloudFormationStackInstances
  Version: '1'
RunOrder: 2
Configuration:
  DeploymentTargets: ou-1111-1example
  Regions: us-east-1
  StackSetName: my-stackset
OutputArtifacts: []
InputArtifacts:
  - Name: SourceArtifact
Region: eu-central-1
```

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

```
{
    "Name": "Instances",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "CloudFormationStackInstances",
        "Version": "1"
    },
    "RunOrder": 2,
    "Configuration": {
        "DeploymentTargets": "ou-1111-1example",
        "Regions": "us-east-1",
        "StackSetName": "my-stackset"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "SourceArtifact"
        }
    ],
    "Region": "eu-central-1"
}
```

------

## 服務角色許可：`CloudFormationStackSet`動作
<a name="edit-role-cfn-stackset"></a>

For CloudFormation StackSets 動作需要下列最低許可。

針對 `CloudFormationStackSet`動作，請將下列項目新增至您的政策陳述式：

```
{
    "Effect": "Allow",
    "Action": [
        "cloudformation:CreateStackSet",
        "cloudformation:UpdateStackSet",
        "cloudformation:CreateStackInstances",
        "cloudformation:DescribeStackSetOperation",
        "cloudformation:DescribeStackSet",
        "cloudformation:ListStackInstances"
    ],
    "Resource": "resource_ARN"
},
```

## 服務角色許可：`CloudFormationStackInstances`動作
<a name="edit-role-cfn-stackinstances"></a>

針對 `CloudFormationStackInstances`動作，請將下列項目新增至您的政策陳述式：

```
{
    "Effect": "Allow",
    "Action": [
        "cloudformation:CreateStackInstances",
        "cloudformation:DescribeStackSetOperation"
    ],
    "Resource": "resource_ARN"
},
```

## 堆疊集操作的許可模型
<a name="action-reference-StackSets-permissions"></a>

由於 CloudFormation StackSets 跨多個帳戶執行操作，您必須先在這些帳戶中定義必要的許可，才能建立堆疊集。您可以透過自我管理的許可或服務管理的許可來定義許可。

使用自我管理許可，您可以在您定義堆疊集的帳戶中建立 StackSets 所需的兩個 IAM 角色 - 管理員角色，例如 AWSCloudFormationStackSetAdministrationRole，以及您在部署堆疊集執行個體的每個帳戶中建立執行角色，例如 AWSCloudFormationStackSetExecutionRole。使用此許可模型，StackSets 可以部署到使用者具有建立 IAM 角色許可的任何 AWS 帳戶。如需詳細資訊，請參閱*AWS CloudFormation 《 使用者指南*》中的[授予自我管理許可](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html)。

**注意**  
由於 CloudFormation StackSets 跨多個帳戶執行操作，您必須先在這些帳戶中定義必要的許可，才能建立堆疊集。

透過服務受管許可，您可以將堆疊執行個體部署至 AWS Organizations 管理的帳戶。使用此許可模型，您不需要建立必要的 IAM 角色，因為 StackSets 會代表您建立 IAM 角色。使用此模型，您也可以啟用未來新增至組織的帳戶的自動部署。請參閱*AWS CloudFormation 《 使用者指南*》中的[使用 AWS Organizations 啟用受信任存取](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-enable-trusted-access.html)。

## 範本參數資料類型
<a name="action-reference-StackSets-datatypes"></a>

堆疊集操作中使用的範本參數包括下列資料類型。如需詳細資訊，請參閱 [DescribeStackSet](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html)。

ParameterKey  
+ 描述：與 參數相關聯的金鑰。如果您未指定特定參數的索引鍵和值， AWS CloudFormation 會使用範本中指定的預設值。
+ 範例：

  ```
  "ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket"
  ```

ParameterValue  
+ 描述：與 參數相關聯的輸入值。
+ 範例：

  ```
  "ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket"
  ```

UsePreviousValue  
+ 在堆疊更新期間，使用堆疊用於指定參數金鑰的現有參數值。如果您指定 `true`，請勿指定參數值。
+ 範例：

  ```
  "ParameterKey=Asset1,UsePreviousValue=true"
  ```

每個堆疊集都有一個範本和一組範本參數。當您更新範本或範本參數時，您可以更新整個集的參數。然後，所有執行個體狀態都會設為 OUTDATED，直到變更部署到該執行個體為止。

若要覆寫特定執行個體上的參數值，例如，如果範本包含 的參數`stage`，其值為 `prod`，您可以覆寫該參數的值為 `beta`或 `gamma`。

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

以下相關資源可協助您使用此動作。
+ [參數類型](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#parameters-section-structure-properties-type) – *AWS CloudFormation 使用者指南*中的此參考章節提供 CloudFormation 範本參數的更多說明和範例。
+ 最佳實務 – 如需部署堆疊集最佳實務的詳細資訊，請參閱*AWS CloudFormation 《 使用者指南*[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-bestpractices.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-bestpractices.html)》中的 。
+ [AWS CloudFormation API 參考](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/) – 您可以在 *AWS CloudFormation API 參考*中參考下列 CloudFormation 動作，以取得堆疊集操作中使用的參數詳細資訊：

  
  + [CreateStackSet](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStackSet.html) 動作會建立堆疊集。
  + [UpdateStackSet](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStackSet.html) 動作會更新指定帳戶和區域中的堆疊集和相關聯的堆疊執行個體。即使更新堆疊集所建立的堆疊集操作失敗 （完全或部分、低於或高於指定的容錯能力），堆疊集也會隨著這些變更而更新。後續對指定堆疊集的 CreateStackInstances 呼叫會使用更新的堆疊集。
  + [CreateStackInstances](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStackInstances.html) 動作會在自我管理許可模型上的所有指定帳戶內，或在服務受管許可模型上的所有指定部署目標內，建立所有指定區域的堆疊執行個體。您可以覆寫此動作所建立執行個體的參數。如果執行個體已存在，CreateStackInstances 會使用相同的輸入參數呼叫 UpdateStackInstances。當您使用此動作建立執行個體時，不會變更其他堆疊執行個體的狀態。
  + [UpdateStackInstances](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStackInstances.html) 動作會在自我管理許可模型的所有指定帳戶內，或在服務管理許可模型的所有指定部署目標內，針對所有指定的區域設定堆疊執行個體，讓堆疊執行個體保持最新狀態。您可以覆寫此動作更新之執行個體的參數。當您使用此動作更新執行個體子集時，不會變更其他堆疊執行個體的狀態。
  + [DescribeStackSetOperation](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackSetOperation.html) 動作會傳回指定堆疊集操作的描述。
  + [DescribeStackSet](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackSet.html) 動作會傳回指定堆疊集的描述。

# AWS CodeBuild 組建和測試動作參考
<a name="action-reference-CodeBuild"></a>

可讓您執行建置和測試做為您管道的一部分。當您執行 CodeBuild 組建或測試動作時，在 buildspec 中指定的命令會在 CodeBuild 容器內執行。所有指定為 CodeBuild 動作輸入成品的成品，都可以在執行命令的容器內使用。CodeBuild 可以提供建置或測試動作。如需詳細資訊，請參閱[「AWS CodeBuild 使用者指南」](https://docs.aws.amazon.com/codebuild/latest/userguide/)。

當您在主控台中使用 CodePipeline 精靈建立建置專案時，CodeBuild 組建專案會顯示來源提供者為 CodePipeline。當您在 CodeBuild 主控台中建立組建專案時，您無法將 CodePipeline 指定為來源提供者，但將組建動作新增至管道會在 CodeBuild 主控台中調整來源。如需詳細資訊，請參閱 *AWS CodeBuild API 參考*中的 [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html)。

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

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

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

**ProjectName**  
必要：是  
`ProjectName` 是 CodeBuild 中建置專案的名稱。

**PrimarySource**  
必要：有條件  
`PrimarySource` 參數的值必須是動作其中一個輸入成品的名稱。CodeBuild 會尋找 buildspec 檔案，並在包含此成品解壓縮版本的目錄中執行 buildspec 命令。  
如果針對 CodeBuild 動作指定多個輸入成品，則需要此參數。動作只有一個來源成品時，則 `PrimarySource` 成品會預設為該成品。

**BatchEnabled**  
必要：否  
`BatchEnabled` 參數的布林值允許動作在相同的組建執行中執行多個組建。  
啟用此選項時，即可使用`CombineArtifacts`此選項。  
如需啟用批次建置的管道範例，請參閱 [CodePipeline 與 CodeBuild 和批次建置](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-pipeline-batch.html)整合。

**BuildspecOverride**  
必要：否  
內嵌 buildspec 定義或 buildspec 檔案宣告，會覆寫建置專案中定義的最新版本，僅適用於此建置。專案上定義的 buildspec 不會變更。  
如果設定此值，則可能是下列其中一項：  
+ 內嵌 buildspec 定義。如需詳細資訊，請參閱 [Buildspec 語法中的語法](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax)參考。
+ 替代 buildspec 檔案相對於內建`CODEBUILD_SRC_DIR`環境變數值或 S3 儲存貯體路徑的路徑。儲存貯體必須與建置專案位於相同的 AWS 區域 中。使用其 ARN 指定 buildspec 檔案 (例如，`arn:aws:s3:::my-codebuild-sample2/buildspec.yml`)。如果未提供此值或將此值設定為空字串，則原始程式碼必須在其根目錄中包含 buildspec 檔案。如需新增路徑的詳細資訊，請參閱 [Buildspec 檔案名稱和儲存位置](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-name-storage)。
由於此屬性可讓您變更將在容器中執行的建置命令，因此您應該注意具有呼叫此 API 和設定此參數之能力的 IAM 主體可以覆寫預設設定。此外，我們建議您使用值得信賴的 buildspec 位置，例如來源儲存庫中的檔案或 Amazon S3 儲存貯體。

**CombineArtifacts**  
必要：否  
`CombineArtifacts` 參數的布林值會將批次組建的所有組建成品合併為組建動作的單一成品檔案。  
若要使用此選項，必須啟用 `BatchEnabled` 參數。

**EnvironmentVariables**  
必要：否  
此參數的值用於設定管道中 CodeBuild 動作的環境變數。`EnvironmentVariables` 參數的值採用環境變數物件的 JSON 陣列格式。請參閱 [動作宣告 (CodeBuild 範例）](#action-reference-CodeBuild-example) 中的範例參數。  
每個物件都有三個部分，而且全都是字串：  
+ `name`：環境變數的名稱或索引鍵。
+ `value`：環境變數的值。使用 `PARAMETER_STORE`或 `SECRETS_MANAGER`類型時，此值必須是您已存放在 AWS Systems Manager 參數存放區中的參數名稱，或是已存放在 Secrets Manager 中的 AWS 秘密。
**注意**  
我們強烈建議不使用環境變數來存放敏感值，尤其是 AWS 登入資料。當您使用 CodeBuild 主控台或 AWS CLI 時，環境變數會以純文字顯示。對於敏感值，建議您改用 `SECRETS_MANAGER` 類型。
+ `type`：(選擇性) 環境變數的類型。有效值為 `PARAMETER_STORE`、`SECRETS_MANAGER` 或 `PLAINTEXT`。未指定時，則將預設為 `PLAINTEXT`。
當您`type`為環境變數組態輸入 `name`、 `value`和 時，特別是在環境變數包含 CodePipeline 輸出變數語法時，請勿超過組態值欄位的 1000 個字元限制。如果超過此限制，系統就會傳回驗證錯誤。
如需詳細資訊，請參閱《 AWS CodeBuild API 參考》中的 [ EnvironmentVariable](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_EnvironmentVariable.html)。如需使用 環境變數解析為 GitHub 分支名稱的範例 CodeBuild 動作，請參閱 [範例：搭配 CodeBuild 環境變數使用 BranchName 變數](actions-variables.md#actions-variables-examples-env-branchname)。

## Input artifacts (輸入成品)
<a name="action-reference-CodeBuild-input"></a>
+ **成品數量：** `1 to 5`
+ **描述：**CodeBuild 會尋找 buildspec 檔案，並從主要來源成品的 目錄中執行 buildspec 命令。當指定單一輸入來源或針對 CodeBuild 動作指定多個輸入來源時，如果是多個輸入來源，則必須使用 CodePipeline 中的`PrimarySource`動作組態參數來設定單一成品或主要成品。

  每個輸入成品都會擷取到自己的目錄，其位置會存放在環境變數中。主要來源成品的目錄可透過 `$CODEBUILD_SRC_DIR` 使用。所有其他輸入成品的目錄可透過 `$CODEBUILD_SRC_DIR_yourInputArtifactName` 使用。
**注意**  
CodeBuild 專案中設定的成品會成為管道中 CodeBuild 動作使用的輸入成品。

## 輸出成品
<a name="action-reference-CodeBuild-output"></a>
+ **成品數量：** `0 to 5`
+ **描述：**這些可用於讓 CodeBuild buildspec 檔案中定義的成品可供管道中的後續動作使用。當只定義一個輸出成品時，可以直接在 buildspec 檔案的 `artifacts`區段下定義此成品。指定多個輸出成品時，所有參考的成品都必須定義為 buildspec 檔案中的次要成品。CodePipeline 中的輸出成品名稱必須符合 buildspec 檔案中的成品識別符。
**注意**  
CodeBuild 專案中設定的成品會成為管道動作中的 CodePipeline 輸入成品。

  如果針對批次組建選取 `CombineArtifacts` 參數，則輸出成品位置會包含在相同執行中執行之多個組建的合併成品。

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

此動作將建置過程中匯出的所有環境變數產生為變數。如需如何匯出環境變數的詳細資訊，請參閱 *AWS CodeBuild API 指南*中的 [ EnvironmentVariable](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_EnvironmentVariable.html)。

如需在 CodePipeline 中使用 CodeBuild 環境變數的詳細資訊，請參閱 中的範例[CodeBuild 動作輸出變數](reference-variables.md#reference-variables-list-configured-codebuild)。 CodePipeline 如需可在 CodeBuild 中使用的環境變數清單，請參閱*AWS CodeBuild 《 使用者指南*》[中的建置環境中的環境變數](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)。

## 服務角色許可：CodeBuild 動作
<a name="edit-role-codebuild"></a>

對於 CodeBuild 支援，請將下列內容新增至您的政策陳述式：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "codebuild:BatchGetBuilds",
                "codebuild:StartBuild",
                "codebuild:BatchGetBuildBatches",
                "codebuild:StartBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:*:111122223333:project/[[ProjectName]]"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

## 動作宣告 (CodeBuild 範例）
<a name="action-reference-CodeBuild-example"></a>

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

```
Name: Build
Actions:
  - Name: PackageExport
    ActionTypeId:
      Category: Build
      Owner: AWS
      Provider: CodeBuild
      Version: '1'
    RunOrder: 1
    Configuration:
      BatchEnabled: 'true'
      CombineArtifacts: 'true'
      ProjectName: my-build-project
      PrimarySource: MyApplicationSource1
      EnvironmentVariables: '[{"name":"TEST_VARIABLE","value":"TEST_VALUE","type":"PLAINTEXT"},{"name":"ParamStoreTest","value":"PARAMETER_NAME","type":"PARAMETER_STORE"}]'
    OutputArtifacts:
      - Name: MyPipeline-BuildArtifact
    InputArtifacts:
      - Name: MyApplicationSource1
      - Name: MyApplicationSource2
```

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

```
{
    "Name": "Build",
    "Actions": [
        {
            "Name": "PackageExport",
            "ActionTypeId": {
                "Category": "Build",
                "Owner": "AWS",
                "Provider": "CodeBuild",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "BatchEnabled": "true",
                "CombineArtifacts": "true",
                "ProjectName": "my-build-project",
                "PrimarySource": "MyApplicationSource1",
                "EnvironmentVariables": "[{\"name\":\"TEST_VARIABLE\",\"value\":\"TEST_VALUE\",\"type\":\"PLAINTEXT\"},{\"name\":\"ParamStoreTest\",\"value\":\"PARAMETER_NAME\",\"type\":\"PARAMETER_STORE\"}]"
            },
            "OutputArtifacts": [
                {
                    "Name": "MyPipeline-BuildArtifact"
                }
            ],
            "InputArtifacts": [
                {
                    "Name": "MyApplicationSource1"
                },
                {
                    "Name": "MyApplicationSource2"
                }
            ]
        }
    ]
}
```

------

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

以下相關資源可協助您使用此動作。
+ [AWS CodeBuild 使用者指南](https://docs.aws.amazon.com/codebuild/latest/userguide/) – 如需具有 CodeBuild 動作的範例管道，請參閱[搭配使用 CodePipeline 與 CodeBuild 來測試程式碼和執行組建](https://docs.aws.amazon.com/codebuild/latest/userguide/how-to-create-pipeline.html)。如需具有多個輸入和輸出 CodeBuild 成品的專案範例，請參閱 [CodePipeline Integration with CodeBuild and Multiple Input Sources and Output Artifacts Sample ](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-pipeline-multi-input-output.html) and [Multiple Input Sources and Output Artifacts Sample](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-multi-in-out.html) 。
+ [教學課程：建立使用 建置和測試 Android 應用程式的管道 AWS Device Farm](tutorials-codebuild-devicefarm.md) – 本教學課程提供範例 buildspec 檔案和範例應用程式，以使用 GitHub 來源建立管道，該來源使用 CodeBuild 和 建置和測試 Android 應用程式 AWS Device Farm。
+ 適用於[ CodeBuild 的建置規格參考 ](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html) – 此參考主題提供了解 CodeBuild buildspec 檔案的定義和範例。如需可在 CodeBuild 中使用的環境變數清單，請參閱*AWS CodeBuild 《 使用者指南*》[中的建置環境中的環境變數](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)。

# AWS CodePipeline 叫用動作參考
<a name="action-reference-PipelineInvoke"></a>

您可以使用 CodePipeline 調用動作來簡化觸發下游管道執行，並在管道之間傳遞管道變數和來源修訂。

**注意**  
只有 V2 類型管道才支援此動作。

**Topics**
+ [動作類型](#action-reference-PipelineInvoke-type)
+ [組態參數](#action-reference-PipelineInvoke-parameters)
+ [Input artifacts (輸入成品)](#action-reference-PipelineInvoke-input)
+ [輸出成品](#action-reference-PipelineInvoke-output)
+ [CodePipeline 調用動作的服務角色政策許可](#action-reference-PipelineInvoke-permissions-action)
+ [動作宣告](#action-reference-PipelineInvoke-example)
+ [另請參閱](#action-reference-PipelineInvoke-links)

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

## 組態參數
<a name="action-reference-PipelineInvoke-parameters"></a>

**PipelineName**  
必要：是  
將在執行時啟動目前目標管道的管道名稱。您必須已建立叫用管道。當名為 的 `s3-pipeline-test` （叫用） 管道開始執行時，動作將`my-s3-pipeline`啟動 （目標） 管道。

**SourceRevisions**  
必要：否  
您希望目標管道在呼叫管道啟動時使用的來源修訂。例如，S3 來源動作會提供輸出變數，例如 S3 版本 ID 和物件金鑰。您可以指定在叫用管道時要使用的修訂值。  
對於 CLI，您可以將來源修訂指定為序列化 JSON 字串。如需使用來源修訂覆寫的詳細資訊，請參閱 *CodePipeline API 指南*中的 [SourceRevisionOverride](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_SourceRevisionOverride.html)。  
映射使用字串格式，如下列範例所示：  

```
[{"actionName":"Source","revisionType":"S3_OBJECT_VERSION_ID","revision
Value":"zq8mjNEXAMPLE"}]
```

**Variables**  
必要：否  
您希望動作支援的變數名稱和值。  
對於 CLI，您可以將變數指定為序列化 JSON 字串。如需使用管道變數的詳細資訊，請參閱 *CodePipeline API 指南中的 * [PipelineVariable](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PipelineVariable.html)。  
映射使用字串格式，如下列範例所示：  

```
[{"name":"VAR1","value":"VALUE1"}]
```

下圖顯示新增至 主控台中管道的動作範例。

![\[具有 S3 來源的管道和包含管道叫用動作的建置階段\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/example-pipeline-invoke-run.png)


下圖顯示 動作的**編輯**頁面範例。在下列範例中，名為 的管道`s3-pipeline-test`具有管道調用動作，如 主控台所示。當名為 的`s3-pipeline-test`管道`my-s3-pipeline`完成執行時，動作將啟動管道。此範例顯示 S3\$1OBJECT\$1VERSION\$1ID 來源覆寫的來源修訂覆寫，其指定修訂值為 `zq8mjNYEexample`。

![\[具有管道調用動作之新管道的編輯動作頁面\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/example-pipeline-invoke-edit.png)


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

## 輸出成品
<a name="action-reference-PipelineInvoke-output"></a>
+ **成品數量：** `0`
+ **描述：**輸出成品不適用於此動作類型。

## CodePipeline 調用動作的服務角色政策許可
<a name="action-reference-PipelineInvoke-permissions-action"></a>

CodePipeline 執行 動作時，CodePipeline 服務角色政策需要 `codepipeline:StartPipelineExecution`許可，適當範圍縮小至管道資源 ARN，以維持最低權限的存取。

```
 {
            "Sid": "StatementForPipelineInvokeAction",
            "Effect": "Allow",
            "Action": "codepipeline:StartPipelineExecution",
            "Resource": [
                "arn:aws:codepipeline:{{region}}:{{AccountId}}:{{pipelineName}}"
            ]
        }
```

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

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

```
name: Invoke-pipeline
actionTypeId:
  category: Invoke
  owner: AWS
  provider: CodePipeline
  version: '1'
runOrder: 2
configuration:
  PipelineName: my-s3-pipeline
  SourceRevisions: '[{"actionName":"Source","revisionType":"S3_OBJECT_VERSION_ID","revision
Value":"zq8mjNEXAMPLE"}]'
  Variables: '[{"name":"VAR1","value":"VALUE1"}]'
```

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

```
{
    "name": "Invoke-pipeline",
    "actionTypeId": {
        "category": "Invoke",
        "owner": "AWS",
        "provider": "CodePipeline",
        "version": "1"
    },
    "runOrder": 2,
    "configuration": {
        "PipelineName": "my-s3-pipeline",
        "SourceRevisions": "[{\"actionName\":\"Source\",\"revisionType\":\"S3_OBJECT_VERSION_ID\",\"revisionValue\":\"zq8mjNEXAMPLE"}]",
        "Variables": "[{\"name\":\"VAR1\",\"value\":\"VALUE1\"}]"
    }
},
```

------

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

以下相關資源可協助您使用此動作。
+  [使用來源修訂覆寫啟動管道](pipelines-trigger-source-overrides.md) – 本節說明手動或透過 EventBridge 事件輸入轉換器啟動具有來源修訂的管道。

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

在已設定的 CodeCommit 儲存庫和分支上進行新的遞交時，啟動管道。

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

**注意**  
對於 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)。

您必須先建立 CodeCommit 儲存庫，才能透過 CodeCommit 動作連接管道。

偵測到程式碼變更之後，您有下列選擇將程式碼傳遞給後續動作：
+ **預設** – 設定 CodeCommit 來源動作以輸出 ZIP 檔案，其中包含遞交的淺層副本。
+ **完全複製** – 設定來源動作，將 Git URL 參考輸出至儲存庫以進行後續動作。

  目前，Git URL 參考只能由下游 CodeBuild 動作用來複製儲存庫和相關聯的 Git 中繼資料。嘗試將 Git URL 參考傳遞至非 CodeBuild 動作會導致錯誤。

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

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

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

**RepositoryName**  
必要：是  
要偵測來源變更的儲存庫名稱。

**BranchName**  
必要：是  
要偵測來源變更的分支名稱。

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

****OutputArtifactFormat****  
必要：否  
輸出成品格式。值可以是 `CODEBUILD_CLONE_REF`或 `CODE_ZIP`。如果未指定，預設值為 `CODE_ZIP`。  
`CODEBUILD_CLONE_REF` 選項只能由 CodeBuild 下游動作使用。  
如果您選擇此選項，則需要將 `codecommit:GitPull` 許可新增至 CodeBuild 服務角色，如 所示[為 CodeCommit 來源動作新增 CodeBuild GitClone 許可](troubleshooting.md#codebuild-role-codecommitclone)。您也需要將 `codecommit:GetRepository` 許可新增至 CodePipeline 服務角色，如 所示[將許可新增至 CodePipeline 服務角色](how-to-custom-role.md#how-to-update-role-new-services)。如需示範如何使用**完整複製**選項的教學課程，請參閱 [教學課程：搭配 CodeCommit 管道來源使用完整複製](tutorials-codecommit-gitclone.md)。

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

## 輸出成品
<a name="action-reference-CodeCommit-output"></a>
+ **成品數量：** `1`
+ **描述：**此動作的輸出成品是 ZIP 檔案，其中包含在指定為管道執行來源修訂的遞交上所設定的儲存庫和分支的內容。從儲存庫產生的成品是 CodeCommit 動作的輸出成品。原始程式碼遞交 ID 會顯示在 CodePipeline 中，做為觸發管道執行的來源修訂版。

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

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

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

**CommitId**  
觸發管道執行的 CodeCommit 遞交 ID。遞交 ID 是遞交的完整 SHA。

**CommitMessage**  
與觸發管道執行的遞交相關聯的描述訊息 (如果有的話)。

**RepositoryName**  
觸發管道的遞交所在的 CodeCommit 儲存庫名稱。

**BranchName**  
進行來源變更之 CodeCommit 儲存庫的分支名稱。

**AuthorDate**  
遞交的撰寫日期 (時間戳記格式)。

**CommitterDate**  
遞交的遞交日期 (時間戳記格式)。

## 服務角色許可：CodeCommit 動作
<a name="edit-role-codecommit"></a>

CodePipeline 執行 動作時，CodePipeline 服務角色政策需要下列許可，適當範圍縮小至管道資源 ARN，以維持最低權限的存取。例如，將下列項目新增至您的政策陳述式：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codecommit:CancelUploadArchive",
                "codecommit:GetBranch",
                "codecommit:GetCommit",
                "codecommit:GetRepository",
                "codecommit:GetUploadArchiveStatus",
                "codecommit:UploadArchive"
            ],
            "Resource": [
                "arn:aws:codecommit:*:111122223333:[[codecommitRepostories]]"
            ]
        }
    ]
}
```

------



## 動作組態範例
<a name="action-reference-CodeCommit-example"></a>

### 預設輸出成品格式的範例
<a name="w2aac56c49c29b3"></a>

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

```
name: Source
actionTypeId:
  category: Source
  owner: AWS
  provider: CodeCommit
  version: '1'
runOrder: 1
configuration:
  BranchName: main
  PollForSourceChanges: 'false'
  RepositoryName: MyWebsite
outputArtifacts:
  - name: Artifact_MyWebsiteStack
inputArtifacts: []
region: us-west-2
namespace: SourceVariables
```

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

```
{
    "name": "Source",
    "actionTypeId": {
        "category": "Source",
        "owner": "AWS",
        "provider": "CodeCommit",
        "version": "1"
    },
    "runOrder": 1,
    "configuration": {
        "BranchName": "main",
        "PollForSourceChanges": "false",
        "RepositoryName": "MyWebsite"
    },
    "outputArtifacts": [
        {
            "name": "Artifact_MyWebsiteStack"
        }
    ],
    "inputArtifacts": [],
    "region": "us-west-2",
    "namespace": "SourceVariables"
}
```

------

### 完整複製輸出成品格式的範例
<a name="w2aac56c49c29b5"></a>

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

```
name: Source
actionTypeId:
  category: Source
  owner: AWS
  provider: CodeCommit
  version: '1'
runOrder: 1
configuration:
  BranchName: main
  OutputArtifactFormat: CODEBUILD_CLONE_REF
  PollForSourceChanges: 'false'
  RepositoryName: MyWebsite
outputArtifacts:
  - name: SourceArtifact
inputArtifacts: []
region: us-west-2
namespace: SourceVariables
```

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

```
{
    "name": "Source",
    "actionTypeId": {
        "category": "Source",
        "owner": "AWS",
        "provider": "CodeCommit",
        "version": "1"
    },
    "runOrder": 1,
    "configuration": {
        "BranchName": "main",
        "OutputArtifactFormat": "CODEBUILD_CLONE_REF",
        "PollForSourceChanges": "false",
        "RepositoryName": "MyWebsite"
    },
    "outputArtifacts": [
        {
            "name": "SourceArtifact"
        }
    ],
    "inputArtifacts": [],
    "region": "us-west-2",
    "namespace": "SourceVariables"
}
```

------

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

以下相關資源可協助您使用此動作。
+ [教學課程：建立簡單的管道 (CodeCommit 儲存庫）](tutorials-simple-codecommit.md) – 本教學課程提供範例應用程式規格檔案，以及範例 CodeDeploy 應用程式和部署群組。使用此教學課程來建立具有部署至 Amazon EC2 執行個體之 CodeCommit 來源的管道。

# AWS CodeDeploy 部署動作參考
<a name="action-reference-CodeDeploy"></a>

您可以使用 AWS CodeDeploy 動作將應用程式程式碼部署到您的部署機群。您的部署機群可以包含 Amazon EC2 執行個體、內部部署執行個體或兩者。

**注意**  
此參考主題說明部署平台為 Amazon EC2 之 CodePipeline 的 CodeDeploy 部署動作。 CodePipeline 如需 CodePipeline 中 Amazon Elastic Container Service to CodeDeploy 藍/綠部署動作的參考資訊，請參閱 [Amazon Elastic Container Service 和 CodeDeploy 藍綠部署動作參考](action-reference-ECSbluegreen.md)。

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

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

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

**ApplicationName**  
必要：是  
您在 CodeDeploy 中建立的應用程式名稱。

**DeploymentGroupName**  
必要：是  
您在 CodeDeploy 中建立的部署群組。

## Input artifacts (輸入成品)
<a name="action-reference-CodeDeploy-input"></a>
+ **成品數量：** `1`
+ **描述：**CodeDeploy 用來判斷下列項目的 AppSpec 檔案：
  + 在 Amazon S3 或 GitHub 中從應用程式修訂版安裝到執行個體的內容。
  + 為回應部署生命週期事件而執行的生命週期事件勾點。

  如需 AppSpec 檔案的詳細資訊，請參閱 [CodeDeploy AppSpec 檔案參考](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html)。

  

## 輸出成品
<a name="action-reference-CodeDeploy-output"></a>
+ **成品數量：** `0`
+ **描述：**輸出成品不適用於此動作類型。

## 服務角色許可： AWS CodeDeploy 動作
<a name="edit-role-codedeploy"></a>

如需 AWS CodeDeploy 支援，請將下列內容新增至您的政策陳述式：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codedeploy:CreateDeployment",
                "codedeploy:GetApplication",
                "codedeploy:GetDeployment",
                "codedeploy:RegisterApplicationRevision",
                "codedeploy:ListDeployments",
                "codedeploy:ListDeploymentGroups",
                "codedeploy:GetDeploymentGroup"
            ],
            "Resource": [
                "arn:aws:codedeploy:*:111122223333:application:[[codedeployApplications]]",
                "arn:aws:codedeploy:*:111122223333:deploymentgroup:[[codedeployApplications]]/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "codedeploy:GetDeploymentConfig"
            ],
            "Resource": [
                "arn:aws:codedeploy:*:111122223333:deploymentconfig:[[deploymentConfigs]]"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "codedeploy:ListDeploymentConfigs"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

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

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

```
Name: Deploy
Actions:
  - Name: Deploy
    ActionTypeId:
      Category: Deploy
      Owner: AWS
      Provider: CodeDeploy
      Version: '1'
    RunOrder: 1
    Configuration:
      ApplicationName: my-application
      DeploymentGroupName: my-deployment-group
    OutputArtifacts: []
    InputArtifacts:
      - Name: SourceArtifact
    Region: us-west-2
    Namespace: DeployVariables
```

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

```
{
    "Name": "Deploy",
    "Actions": [
        {
            "Name": "Deploy",
            "ActionTypeId": {
                "Category": "Deploy",
                "Owner": "AWS",
                "Provider": "CodeDeploy",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "ApplicationName": "my-application",
                "DeploymentGroupName": "my-deployment-group"
            },
            "OutputArtifacts": [],
            "InputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "Region": "us-west-2",
            "Namespace": "DeployVariables"
        }
    ]
},
```

------

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

以下相關資源可協助您使用此動作。
+ [教學：建立簡易管道 (S3 儲存貯體)](tutorials-simple-s3.md) – 本教學課程會逐步引導您建立來源儲存貯體、EC2 執行個體和 CodeDeploy 資源，以部署範例應用程式。然後，您可以使用 CodeDeploy 部署動作建置管道，將 S3 儲存貯體中維護的程式碼部署至 Amazon EC2 執行個體。
+ [教學課程：建立簡單的管道 (CodeCommit 儲存庫）](tutorials-simple-codecommit.md) – 本教學課程會逐步引導您建立 CodeCommit 來源儲存庫、EC2 執行個體和 CodeDeploy 資源，以部署範例應用程式。然後，您可以使用 CodeDeploy 部署動作建置管道，將程式碼從 CodeCommit 儲存庫部署到 Amazon EC2 執行個體。
+ [CodeDeploy AppSpec 檔案參考](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html) – *AWS CodeDeploy 使用者指南*中的此參考章節提供 CodeDeploy AppSpec 檔案的參考資訊和範例。

# 適用於 Bitbucket Cloud、GitHub、GitHub Enterprise Server、GitLab.com, 和 GitLab 自我管理動作的 CodeStarSourceConnection
<a name="action-reference-CodestarConnectionSource"></a>

支援連線的來源動作 AWS CodeConnections。CodeConnections 可讓您建立和管理 AWS 資源與第三方儲存庫之間的連線，例如 GitHub。在第三方原始碼儲存庫上進行新的遞交時，啟動管道。來源動作會在手動執行管道或從來源提供者傳送 Webhook 事件時擷取程式碼變更。

您可以在管道中設定動作以使用 Git 組態，讓您使用觸發條件啟動管道。若要設定管道觸發組態以使用觸發條件進行篩選，請參閱 中的更多詳細資訊[使用程式碼推送或提取請求事件類型新增觸發](pipelines-filter.md)。

**注意**  
此功能不適用於亞太區域 （香港）、亞太區域 （海德拉巴）、亞太區域 （雅加達）、亞太區域 （墨爾本）、亞太區域 （大阪）、非洲 （開普敦）、中東 （巴林）、中東 （阿拉伯聯合大公國）、歐洲 （西班牙）、歐洲 （蘇黎世）、以色列 （特拉維夫） 或 AWS GovCloud （美國西部） 區域。若要參考其他可用的動作，請參閱 [與 CodePipeline 的產品和服務整合](integrations.md)。如需歐洲 （米蘭） 區域中此動作的考量，請參閱 中的備註[適用於 Bitbucket Cloud、GitHub、GitHub Enterprise Server、GitLab.com, 和 GitLab 自我管理動作的 CodeStarSourceConnection](#action-reference-CodestarConnectionSource)。

連線可以將 AWS 資源與下列第三方儲存庫建立關聯：
+ Bitbucket Cloud （透過 CodePipeline 主控台中的 **Bitbucket** 提供者選項或 CLI 中的`Bitbucket`提供者）
**注意**  
您可以建立連至 Bitbucket Cloud 儲存庫的連線。不支援安裝式 Bitbucket 供應商類型，例如 Bitbucket 伺服器。
+ 
**注意**  
如果您使用的是 Bitbucket 工作區，您必須具有管理員存取權才能建立連線。
+ GitHub 和 GitHub Enterprise Cloud （透過 CodePipeline 主控台中的 **GitHub （透過 GitHub 應用程式）** 提供者選項或 CLI 中的`GitHub`提供者）
**注意**  
如果您的儲存庫位於 GitHub 組織中，您必須是組織擁有者才能建立連線。如果您使用的儲存庫不在組織中，您必須是儲存庫擁有者。
+ GitHub Enterprise Server （透過 CodePipeline 主控台中的 **GitHub Enterprise Server** 提供者選項或 CLI 中的`GitHub Enterprise Server`提供者）
+ GitLab.com （透過 CodePipeline 主控台中的 **GitLab** 提供者選項或 CLI 中的`GitLab`提供者）
**注意**  
您可以對在 GitLab 中具有**擁有者**角色的儲存庫建立連線，然後該連線可以與具有 CodePipeline 等資源的儲存庫搭配使用。如果是群組中的儲存庫，您不需要為群組擁有者。
+ GitLab (Enterprise Edition 或 Community Edition) 的自我管理安裝 （透過 CodePipeline 主控台中的 **GitLab 自我管理**提供者選項或 CLI 中的`GitLabSelfManaged`提供者）

**注意**  
每個連線都支援您與該提供者擁有的所有儲存庫。您只需要為每個提供者類型建立新的連線。

連線可讓您的管道透過第三方供應商的安裝應用程式偵測來源變更。例如，Webhook 用於訂閱 GitHub 事件類型，並且可以安裝在組織、儲存庫或 GitHub 應用程式上。您的連線會在訂閱 GitHub 推送類型事件的 GitHub 應用程式上安裝儲存庫 Webhook。

偵測到程式碼變更之後，您有下列選擇將程式碼傳遞給後續動作：
+ 預設：如同其他現有的 CodePipeline 來源動作， `CodeStarSourceConnection`可以輸出 ZIP 檔案，其中包含遞交的淺層副本。
+ 完整複製：`CodeStarSourceConnection`也可以設定為針對後續動作將 URL 參考輸出至儲存庫。

  目前，Git URL 參考只能由下游 CodeBuild 動作用來複製儲存庫和相關聯的 Git 中繼資料。嘗試將 Git URL 參考傳遞至非 CodeBuild 動作會導致錯誤。

CodePipeline 會在您建立連線時提示您將 AWS Connector 安裝應用程式新增至第三方帳戶。您必須先建立第三方供應商帳戶和儲存庫，才能透過 `CodeStarSourceConnection`動作進行連線。

**注意**  
若要使用使用 AWS CodeStar 連線所需的許可來建立或連接政策到您的角色，請參閱[連線許可參考](https://docs.aws.amazon.com/dtconsole/latest/userguide/security-iam.html#permissions-reference-connections)。根據 CodePipeline 服務角色的建立時間，您可能需要更新其許可以支援 AWS CodeStar 連線。如需說明，請參閱[將許可新增至 CodePipeline 服務角色](how-to-custom-role.md#how-to-update-role-new-services)。

**注意**  
若要在歐洲 （米蘭） 使用連線 AWS 區域，您必須：  
安裝區域特定的應用程式
啟用區域
此區域特定的應用程式支援歐洲 (米蘭) 區域中的連線。它會在第三方供應商網站上發佈，並且它會與支援其他區域連線的現有應用程式分開。透過安裝此應用程式，您授權第三方提供商僅使用該區域服務來共用您的資料，並且您可以透過解除安裝該應用程式來隨時撤銷許可。  
除非您啟用區域，否則服務不會處理或儲存您的資料。啟用此區域，即表示您授予我們服務許可來處理和儲存您的資料。  
即使未啟用該區域，如果仍已安裝區域特定的應用程式，第三方供應商仍然可以使用我們的服務來共用您的資料，因此請確保在停用該區域後解除安裝該應用程式。如需詳細資訊，請參閱[啟用區域](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-enable)。

**Topics**
+ [動作類型](#action-reference-CodestarConnectionSource-type)
+ [組態參數](#action-reference-CodestarConnectionSource-config)
+ [Input artifacts (輸入成品)](#action-reference-CodestarConnectionSource-input)
+ [輸出成品](#action-reference-CodestarConnectionSource-output)
+ [輸出變數](#action-reference-CodestarConnectionSource-variables)
+ [服務角色許可：CodeConnections 動作](#edit-role-connections)
+ [動作宣告](#action-reference-CodestarConnectionSource-example)
+ [安裝安裝應用程式並建立連線](#action-reference-CodestarConnectionSource-auth)
+ [另請參閱](#action-reference-CodestarConnectionSource-links)

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

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

****ConnectionArn****  
必要：是  
針對來源提供者設定和驗證的連線 ARN。

****FullRepositoryId****  
必要：是  
要偵測來源變更的儲存庫的擁有者和名稱。  
範例：`some-user/my-repo`  
您必須維護 **FullRepositoryId** 值的正確大小寫。例如，如果您的使用者名稱是 `some-user`，而儲存庫名稱是 `My-Repo`，則 **FullRepositoryId** 的建議值為 `some-user/My-Repo`。

****BranchName****  
必要：是  
要偵測來源變更的分支名稱。

****OutputArtifactFormat****  
必要：否  
指定輸出成品格式。可以是 `CODEBUILD_CLONE_REF` 或 `CODE_ZIP`。如果未指定，預設值為 `CODE_ZIP`。  
`CODEBUILD_CLONE_REF` 選項只能由 CodeBuild 下游動作使用。  
如果您選擇此選項，您將需要更新 CodeBuild 專案服務角色的許可，如 所示[新增連線至 Bitbucket、GitHub、GitHub Enterprise Server 或 GitLab.com 的 CodeBuild GitClone 許可 GitLab.com](troubleshooting.md#codebuild-role-connections)。如需示範如何使用**完整複製**選項的教學課程，請參閱 [教學課程：搭配 GitHub 管道來源使用完整複製](tutorials-github-gitclone.md)。

**DetectChanges**  
 必要：否  
在已設定的儲存庫和分支上進行新的遞交時，控制會自動啟動您的管道。如果未指定，預設值為 `true`，且預設不會顯示 欄位。此參數的有效值：  
+ `true`：CodePipeline 會在新遞交時自動啟動您的管道。
+ `false`：CodePipeline 不會在新的遞交上啟動您的管道。

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

## 輸出成品
<a name="action-reference-CodestarConnectionSource-output"></a>
+ **成品數量：** `1`
+ **描述：**從儲存庫產生的成品是 `CodeStarSourceConnection` 動作的輸出成品。原始程式碼遞交 ID 會顯示在 CodePipeline 中，做為觸發管道執行的來源修訂版。您可以在下列項目中設定此動作的輸出成品：
  + ZIP 檔案，其中包含在指定為管道執行來源修訂的遞交上所設定的儲存庫和分支的內容。
  + JSON 檔案，其中包含儲存庫的 URL 參考，讓下游動作可以直接執行 Git 命令。
**重要**  
此選項只能由 CodeBuild 下游動作使用。  
如果您選擇此選項，您將需要更新 CodeBuild 專案服務角色的許可，如 所示[CodePipeline 故障診斷](troubleshooting.md)。如需示範如何使用**完整複製**選項的教學課程，請參閱 [教學課程：搭配 GitHub 管道來源使用完整複製](tutorials-github-gitclone.md)。

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

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

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

AuthorDate  
遞交的撰寫日期 (時間戳記格式)。

BranchName  
進行來源變更的 儲存庫分支的名稱。

CommitId  
觸發管道執行的 遞交 ID。

CommitMessage  
與觸發管道執行的遞交相關聯的描述訊息 (如果有的話)。

ConnectionArn  
針對來源提供者設定和驗證的連線 ARN。

FullRepositoryName  
進行遞交以觸發管道的 儲存庫的名稱。

## 服務角色許可：CodeConnections 動作
<a name="edit-role-connections"></a>

對於 CodeConnections，需要下列許可來建立具有使用連線之來源的管道，例如 Bitbucket Cloud。

```
{
    "Effect": "Allow",
    "Action": [
        "codeconnections:UseConnection"
    ],
    "Resource": "resource_ARN"
},
```

如需連線的 IAM 許可的詳細資訊，請參閱[連線許可參考](https://docs.aws.amazon.com/dtconsole/latest/userguide/security-iam.html#permissions-reference-connections)。

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

在下列範例中，輸出成品會設定為`CODE_ZIP`與 ARN 連線的預設 ZIP 格式 `arn:aws:codestar-connections:region:account-id:connection/connection-id`。

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

```
Name: Source
Actions:
  - InputArtifacts: []
    ActionTypeId:
      Version: '1'
      Owner: AWS
      Category: Source
      Provider: CodeStarSourceConnection
    OutputArtifacts:
      - Name: SourceArtifact
    RunOrder: 1
    Configuration:
      ConnectionArn: "arn:aws:codestar-connections:region:account-id:connection/connection-id"
      FullRepositoryId: "some-user/my-repo"
      BranchName: "main"
      OutputArtifactFormat: "CODE_ZIP"
    Name: ApplicationSource
```

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

```
{
    "Name": "Source",
    "Actions": [
        {
            "InputArtifacts": [],
            "ActionTypeId": {
                "Version": "1",
                "Owner": "AWS",
                "Category": "Source",
                "Provider": "CodeStarSourceConnection"
            },
            "OutputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "RunOrder": 1,
            "Configuration": {
                "ConnectionArn": "arn:aws:codestar-connections:region:account-id:connection/connection-id",
                "FullRepositoryId": "some-user/my-repo",
                "BranchName": "main",
                "OutputArtifactFormat": "CODE_ZIP"
            },
            "Name": "ApplicationSource"
        }
    ]
},
```

------

## 安裝安裝應用程式並建立連線
<a name="action-reference-CodestarConnectionSource-auth"></a>

第一次使用主控台將新連線新增至第三方儲存庫時，您必須授權 CodePipeline 存取您的儲存庫。您可以選擇或建立安裝應用程式，以協助連線至您用來建立第三方程式碼儲存庫的帳戶。

 使用 AWS CLI 或 CloudFormation 範本時，您必須提供已通過安裝交握之連線的連線 ARN。否則不會觸發管道。

**注意**  
對於`CodeStarSourceConnection`來源動作，您不需要設定 Webhook 或預設輪詢。連線動作會為您管理來源變更偵測。

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

以下相關資源可協助您使用此動作。
+ [AWS::CodeStarConnections::Connection](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarconnections-connection.html) – AWS CodeStar Connections 資源的 CloudFormation 範本參考提供 CloudFormation 範本中連線的參數和範例。
+ [AWS CodeStar Connections API 參考](https://docs.aws.amazon.com/codestar-connections/latest/APIReference/Welcome.html) – *AWS CodeStar Connections API 參考*提供可用連線動作的參考資訊。
+ 若要檢視使用連線支援的來源動作建立管道的步驟，請參閱以下內容：
  + 對於 Bitbucket Cloud，請使用主控台中的 **Bitbucket** 選項或 CLI 中的 `CodestarSourceConnection`動作。請參閱 [Bitbucket 雲端連線](connections-bitbucket.md)。
  + 對於 GitHub 和 GitHub Enterprise Cloud，請使用主控台中的 **GitHub** 提供者選項或 CLI 中的 `CodestarSourceConnection`動作。請參閱 [GitHub 連線](connections-github.md)。
  + 對於 GitHub Enterprise Server，請使用主控台中的 **GitHub Enterprise Server** 提供者選項或 CLI 中的 `CodestarSourceConnection`動作。請參閱 [GitHub Enterprise Server 連線](connections-ghes.md)。
  + 對於 GitLab.com,請在 主控台中使用 **GitLab** 提供者選項，或在 CLI 中使用 `CodestarSourceConnection` 動作搭配`GitLab`提供者。請參閱 [GitLab.com 連線](connections-gitlab.md)。
+ 若要檢視使用 Bitbucket 來源和 CodeBuild 動作建立管道的入門教學課程，請參閱[連線入門](https://docs.aws.amazon.com/dtconsole/latest/userguide/getting-started-connections.html)。
+ 如需示範如何連線至 GitHub 儲存庫，以及搭配下游 CodeBuild 動作使用**完整複製**選項的教學課程，請參閱 [教學課程：搭配 GitHub 管道來源使用完整複製](tutorials-github-gitclone.md)。

# 命令動作參考
<a name="action-reference-Commands"></a>

命令動作可讓您在虛擬運算執行個體中執行 shell 命令。當您執行動作時，動作組態中指定的命令會在不同的容器中執行。所有指定為 CodeBuild 動作輸入成品的成品，都可以在執行命令的容器內使用。此動作可讓您在不先建立 CodeBuild 專案的情況下指定命令。如需詳細資訊，請參閱 *AWS CodePipeline API 參考*中的 [ActionDeclaration](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_ActionDeclaration.html) 和 [OutputArtifact](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_OutputArtifact.html)。

**重要**  
此動作使用 CodePipeline 受管 CodeBuild 運算在建置環境中執行命令。執行命令動作會產生個別費用 AWS CodeBuild。

**注意**  
Commands 動作僅適用於 V2 類型管道。

**Topics**
+ [命令動作的考量事項](#action-reference-Commands-considerations)
+ [服務角色政策許可](#action-reference-Commands-policy)
+ [動作類型](#action-reference-Commands-type)
+ [組態參數](#action-reference-Commands-config)
+ [Input artifacts (輸入成品)](#action-reference-Commands-input)
+ [輸出成品](#action-reference-Commands-output)
+ [環境變數](#action-reference-Commands-envvars)
+ [服務角色許可：命令動作](#edit-role-Commands)
+ [動作宣告 （範例）](#action-reference-Commands-example)
+ [另請參閱](#action-reference-Commands-links)

## 命令動作的考量事項
<a name="action-reference-Commands-considerations"></a>

下列考量適用於 Commands 動作。
+ 命令動作使用類似於 CodeBuild 動作的 CodeBuild 資源，同時允許虛擬運算執行個體中的 shell 環境命令，而不需要關聯或建立建置專案。
**注意**  
執行命令動作會在 中產生個別費用 AWS CodeBuild。
+ 由於 CodePipeline 中的命令動作使用 CodeBuild 資源，因此動作執行的組建將歸因於 CodeBuild 中您帳戶的組建限制。由 Commands 動作執行的組建將計入針對該帳戶設定的並行組建限制。
+ 根據 CodeBuild 組建，使用 Commands 動作的組建逾時為 55 分鐘。
+ 運算執行個體在 CodeBuild 中使用隔離的建置環境。
**注意**  
由於隔離的建置環境是在帳戶層級使用，因此執行個體可能會重複使用於另一個管道執行。
+ 除了多行格式之外，支援所有格式。輸入命令時，您必須使用單行格式。
+ 跨帳戶動作支援命令動作。若要新增跨帳戶命令動作，請在動作宣告中`actionRoleArn`從您的目標帳戶新增 。
+ 對於此動作，CodePipeline 將擔任管道服務角色，並使用該角色允許在執行時間存取資源。建議您設定服務角色，以便將許可範圍縮小至動作層級。
+ 新增至 CodePipeline 服務角色的許可詳述於 [將許可新增至 CodePipeline 服務角色](how-to-custom-role.md#how-to-update-role-new-services) 。
+ 在 主控台中檢視日誌所需的許可詳述於 [在主控台中檢視運算日誌所需的許可](security-iam-permissions-console-logs.md) 。
+ 與 CodePipeline 中的其他動作不同，您不要在動作組態中設定欄位，而是在動作組態之外設定動作組態欄位。

## 服務角色政策許可
<a name="action-reference-Commands-policy"></a>

當 CodePipeline 執行動作時，CodePipeline 會使用管道的名稱建立日誌群組，如下所示。這可讓您縮小使用管道名稱記錄資源的許可範圍。

```
/aws/codepipeline/MyPipelineName
```

如果您使用現有的服務角色，若要使用 命令動作，您需要為服務角色新增下列許可。
+ logs:CreateLogGroup
+ logs:CreateLogStream
+ logs:PutLogEvents

在服務角色政策陳述式中，將許可範圍縮小至管道層級，如下列範例所示。

```
{
    "Effect": "Allow",
    "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
    ],
    "Resource": [
        "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME",
        "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*"
   ]
}
```

若要使用動作詳細資訊對話方塊頁面在主控台中檢視日誌，必須將檢視日誌的許可新增至主控台角色。如需詳細資訊，請參閱 中的主控台許可政策範例[在主控台中檢視運算日誌所需的許可](security-iam-permissions-console-logs.md)。

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

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

**命令**  
必要：是  
您可以為要執行`Commands`的動作提供 shell 命令。在 主控台中，命令會在不同的行上輸入。在 CLI 中，命令會以個別字串輸入。  
不支援多行格式，且會導致錯誤訊息。單行格式必須用於在命令欄位中輸入**命令**。
EnvironmentType 和 ComputeType 值符合 CodeBuild 中的值。我們支援可用類型的子集。如需詳細資訊，請參閱[建置環境運算類型](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html)。

**EnvironmentType**  
必要：否  
支援 Commands 動作之建置環境的作業系統映像。以下是組建環境的有效值：  
+ LINUX\$1CONTAINER
+ WINDOWS\$1SERVER\$12022\$1CONTAINER
然後**EnvironmentType** 的選擇將允許 **ComputeType** 欄位中該作業系統的運算類型。如需此動作可用的 CodeBuild 運算類型的詳細資訊，請參閱 CodeBuild 使用者指南中的[建置環境運算模式和類型](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html)參考。  
如果未指定，則 運算預設為建置環境的下列項目：  
+ **運算類型：**BUILD\$1GENERAL1\$1SMALL
+ **環境類型：**LINUX\$1CONTAINER

**ComputeType**  
必要：否  
根據 EnvironmentType 的選擇，可以提供運算類型。以下是運算的可用值；不過，請注意，可用的選項可能因作業系統而有所不同。  
+ BUILD\$1GENERAL1\$1SMALL
+ BUILD\$1GENERAL1\$1MEDIUM
+ BUILD\$1GENERAL1\$1LARGE
有些運算類型與特定環境類型不相容。例如，WINDOWS\$1SERVER\$12022\$1CONTAINER 與 BUILD\$1GENERAL1\$1SMALL 不相容。使用不相容的組合會導致 動作失敗，並產生執行時間錯誤。

**outputVariables**  
必要：否  
指定您環境中要匯出的變數名稱。如需 CodeBuild 環境變數的參考，請參閱 *CodeBuild 使用者指南*中的[建置環境中的環境變數](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)。

**檔案**  
必要：否  
您可以提供要匯出為動作輸出成品的檔案。  
檔案支援的格式與 CodeBuild 檔案模式的格式相同。例如，`**/`針對所有檔案輸入 。如需詳細資訊，請參閱《[CodeBuild 使用者指南》中的為 CodeBuild 建置規格參考](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.artifacts.files)。 *CodeBuild *  

![\[使用 Commands 動作編輯新管道的動作頁面\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/commands-edit-screen.png)


**VpcId**  
必要：否  
資源的 VPC ID。

**子網路**  
必要：否  
VPC 的子網路。當您的命令需要連線到 VPC 中的資源時，會需要此欄位。

**SecurityGroupIds**  
必要：否  
VPC 的安全群組。當您的命令需要連線到 VPC 中的資源時，會需要此欄位。

以下是 動作的 JSON 範例，其中包含針對環境和運算類型顯示的組態欄位，以及範例環境變數。

```
 {
            "name": "Commands1",
            "actionTypeId": {
              "category": "Compute",
              "owner": "AWS",
              "provider": "Commands",
              "version": "1"
            },
            "inputArtifacts": [
              {
                "name": "SourceArtifact"
              }
            ],
            "commands": [
              "ls",
              "echo hello",
              "echo $BEDROCK_TOKEN",
            ],
            "configuration": {
              "EnvironmentType": "LINUX_CONTAINER",
              "ComputeType": "BUILD_GENERAL1_MEDIUM"
            },
            "environmentVariables": [
              {
                "name": "BEDROCK_TOKEN",
                "value": "apiTokens:bedrockToken",
                "type": "SECRETS_MANAGER"
              }
            ],
            "runOrder": 1
          }
```

## Input artifacts (輸入成品)
<a name="action-reference-Commands-input"></a>
+ **成品數量：** `1 to 10`

## 輸出成品
<a name="action-reference-Commands-output"></a>
+ **成品數量：** `0 to 1`

## 環境變數
<a name="action-reference-Commands-envvars"></a>

**金錀**  
鍵值環境變數對中的索引鍵，例如 `BEDROCK_TOKEN`。

**Value**  
鍵/值對的值，例如 `apiTokens:bedrockToken`。該值可以使用管道動作或管道變數的輸出變數進行參數化。  
使用 `SECRETS_MANAGER`類型時，此值必須是您已存放在 Secrets Manager 中的 AWS 秘密名稱。

**Type**  
指定環境變數值的使用類型。此值可以是 `PLAINTEXT` 或 `SECRETS_MANAGER`。如果值為 `SECRETS_MANAGER`，請在`EnvironmentVariable`值中提供 Secrets 參考。未指定時，則將預設為 `PLAINTEXT`。  
我們強烈建議不使用*純文字*環境變數來存放敏感值，尤其是 AWS 登入資料。當您使用 CodeBuild 主控台或 時 AWS CLI，*純文字*環境變數會以純文字顯示。對於敏感值，建議您改用 `SECRETS_MANAGER` 類型。

**注意**  
當您`type`為環境變數組態輸入 `name`、 `value`和 時，特別是在環境變數包含 CodePipeline 輸出變數語法時，請勿超過組態值欄位的 1000 個字元限制。如果超過此限制，系統就會傳回驗證錯誤。

如需顯示環境變數的動作宣告範例，請參閱 [組態參數](#action-reference-Commands-config)。

**注意**  
`SECRETS_MANAGER` 類型僅支援 Commands 動作。
命令動作中參考的秘密將在類似於 CodeBuild 的建置日誌中修訂。但是，具有管道**編輯**存取權的管道使用者仍然可以透過修改命令來存取這些秘密值。
若要使用 SecretsManager，您必須將下列許可新增至管道服務角色：  

  ```
  {
              "Effect": "Allow",
              "Action": [
                  "secretsmanager:GetSecretValue"
              ],
              "Resource": [
                  "SECRET_ARN"
              ]
          }
  ```

## 服務角色許可：命令動作
<a name="edit-role-Commands"></a>

對於 命令支援，請將下列內容新增至您的政策陳述式：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:iam::*:role/Service*",
                "arn:aws:iam::*:role/Service*"
            ]
        }
    ]
}
```

------

## 動作宣告 （範例）
<a name="action-reference-Commands-example"></a>

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

```
name: Commands_action
actionTypeId:
  category: Compute
  owner: AWS
  provider: Commands
  version: '1'
runOrder: 1
configuration: {}
commands:
- ls
- echo hello
- 'echo pipeline Execution Id is #{codepipeline.PipelineExecutionId}'
outputArtifacts:
- name: BuildArtifact
  files:
  - **/
inputArtifacts:
- name: SourceArtifact
outputVariables:
- AWS_DEFAULT_REGION
region: us-east-1
namespace: compute
```

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

```
{
    "name": "Commands_action",
    "actionTypeId": {
        "category": "Compute",
        "owner": "AWS",
        "provider": "Commands",
        "version": "1"
    },
    "runOrder": 1,
    "configuration": {},
    "commands": [
        "ls",
        "echo hello",
        "echo pipeline Execution Id is #{codepipeline.PipelineExecutionId}"
    ],
    "outputArtifacts": [
        {
            "name": "BuildArtifact",
            "files": [
                "**/"
            ]
        }
    ],
    "inputArtifacts": [
        {
            "name": "SourceArtifact"
        }
    ],
    "outputVariables": [
        "AWS_DEFAULT_REGION"
    ],
    "region": "us-east-1",
    "namespace": "compute"
}
```

------

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

以下相關資源可協助您使用此動作。
+ [教學課程：建立以運算 (V2 類型） 執行命令的管道](tutorials-commands.md) – 本教學課程提供具有 Commands 動作的範例管道。

# AWS Device Farm 測試動作參考
<a name="action-reference-DeviceFarm"></a>

在管道中，您可以設定測試動作，使用 AWS Device Farm 在裝置上執行和測試您的應用程式。Device Farm 使用測試裝置集區和測試架構來測試特定裝置上的應用程式。如需有關 Device Farm 動作支援之測試架構類型的資訊，請參閱[在 AWS Device Farm 中使用測試類型](https://docs.aws.amazon.com/devicefarm/latest/developerguide/test-types.html)。

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

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

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

**AppType**  
必要：是  
您正在測試的應用程式作業系統和類型。以下是有效值的清單：  
+ `iOS`
+ `Android`
+ `Web`

**ProjectId**  
必要：是  
Device Farm 專案 ID。  
若要尋找您的專案 ID，請在 Device Farm 主控台中選擇您的專案。在瀏覽器中，複製新專案的 URL。URL 包含專案 ID。專案 ID 是 之後 URL 中的值`projects/`。在下列範例中，專案 ID 為 `eec4905f-98f8-40aa-9afc-4c1cfexample`。  

```
https://<region-URL>/devicefarm/home?region=us-west-2#/projects/eec4905f-98f8-40aa-9afc-4c1cfexample/runs
```

**應用程式**  
必要：是  
輸入成品中應用程式檔案的名稱和位置。例如：`s3-ios-test-1.ipa`

**TestSpec**  
條件式：是  
輸入成品中測試規格定義檔案的位置。這是自訂模式測試的必要項目。

**DevicePoolArn**  
必要：是  
Device Farm 裝置集區 ARN。  
若要取得專案可用的裝置集區 ARNs，包括熱門裝置的 ARN，請使用 AWS CLI 輸入下列命令：  

```
aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:account_ID:project:project_ID
```

**TestType**  
必要：是  
指定測試支援的測試架構。以下是 的有效值清單`TestType`：  
+ **APPIUM\$1JAVA\$1JUNIT**
+ **APPIUM\$1JAVA\$1TESTNG**
+ **APPIUM\$1NODE**
+ **APPIUM\$1RUBY**
+ **APPIUM\$1PYTHON**
+ **APPIUM\$1WEB\$1JAVA\$1JUNIT**
+ **APPIUM\$1WEB\$1JAVA\$1TESTNG**
+ **APPIUM\$1WEB\$1NODE**
+ **APPIUM\$1WEB\$1RUBY**
+ **APPIUM\$1WEB\$1PYTHON**
+ **BUILTIN\$1FUZZ**
+ **INSTRUMENTATION**
+ **XCTEST**
+ **XCTEST\$1UI**
CodePipeline 中的 動作不支援下列測試類型：`REMOTE_ACCESS_RECORD`、 `WEB_PERFORMANCE_PROFILE`和 `REMOTE_ACCESS_REPLAY`。
如需有關 Device Farm 測試類型的資訊，請參閱[在 Device Farm 中使用 AWS 測試類型](https://docs.aws.amazon.com/devicefarm/latest/developerguide/test-types.html)。

**RadioBluetoothEnabled**  
必要：否  
布林值，指出是否要在測試開始時啟用藍牙。

**RecordAppPerformanceData**  
必要：否  
布林值，指出是否要在測試期間記錄裝置效能資料，例如 CPU、FPS 和記憶體效能。

**RecordVideo**  
必要：否  
布林值，指出是否要在測試期間錄製影片。

**RadioWifiEnabled**  
必要：否  
布林值，指出是否要在測試開始時啟用 Wi-Fi。

**RadioNfcEnabled**  
必要：否  
布林值，指出是否要在測試開始時啟用 NFC。

**RadioGpsEnabled**  
必要：否  
布林值，指出是否要在測試開始時啟用 GPS。

**測試**  
必要：否  
來源位置中測試定義檔案的名稱和路徑。路徑為相對於您測試輸入成品根的相對路徑。

**FuzzEventCount**  
必要：否  
模糊測試要執行的使用者介面事件數目，介於 1 到 10，000 之間。

**FuzzEventThrottle**  
必要：否  
模糊測試在執行下一個使用者介面事件之前等待的毫秒數，介於 1 到 1，000。

**FuzzRandomizerSeed**  
必要：否  
用於模糊測試的種子，用於隨機化使用者界面事件。對後續模糊測試使用相同的數字會產生相同的事件序列。

**CustomHostMachineArtifacts**  
必要：否  
主機機器上存放自訂成品的位置。

**CustomDeviceArtifacts**  
必要：否  
裝置上存放自訂成品的位置。  


**UnmeteredDevicesOnly**  
必要：否  
布林值，指出在此步驟中執行測試時是否只使用您的未計量裝置。

**JobTimeoutMinutes**  
必要：否  
每個裝置將在逾時前執行測試的分鐘數。

**Latitude**  
必要：否  
以地理座標系統度表示的裝置緯度。

**Longitude**  
必要：否  
以地理座標系統度表示的裝置經度。

## Input artifacts (輸入成品)
<a name="action-reference-DeviceFarm-input"></a>
+ **成品數量：** `1`
+ **描述：**要提供給測試動作的一組成品。Device Farm 會尋找要使用的建置應用程式和測試定義。

## 輸出成品
<a name="action-reference-DeviceFarm-output"></a>
+ **成品數量：**`0`
+ **描述：**輸出成品不適用於此動作類型。

## 服務角色許可： AWS Device Farm 動作
<a name="edit-role-devicefarm"></a>

當 CodePipeline 執行動作時，CodePipeline 服務角色政策需要下列許可，適當範圍縮小至管道資源 ARN，以維持最低權限的存取。例如，將下列項目新增至您的政策陳述式：

```
{
    "Effect": "Allow",
    "Action": [
        "devicefarm:ListProjects",
        "devicefarm:ListDevicePools",
        "devicefarm:GetRun",
        "devicefarm:GetUpload",
        "devicefarm:CreateUpload",
        "devicefarm:ScheduleRun"
    ],
    "Resource": "resource_ARN"
},
```

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

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

```
Name: Test
Actions:
  - Name: TestDeviceFarm
    ActionTypeId: null
    category: Test
    owner: AWS
    provider: DeviceFarm
    version: '1'
RunOrder: 1
Configuration:
  App: s3-ios-test-1.ipa
  AppType: iOS
  DevicePoolArn: >-
    arn:aws:devicefarm:us-west-2::devicepool:0EXAMPLE-d7d7-48a5-ba5c-b33d66efa1f5
  ProjectId: eec4905f-98f8-40aa-9afc-4c1cfEXAMPLE
  TestType: APPIUM_PYTHON
  TestSpec: example-spec.yml
OutputArtifacts: []
InputArtifacts:
  - Name: SourceArtifact
Region: us-west-2
```

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

```
{
    "Name": "Test",
    "Actions": [
        {
            "Name": "TestDeviceFarm",
            "ActionTypeId": null,
            "category": "Test",
            "owner": "AWS",
            "provider": "DeviceFarm",
            "version": "1"
        }
    ],
    "RunOrder": 1,
    "Configuration": {
        "App": "s3-ios-test-1.ipa",
        "AppType": "iOS",
        "DevicePoolArn": "arn:aws:devicefarm:us-west-2::devicepool:0EXAMPLE-d7d7-48a5-ba5c-b33d66efa1f5",
        "ProjectId": "eec4905f-98f8-40aa-9afc-4c1cfEXAMPLE",
        "TestType": "APPIUM_PYTHON",
        "TestSpec": "example-spec.yml"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "SourceArtifact"
        }
    ],
    "Region": "us-west-2"
},
```

------

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

以下相關資源可協助您使用此動作。
+ [在 Device Farm 中使用測試類型](https://docs.aws.amazon.com/devicefarm/latest/developerguide/test-types.html) – *Device Farm 開發人員指南*中的此參考章節提供有關 Device Farm 支援的 Android、iOS 和 Web 應用程式測試架構的更多說明。
+ [Device Farm 中的動作](https://docs.aws.amazon.com/devicefarm/latest/APIReference/Welcome.html) – *Device Farm API 參考中的 API* 呼叫和參數可協助您使用 Device Farm 專案。
+ [教學課程：建立使用 建置和測試 Android 應用程式的管道 AWS Device Farm](tutorials-codebuild-devicefarm.md) – 本教學課程提供範例建置規格檔案和範例應用程式，以使用 GitHub 來源建立管道，該來源使用 CodeBuild 和 Device Farm 建置和測試 Android 應用程式。
+ [教學課程：建立使用 測試 iOS 應用程式的管道 AWS Device Farm](tutorials-codebuild-devicefarm-S3.md) – 本教學課程提供範例應用程式，以使用 Amazon S3 來源建立管道，以使用 Device Farm 測試建置的 iOS 應用程式。

# Elastic Beanstalk 部署動作參考
<a name="action-reference-Beanstalk"></a>

Elastic Beanstalk 是 中的平台 AWS ，用於部署和擴展 Web 應用程式。您可以使用 Elastic Beanstalk 動作，將應用程式程式碼部署到您的部署環境。

**Topics**
+ [動作類型](#action-reference-Beanstalk-type)
+ [組態參數](#action-reference-Beanstalk-config)
+ [Input artifacts (輸入成品)](#action-reference-Beanstalk-input)
+ [輸出成品](#action-reference-Beanstalk-output)
+ [服務角色許可：`ElasticBeanstalk`部署動作](#edit-role-beanstalk)
+ [動作宣告](#action-reference-Beanstalk-example)
+ [另請參閱](#action-reference-Beanstalk-links)

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

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

**ApplicationName**  
必要：是  
您在 Elastic Beanstalk 中建立的應用程式名稱。

**EnvironmentName**  
必要：是  
您在 Elastic Beanstalk 中建立的環境名稱。環境是執行應用程式版本的 AWS 資源集合。每個環境一次只會執行一個應用程式版本，然而，您可以同時在許多環境中執行相同應用程式版本或不同應用程式版本。

## Input artifacts (輸入成品)
<a name="action-reference-Beanstalk-input"></a>
+ **成品數量：** `1`
+ **描述：**動作的輸入成品。

## 輸出成品
<a name="action-reference-Beanstalk-output"></a>
+ **成品數量：** `0`
+ **描述：**輸出成品不適用於此動作類型。

## 服務角色許可：`ElasticBeanstalk`部署動作
<a name="edit-role-beanstalk"></a>

對於 Elastic Beanstalk，下列是使用`ElasticBeanstalk`部署動作建立管道所需的最低許可。

```
{
    "Effect": "Allow",
    "Action": [
        "elasticbeanstalk:*",
        "ec2:*",
        "elasticloadbalancing:*",
        "autoscaling:*",
        "cloudwatch:*",
        "s3:*",
        "sns:*",
        "cloudformation:*",
        "rds:*",
        "sqs:*",
        "ecs:*"
    ],
    "Resource": "resource_ARN"
},
```

**注意**  
您應該將資源政策中的萬用字元取代為您想要限制存取之帳戶的資源。如需建立授予最低權限存取權的政策的詳細資訊，請參閱 [https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。

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

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

```
Name: Deploy
Actions:
  - Name: Deploy
    ActionTypeId:
      Category: Deploy
      Owner: AWS
      Provider: ElasticBeanstalk
      Version: '1'
    RunOrder: 1
    Configuration:
      ApplicationName: my-application
      EnvironmentName: my-environment
    OutputArtifacts: []
    InputArtifacts:
      - Name: SourceArtifact
    Region: us-west-2
    Namespace: DeployVariables
```

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

```
{
    "Name": "Deploy",
    "Actions": [
        {
            "Name": "Deploy",
            "ActionTypeId": {
                "Category": "Deploy",
                "Owner": "AWS",
                "Provider": "ElasticBeanstalk",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "ApplicationName": "my-application",
                "EnvironmentName": "my-environment"
            },
            "OutputArtifacts": [],
            "InputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "Region": "us-west-2",
            "Namespace": "DeployVariables"
        }
    ]
},
```

------

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

以下相關資源可協助您使用此動作。
+ [將 Flask 應用程式部署到 Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html) – 本教學課程將逐步引導您使用範例 Flask 應用程式在 Elastic Beanstalk 中建立應用程式和環境資源。然後，您可以使用 Elastic Beanstalk 部署動作建置管道，將應用程式從來源儲存庫部署到 Elastic Beanstalk 環境。

# Amazon Inspector `InspectorScan` 調用動作參考
<a name="action-reference-InspectorScan"></a>

Amazon Inspector 是一種漏洞管理服務，可自動探索工作負載，並持續掃描是否有軟體漏洞和意外的網路暴露。CodePipeline 中的 `InspectorScan`動作會自動偵測和修正開放原始碼中的安全漏洞。動作是具有安全掃描功能的受管運算動作。您可以在第三方儲存庫中使用 InspectorScan 搭配應用程式原始碼，例如 GitHub 或 Bitbucket Cloud，或搭配容器應用程式的影像。您的動作將掃描並報告您設定的漏洞層級和提醒。

**重要**  
此動作使用 CodePipeline 受管 CodeBuild 運算在建置環境中執行命令。執行動作會產生個別費用 AWS CodeBuild。

**Topics**
+ [動作類型 ID](#action-reference-InspectorScan-type)
+ [組態參數](#action-reference-InspectorScan-parameters)
+ [Input artifacts (輸入成品)](#action-reference-InspectorScan-input)
+ [輸出成品](#action-reference-InspectorScan-output)
+ [輸出變數](#w2aac56c62c19)
+ [服務角色許可：`InspectorScan`動作](#edit-role-InspectorScan)
+ [動作宣告](#w2aac56c62c23)
+ [另請參閱](#action-reference-InspectorScan-links)

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

範例：

```
            {
                "Category": "Invoke",
                "Owner": "AWS",
                "Provider": "InspectorScan",
                "Version": "1"
            },
```

## 組態參數
<a name="action-reference-InspectorScan-parameters"></a>

**InspectorRunMode**  
（必要） 表示掃描模式的字串。有效值為 `SourceCodeScan | ECRImageScan`。

**ECRRepositoryName**  
推送映像的 Amazon ECR 儲存庫名稱。

**ImageTag**  
用於映像的標籤。

此動作的參數會掃描您指定的漏洞層級。可用的漏洞閾值層級如下：

**CriticalThreshold **  
在來源中發現的關鍵嚴重性漏洞數量，超過此數量後 CodePipeline 應該使動作失敗。

**HighThreshold **  
在來源中找到的高嚴重性漏洞數量，超過此數量後 CodePipeline 應該會讓動作失敗。

**MediumThreshold**  
在來源中找到的中等嚴重性漏洞數量，超過此數量後 CodePipeline 應該會讓動作失敗。

**LowThreshold **  
在來源中找到的低嚴重性漏洞數量，超過此數量後 CodePipeline 應該會讓動作失敗。

![\[\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/inspectorscan-edit.png)


## Input artifacts (輸入成品)
<a name="action-reference-InspectorScan-input"></a>
+ **成品數量：** `1`
+ **描述：**要掃描漏洞的原始程式碼。如果掃描適用於 ECR 儲存庫，則不需要此輸入成品。

## 輸出成品
<a name="action-reference-InspectorScan-output"></a>
+ **成品數量：** `1`
+ **描述：**軟體物料清單 (SBOM) 檔案形式的來源漏洞詳細資訊。

## 輸出變數
<a name="w2aac56c62c19"></a>

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

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

**HighestScannedSeverity **  
來自掃描的最高嚴重性輸出。有效值為 `medium | high | critical`。

## 服務角色許可：`InspectorScan`動作
<a name="edit-role-InspectorScan"></a>

如需 `InspectorScan`動作支援，請將下列內容新增至您的政策陳述式：

```
{
        "Effect": "Allow",
        "Action": "inspector-scan:ScanSbom",
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "ecr:GetDownloadUrlForLayer",
            "ecr:BatchGetImage",
            "ecr:BatchCheckLayerAvailability"
        ],
        "Resource": "resource_ARN"
    },
```

此外，如果 命令動作尚未新增，請將下列許可新增至您的服務角色，以檢視 CloudWatch 日誌。

```
{
    "Effect": "Allow",
    "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream", 
        "logs:PutLogEvents"
    ],
    "Resource": "resource_ARN"
},
```

**注意**  
使用服務角色政策陳述式中的資源型許可，將許可範圍縮小到管道資源層級。

## 動作宣告
<a name="w2aac56c62c23"></a>

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

```
name: Scan
actionTypeId:
  category: Invoke
  owner: AWS
  provider: InspectorScan
  version: '1'
runOrder: 1
configuration:
  InspectorRunMode: SourceCodeScan
outputArtifacts:
- name: output
inputArtifacts:
- name: SourceArtifact
region: us-east-1
```

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

```
{
                        "name": "Scan",
                        "actionTypeId": {
                            "category": "Invoke",
                            "owner": "AWS",
                            "provider": "InspectorScan",
                            "version": "1"
                        },
                        "runOrder": 1,
                        "configuration": {
                            "InspectorRunMode": "SourceCodeScan"
                        },
                        "outputArtifacts": [
                            {
                                "name": "output"
                            }
                        ],
                        "inputArtifacts": [
                            {
                                "name": "SourceArtifact"
                            }
                        ],
                        "region": "us-east-1"
                    },
```

------

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

以下相關資源可協助您使用此動作。
+ 如需 Amazon Inspector 的詳細資訊，請參閱《[Amazon Inspector](https://aws.amazon.com/inspector/) 使用者指南》。

# AWS Lambda 叫用動作參考
<a name="action-reference-Lambda"></a>

可讓您在管道中執行 Lambda 函數作為動作。使用事件物件作為此函數的輸入，函數具有存取動作組態、輸入成品位置、輸出成品位置，以及其他存取成品所需的資訊。如需傳遞至 Lambda 調用函數的範例事件，請參閱 [JSON 事件範例](#action-reference-Lambda-event)。Lambda 函數實作時，必須呼叫 `[PutJobSuccessResult API](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PutJobSuccessResult.html)` 或 `[PutJobFailureResult API](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PutJobFailureResult.html)`。否則，執行此動作會停止回應，直到動作逾時為止。如果您指定動作的輸出成品，則必須將它們上傳到 S3 儲存貯體，做為函數實作的一部分。

**重要**  
請勿記錄 CodePipeline 傳送給 Lambda 的 JSON 事件，因為這可能會導致使用者登入資料記錄在 CloudWatch Logs 中。CodePipeline 角色使用 JSON 事件，在 `artifactCredentials` 欄位中將臨時登入資料傳遞給 Lambda。如需範例事件，請參閱[JSON 事件範例](actions-invoke-lambda-function.md#actions-invoke-lambda-function-json-event-example)。

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

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

**FunctionName**  
必要：是  
`FunctionName` 是 Lambda 中建立的函數名稱。

**UserParameters**  
必要：否  
可由 Lambda 函數處理為輸入的字串。

## Input artifacts (輸入成品)
<a name="action-reference-Lambda-input"></a>
+ **成品數量：**`0 to 5`
+ **描述：**要提供給 Lambda 函數的一組成品。

## 輸出成品
<a name="action-reference-Lambda-output"></a>
+ **成品數量：**`0 to 5`
+ **描述：**Lambda 函數輸出產生的一組成品。

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

此動作會以變數的形式產生包含在 [PutJobSuccessResult API](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PutJobSuccessResult.html) 請求 `outputVariables`區段中的所有鍵值對。

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

## 動作組態範例
<a name="action-reference-Lambda-example"></a>

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

```
Name: Lambda
Actions:
  - Name: Lambda
    ActionTypeId:
      Category: Invoke
      Owner: AWS
      Provider: Lambda
      Version: '1'
    RunOrder: 1
    Configuration:
      FunctionName: myLambdaFunction
      UserParameters: 'http://192.0.2.4'
    OutputArtifacts: []
    InputArtifacts: []
    Region: us-west-2
```

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

```
{
    "Name": "Lambda",
    "Actions": [
        {
            "Name": "Lambda",
            "ActionTypeId": {
                "Category": "Invoke",
                "Owner": "AWS",
                "Provider": "Lambda",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "FunctionName": "myLambdaFunction",
                "UserParameters": "http://192.0.2.4"
            },
            "OutputArtifacts": [],
            "InputArtifacts": [],
            "Region": "us-west-2"
        }
    ]
},
```

------

## JSON 事件範例
<a name="action-reference-Lambda-event"></a>

Lambda 動作會傳送 JSON 事件，其中包含任務 ID、管道動作組態、輸入和輸出成品位置，以及成品的任何加密資訊。任務工作者會存取這些詳細資訊，以完成 Lambda 動作。如需詳細資訊，請參閱 [任務詳細資訊](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_JobDetails.html)。以下為範例 事件。

```
{
    "CodePipeline.job": {
        "id": "11111111-abcd-1111-abcd-111111abcdef",
        "accountId": "111111111111",
        "data": {
            "actionConfiguration": {
                "configuration": {
                    "FunctionName": "MyLambdaFunction",
                    "UserParameters": "input_parameter"
                }
            },
            "inputArtifacts": [
                {
                    "location": {
                        "s3Location": {
                            "bucketName": "bucket_name",
                            "objectKey": "filename"
                        },
                        "type": "S3"
                    },
                    "revision": null,
                    "name": "ArtifactName"
                }
            ],
            "outputArtifacts": [],
            "artifactCredentials": {
                "secretAccessKey": "secret_key",
                "sessionToken": "session_token",
                "accessKeyId": "access_key_ID"
            },
            "continuationToken": "token_ID",
            "encryptionKey": { 
              "id": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
              "type": "KMS"
            }
        }
    }
}
```

JSON 事件提供 CodePipeline 中 Lambda 動作的下列任務詳細資訊：
+ `id`：唯一系統產生的任務 ID。
+ `accountId`：與任務相關聯的 AWS 帳戶 ID。
+ `data`：任務工作者完成任務所需的其他資訊。
  + `actionConfiguration`：Lambda 動作的動作參數。如需定義，請參閱 [組態參數](#action-reference-Lambda-config)。
  + `inputArtifacts`：提供給動作的成品。
    + `location`：成品存放區位置。
      + `s3Location`：動作的輸入成品位置資訊。
        + `bucketName`：動作的管道成品存放區名稱 （例如，名為 codepipeline-us-east-2-1234567890 的 Amazon S3 儲存貯體）。
        + `objectKey`：應用程式的名稱 (例如，`CodePipelineDemoApplication.zip`)。
      + `type`：位置中成品的類型。目前，`S3` 是唯一有效的成品類型。
    + `revision`：成品的修訂 ID。根據物件的類型，這可以是遞交 ID (GitHub) 或修訂 ID (Amazon Simple Storage Service)。如需詳細資訊，請參閱 [ArtifactRevision](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_ArtifactRevision.html)。
    + `name`：要處理的成品名稱，例如 `MyApp`。
  + `outputArtifacts`：動作的輸出。
    + `location`：成品存放區位置。
      + `s3Location`：動作的輸出成品位置資訊。
        + `bucketName`：動作的管道成品存放區名稱 （例如，名為 codepipeline-us-east-2-1234567890 的 Amazon S3 儲存貯體）。
        + `objectKey`：應用程式的名稱 (例如，`CodePipelineDemoApplication.zip`)。
      + `type`：位置中成品的類型。目前，`S3` 是唯一有效的成品類型。
    + `revision`：成品的修訂 ID。根據物件的類型，這可以是遞交 ID (GitHub) 或修訂 ID (Amazon Simple Storage Service)。如需詳細資訊，請參閱 [ArtifactRevision](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_ArtifactRevision.html)。
    + `name`：成品輸出的名稱，例如 `MyApp`。
  + `artifactCredentials`：用於存取 Amazon S3 儲存貯體中輸入和輸出成品的 AWS 工作階段登入資料。這些登入資料是 AWS Security Token Service (AWS STS) 發出的臨時登入資料。
    + `secretAccessKey`：工作階段的私密存取金鑰。
    + `sessionToken`：工作階段的字符。
    + `accessKeyId`：工作階段的私密存取金鑰。
  + `continuationToken`：動作產生的字符。未來動作會使用此字符來識別動作的執行中執行個體。動作完成時，不應提供接續字符。
  + `encryptionKey`：用來加密成品存放區中資料的加密金鑰，例如 AWS KMS 金鑰。如果未定義，則會使用 Amazon Simple Storage Service 的預設金鑰。
    + `id`：用來識別金鑰的 ID。如果是 AWS KMS 金鑰，您可以使用金鑰 ID、金鑰 ARN 或別名 ARN。
    + `type`：加密金鑰的類型，例如 AWS KMS 。

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

以下相關資源可協助您使用此動作。
+ [AWS CloudFormation 使用者指南](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/) – 如需管道的 Lambda 動作和 CloudFormation 成品的詳細資訊，請參閱[搭配 CodePipeline 管道使用參數覆寫函數](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-parameter-override-functions.html)、[自動化部署 Lambda 型應用程式](https://docs.aws.amazon.com/lambda/latest/dg/automating-deployment.html)和[AWS CloudFormation 成品](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-cfn-artifacts.html)。
+ [在 CodePipeline 的管道中叫用 AWS Lambda 函數](actions-invoke-lambda-function.md) – 此程序提供範例 Lambda 函數，並說明如何使用主控台建立具有 Lambda 調用動作的管道。

# AWS OpsWorks 部署動作參考
<a name="action-reference-OpsWorks"></a>

您可以使用 AWS OpsWorks 動作來使用管道搭配 OpsWorks 部署 。

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

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

**應用程式**  
必要：是  
 OpsWorks 堆疊。堆疊是應用程式基礎設施的容器。

**堆疊**  
必要：是  
 OpsWorks 應用程式。應用程式代表您要部署和執行的程式碼。

**Layer**  
必要：否  
 OpsWorks 堆疊。layer 會指定一組執行個體的組態和資源。

## Input artifacts (輸入成品)
<a name="action-reference-OpsWorks-input"></a>
+ **成品數量：** `1`
+ **描述：**這是動作的輸入成品。

## 輸出成品
<a name="action-reference-OpsWorks-output"></a>
+ **成品數量：** `0 to 1`
+ **描述：**輸出成品不適用於此動作類型。

## 服務角色許可： AWS OpsWorks 動作
<a name="edit-role-opsworks"></a>

如需 AWS OpsWorks 支援，請將下列內容新增至您的政策陳述式：

```
{
    "Effect": "Allow",
    "Action": [
        "opsworks:CreateDeployment",
        "opsworks:DescribeApps",
        "opsworks:DescribeCommands",
        "opsworks:DescribeDeployments",
        "opsworks:DescribeInstances",
        "opsworks:DescribeStacks",
        "opsworks:UpdateApp",
        "opsworks:UpdateStack"
    ],
    "Resource": "resource_ARN"
},
```

## 動作組態範例
<a name="action-reference-OpsWorks-example"></a>

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

```
Name: ActionName
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Version: 1
  Provider: OpsWorks
InputArtifacts:
  - Name: myInputArtifact
Configuration:
  Stack: my-stack
  App: my-app
```

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

```
{
    "Name": "ActionName",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Version": 1,
        "Provider": "OpsWorks"
    },
    "InputArtifacts": [
        {
            "Name": "myInputArtifact"
        }
    ],
    "Configuration": {
        "Stack": "my-stack",
        "App": "my-app"
    }
}
```

------

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

以下相關資源可協助您使用此動作。
+ [AWS OpsWorks 使用者指南](https://docs.aws.amazon.com/step-functions/latest/dg/) – 如需有關使用 部署的資訊 AWS OpsWorks，請參閱*AWS OpsWorks 《 使用者指南*》。

# AWS Service Catalog 部署動作參考
<a name="action-reference-ServiceCatalog"></a>

您可以使用 AWS Service Catalog 動作來使用管道部署範本。這些是您已在 Service Catalog 中建立的資源範本。

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

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

**TemplateFilePath**  
必要：是  
來源位置中資源範本的檔案路徑。

**ProductVersionName**  
必要：是  
Service Catalog 中的產品版本。

**ProductType**  
必要：是  
Service Catalog 中的產品類型。

**ProductId**  
必要：是  
Service Catalog 中的產品 ID。

**ProductVersionDescription**  
必要：否  
Service Catalog 中的產品版本描述。

## Input artifacts (輸入成品)
<a name="action-reference-ServiceCatalog-input"></a>
+ **成品數量：** `1`
+ **描述：**這是動作的輸入成品。

## 輸出成品
<a name="action-reference-ServiceCatalog-output"></a>
+ **成品數量：** `0`
+ **描述：**輸出成品不適用於此動作類型。

## 服務角色許可：Service Catalog 動作
<a name="edit-role-servicecatalog"></a>

對於 Service Catalog 支援，請將下列項目新增至您的政策陳述式：

```
{
    "Effect": "Allow",
    "Action": [
        "servicecatalog:ListProvisioningArtifacts",
        "servicecatalog:CreateProvisioningArtifact",
        "servicecatalog:DescribeProvisioningArtifact",
        "servicecatalog:DeleteProvisioningArtifact",
        "servicecatalog:UpdateProduct"
    ],
    "Resource": "resource_ARN"
},
{
    "Effect": "Allow",
    "Action": [
        "cloudformation:ValidateTemplate"
    ],
    "Resource": "resource_ARN"
}
```

## 依組態檔案類型列出的動作組態範例
<a name="action-reference-ServiceCatalog-example"></a>

下列範例顯示使用 Service Catalog 之部署動作的有效組態，適用於在主控台中建立且沒有個別組態檔案的管道：

```
"configuration": {
  "TemplateFilePath": "S3_template.json",
  "ProductVersionName": "devops S3 v2",
  "ProductType": "CLOUD_FORMATION_TEMPLATE",
  "ProductVersionDescription": "Product version description",
  "ProductId": "prod-example123456"
}
```

下列範例顯示使用 Service Catalog 之部署動作的有效組態，適用於在具有個別`sample_config.json`組態檔案的主控台中建立的管道：

```
"configuration": {
  "ConfigurationFilePath": "sample_config.json",
  "ProductId": "prod-example123456"
}
```

### 動作組態範例
<a name="action-reference-ServiceCatalog-example-default"></a>

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

```
Name: ActionName
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Version: 1
  Provider: ServiceCatalog
OutputArtifacts:
- Name: myOutputArtifact
Configuration:
  TemplateFilePath: S3_template.json
  ProductVersionName: devops S3 v2
  ProductType: CLOUD_FORMATION_TEMPLATE
  ProductVersionDescription: Product version description
  ProductId: prod-example123456
```

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

```
{
    "Name": "ActionName",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Version": 1,
        "Provider": "ServiceCatalog"
    },
    "OutputArtifacts": [
        {
            "Name": "myOutputArtifact"
        }
    ],
    "Configuration": {
        "TemplateFilePath": "S3_template.json",
        "ProductVersionName": "devops S3 v2",
        "ProductType": "CLOUD_FORMATION_TEMPLATE",
        "ProductVersionDescription": "Product version description",
        "ProductId": "prod-example123456"
    }
}
```

------

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

以下相關資源可協助您使用此動作。
+ [Service Catalog 使用者指南](https://docs.aws.amazon.com/servicecatalog/latest/userguide/) – 如需 Service Catalog 中資源和範本的相關資訊，請參閱 *Service Catalog 使用者指南*。
+ [教學課程：建立部署至 Service Catalog 的管道](tutorials-S3-servicecatalog.md) – 本教學課程說明如何建立和設定管道，將產品範本部署至 Service Catalog，並交付您在來源儲存庫中所做的變更。

# AWS Step Functions 叫用動作參考
<a name="action-reference-StepFunctions"></a>

執行下列 AWS CodePipeline 動作：
+ 從管道啟動 AWS Step Functions 狀態機器執行。
+ 透過動作組態中的屬性或位於管道成品中做為輸入傳遞的檔案，為狀態機器提供初始狀態。
+ 選擇性地設定執行 ID 字首，以識別源自動作的執行。
+ 支援[標準和快速](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html)狀態機器。

**注意**  
Step Functions 動作會在 Lambda 上執行，因此具有與 Lambda 函數成品大小配額相同的成品大小配額。如需詳細資訊，請參閱《[Lambda 開發人員指南》中的 Lambda 配額](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)。

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

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

**StateMachineArn**  
必要：是  
要叫用之狀態機器的 Amazon Resource Name (ARN)。

**ExecutionNamePrefix**  
必要：否  
依預設，動作執行 ID 會用作為狀態機執行名稱。如果有提供字首，會與連字號用於動作執行 ID 的前綴，並一起用作為狀態機執行名稱。  

```
myPrefix-1624a1d1-3699-43f0-8e1e-6bafd7fde791
```
對於快速狀態機器，名稱應該只包含 0-9、A-Z、a-z、- 和 \$1。

**InputType**  
必要：否  
+ **Literal (常值)** (預設)：指定此項時，**Input (輸入)** 欄位中的數值會直接傳遞至狀態機輸入。

  選取**文字**時**輸入**欄位的範例項目：

  ```
  {"action": "test"}
  ```
+ **FilePath**：由 **Input (輸入)** 欄位指定的輸入成品中的檔案內容會用作為狀態機器執行的輸入。當 **InputType** 設定為 **FilePath** 時，需要輸入成品。

  選取 **FilePath** 時**，輸入**欄位的範例項目：

  ```
  assets/input.json
  ```

**Input**  
必要：有條件  
+ **Literal (常值)**：當 **InputType ** 設定為 **Literal (常值)** (預設) 時，此為選用欄位。

  如果有提供此項，**input (輸入)** 欄位會直接用作為狀態機器執行的輸入。否則，會使用空的 JSON 物件 `{}` 叫用狀態機器。
+ **FilePath**：當 **InputType** 設定為 **FilePath** 時，需要此欄位。

  當 **InputType** 設定為 **FilePath** 時，也需要輸入成品。

  在指定的輸入成品中的檔案內容會用作為狀態機器執行的輸入。

## Input artifacts (輸入成品)
<a name="action-reference-StepFunctions-input"></a>
+ **成品數量：** `0 to 1`
+ **描述：** 如果 **InputType** 設定為 **FilePath**，則需要此成品，並且會用來取得狀態機器執行的輸入。

## 輸出成品
<a name="action-reference-StepFunctions-output"></a>
+ **成品數量：** `0 to 1`
+ **描述：**
  + **標準狀態機器**：如果有提供此項，則會使用狀態機器的輸出填入輸出成品。這是在狀態機器執行成功完成後，從 [Step Functions DescribeExecution API](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html) 回應的 `output` 屬性取得。
  + **快速狀態機器**：不支援。

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

此動作會產生輸出變數，並且可供管道中下游動作的動作組態進行參考。

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

**StateMachineArn**  
狀態機器的 ARN。

**ExecutionArn**  
執行狀態機器的 ARN。僅限標準狀態機器。

## 服務角色許可：`StepFunctions`動作
<a name="edit-role-stepfunctions"></a>

對於 `StepFunctions`動作，下列是使用 Step Functions 叫用動作建立管道所需的最低許可。

```
{
    "Effect": "Allow",
    "Action": [
        "states:DescribeStateMachine",
        "states:DescribeExecution",
        "states:StartExecution"
    ],
    "Resource": "resource_ARN"
},
```

## 動作組態範例
<a name="action-reference-StepFunctions-example"></a>

### 預設輸入的範例
<a name="action-reference-StepFunctions-example-default"></a>

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

```
Name: ActionName
ActionTypeId:
  Category: Invoke
  Owner: AWS
  Version: 1
  Provider: StepFunctions
OutputArtifacts:
  - Name: myOutputArtifact
Configuration:
  StateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine
  ExecutionNamePrefix: my-prefix
```

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

```
{
    "Name": "ActionName",
    "ActionTypeId": {
        "Category": "Invoke",
        "Owner": "AWS",
        "Version": 1,
        "Provider": "StepFunctions"
    },
    "OutputArtifacts": [
        {
            "Name": "myOutputArtifact"
        }
    ],
    "Configuration": {
        "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine",
        "ExecutionNamePrefix": "my-prefix"
    }
}
```

------

### 常值輸入的範例
<a name="action-reference-StepFunctions-example-literal"></a>

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

```
Name: ActionName
ActionTypeId:
  Category: Invoke
  Owner: AWS
  Version: 1
  Provider: StepFunctions
OutputArtifacts:
  - Name: myOutputArtifact
Configuration:
  StateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine
  ExecutionNamePrefix: my-prefix
  Input: '{"action": "test"}'
```

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

```
{
    "Name": "ActionName",
    "ActionTypeId": {
        "Category": "Invoke",
        "Owner": "AWS",
        "Version": 1,
        "Provider": "StepFunctions"
    },
    "OutputArtifacts": [
        {
            "Name": "myOutputArtifact"
        }
    ],
    "Configuration": {
        "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine",
        "ExecutionNamePrefix": "my-prefix",
        "Input": "{\"action\": \"test\"}"
    }
}
```

------

### 輸入檔案的範例
<a name="action-reference-StepFunctions-example-filepath"></a>

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

```
Name: ActionName
InputArtifacts:
  - Name: myInputArtifact
ActionTypeId:
  Category: Invoke
  Owner: AWS
  Version: 1
  Provider: StepFunctions
OutputArtifacts:
  - Name: myOutputArtifact
Configuration:
  StateMachineArn: 'arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine'
  ExecutionNamePrefix: my-prefix
  InputType: FilePath
  Input: assets/input.json
```

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

```
{
    "Name": "ActionName",
    "InputArtifacts": [
        {
            "Name": "myInputArtifact"
        }
    ],
    "ActionTypeId": {
        "Category": "Invoke",
        "Owner": "AWS",
        "Version": 1,
        "Provider": "StepFunctions"
    },
    "OutputArtifacts": [
        {
            "Name": "myOutputArtifact"
        }
    ],
    "Configuration": {
        "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine",
        "ExecutionNamePrefix": "my-prefix",
        "InputType": "FilePath",
        "Input": "assets/input.json"
    }
}
```

------

## Behavior (行為)
<a name="action-reference-StepFunctions-types"></a>

在發行期間，CodePipeline 會使用動作組態中指定的輸入來執行設定的狀態機器。

當 **InputType** 設定為 **Literal (常值)** 時，**Input (輸入)** 動作組態欄位的內容會用作為狀態機器的輸入。當沒有提供常值輸入時，狀態機器執行會使用空的 JSON 物件 `{}`。如需在不輸入的情況下執行狀態機器執行的詳細資訊，請參閱 [Step Functions StartExecution API](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)。

當 **InputType** 設定為 **FilePath** 時，動作會將輸入成品解壓縮，並使用在 **Input (輸入)** 動作組態欄位中指定的檔案內容做為狀態機器的輸入。指定 **FilePath** 時，**Input (輸入)** 欄位為必要欄位，且必須存在輸入成品；否則，動作會失敗。

成功啟動執行後，行為將分歧為兩種狀態機類型，「標準」**和「快速」**。

### 標準狀態機器
<a name="action-reference-StepFunctions-types-standard"></a>

如果標準狀態機器執行成功啟動，CodePipeline 會輪詢 `DescribeExecution` API，直到執行達到結束狀態為止。如果執行成功完成，表示動作成功；否則會失敗。

如果已設定輸出成品，該成品將包含狀態機器的傳回值。這是在狀態機器執行成功完成後，從 [Step Functions DescribeExecution API](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html) 回應的 `output` 屬性取得。請注意，此 API 上有強制執行輸出長度限制。

#### 錯誤處理
<a name="action-reference-StepFunctions-types-standard-handling"></a>
+ 如果該動作無法啟動狀態機器執行，則動作執行會失敗。
+ 如果在 CodePipeline Step Functions 動作達到逾時 （預設為 7 天） 之前，狀態機器執行無法達到結束狀態，則動作執行會失敗。儘管發生此類失敗，狀態機器可能會繼續執行。如需 Step Functions 中狀態機器執行逾時的詳細資訊，請參閱[標準與快速工作流程。](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html)
**注意**  
您可以為具有動作的帳戶要求增加叫用動作逾時的配額。不過，增加配額會套用至該帳戶所有區域中此類型的所有動作。
+ 如果狀態機器執行達到 FAILED、TIMED\$1OUT 或 ABORTED 的終端狀態，則動作執行會失敗。

### 快速狀態機器
<a name="action-reference-StepFunctions-types-express"></a>

如果快速狀態機器執行啟動成功，叫用動作執行會成功完成。

針對快速狀態機器設定的動作考量：
+ 您無法指定輸出成品。
+ 該動作不會等待狀態機器執行完成。
+ 在 CodePipeline 中啟動動作執行後，即使狀態機器執行失敗，動作執行也會成功。

#### 錯誤處理
<a name="action-reference-StepFunctions-types-express-handling"></a>
+ 如果 CodePipeline 無法啟動狀態機器執行，動作執行會失敗。否則，該動作會立即成功。無論狀態機器執行需要多長時間才能完成或其結果，動作都會在 CodePipeline 中成功。

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

以下相關資源可協助您使用此動作。
+ [AWS Step Functions 開發人員指南](https://docs.aws.amazon.com/step-functions/latest/dg/) – 如需狀態機器、執行和狀態機器輸入的相關資訊，請參閱 *AWS Step Functions 開發人員指南*。
+ [教學課程：在管道中使用 AWS Step Functions 叫用動作](tutorials-step-functions.md) – 本教學課程會協助您開始使用範例標準狀態機器，並說明如何透過新增 Step Functions 叫用動作來使用主控台更新管道。