如何通过 AWS Codepipeline 传递变量?

How do I pass variables through AWS Codepipeline?

AWS CodePipeline 首先编排 lambda-A,然后编排 lambda-B,我想将一个变量从我的 lambda-A 传递到我的 lambda-B

lambda-A 中,我在将作业设置为成功时设置了 outputVariables:

boto3.client("codepipeline").put_job_success_result(
        jobId=event["CodePipeline.job"]["id"],
        outputVariables={"FOO":"BAR"}
    )

From the documentation i know that outputVariables are Key-value pairs that can be made available to a downstream action.

CodePipeline 然后触发 lambda-B。我如何在 lambda-B 中检索我在 lambda-A 中的 outputVariables 中设置的变量?

在 Lambda-B 的操作配置中,在用户参数中,输入变量语法以使用此语法获取在早期操作中创建的变量:

#{outputVariables.FOO}

然后你可以在Lambda函数中解压'UserParameters':

{
    "CodePipeline.job": {
        "id": "EXAMPLE-e08a-4f06-b9ba-EXAMPLE",
        "accountId": "EXAMPLE87397",
        "data": {
            "actionConfiguration": {
                "configuration": {
                    "FunctionName": "LambdaForCP-Python",
                    "UserParameters": "5e2591fd79889dEXAMPLE5f33e2"
                }
            },

来自 'event':

def lambda_handler(event, context):

    print(event)

此过程在此处的步骤 (f) 中有详细说明: