

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.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**)

（可选）

指定必须成功运行才能使该操作运行的操作、操作组或阶段门。

有关“依赖于”功能的更多信息，请参阅[顺序操作](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**)

（可选）

指定一系列 name/value 对，用于定义要提供给操作的输入变量。变量名称仅限字母数字字符（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 账户，并使用在 A [mazon VPC 连接](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-vpcs.add.html)中指定的 IAM 角色连接到亚马逊 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 定义文档中 **Role** 属性的描述。

有关账户连接的更多信息，请参阅[允许在已连接的情况下访问 AWS 资源 AWS 账户](ipa-connect-account.md)。有关向环境添加账户连接的信息，请参阅[创建环境](deploy-environments-creating-environment.md)。

对应的 UI：根据操作版本的不同，为下列项之一：
+ （新版本）配置tab/Environment/What在*my-environment*吗？ **/三点菜单/ 切换角色**
+ **（旧版本）配置选项卡/ Environment/account/role ''/账户连接AWS **

## 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 **

## 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**

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

(*LambdaInvoke*/**Configuration**)

（必需）

可在其中定义操作的配置属性的部分。

对应的 UI：**配置**选项卡

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

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

（必需）

指定此操作将调用的 AWS Lambda 函数。您可以指定函数的名称或其 Amazon 资源名称（ARN）。您可以在 Lambda 控制台中查找名称或 ARN。

**注意**  
Lambda 函数所在的 AWS 账户可以与下指定的账户不同。`Connections:`

对应的 UI：“配置”选项卡/**函数**

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

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

（必需）

指定您的 AWS Lambda 函数所在的 AWS 区域。有关区域代码的列表，请参阅《AWS 一般参考》**中的 [Regional endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)。

对应的 UI：“配置”选项卡/**目标存储桶 – 可选**

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

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

（可选）

如果要将请求有效载荷传递到 **AWS Lambda 调用**操作，请在此处以 JSON 格式指定该请求有效载荷。

示例请求有效载荷：

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

如果您不想将请求有效载荷传递到 Lambda 函数，请忽略此属性。

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

有关请求有效载荷的更多信息，请参阅《AWS Lambda API 参考》**中的 [Invoke](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 参考》**中的 [Invoke](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 函数失败（在可视化编辑器中为“off”，在 YAML 编辑器中为 `false`），则操作将失败。

对应的 UI：“配置”选项卡/**出错时继续**

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

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

（可选）

指定是否要在 Lambda 函数被调用后提供的响应中包含错误日志。您可以在控制台的 **Lambda 调用**操作的 “**日志” 选项卡中查看这些日志**。 CodeCatalyst 可能的值有：
+ `Tail` – 返回日志
+ `None` – 不返回日志

默认值为 **Tail**。

有关日志类型的更多信息，请参阅《AWS Lambda API 参考》**中的 [Invoke](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：“输出”选项卡/构件/**构建生成的文件**