

Amazon CodeCatalyst 不再向新客戶開放。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[如何從 CodeCatalyst 遷移](migration.md)。

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

# 使用工作流程叫用 Lambda 函數
<a name="lam-invoke-action"></a>

本節說明如何使用 CodeCatalyst 工作流程叫用 AWS Lambda 函數。若要達成此目的，您必須將**AWS Lambda 調用**動作新增至工作流程。**AWS Lambda 叫用**動作會叫用您指定的 Lambda 函數。

除了叫用函數之外，**AWS Lambda 叫用**動作也會將從 Lambda 函數收到的回應承載中的每個最上層金鑰轉換為[工作流程輸出變數](workflows-working-with-variables.md)。然後，您可以在後續工作流程動作中參考這些變數。如果您不希望將所有最上層金鑰轉換為變數，您可以使用篩選條件來指定確切的金鑰。如需詳細資訊，請參閱 中的[ResponseFilters](lam-invoke-action-ref.md#lam.invoke.response.filters)屬性描述[「AWS Lambda 叫用」動作 YAML](lam-invoke-action-ref.md)。

**Topics**
+ [何時使用此動作](#lam-invoke-action-when-to-use)
+ [「AWS Lambda 調用」動作使用的執行期映像](#lam-invoke-action-runtime)
+ [範例：叫用 Lambda 函數](lam-invoke-action-example-workflow.md)
+ [新增「AWS Lambda 調用」動作](lam-invoke-action-add.md)
+ [「AWS Lambda 叫用」變數](lam-invoke-action-variables.md)
+ [「AWS Lambda 叫用」動作 YAML](lam-invoke-action-ref.md)

## 何時使用此動作
<a name="lam-invoke-action-when-to-use"></a>

如果您想要在 Lambda 函數中封裝和執行的工作流程中新增功能，請使用此動作。

例如，您可能希望工作流程先將`Build started`通知傳送至 Slack 頻道，再開始建置您的應用程式。在這種情況下，您的工作流程將包含**AWS Lambda 調用** Lambda 以傳送 Slack 通知的調用動作，以及建置您應用程式的[建置動作](build-add-action.md)。

另一個範例是，您可能希望工作流程在部署之前對您的應用程式執行漏洞掃描。在這種情況下，您會使用建置動作來建置應用程式、**AWS Lambda 叫用**動作來叫用 Lambda 來掃描漏洞，以及使用部署動作來部署掃描的應用程式。

## 「AWS Lambda 調用」動作使用的執行期映像
<a name="lam-invoke-action-runtime"></a>

**AWS Lambda 調用**動作會在 [2022 年 11 月的映像](build-images.md#build.previous-image)上執行。如需詳細資訊，請參閱[作用中映像](build-images.md#build-curated-images)。

# 範例：叫用 Lambda 函數
<a name="lam-invoke-action-example-workflow"></a>

下列範例工作流程包含**AWS Lambda 調用**動作，以及部署動作。工作流程會傳送 Slack 通知，指出部署已開始，然後使用 AWS CloudFormation 範本將應用程式部署至 。工作流程包含下列依順序執行的建置區塊：
+ **觸發**條件 – 當您將變更推送至來源儲存庫時，此觸發條件會自動啟動工作流程執行。關於觸發條件的詳細資訊，請參閱 [使用觸發程序自動啟動工作流程執行](workflows-add-trigger.md)。
+ **AWS Lambda 叫用**動作 (`LambdaNotify`) – 在觸發時，此動作會在指定的 AWS 帳戶和區域 ( `my-aws-account`和 ) 中叫用 `Notify-Start` Lambda 函數`us-west-2`。叫用時，Lambda 函數會傳送 Slack 通知，指出已開始部署。
+ **部署 CloudFormation 堆疊**動作 (`Deploy`) – 完成**AWS Lambda 調用**動作時，**部署 CloudFormation 堆疊**動作會執行範本 (`cfn-template.yml`) 來部署應用程式堆疊。如需**部署 CloudFormation 堆疊**動作的詳細資訊，請參閱 [部署 CloudFormation 堆疊](deploy-action-cfn.md)。

**注意**  
下列工作流程範例僅供說明之用，如果沒有其他組態，將無法運作。

**注意**  
在接下來的 YAML 程式碼中，您可以視需要省略這些`Connections:`區段。如果您省略這些區段，您必須確保環境中**預設 IAM 角色**欄位中指定的角色包含**AWS Lambda 叫用**和**部署 CloudFormation 堆疊**動作所需的許可和信任政策。如需使用預設 IAM 角色設定環境的詳細資訊，請參閱 [建立環境](deploy-environments-creating-environment.md)。如需**AWS Lambda 叫用**和**部署 CloudFormation 堆疊**動作所需的許可和信任政策的詳細資訊，請參閱 [「AWS Lambda 叫用」動作 YAML](lam-invoke-action-ref.md)和 中的 `Role` 屬性描述[「部署 CloudFormation 堆疊」動作 YAML](deploy-action-ref-cfn.md)。

```
Name: codecatalyst-lamda-invoke-workflow
SchemaVersion: 1.0

Triggers:
  - Type: PUSH
    Branches:
      - main
Actions:
  LambdaNotify:
    Identifier: aws/lambda-invoke@v1
    Environment:
      Name: my-production-environment
      Connections:
        - Name: my-aws-account
          Role: codecatalyst-lambda-invoke-role
    Inputs:
      Sources:
        - WorkflowSource
    Configuration:
      Function: Notify-Start
      AWSRegion: us-west-2
        
  Deploy:
    Identifier: aws/cfn-deploy@v1
    Environment:
      Name: my-production-environment
      Connections:
        - Name: my-aws-account
          Role: codecatalyst-deploy-role
    Inputs:
      Sources:
        - WorkflowSource
    Configuration:
      name: my-application-stack
      region: us-west-2
      role-arn: arn:aws:iam::111122223333:role/StackRole
      template: ./cfn-template.yml
      capabilities: CAPABILITY_IAM,CAPABILITY_AUTO_EXPAND
```

# 新增「AWS Lambda 調用」動作
<a name="lam-invoke-action-add"></a>

 使用下列指示將**AWS Lambda 調用**動作新增至您的工作流程。

**先決條件**  
開始之前，請確定您的 AWS Lambda 函數和相關聯的 Lambda 執行角色已準備就緒且可供使用 AWS。如需詳細資訊，請參閱《 *AWS Lambda 開發人員指南*》中的 [Lambda 執行角色](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)主題。

------
#### [ Visual ]

**使用視覺化編輯器新增「AWS Lambda 調用」動作**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇**視覺化**。

1. 在左上角，選擇 **\$1 動作**以開啟動作目錄。

1. 從下拉式清單中，選擇 **Amazon CodeCatalyst**。

1. 搜尋**AWS Lambda 叫用**動作，並執行下列其中一項操作：
   + 選擇加號 (**\$1**) 將動作新增至工作流程圖表，並開啟其組態窗格。

     或
   + 選擇**AWS Lambda 叫用**。動作詳細資訊對話方塊隨即出現。在此對話方塊中：
     + （選用） 選擇**檢視來源**[以檢視動作的原始程式碼](workflows-view-source.md#workflows-view-source.title)。
     + 選擇**新增至工作流程**，將動作新增至工作流程圖表，然後開啟其組態窗格。

1. 在**輸入**、**組態**和**輸出**索引標籤中，根據您的需求完成欄位。如需每個欄位的說明，請參閱 [「AWS Lambda 叫用」動作 YAML](lam-invoke-action-ref.md)。此參考提供在 YAML 和視覺化編輯器中顯示的每個欄位 （和對應的 YAML 屬性值） 的詳細資訊。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

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

**使用 YAML 編輯器新增「AWS Lambda 調用」動作**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇 **YAML**。

1. 在左上角，選擇 **\$1 動作**以開啟動作目錄。

1. 從下拉式清單中，選擇 **Amazon CodeCatalyst**。

1. 搜尋**AWS Lambda 叫用**動作，並執行下列其中一項操作：
   + 選擇加號 (**\$1**) 將動作新增至工作流程圖表，並開啟其組態窗格。

     或
   + 選擇**AWS Lambda 叫用**。動作詳細資訊對話方塊隨即出現。在此對話方塊中：
     + （選用） 選擇**檢視來源**[以檢視動作的原始程式碼](workflows-view-source.md#workflows-view-source.title)。
     + 選擇**新增至工作流程**，將動作新增至工作流程圖表，然後開啟其組態窗格。

1. 根據您的需求修改 YAML 程式碼中的屬性。中提供了每個可用屬性的說明[「AWS Lambda 叫用」動作 YAML](lam-invoke-action-ref.md)。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------

# 「AWS Lambda 叫用」變數
<a name="lam-invoke-action-variables"></a>

根據預設，**AWS Lambda 叫用**動作會在 Lambda 回應承載中的每個頂層金鑰產生一個變數。

例如，如果回應承載如下所示：

```
responsePayload = {
  "name": "Saanvi",
  "location": "Seattle",
  "department": {
    "company": "Amazon",
    "team": "AWS"
  }
}
```

...然後，動作會產生下列變數。


| 金鑰 | 值 | 
| --- | --- | 
|  name  |  Saanvi  | 
|  location  |  西雅圖  | 
|  department  |  \$1"company"： "Amazon"、"team"： "AWS"\$1  | 

**注意**  
您可以使用 `ResponseFilters` YAML 屬性變更產生的變數。如需詳細資訊，請參閱《[ResponseFilters](lam-invoke-action-ref.md#lam.invoke.response.filters)》中的 [「AWS Lambda 叫用」動作 YAML](lam-invoke-action-ref.md)。

「AWS Lambda 叫用」動作在執行時間產生和設定的變數稱為*預先定義的變數*。

如需在工作流程中參考這些變數的資訊，請參閱 [使用預先定義的變數](workflows-using-predefined-variables.md)。

# 「AWS Lambda 叫用」動作 YAML
<a name="lam-invoke-action-ref"></a>

以下是**AWS Lambda 叫用**動作的 YAML 定義。若要了解如何使用此動作，請參閱 [使用工作流程叫用 Lambda 函數](lam-invoke-action.md)。

此動作定義以區段的形式存在於更廣泛的工作流程定義檔案中。如需有關此檔案的詳細資訊，請參閱[工作流程 YAML 定義](workflow-reference.md)。

**注意**  
下列大多數 YAML 屬性在視覺化編輯器中都有對應的 UI 元素。若要查詢 UI 元素，請使用 **Ctrl\$1F**。 元素會與其相關聯的 YAML 屬性一起列出。

```
# The workflow definition starts here.
# See 最上層屬性 for details.
        
Name: MyWorkflow
SchemaVersion: 1.0 
Actions:

# The action definition starts here.   
  LambdaInvoke\$1nn: 
    Identifier: aws/lambda-invoke@v1
    DependsOn:
      - dependent-action
    Compute:  
      Type: EC2 | Lambda
      Fleet: fleet-name
    Timeout: timeout-minutes
    Inputs:
      # Specify a source or an artifact, but not both.
      Sources:
        - source-name-1
      Artifacts:
        - request-payload
      Variables:
        - Name: variable-name-1
          Value: variable-value-1
        - Name: variable-name-2
          Value: variable-value-2
    Environment:
      Name: environment-name
      Connections:
        - Name: account-connection-name
          Role: iam-role-name
    Configuration:
      Function: my-function|function-arn
      AWSRegion: us-west-2
      # Specify RequestPayload or RequestPayloadFile, but not both.
      RequestPayload: '{"firstname": "Li", lastname: "Jean", "company": "ExampleCo", "team": "Development"}'
      RequestPayloadFile: my/request-payload.json
      ContinueOnError: true|false
      LogType: Tail|None
      ResponseFilters: '{"name": ".name", "company": ".department.company"}'
    Outputs:
      Artifacts:
        - Name: lambda_artifacts
          Files: 
            - "lambda-response.json"
```

## LambdaInvoke
<a name="lam.invoke.name"></a>

(必要)

指定動作的名稱。工作流程中的所有動作名稱都必須是唯一的。動作名稱僅限於英數字元 (a-z、A-Z、0-9)、連字號 (-) 和底線 (\$1)。不允許空格。您不能使用引號在動作名稱中啟用特殊字元和空格。

預設：`Lambda_Invoke_Action_Workflow_nn`。

對應的 UI：組態索引標籤/**動作名稱**

## Identifier
<a name="lam.invoke.identifier"></a>

(*LambdaInvoke*/**Identifier**)

(必要)

識別 動作。除非您想要變更版本，否則請勿變更此屬性。如需詳細資訊，請參閱[指定要使用的動作版本](workflows-action-versions.md)。

預設：`aws/lambda-invoke@v1`。

對應的 UI：工作流程圖表/LambdaInvoke\$1nn/**aws/lambda-invoke@v1** 標籤

## DependsOn
<a name="lam.invoke.dependson"></a>

(*LambdaInvoke*/**DependsOn**)

(選用)

指定必須成功執行的動作、動作群組或閘道，才能執行此動作。

如需 'depends on' 功能的詳細資訊，請參閱 [定序動作](workflows-depends-on.md)。

對應的 UI：輸入索引標籤/**取決於 - 選用**

## Compute
<a name="lam.invoke.computename"></a>

(*LambdaInvoke*/**Compute**)

(選用)

用來執行工作流程動作的運算引擎。您可以在工作流程層級或動作層級指定運算，但不能同時指定兩者。在工作流程層級指定時，運算組態會套用至工作流程中定義的所有動作。在工作流程層級，您也可以在同一個執行個體上執行多個動作。如需詳細資訊，請參閱[跨動作共用運算](compute-sharing.md)。

對應的 UI：*無*

## Type
<a name="lam.invoke.computetype"></a>

(*LambdaInvoke*/Compute/**Type**)

（如果[Compute](#lam.invoke.computename)包含 則為必要）

運算引擎的類型。您可以使用下列其中一個值：
+ **EC2** （視覺化編輯器） 或 `EC2`(YAML 編輯器）

  最佳化動作執行期間的彈性。
+ **Lambda** （視覺化編輯器） 或 `Lambda`(YAML 編輯器）

  最佳化的動作啟動速度。

如需運算類型的更多相關資訊，請參閱[運算類型](workflows-working-compute.md#compute.types)。

對應的 UI：組態索引標籤/**運算類型**

## Fleet
<a name="lam.invoke.computefleet"></a>

(*LambdaInvoke*/Compute/**Fleet**)

(選用)

指定將執行工作流程或工作流程動作的機器或機群。使用隨需機群時，當動作開始時，工作流程會佈建所需的資源，並在動作完成時銷毀機器。隨需機群的範例：`Linux.x86-64.Large`、`Linux.x86-64.XLarge`。如需隨需機群的詳細資訊，請參閱 [隨需機群屬性](workflows-working-compute.md#compute.on-demand)。

使用佈建機群，您可以設定一組專用機器來執行工作流程動作。這些機器保持閒置狀態，準備好立即處理動作。如需佈建機群的詳細資訊，請參閱 [佈建的機群屬性](workflows-working-compute.md#compute.provisioned-fleets)。

如果省略 `Fleet` ，則預設值為 `Linux.x86-64.Large`。

對應的 UI：組態索引標籤/**運算機群**

## Timeout
<a name="lam.invoke.timeout"></a>

(*LambdaInvoke*/**Timeout**)

(必要)

指定動作在 CodeCatalyst 結束動作之前可執行的時間，以分鐘為單位 (YAML 編輯器） 或小時和分鐘為單位。最小值為 5 分鐘，最大值如 中所述[CodeCatalyst 中工作流程的配額](workflows-quotas.md)。預設逾時與最大逾時相同。

對應的 UI：組態索引標籤/**逾時 - 選用 **

## Inputs
<a name="lam.invoke.inputs"></a>

(*LambdaInvoke*/**Inputs**)

(必要)

`Inputs` 區段定義在工作流程執行期間**AWS Lambda 叫用**動作所需的資料。

**注意**  
每個**AWS Lambda 叫用**動作只允許一個輸入 （來源或成品）。變數不會計入此總計。

對應的 UI：**輸入**索引標籤

## Sources
<a name="lam.invoke.inputs.sources"></a>

(*LambdaInvoke*/Inputs/**Sources**)

（如果提供 [RequestPayloadFile](#lam.invoke.request.payload.file) 則為必要）

如果您想要將請求承載 JSON 檔案傳遞至**AWS Lambda 叫用**動作，且此承載檔案存放在來源儲存庫中，請指定該來源儲存庫的標籤。目前，唯一支援的標籤是 `WorkflowSource`。

如果您的請求承載檔案不包含在來源儲存庫中，它必須位於另一個動作所產生的成品中。

如需承載檔案的詳細資訊，請參閱 [RequestPayloadFile](#lam.invoke.request.payload.file)。

**注意**  
您可以直接使用 `RequestPayload` 屬性將承載的 JSON 程式碼新增至動作，而不是指定承載檔案。如需詳細資訊，請參閱[RequestPayload](#lam.invoke.request.payload)。

如需來源的詳細資訊，請參閱 [將來源儲存庫連線至工作流程](workflows-sources.md)。

對應的 UI：輸入索引標籤/**來源 - 選用**

## Artifacts - input
<a name="lam.invoke.inputs.artifacts"></a>

(*LambdaInvoke*/Inputs/**Artifacts**)

（如果提供 [RequestPayloadFile](#lam.invoke.request.payload.file) 則為必要）

如果您想要將請求承載 JSON 檔案傳遞至**AWS Lambda 叫用**動作，且此承載檔案包含在先前動作的[輸出成品](build-action-ref.md#build.outputs.artifacts)中，請在此處指定該成品。

如需承載檔案的詳細資訊，請參閱 [RequestPayloadFile](#lam.invoke.request.payload.file)。

**注意**  
您可以直接使用 `RequestPayload` 屬性將承載的 JSON 程式碼新增至動作，而不是指定承載檔案。如需詳細資訊，請參閱[RequestPayload](#lam.invoke.request.payload)。

如需成品的詳細資訊，包括範例，請參閱 [在動作之間共用成品和檔案](workflows-working-artifacts.md)。

對應的 UI：組態索引標籤/**成品 - 選用**

## Variables - input
<a name="lam.invoke.inputs.variables"></a>

(*LambdaInvoke*/Inputs/**Variables**)

(選用)

指定名稱/值對的序列，以定義您要提供給動作的輸入變數。變數名稱僅限於英數字元 (a-z、A-Z、0-9)、連字號 (-) 和底線 (\$1)。不允許空格。您不能使用引號在變數名稱中啟用特殊字元和空格。

如需變數的詳細資訊，包括範例，請參閱 [在工作流程中使用變數](workflows-working-with-variables.md)。

對應的 UI：輸入索引標籤/**變數 - 選用**

## Environment
<a name="lam.invoke.environment"></a>

(*LambdaInvoke*/**Environment**)

(必要)

指定要與 動作搭配使用的 CodeCatalyst 環境。動作會連線至所選環境中指定的 AWS 帳戶 和選用 Amazon VPC。動作會使用環境中指定的預設 IAM 角色來連線至 AWS 帳戶，並使用 [Amazon VPC 連線](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-vpcs.add.html)中指定的 IAM 角色來連線至 Amazon VPC。

**注意**  
如果預設 IAM 角色沒有 動作所需的許可，您可以將 動作設定為使用不同的角色。如需詳細資訊，請參閱[變更 動作的 IAM 角色](deploy-environments-switch-role.md)。

如需環境的詳細資訊，請參閱 [部署至 AWS 帳戶 和 VPCs](deploy-environments.md)和 [建立環境](deploy-environments-creating-environment.md)。

對應的 UI：組態索引標籤/**環境**

## Name
<a name="lam.invoke.environment.name"></a>

(*LambdaInvoke*/Environment/**Name**)

（如果[Environment](#lam.invoke.environment)包含 則為必要）

指定您要與動作建立關聯的現有環境名稱。

對應的 UI：組態索引標籤/**環境**

## Connections
<a name="lam.invoke.environment.connections"></a>

(*LambdaInvoke*/Environment/**Connections**)

（在較新版本的動作中為選用；在較舊版本中為必要）

指定要與動作建立關聯的帳戶連線。您可以在 下指定最多一個帳戶連線`Environment`。

如果您未指定帳戶連線：
+ 動作會使用 CodeCatalyst 主控台中環境指定的 AWS 帳戶 連線和預設 IAM 角色。如需將帳戶連線和預設 IAM 角色新增至環境的相關資訊，請參閱 [建立環境](deploy-environments-creating-environment.md)。
+ 預設 IAM 角色必須包含 動作所需的政策和許可。若要判斷這些政策和許可是什麼，請參閱動作 YAML 定義文件中**角色**屬性的描述。

如需帳戶連線的詳細資訊，請參閱 [允許存取已連線 AWS 的資源 AWS 帳戶](ipa-connect-account.md)。如需將帳戶連線新增至環境的詳細資訊，請參閱 [建立環境](deploy-environments-creating-environment.md)。

對應的 UI：取決於動作版本，下列其中一項：
+ （較新版本） 組態tab/Environment/What是 *my-environment*？/三個點功能表/**切換角色**
+ （舊版本） 組態索引標籤/'Environment/account/role'/**AWS account connection**

## Name
<a name="lam.invoke.environment.connections.name"></a>

(*LambdaInvoke*/Environment/Connections/**Name**)

（如果[Connections](#lam.invoke.environment.connections)包含 則為必要）

指定帳戶連線的名稱。

對應的 UI：取決於動作版本，下列其中一項：
+ （較新版本） 組態tab/Environment/What是 *my-environment*？/三個點功能表/**切換角色**
+ （舊版本） 組態索引標籤/'Environment/account/role'/**AWS account connection**

## Role
<a name="lam.invoke.environment.connections.role"></a>

(*LambdaInvoke*/Environment/Connections/**Role**)

（如果[Connections](#lam.invoke.environment.connections)包含 則為必要）

指定**AWS Lambda 叫用**動作用來存取 AWS 和叫用 Lambda 函數的 IAM 角色名稱。請確定您已[將角色新增至 CodeCatalyst 空間](ipa-connect-account-addroles.md)，且該角色包含下列政策。

如果您未指定 IAM 角色，則動作會使用 CodeCatalyst 主控台中[環境中](deploy-environments.md)列出的預設 IAM 角色。如果您在環境中使用預設角色，請確定其具有下列政策。
+ 下列許可政策：
**警告**  
將許可限制為下列政策中顯示的許可。使用具有更廣泛許可的角色可能會帶來安全風險。
+ 下列自訂信任政策：

**注意**  
如有需要，您可以使用 `CodeCatalystWorkflowDevelopmentRole-spaceName`角色搭配此動作。如需有關此角色的詳細資訊，請參閱 [為您的帳戶和空間建立 **CodeCatalystWorkflowDevelopmentRole-*spaceName***角色](ipa-iam-roles.md#ipa-iam-roles-service-create)。了解該`CodeCatalystWorkflowDevelopmentRole-spaceName`角色具有可能造成安全風險的完整存取許可。我們建議您只在安全性較少的教學課程和案例中使用此角色。

對應的 UI：取決於動作版本，下列其中一項：
+ （較新版本） 組態tab/Environment/What是 *my-environment*？/三個點功能表/**切換角色**
+ （舊版本） 組態索引標籤/'Environment/account/role'/**Role**

## Configuration
<a name="lam.invoke.configuration"></a>

(*LambdaInvoke*/**Configuration**)

(必要)

您可以在此區段定義 動作的組態屬性。

對應的 UI：**組態**索引標籤

## Function
<a name="lam.invoke.function"></a>

(*LambdaInvoke*/Configuration/**Function**)

(必要)

指定此動作將叫用的 AWS Lambda 函數。您可以指定函數的名稱，或其 Amazon Resource Name (ARN)。您可以在 Lambda 主控台中找到名稱或 ARN。

**注意**  
Lambda 函數所在的 AWS 帳戶可能與 下指定的帳戶不同`Connections:`。

對應的 UI：組態索引標籤/**函數**

## AWSRegion
<a name="lam.invoke.region"></a>

(*LambdaInvoke*/Configuration/**AWSRegion**)

(必要)

指定 AWS Lambda 函數所在的 AWS 區域。如需區域代碼清單，請參閱《》中的[區域端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)*AWS 一般參考*。

對應的 UI：組態索引標籤/**目的地儲存貯體 - 選用**

## RequestPayload
<a name="lam.invoke.request.payload"></a>

(*LambdaInvoke*/Configuration/**RequestPayload**)

(選用)

如果您想要將請求承載傳遞給**AWS Lambda 叫用**動作，請在此處以 JSON 格式指定請求承載。

請求承載範例：

```
'{ "key": "value" }'
```

如果您不想將請求承載傳遞至 Lambda 函數，請省略此屬性。

**注意**  
您可以指定 `RequestPayload` 或 `RequestPayloadFile`，但不能同時指定兩者。

如需請求承載的詳細資訊，請參閱 *AWS Lambda API 參考*中的[叫用](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html)主題。

對應的 UI：組態索引標籤/**請求承載 - 選用**

## RequestPayloadFile
<a name="lam.invoke.request.payload.file"></a>

(*LambdaInvoke*/Configuration/**RequestPayloadFile**)

(選用)

如果您想要將請求承載傳遞至**AWS Lambda 叫用**動作，請在此處指定此請求承載檔案的路徑。檔案必須是 JSON 格式。

請求承載檔案可以位於來源儲存庫或先前動作的成品中。檔案路徑是相對於來源儲存庫或成品根目錄。

如果您不想將請求承載傳遞至 Lambda 函數，請省略此屬性。

**注意**  
您可以指定 `RequestPayload` 或 `RequestPayloadFile`，但不能同時指定兩者。

如需請求承載檔案的詳細資訊，請參閱 *AWS Lambda API 參考*中的[叫用](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html)主題。

對應的 UI：組態索引標籤/**請求承載檔案 - 選用**

## ContinueOnError
<a name="lam.invoke.continue"></a>

(*LambdaInvoke*/Configuration/**RequestPayloadFile**)

(選用)

指定您是否想要將**AWS Lambda 調用**動作標記為成功，即使調用的 AWS Lambda 函數失敗。考慮將此屬性設定為 `true` ，以允許工作流程中的後續動作在 Lambda 失敗時啟動。

預設值是，如果 Lambda 函數失敗 （視覺化編輯器或 YAML 編輯器中的 "off")`false`，則動作會失敗。

對應的 UI：組態索引標籤/**發生錯誤時繼續**

## LogType
<a name="lam.invoke.log.type"></a>

(*LambdaInvoke*/Configuration/**LogType**)

(選用)

指定是否要在叫用 Lambda 函數後的回應中包含錯誤日誌。您可以在 CodeCatalyst 主控台的 **Lambda 調用**動作的日誌索引標籤中檢視這些**日誌**。可能值為：
+ `Tail` – 傳回日誌
+ `None` – 不傳回日誌

預設值為 **Tail**。

如需日誌類型的詳細資訊，請參閱 *AWS Lambda API 參考*中的[叫用](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html)主題。

如需檢視日誌檔案的詳細資訊，請參閱[檢視工作流程執行狀態和詳細資訊](workflows-view-run.md)。

對應的 UI：組態索引標籤/**日誌類型**

## ResponseFilters
<a name="lam.invoke.response.filters"></a>

(*LambdaInvoke*/Configuration/**ResponseFilters**)

(選用)

指定您要轉換為輸出變數的 Lambda 回應承載中的哪些索引鍵。然後，您可以在工作流程的後續動作中參考輸出變數。如需 CodeCatalyst 中變數的詳細資訊，請參閱 [在工作流程中使用變數](workflows-working-with-variables.md)。

例如，如果您的回應承載如下所示：

```
responsePayload = {
  "name": "Saanvi",
  "location": "Seattle",
  "department": {
    "company": "Amazon",
    "team": "AWS"
  }
}
```

...您的回應篩選條件如下所示：

```
Configuration:
  ...
  ResponseFilters: '{"name": ".name", "company": ".department.company"}'
```

...然後動作會產生下列輸出變數：


| 金鑰 | 值 | 
| --- | --- | 
|  name  |  Saanvi  | 
|  company  |  Amazon  | 

然後，您可以在後續動作中參考 `name`和 `company`變數。

如果您未在 中指定任何金鑰`ResponseFilters`，則動作會將 Lambda 回應中的每個最上層金鑰轉換為輸出變數。如需詳細資訊，請參閱[「AWS Lambda 叫用」變數](lam-invoke-action-variables.md)。

考慮使用回應篩選條件，將產生的輸出變數限制為您實際要使用的變數。

對應的 UI：組態索引標籤/**回應篩選條件 - 選用**

## Outputs
<a name="lam.invoke.outputs"></a>

(*LambdaInvoke*/**Outputs**)

(選用)

定義 動作在工作流程執行期間輸出的資料。

對應的 UI：**輸出**索引標籤

## Artifacts
<a name="lam.invoke.outputs.artifacts"></a>

(*LambdaInvoke*/Outputs/**Artifacts**)

(選用)

指定 動作產生的成品。您可以在其他動作中參考這些成品做為輸入。

如需成品的詳細資訊，包括範例，請參閱 [在動作之間共用成品和檔案](workflows-working-artifacts.md)。

對應的 UI：輸出索引標籤/成品/**建置成品名稱**

## Name
<a name="lam.invoke.outputs.artifacts.name"></a>

(*LambdaInvoke*/Outputs/Artifacts/**Name**)

(選用)

指定將包含 Lambda 函數傳回之 Lambda 回應承載的成品名稱。預設值為 `lambda_artifacts`。如果您未指定成品，則可以在動作的日誌中檢視 Lambda 回應承載，這可在 CodeCatalyst 主控台中動作**的日誌**索引標籤上取得。如需檢視日誌檔案的詳細資訊，請參閱[檢視工作流程執行狀態和詳細資訊](workflows-view-run.md)。

對應的 UI：輸出索引標籤/成品/**組建成品名稱**

## Files
<a name="lam.invoke.outputs.artifacts.files"></a>

(*LambdaInvoke*/Outputs/Artifacts/**Files**)

(選用)

指定要包含在成品中的檔案。您必須指定 ，`lambda-response.json`以便包含 Lambda 回應承載檔案。

對應的 UI：輸出索引標籤/成品/**組建產生的檔案**