

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

# Lambda
<a name="automation-ref-lam"></a>

 AWS Systems Manager 自動化為 提供預先定義的 Runbook AWS Lambda。如需有關執行手冊的詳細資訊，請參閱 [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**
+ [`AWSConfigRemediation-ConfigureLambdaFunctionXRayTracing`](automation-aws-config-lambda-xray.md)
+ [`AWSConfigRemediation-DeleteLambdaFunction`](automation-aws-delete-lambda.md)
+ [`AWSConfigRemediation-EncryptLambdaEnvironmentVariablesWithCMK`](automation-aws-encrypt-lambda-variables.md)
+ [`AWSConfigRemediation-MoveLambdaToVPC`](automation-aws-lambda-to-vpc.md)
+ [`AWSSupport-RemediateLambdaS3Event`](automation-awssupport-remediatelambdas3event.md)
+ [`AWSSupport-TroubleshootLambdaInternetAccess`](AWSSupport-TroubleshootLambdaInternetAccess.md)
+ [`AWSSupport-TroubleshootLambdaS3Event`](automation-aws-troubleshootlambdas3event.md)

# `AWSConfigRemediation-ConfigureLambdaFunctionXRayTracing`
<a name="automation-aws-config-lambda-xray"></a>

 **Description** 

 `AWSConfigRemediation-ConfigureLambdaFunctionXRayTracing` Runbook 會在您在 `FunctionName` 參數中指定的 AWS Lambda 函數上啟用 AWS X-Ray 即時追蹤。

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

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（必要） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。
+ FunctionName

  類型：字串

  描述：（必要） 要啟用追蹤的 Lambda 函數名稱或 ARN。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `lambda:UpdateFunctionConfiguration` 
+  `ssm:StartAutomationExecution` 
+  `ssm:GetAutomationExecution` 

 **文件步驟** 
+  `aws:executeAwsApi` - 在`FunctionName`參數中指定的 Lambda 函數上啟用 X-Ray 追蹤。
+  `aws:assertAwsResourceProperty` - 驗證已在 Lambda 函數上啟用 X-Ray 追蹤。

 **輸出** 

 UpdateLambdaConfig.UpdateFunctionConfigurationResponse - 來自 `UpdateFunctionConfiguration` API 呼叫的回應。

# `AWSConfigRemediation-DeleteLambdaFunction`
<a name="automation-aws-delete-lambda"></a>

 **Description** 

 `AWSConfigRemediation-DeleteLambdaFunction` Runbook 會刪除您指定的 AWS Lambda 函數。

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

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（必要） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。
+ LambdaFunctionName

  類型：字串

  描述：（必要） 您要刪除的 Lambda 函數名稱。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `ssm:StartAutomationExecution` 
+  `ssm:GetAutomationExecution` 
+  `lambda:DeleteFunction` 
+  `lambda:GetFunction` 

 **文件步驟** 
+  `aws:executeAwsApi` - 刪除 `LambdaFunctionName` 參數中指定的 Lambda 函數。
+  `aws:executeScript` - 驗證 Lambda 函數已刪除。

# `AWSConfigRemediation-EncryptLambdaEnvironmentVariablesWithCMK`
<a name="automation-aws-encrypt-lambda-variables"></a>

 **Description** 

 `AWSConfigRemediation-EncryptLambdaEnvironmentVariablesWithCMK` Runbook 會靜態加密您使用 AWS Lambda () 客戶受管金鑰所指定 AWS Key Management Service (Lambda AWS KMS) 函數的環境變數。此 Runbook 應僅用作基準，以確保 Lambda 函數的環境變數根據最低建議的安全最佳實務進行加密。我們建議使用不同的客戶受管金鑰來加密多個函數。

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

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（必要） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。
+ FunctionName

  類型：字串

  描述：（必要） 您要加密其環境變數的 Lambda 函數名稱或 ARN。
+ KMSKeyArn

  類型：字串

  描述：（必要） 您要用來加密 Lambda 函數環境變數 AWS KMS 的客戶受管金鑰 ARN。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `ssm:StartAutomationExecution` 
+  `ssm:GetAutomationExecution` 
+  `lambda:GetFunctionConfiguration ` 
+  `lambda:UpdateFunctionConfiguration` 

 **文件步驟** 
+  `aws:waitForAwsResourceProperty` - 等待 `LastUpdateStatus` 屬性為 `Successful` 。
+  `aws:executeAwsApi` - 使用您在 `FunctionName` 參數中指定的 AWS KMS 客戶受管金鑰，加密您在 `KMSKeyArn` 參數中指定的 Lambda 函數的環境變數。
+  `aws:assertAwsResourceProperty` - 確認您的 Lambda 函數的環境變數已啟用加密。

# `AWSConfigRemediation-MoveLambdaToVPC`
<a name="automation-aws-lambda-to-vpc"></a>

 **Description** 

 `AWSConfigRemediation-MoveLambdaToVPC` Runbook 會將 AWS Lambda (Lambda) 函數移至 Amazon Virtual Private Cloud (Amazon VPC)。

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

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（必要） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。
+ FunctionName

  類型：字串

  描述：（必要） 要移至 Amazon VPC 的 Lambda 函數名稱。
+ SecurityGroupIds

  類型：字串

  描述：（必要） 您要指派給與 Lambda 函數相關聯的彈性網路介面 (ENIs) 的安全群組 IDs。
+ SubnetIds

  類型：字串

  描述：（必要） 您要建立與 Lambda 函數相關聯的彈性網路界面 (ENIs) 的子網路 IDs。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `ssm:StartAutomationExecution` 
+  `ssm:GetAutomationExecution` 
+  `lambda:GetFunction` 
+  `lambda:GetFunctionConfiguration` 
+  `lambda:UpdateFunctionConfiguration` 

 **文件步驟** 
+  `aws:executeAwsApi` - 更新您在 `FunctionName` 參數中指定的 Lambda 函數的 Amazon VPC 組態。
+  `aws:waitForAwsResourceProperty` - 等待 Lambda 函數`LastUpdateStatus`為 `successful` 。
+  `aws:executeScript` - 驗證 Lambda 函數 Amazon VPC 組態已成功更新。

# `AWSSupport-RemediateLambdaS3Event`
<a name="automation-awssupport-remediatelambdas3event"></a>

 **Description** 

 `AWSSupport-TroubleshootLambdaS3Event` Runbook 為 AWS 知識中心文章中概述的程序提供自動化解決方案[。為什麼我的 Amazon S3 事件通知不會觸發我的 Lambda 函數？](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-configure-s3-event-notification/)以及[為什麼我在建立 Amazon S3 事件通知以觸發我的 Lambda 函數時收到錯誤「無法驗證下列目的地組態」？](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-invoke-error-s3-bucket-permission/) 此 Runbook 可協助您識別並修復 Amazon Simple Storage Service (Amazon S3) 事件通知為何無法觸發您指定的 AWS Lambda 函數。如果 Runbook 輸出建議驗證和設定 Lambda 函數並行，請參閱[非同步調用](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html)和[AWS Lambda 函數擴展](https://docs.aws.amazon.com/lambda/latest/dg/scaling.html)。

**注意**  
「無法驗證下列目的地組態」錯誤也可能因為不正確的 Amazon Simple Notification Service (Amazon SNS) 和 Amazon Simple Queue Service (Amazon SQS) Amazon S3 事件組態而發生。此 Runbook 只會檢查 Lambda 函數組態。如果使用 Runbook 之後，您仍然收到「無法驗證下列目的地組態」錯誤，請檢閱任何現有的 Amazon SNS 和 Amazon SQS Amazon S3 事件組態。

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

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

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

  類型：字串

  描述：（必要） Lambda 函數的 ARN。
+ S3BucketName

  類型：字串

  描述：（必要） 事件通知觸發 Lambda 函數的 Amazon S3 儲存貯體名稱。
+ Action

  類型：字串

  有效值：故障診斷 \$1 修復

   描述：（必要） 您希望 Runbook 執行的動作。`Troubleshoot` 選項有助於識別任何問題，但不執行任何變動動作來解決問題。`Remediate` 選項有助於識別和嘗試為您解決問題。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `ssm:StartAutomationExecution` 
+  `ssm:GetDocument` 
+  `ssm:ListDocuments` 
+  `ssm:DescribeAutomationExecutions` 
+  `ssm:DescribeAutomationStepExecutions` 
+  `ssm:GetAutomationExecution` 
+  `lambda:GetPolicy` 
+  `lambda:AddPermission` 
+  `s3:GetBucketNotification` 

 **文件步驟** 
+  `aws:branch` - 根據為 `Action` 參數指定的輸入進行分支。

   如果指定的值為 `Troubleshoot` ：
  +  `aws:executeAutomation` - 執行 `AWSSupport-TroubleshootLambdaS3Event` Runbook。
  +  `aws:executeAwsApi` - 檢查在上一個步驟中執行的 `AWSSupport-TroubleshootLambdaS3Event` Runbook 輸出。

   如果指定的值為 `Remediate` ：
  +  `aws:executeScript` - 執行指令碼以修復[為什麼我的 Amazon S3 事件通知不會觸發我的 Lambda 函數中概述的問題？](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-configure-s3-event-notification/)以及[為什麼我在建立 Amazon S3 事件通知以觸發我的 Lambda 函數時收到錯誤「無法驗證下列目的地組態」？](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-invoke-error-s3-bucket-permission/) 知識中心文章。

 **輸出** 

checkoutput.Output

remediatelambdas3event.Output

# `AWSSupport-TroubleshootLambdaInternetAccess`
<a name="AWSSupport-TroubleshootLambdaInternetAccess"></a>

 **Description** 

 `AWSSupport-TroubleshootLambdaInternetAccess` Runbook 可協助您疑難排解在 Amazon Virtual Private Cloud (Amazon VPC) 中啟動之 AWS Lambda 函數的網際網路存取問題。會檢閱子網路路由、安全群組規則和網路存取控制清單 (ACL) 規則等資源，以確認允許傳出網際網路存取。

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

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

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

  類型：字串

  描述：（必要） 您要疑難排解網際網路存取的 Lambda 函數名稱。
+ destinationIp

  類型：字串

  描述：（必要） 您要建立傳出連線的目的地 IP 地址。
+ destinationPort

  類型：字串

  預設：443

  描述：（選用） 您要建立傳出連線的目的地連接埠。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `lambda:GetFunction` 
+  `ec2:DescribeRouteTables` 
+  `ec2:DescribeNatGateways` 
+  `ec2:DescribeSecurityGroups` 
+  `ec2:DescribeNetworkAcls` 

 **文件步驟** 
+  `aws:executeScript` - 驗證啟動 Lambda 函數之 VPC 中各種資源的組態。
+  `aws:branch` - 根據指定的 Lambda 函數是否在 VPC 中進行分支。
+  `aws:executeScript` - 檢閱啟動 Lambda 函數之子網路的路由表路由，並驗證網路位址轉譯 (NAT) 閘道和網際網路閘道的路由是否存在。確認 Lambda 函數不在公有子網路中。
+  `aws:executeScript` - 驗證與 Lambda 函數相關聯的安全群組，允許根據為 `destinationIp`和 `destinationPort` 參數指定的值進行傳出網際網路存取。
+  `aws:executeScript` - 驗證與 Lambda 函數子網路相關聯的 ACL 規則，且 NAT 閘道允許根據 `destinationIp`和 `destinationPort` 參數指定的值進行傳出網際網路存取。

 **輸出** 

checkVpc.vpc - 啟動 Lambda 函數的 VPC ID。

checkVpc.subnet - 啟動 Lambda 函數的子網路 IDs。

checkVpc.securityGroups - 與 Lambda 函數相關聯的安全群組。

 checkNACL.NACL - 具有資源名稱的分析訊息。 `LambdaIp`是指 Lambda 函數彈性網路界面的私有 IP 地址。`LambdaIpRules` 物件只會針對具有 NAT 閘道路由的子網路產生。下列內容是輸出的範例。

```
{
   "subnet-1234567890":{
      "NACL":"acl-1234567890",
      "destinationIp_Egress":"Allowed",
      "destinationIp_Ingress":"notAllowed",
      "Analysis":"This NACL has an allow rule for Egress traffic but there is no Ingress rule. Please allow the destination IP / destionation port in Ingress rule",
      "LambdaIpRules":{
         "{LambdaIp}":{
            "Egress":"notAllowed",
            "Ingress":"notAllowed",
            "Analysis":"This is a NAT subnet NACL. It does not have ingress or egress rule allowed in it for Lambda's corresponding private ip {LambdaIp} Please allow this IP in your egress and ingress NACL rules"
         }
      }
   },
   "subnet-0987654321":{
      "NACL":"acl-0987654321",
      "destinationIp_Egress":"Allowed",
      "destinationIp_Ingress":"notAllowed",
      "Analysis":"This NACL has an allow rule for Egress traffic but there is no Ingress rule. Please allow the destination IP / destionation port in Ingress rule"
   }
}
```

checkSecurityGroups.secgrps - 分析與您的 Lambda 函數相關聯的安全群組。下列內容是輸出的範例。

```
{
   "sg-123456789":{
      "Status":"Allowed",
      "Analysis":"This security group has allowed destintion IP and port in its outbuond rule."
   }
}
```

checkSubnet.subnets - 分析與 Lambda 函數相關聯的 VPC 中的子網路。下列內容是輸出的範例。

```
{
   "subnet-0c4ee6cdexample15":{
      "Route":{
         "DestinationCidrBlock":"8.8.8.0/26",
         "NatGatewayId":"nat-00f0example69fdec",
         "Origin":"CreateRoute",
         "State":"active"
      },
      "Analysis":"This Route Table has an active NAT gateway path. Also, The NAT gateway is launched in public subnet",
      "RouteTable":"rtb-0b1fexample16961b"
   }
}
```

# `AWSSupport-TroubleshootLambdaS3Event`
<a name="automation-aws-troubleshootlambdas3event"></a>

 **Description** 

 `AWSSupport-TroubleshootLambdaS3Event` 執行手冊為 AWS 知識中心文章中概述的程序提供自動化解決方案[。為什麼我的 Amazon S3 事件通知不會觸發我的 Lambda 函數？](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-configure-s3-event-notification/)以及[為什麼我在建立 Amazon S3 事件通知以觸發我的 Lambda 函數時收到錯誤「無法驗證下列目的地組態」？ ](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-invoke-error-s3-bucket-permission/) 此 Runbook 可協助您識別 Amazon Simple Storage Service (Amazon S3) 事件通知為何無法觸發您指定的 AWS Lambda 函數。如果 Runbook 輸出建議驗證和設定 Lambda 函數並行，請參閱[非同步調用](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html)和[AWS Lambda 函數擴展](https://docs.aws.amazon.com/lambda/latest/dg/scaling.html)。

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

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

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

  類型：字串

  描述：（必要） Amazon S3 事件通知觸發的 Lambda 函數 ARN。
+ S3BucketName

  類型：字串

  描述：（必要） 事件通知觸發 Lambda 函數的 Amazon S3 儲存貯體名稱。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `lambda:GetPolicy` 
+  `s3:GetBucketNotification` 

 **文件步驟** 
+  `aws:executeScript` - 執行指令碼來驗證 Amazon S3 事件通知的組態設定。驗證 Lambda 函數的資源型 IAM 政策，並產生 AWS Command Line Interface (AWS CLI) 命令，以在政策缺少所需的許可時新增所需的許可。驗證屬於相同 S3 儲存貯體事件通知一部分的其他 Lambda 函數資源政策，並在缺少必要許可時產生 AWS CLI 命令做為輸出。

 **輸出** 

lambdaS3Event.output 