

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

# Amazon ECS
<a name="automation-ref-ecs"></a>

 AWS Systems Manager 自動化為 Amazon Elastic Container Service 提供預先定義的 Runbook。如需有關執行手冊的詳細資訊，請參閱 [Working with runbooks](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-documents.html)。如需如何檢視 Runbook 內容的詳細資訊，請參閱 [檢視 Runbook 內容](automation-runbook-reference.md#view-automation-json)。

**Topics**
+ [`AWSSupport-CollectECSInstanceLogs`](automation-awssupport-collectecsinstancelogs.md)
+ [`AWS-InstallAmazonECSAgent`](automation-aws-install-ecs-agent.md)
+ [`AWS-ECSRunTask`](aws-run-ecs-task.md)
+ [`AWSSupport-TroubleshootECSContainerInstance`](automation-aws-troubleshoot-ecs-container-instance.md)
+ [`AWSSupport-TroubleshootECSTaskFailedToStart`](automation-aws-troubleshootecstaskfailedtostart.md)
+ [`AWS-UpdateAmazonECSAgent`](automation-aws-update-ecs-agent.md)

# `AWSSupport-CollectECSInstanceLogs`
<a name="automation-awssupport-collectecsinstancelogs"></a>

 **Description** 

 `AWSSupport-CollectECSInstanceLogs` Runbook 會從 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體收集作業系統和 Amazon Elastic Container Service (Amazon ECS) 相關日誌檔案，以協助您疑難排解常見的 Amazon ECS 問題。當自動化收集相關聯的日誌檔案時，會變更檔案系統。這些變更包括建立暫時目錄和日誌目錄、將日誌檔案複製到這些目錄，以及將日誌檔案壓縮為封存。

 如果您指定 `LogDestination` 參數的值，目標執行個體必須安裝 Linux 執行個體的 AWS Command Line Interface (AWS CLI) 或 Windows PowerShell for Windows 執行個體 AWS 的工具。自動化會評估您指定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體的政策狀態。為了協助從 Amazon EC2 執行個體收集之日誌的安全性，如果政策狀態`isPublic`設定為 `true` ，或存取控制清單 (ACL) 將`READ|WRITE`許可授予 `All Users` Amazon S3 預先定義的群組，則不會上傳日誌。此外，如果您帳戶中無法使用提供的儲存貯體，則不會上傳日誌。如需 Amazon S3 預先定義 g 陣營的詳細資訊，請參閱[《Amazon Simple Storage Service 使用者指南》中的 Amazon S3 預先定義群組](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#specifying-grantee-predefined-groups)。 **

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-CollectECSInstanceLogs) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ ECSInstanceId

  類型：字串

  描述：（必要） 您要從中收集日誌的執行個體 ID。您指定的執行個體必須由 Systems Manager 管理。
+ LogDestination

  類型：字串

  描述：（選用） AWS 帳戶 要上傳封存日誌的 Amazon S3 儲存貯體。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `ssm:ListCommandInvocations` 
+  `ssm:ListCommands` 
+  `ssm:SendCommand` 
+  `ssm:DescribeInstanceInformation` 

 建議您在 `ECSInstanceId` 參數中指定的 Amazon EC2 執行個體具有連接 Amazon 受管政策的 IAM `AmazonSSMManagedInstanceCore` 角色。若要將日誌封存上傳至您在 `LogDestination` 參數中指定的 Amazon S3 儲存貯體，您必須新增下列許可：
+  `s3:PutObject` 
+  `s3:ListBucket` 
+  `s3:GetBucketPolicyStatus` 
+  `s3:GetBucketAcl` 

 **文件步驟** 
+  `assertInstanceIsManaged` - 驗證您在 `ECSInstanceId` 參數中指定的執行個體是否由 Systems Manager 管理。
+  `getInstancePlatform` - 取得 `ECSInstanceId` 參數中指定之執行個體的作業系統 (OS) 平台的相關資訊。
+  `verifyInstancePlatform` - 根據作業系統平台分支自動化。
+  `runLogCollectionScriptOnLinux` - 在 Linux 執行個體上收集作業系統和 Amazon ECS 相關日誌檔案，並在 `/var/log/collectECSlogs`目錄中建立封存檔案。
+  `runLogCollectionScriptOnWindows` - 在 Windows 執行個體上收集作業系統和 Amazon ECS 相關日誌檔案，並在 `C:\ProgramData\collectECSlogs`目錄中建立封存檔案。
+  `verifyIfS3BucketProvided` - 驗證是否已為 `LogDestination` 參數指定值。
+  `runUploadScript` - 根據作業系統平台分支自動化步驟。
+  `runUploadScriptOnLinux` - 將日誌封存上傳至 `LogDestination` 參數中指定的 Amazon S3 儲存貯體，並從作業系統刪除封存的日誌檔案。
+  `runUploadScriptOnWindows` - 將日誌封存上傳至 `LogDestination` 參數中指定的 Amazon S3 儲存貯體，並從作業系統刪除封存的日誌檔案。

# `AWS-InstallAmazonECSAgent`
<a name="automation-aws-install-ecs-agent"></a>

 **Description** 

 `AWS-InstallAmazonECSAgent` Runbook 會在您指定的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上安裝 Amazon Elastic Container Service (Amazon ECS) 代理程式。此 Runbook 僅支援 Amazon Linux 和 Amazon Linux 2 執行個體。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-InstallAmazonECSAgent) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ InstanceIds

  類型：StringList

  描述：（必要） 您要安裝 Amazon ECS 代理程式的 Amazon EC2 執行個體 IDs。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `ssm:StartAutomationExecution` 
