Как передать переменные через AWS Codepipeline? - PullRequest
0 голосов
/ 23 апреля 2020

AWS CodePipeline организует сначала lambda-A, а затем lambda-B, и я хочу передать переменную из моего lambda-A в lambda-B.

В lambda-A я устанавливаю выходные переменные при успешной установке задания:

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

Из документации я знаю, что outputVariables являются ключевыми пары-значений, которые можно сделать доступными для последующего действия.

CodePipeline затем запускает lambda-B. Как я могу получить в lambda-B переменные, которые я установил в outputVariables в lambda-A?

1 Ответ

1 голос
/ 24 апреля 2020

В конфигурации действий Lambda-B в параметрах пользователя введите синтаксис переменной для загрузки переменной, созданной в предыдущем действии, используя этот синтаксис:

#{outputVariables.FOO}

Затем вы можете распаковать «UserParameters» в функции Lambda :

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

из 'события':

def lambda_handler(event, context):

    print(event)

Эта процедура подробно описана в шаге (f) здесь:

...