'AWS Lambda 调用'操作 YAML - Amazon CodeCatalyst

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

'AWS Lambda 调用'操作 YAML

以下是AWS Lambda 调用操作的YAML定义。要了解如何使用此操作,请参阅使用工作流程调用 Lambda 函数

此操作定义作为一个部分存在于更广泛的工作流程定义文件中。有关此文件的更多信息,请参阅 工作流程YAML定义

注意

接下来的大多数YAML属性在可视化编辑器中都有相应的用户界面元素。要查找用户界面元素,请使用 Ctrl+F。 该元素将与其关联YAML属性一起列出。

# The workflow definition starts here. # See 顶级属性 for details. Name: MyWorkflow SchemaVersion: 1.0 Actions: # The action definition starts here. LambdaInvoke_nn: 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-z、A-Z、0-9)、连字符 (-) 和下划线 (_)。不允许使用空格。不能使用引号在操作名称中启用特殊字符和空格。

默认值:Lambda_Invoke_Action_Workflow_nn

对应的 UI:“配置” 选项卡/ 操作名称

Identifier

(LambdaInvoke/Identifier)

(必需)

标识操作。除非要更改版本,否则请勿更改此属性。有关更多信息,请参阅 指定要使用的操作版本

默认值:aws/lambda-invoke@v1

对应的用户界面:工作流程图/ LambdaInvoke _nn/ aws/lambda-invoke @v1 标签

DependsOn

(LambdaInvoke/DependsOn)

(可选)

指定必须成功运行才能运行此操作的操作、操作组或门。

有关 “依赖” 功能的更多信息,请参阅。排序动作

对应的用户界面:“输入” 选项卡/ 依赖- 可选

Compute

(LambdaInvoke/Compute)

(可选)

用于运行工作流程操作的计算引擎。您可以在工作流程级别或操作级别指定计算,但不能同时指定两者。在工作流级别指定时,计算配置将应用于工作流中定义的所有操作。在工作流程级别,您还可以在同一个实例上运行多个操作。有关更多信息,请参阅 跨操作共享计算

对应的用户界面:

Type

(LambdaInvoke/Compute/Type)

(如果包含Compute,则为必填项)

计算引擎的类型。您可以使用以下值之一:

  • EC2(可视化编辑器)或EC2(YAML编辑器)

    针对动作运行期间的灵活性进行了优化。

  • Lambda(可视化编辑器)或Lambda(YAML编辑器)

    优化了动作启动速度。

有关计算类型的更多信息,请参阅计算类型

对应的 UI:“配置” 选项卡/ “计算类型

Fleet

(LambdaInvoke/Compute/Fleet)

(可选)

指定将运行您的工作流程或工作流程操作的计算机或机群。对于按需队列,当操作开始时,工作流程会配置所需的资源,操作完成后计算机就会被销毁。按需车队示例:Linux.x86-64.LargeLinux.x86-64.XLarge。有关按需队列的更多信息,请参阅按需车队房产

使用已配置的队列,您可以配置一组专用计算机来运行您的工作流程操作。这些计算机处于闲置状态,可以立即处理操作。有关已配置队列的更多信息,请参阅。已配置的舰队属性

如果省略,Fleet则默认为Linux.x86-64.Large

对应的 UI:“配置” 选项卡/ “计算舰队

Timeout

(LambdaInvoke/Timeout)

(必需)

指定操作在 CodeCatalyst 结束操作之前可以运行的时间(YAML以分钟(编辑器)或小时和分钟(可视化编辑器)为单位。最小值为 5 分钟,最大值如中所述中的工作流程配额 CodeCatalyst。默认超时与最大超时相同。

相应的 UI:“配置” 选项卡/ “超时”- 可选

Inputs

(LambdaInvoke/Inputs)

(必需)

Inputs节定义了AWS Lambda 调用操作在工作流程运行期间所需的数据。

注意

每个AWS Lambda 调用操作只允许一个输入(源或构件)。变量不计入此总数。

相应的 UI:“输入” 选项卡

Sources

(LambdaInvoke/Inputs/Sources)

(如果RequestPayloadFile已提供,则为必填项)

如果要将请求负载JSON文件传递给 AWS Lambda in voke 操作,并且该负载文件存储在源存储库中,请指定该源存储库的标签。目前,唯一支持的标签是WorkflowSource

如果您的请求负载文件不包含在源存储库中,则该文件必须位于另一个操作生成的项目中。

有关负载文件的更多信息,请参阅RequestPayloadFile

注意

您可以使用RequestPayload属性将有效负载的JSON代码直接添加到操作中,而不必指定负载文件。有关更多信息,请参阅 RequestPayload

更多有关来源的信息,请参阅 将源存储库连接到工作流程

相应的 UI:“输入” 选项卡/ “来源”- 可选

Artifacts - input

(LambdaInvoke/Inputs/Artifacts)

(如果RequestPayloadFile已提供,则为必填项)

如果要将请求负载JSON文件传递给 AWS Lambda in voke 操作,并且此负载文件包含在先前操作的输出项目中,请在此处指定该构件。

有关负载文件的更多信息,请参阅RequestPayloadFile

注意

您可以使用RequestPayload属性将有效负载的JSON代码直接添加到操作中,而不必指定负载文件。有关更多信息,请参阅 RequestPayload

有关构件的更多信息(包括示例),请参阅在操作之间共享构件和文件

相应的 UI:“配置” 选项卡/ 工件- 可选

Variables - input

(LambdaInvoke/Inputs/Variables)

(可选)

指定一系列名称/值对,这些对定义要用于操作的输入变量。变量名称仅限于字母数字字符(a-z、A-Z、0-9)、连字符 (-) 和下划线 (_)。不允许使用空格。不能使用引号在变量名中启用特殊字符和空格。

有关变量的更多信息(包括示例),请参阅在工作流程中使用变量

相应的 UI:“输入” 选项卡/ “变量”- 可选

Environment

(LambdaInvoke/Environment)

(必需)

指定要用于操作的 CodeCatalyst 环境。该操作关联到在所选环境中VPC指定的 AWS 账户 和可选的 Amazon。该操作使用在环境中指定的默认IAM角色连接到 AWS 账户,并使用在亚马逊VPC连接中指定的IAM角色来连接亚马逊VPC。

注意

如果默认IAM角色没有操作所需的权限,则可以将操作配置为使用其他角色。有关更多信息,请参阅 更改动作的IAM角色

有关环境的更多信息,请参见部署到 AWS 账户 和 VPCs创建环境

对应的 UI:“配置” 选项卡/ 环境

Name

(LambdaInvoke/Environment/Name)

(如果包含Environment,则为必填项)

指定要与操作关联的现有环境的名称。

对应的 UI:“配置” 选项卡/ 环境

Connections

(LambdaInvoke/Environment/Connections)

(在新版本的操作中为可选;在较旧版本中为必填项)

指定要与操作关联的账户连接。您最多可以在下方指定一个账户连接Environment

如果您未指定账户连接:

  • 该操作使用 CodeCatalyst 控制台中环境中指定的 AWS 账户 连接和默认IAM角色。有关向环境添加账户连接和默认IAM角色的信息,请参阅创建环境

  • 默认IAM角色必须包括操作所需的策略和权限。要确定这些策略和权限是什么,请参阅操作YAML定义文档中对角色属性的描述。

有关账户关联的更多信息,请参阅允许在已连接的情况下访问 AWS 资源 AWS 账户。有关向环境添加账户连接的信息,请参阅创建环境

相应的 UI:根据操作版本的不同,以下用户界面之一:

  • (新版本)“配置” 选项卡/环境/内容 my-environment/三点菜单/ 切换角色

  • (旧版本)“配置” 选项卡/'环境/账户/角色'/账户连接AWS

Name

(LambdaInvoke/Environment/Connections/Name)

(如果包含Connections,则为必填项)

指定账户连接的名称。

相应的 UI:根据操作版本的不同,以下用户界面之一:

  • (新版本)“配置” 选项卡/环境/内容 my-environment/三点菜单/ 切换角色

  • (旧版本)“配置” 选项卡/'环境/账户/角色'/账户连接AWS

Role

(LambdaInvoke/Environment/Connections/Role)

(如果包含Connections,则为必填项)

指定AWS Lambda 调用操作用于访问 AWS 和调用您的 Lambda 函数的IAM角色名称。请确保您已将该角色添加到您的 CodeCatalyst 空间,并且该角色包含以下策略。

如果您未指定IAM角色,则该操作将使用 CodeCatalyst 控制台中环境中列出的默认IAM角色。如果您在环境中使用默认角色,请确保其具有以下策略。

  • 以下权限策略:

    警告

    将权限限制为以下策略中显示的权限。使用具有更广泛权限的角色可能会带来安全风险。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:aws-region:aws-account:function:function-name" } ] }
  • 以下自定义信任策略:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
注意

如果您愿意,可以在此操作中使用该CodeCatalystWorkflowDevelopmentRole-spaceName角色。有关该角色的更多信息,请参阅 为您的账户和空间创建CodeCatalystWorkflowDevelopmentRole-spaceName角色。了解该CodeCatalystWorkflowDevelopmentRole-spaceName角色具有完全访问权限,这可能会带来安全风险。我们建议您仅在教程和安全性较低的场景中使用此角色。

相应的 UI:根据操作版本的不同,以下用户界面之一:

  • (新版本)“配置” 选项卡/环境/内容 my-environment/三点菜单/ 切换角色

  • (旧版本)“配置” 选项卡/'环境/帐户/角色'/角色

Configuration

(LambdaInvoke/Configuration)

(必需)

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

相应的 UI:“配置” 选项卡

Function

(LambdaInvoke/Configuration/Function)

(必需)

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

注意

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

对应的用户界面:配置选项卡/函数

AWSRegion

(LambdaInvoke/Configuration/AWSRegion)

(必需)

指定您的 AWS Lambda 函数所在的 AWS 区域。有关区域代码的列表,请参阅中的区域终端节点AWS 一般参考

相应的 UI:配置选项卡/ 目标存储桶- 可选

RequestPayload

(LambdaInvoke/Configuration/RequestPayload)

(可选)

如果要将请求负载传递给 AWS Lambda invoke 操作,请在此处按JSON格式指定请求负载。

请求负载示例:

'{ "key": "value" }'

如果您不想将请求负载传递给 Lambda 函数,请省略此属性。

注意

您可以指定 RequestPayloadRequestPayloadFile,但不能同时指定两者。

有关请求负载的更多信息,请参阅AWS Lambda API参考中的调用主题。

相应的 UI:“配置” 选项卡/ “请求有效负载”- 可选

RequestPayloadFile

(LambdaInvoke/Configuration/RequestPayloadFile)

(可选)

如果要将请求负载传递给 AWS Lambda invoke 操作,请在此处指定此请求负载文件的路径。文件必须是JSON格式化的。

请求负载文件可以驻留在源存储库中,也可以位于先前操作的对象中。文件路径是相对于源存储库或工件根目录的路径。

如果您不想将请求负载传递给 Lambda 函数,请省略此属性。

注意

您可以指定 RequestPayloadRequestPayloadFile,但不能同时指定两者。

有关请求负载文件的更多信息,请参阅AWS Lambda API参考中的调用主题。

对应的用户界面:配置选项卡/ 请求有效载荷文件- 可选

ContinueOnError

(LambdaInvoke/Configuration/RequestPayloadFile)

(可选)

指定即使AWS Lambda 调用的 AWS Lambda 函数失败,是否也要将调用操作标记为成功。考虑将此属性设置为,true以允许在 Lambda 失败的情况下启动工作流程中的后续操作。

默认情况下,如果 Lambda 函数失败(在可视化编辑器或false编辑器中为 “关闭”),则操作失败。YAML

相应的 UI:“配置” 选项卡/ 出错时继续

LogType

(LambdaInvoke/Configuration/LogType)

(可选)

指定是否要在 Lambda 函数被调用后的响应中包含错误日志。您可以在控制台的 Lambda 调用操作的 “日志” 选项卡中查看这些日志。 CodeCatalyst 可能的值有:

  • Tail— 返回日志

  • None— 不返回日志

默认为尾巴

有关日志类型的更多信息,请参阅AWS Lambda API参考中的调用主题。

有关查看日志的详细信息,请参阅 查看工作流程运行状态和详细信息

对应的用户界面:配置选项卡/ 日志类型

ResponseFilters

(LambdaInvoke/Configuration/ResponseFilters)

(可选)

在 Lambda 响应负载中指定要转换为输出变量的密钥。然后,您可以在工作流程的后续操作中引用输出变量。有关中变量的更多信息 CodeCatalyst,请参阅在工作流程中使用变量

例如,如果您的响应负载如下所示:

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

... 你的响应过滤器如下所示:

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

... 然后该操作生成以下输出变量:

name

Saanvi

company

Amazon

然后,您可以在后续操作中引用namecompany变量。

如果您未在中指定任何密钥ResponseFilters,则该操作会将 Lambda 响应中的每个顶级密钥转换为输出变量。有关更多信息,请参阅 'AWS Lambda 调用'变量

考虑使用响应过滤器将生成的输出变量限制为仅包含您实际要使用的变量。

相应的 UI:“配置” 选项卡/ “响应过滤器”- 可选

Outputs

(LambdaInvoke/Outputs)

(可选)

定义操作在工作流程运行期间输出的数据。

相应的 UI:“输出” 选项卡

Artifacts

(LambdaInvoke/Outputs/Artifacts)

(可选)

指定操作生成的对象。您可以在其他操作中引用这些构件作为输入。

有关构件的更多信息(包括示例),请参阅在操作之间共享构件和文件

对应的用户界面:“输出” 选项卡/构件/构建构件名称

Name

(LambdaInvoke/Outputs/Artifacts/Name)

(可选)

指定将包含 Lambda 函数返回的 Lambda 响应负载的工件的名称。默认值为 lambda_artifacts。如果您未指定项目,则可以在操作的日志中查看 Lambda 响应有效负载,这些日志位于控制台中操作的 “日志” 选项卡上。 CodeCatalyst 有关查看日志的详细信息,请参阅 查看工作流程运行状态和详细信息

对应的用户界面:“输出” 选项卡/构件/构建构件名称

Files

(LambdaInvoke/Outputs/Artifacts/Files)

(可选)

指定要包含在构件中的文件。您必须指定,lambda-response.json这样才能包含 Lambda 响应负载文件。

对应的用户界面:“输出” 选项卡/构件/构建生成的文件