+  `ssm:GetAutomationExecution` 
+  `ssm:GetCommandInvocation` 
+  `ec2:DescribeImages` 
+  `ec2:DescribeInstanceAttribute` 
+  `ec2:DescribeInstances` 

 **文件步驟** 

 `aws:executeScript` - 在您於 `InstanceIds` 參數中指定的 Amazon EC2 執行個體上安裝 Amazon ECS 代理程式。

 **輸出** 

InstallAmazonECSAgent.SuccessfulInstances - 安裝 Amazon ECS 代理程式成功所在的執行個體 ID。

InstallAmazonECSAgent.FailedInstances - 安裝 Amazon ECS 代理程式失敗的執行個體 ID。

InstallAmazonECSAgent.InProgressInstances - 正在安裝 Amazon ECS 代理程式的執行個體 ID。

# `AWS-ECSRunTask`
<a name="aws-run-ecs-task"></a>

 **Description** 

 `AWS-ECSRunTask` Runbook 會執行您指定的 Amazon Elastic Container Service (Amazon ECS) 任務。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-ECSRunTask) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ capacityProviderStrategy

  類型：字串

  描述：（選用） 用於任務的容量提供者策略。
+ 叢集

  類型：字串

  描述：（選用） 執行任務的叢集的簡短名稱或 ARN。如果您未指定叢集，則會使用預設叢集。
+ count

  類型：字串

  描述：（選用） 要放置在叢集上之指定任務的執行個體數量。您可以為每個請求指定最多 10 個任務。
+ enableECSManagedTags

  類型：布林值

  描述：（選用） 指定是否對任務使用 Amazon ECS 受管標籤。如需詳細資訊，請參閱《Amazon Elastic Container Service 開發人員指南》中的[標記您的 Amazon ECS 資源](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html)。
+ enableExecuteCommand

  類型：布林值

  描述：（選用） 決定是否為此任務中的容器啟用執行命令功能。如果為 true，這會啟用任務中所有容器的執行命令功能。
+ 群組

  類型：字串

  描述：（選用） 要與任務建立關聯的任務群組名稱。預設值是任務定義的系列名稱。例如 `family:my-family-name`。
+ launchType

  類型：字串

  有效值：EC2 \$1 FARGATE \$1 EXTERNAL

  描述：（選用） 執行獨立任務的基礎設施。
+ networkConfiguration

  類型：字串

  描述：（選用） 任務的網路組態。使用 `awsvpc` 網路模式接收自己的彈性網路介面的任務定義需要此參數，其他網路模式不支援此參數。
+ 覆寫

  類型：字串

  描述：（選用） JSON 格式的容器覆寫清單，指定指定指定任務定義中的容器名稱，以及應接收的覆寫。您可以使用命令覆寫來覆寫任務定義或 Docker 映像中指定的容器的預設命令。您也可以覆寫任務定義或容器上的 Docker 映像中指定的現有環境變數。此外，您可以使用環境覆寫來新增環境變數。
+ placementConstraints

  類型：字串

  描述：（選用） 用於任務的置放限制物件陣列。您可以為每個任務指定最多 10 個限制，包括任務定義中的限制，以及在執行時間指定的限制。
+ placementStrategy

  類型：字串

  描述：（選用） 用於任務的置放策略物件。您可以為每個任務指定最多 5 個策略規則。
+ platformVersion

  類型：字串

  描述：（選用） 任務使用的平台版本。平台版本僅針對 Fargate 上託管的任務指定。如果未指定平台版本，將使用 `LATEST` 平台版本。
+ propagateTags

  類型：字串

  描述：（選用） 決定標籤是否從任務定義傳播到任務。如果沒有指定值，則不會傳播標籤。標籤只能在任務建立期間傳播至任務。
+ referenceId

  類型：字串

  描述：（選用） 用於任務的參考 ID。參考 ID 的長度上限為 1024 個字元。
+ startedBy

  類型：字串

  描述：（選用） 任務啟動時指定的選用標籤。這可協助您篩選 `ListTasks` API 操作的結果，以識別哪些任務屬於特定任務。最多允許 36 個字母 （大寫和小寫）、數字、連字號 (-) 和底線 (\$1)。
+ 標籤

  類型：字串

  描述：（選用） 您要套用至任務的中繼資料，以協助您分類和組織任務。每個標籤都包含使用者定義的索引鍵和值。
+ taskDefinition

  類型：字串

  描述：（選用） 要執行之任務定義的 `family`和 `revision`(`family`：`revision`) 或完整 ARN。如果未指定修訂版，則會使用最新的`ACTIVE`修訂版。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `ecs:RunTask` 

 **文件步驟** 

 `aws:executeScript` - 根據您為 Runbook 輸入參數指定的值執行 Amazon ECS 任務。

# `AWSSupport-TroubleshootECSContainerInstance`
<a name="automation-aws-troubleshoot-ecs-container-instance"></a>

 **Description** 

 `AWSSupport-TroubleshootECSContainerInstance` Runbook 可協助您疑難排解無法向 Amazon ECS 叢集註冊的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。此自動化會檢閱執行個體的使用者資料是否包含正確的叢集資訊、執行個體描述檔是否包含必要的許可，以及網路組態問題。

**重要**  
 若要成功執行此自動化，Amazon EC2 執行個體的狀態必須為 `running` ，Amazon ECS 叢集狀態必須為 `ACTIVE` 。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootECSContainerInstance) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ ClusterName

  類型：字串

  描述：（必要） 執行個體無法註冊的 Amazon ECS 叢集名稱。
+ InstanceId

  類型：字串

  描述：（必要） 您要疑難排解的 Amazon EC2 執行個體 ID。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `ec2:DescribeIamInstanceProfileAssociations` 
+  `ec2:DescribeInstanceAttribute` 
+  `ec2:DescribeInstances` 
+  `ec2:DescribeNetworkAcls` 
+  `ec2:DescribeRouteTables` 
+  `ec2:DescribeSecurityGroups` 
+  `ec2:DescribeSubnets` 
+  `ec2:DescribeVpcEndpoints` 
+  `ec2:DescribeVpcs` 
+  `iam:GetInstanceProfile` 
+  `iam:GetRole` 
+  `iam:SimulateCustomPolicy` 
+  `iam:SimulatePrincipalPolicy` 

 **文件步驟** 

aws：executeScript：檢閱 Amazon EC2 執行個體是否符合向 Amazon ECS 叢集註冊所需的先決條件。

# `AWSSupport-TroubleshootECSTaskFailedToStart`
<a name="automation-aws-troubleshootecstaskfailedtostart"></a>

 **Description** 

 `AWSSupport-TroubleshootECSTaskFailedToStart` Runbook 可協助您針對 Amazon ECS 叢集中的 Amazon Elastic Container Service (Amazon ECS) 任務無法啟動的原因進行故障診斷。您必須在與 AWS 區域 任務無法啟動的相同 中執行此 Runbook。Runbook 會分析下列可能阻止任務啟動的常見問題：
+ 與已設定容器登錄檔的網路連線
+ 缺少任務執行角色所需的 IAM 許可
+ VPC 端點連線
+ 安全群組規則組態
+ AWS Secrets Manager 秘密參考
+ 記錄組態

**注意**  
如果分析判斷需要測試網路連線，則會在您的帳戶中建立 Lambda 函數和必要的 IAM 角色。這些資源用於模擬失敗任務的網路連線。自動化會在不再需要這些資源時將其刪除。不過，如果自動化無法刪除資源，您必須手動執行此操作。  
提供 Lambda IAM 角色時，自動化將使用它，而不是建立新的角色。提供的 Lambda IAM 角色必須包含 AWS 受管政策，`AWSLambdaVPCAccessExecutionRole`並具有允許 Lambda 服務主體 擔任的信任政策`lambda.amazonaws.com`。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootECSTaskFailedToStart) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ LambdaRoleArn

  類型：字串

  描述：（選用） 允許函數 AWS Lambda 存取所需 AWS 服務和資源的 IAM 角色 ARN。如果未指定角色，則此 Systems Manager Automation 會在您的帳戶中為 Lambda 建立一個 `NetworkToolSSMRunbookExecution<ExecutionId>` IAM 角色，其名稱包含 受管政策：`AWSLambdaVPCAccessExecutionRole`。
+ ClusterName

  類型：字串

  描述：（必要） 任務無法啟動的 Amazon ECS 叢集名稱。
+ CloudwatchRetentionPeriod

  類型：整數

  描述：（選用） 將 Lambda 函數日誌儲存在 Amazon CloudWatch Logs 中的保留期間，以天為單位。只有在分析判斷需要測試網路連線時，才需要這樣做。

  有效值：1 \$1 3 \$1 5 \$1 7 \$1 14 \$1 30 \$1 60 \$1 90

  預設：30
+ TaskId

  類型：字串

  描述：（必要） 失敗任務的 ID。使用最近失敗的任務。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+ `cloudtrail:LookupEvents`
+ `ec2:DeleteNetworkInterface`
+ `ec2:DescribeDhcpOptions`
+ `ec2:DescribeInstances`
+ `ec2:DescribeInstanceAttribute`
+ `ec2:DescribeIamInstanceProfileAssociations`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeNetworkAcls`
+ `ec2:DescribeNetworkInterfaces`
+ `ec2:DescribeRouteTables`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeVpcEndpoints`
+ `ec2:DescribeVpcs`
+ `ec2:DescribeVpcAttribute`
+ `elasticfilesystem:DescribeFileSystems`
+ `elasticfilesystem:DescribeMountTargets`
+ `elasticfilesystem:DescribeMountTargetSecurityGroups`
+ `elasticfilesystem:DescribeFileSystemPolicy`
+ `ecr:DescribeImages`
+ `ecr:GetRepositoryPolicy`
+ `ecs:DescribeContainerInstances`
+ `ecs:DescribeServices`
+ `ecs:DescribeTaskDefinition`
+ `ecs:DescribeTasks`
+ `iam:AttachRolePolicy`
+ `iam:CreateRole`
+ `iam:DeleteRole`
+ `iam:DetachRolePolicy`
+ `iam:GetInstanceProfile`
+ `iam:GetRole`
+ `iam:ListRoles`
+ `iam:ListUsers`
+ `iam:PassRole`
+ `iam:SimulateCustomPolicy`
+ `iam:SimulatePrincipalPolicy`
+ `kms:DescribeKey`
+ `lambda:CreateFunction`
+ `lambda:DeleteFunction`
+ `lambda:GetFunctionConfiguration`
+ `lambda:InvokeFunction`
+ `lambda:TagResource`
+ `logs:DescribeLogGroups`
+ `logs:PutRetentionPolicy`
+ `secretsmanager:DescribeSecret`
+ `ssm:DescribeParameters`
+ `sts:GetCallerIdentity`

`LambdaRoleArn` 提供 時，自動化不需要建立角色，而且可以排除下列許可：
+  `iam:CreateRole` 
+  `iam:DeleteRole` 
+  `iam:AttachRolePolicy` 
+  `iam:DetachRolePolicy` 

 **文件步驟** 
+  `aws:executeScript` - 驗證啟動自動化的使用者或角色是否具有必要的 IAM 許可。如果您沒有足夠的許可來使用此 Runbook，則缺少的必要許可會包含在自動化的輸出中。
+ `aws:branch` - 根據您是否具有 Runbook 所有必要動作的許可進行分支。
+ `aws:executeScript` - 如果分析判斷需要測試網路連線，請在 VPC 中建立 Lambda 函數。
+ `aws:branch` - 根據上一個步驟的結果進行分支。
+ `aws:executeScript` - 分析啟動任務失敗的可能原因。
+ `aws:executeScript` - 刪除此自動化建立的資源。
+ `aws:executeScript` - 格式化自動化的輸出，將分析結果傳回至主控台。在自動化完成之前，您可以在此步驟之後檢閱分析。
+ `aws:branch` - 根據 Lambda 函數和相關資源是否已建立且需要刪除進行分支。
+ `aws:sleep` - 休眠 30 分鐘，以便刪除 Lambda 函數的彈性網路界面。
+ `aws:executeScript` - 刪除 Lambda 函數網路界面。
+ `aws:executeScript` - 格式化 Lambda 函數網路界面刪除步驟的輸出。

# `AWS-UpdateAmazonECSAgent`
<a name="automation-aws-update-ecs-agent"></a>

 **Description** 

 `AWS-UpdateAmazonECSAgent` Runbook 會在您指定的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上更新 Amazon Elastic Container Service (Amazon ECS) 代理程式。此 Runbook 僅支援 Amazon Linux 和 Amazon Linux 2 執行個體。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-UpdateAmazonECSAgent) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ ClusterARN

  類型：StringList

  描述：（必要） 容器執行個體註冊的 Amazon ECS 叢集的 Amazon Resource Name (ARN)。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `ssm:StartAutomationExecution` 
+  `ssm:GetAutomationExecution` 
+  `ssm:GetCommandInvocation` 
+  `ec2:DescribeImages` 
+  `ec2:DescribeInstanceAttribute` 
+  `ec2:DescribeImage` 
+  `ec2:DescribeInstance` 
+  `ec2:DescribeInstanceAttribute` 
+  `ecs:DescribeContainerInstances` 
+  `ecs:DescribeClusters` 
+  `ecs:ListContainerInstances` 
+  `ecs:UpdateContainerAgent` 

 **文件步驟** 

 `aws:executeScript` - 更新您在`ClusterARN`參數中指定的 Amazon ECS 叢集上的 Amazon ECS 代理程式。

 **輸出** 

UpdateAmazonECSAgent.UpdatedContainers - 成功更新 Amazon ECS 代理程式的執行個體 ID。

UpdateAmazonECSAgent.FailedContainers - 更新 Amazon ECS 代理程式失敗的執行個體 ID。

UpdateAmazonECSAgent.InProgressContainers - 正在更新 Amazon ECS 代理程式的執行個體 ID。