繁体   English   中英

如何在 AWS Step Functions 中的 Lambda 函数之间传递参数

[英]How to pass parameters between Lambda Functions in AWS Step Functions

我试图浏览互联网,但在 python 中似乎没有一个解决方案对我有用。 Basicly I want to transfer some parameters from one lambda function to the next lambda function in a step function. 我有点惊讶要找到一个简单的例子来说明如何做到这一点有多么困难?

所以我的第一个 lambda function 有一个 output 像:

return {"user_name" : user_name, "region" : region, "instance_id" : instance_id}

我的第二个 lambda function 尝试导入:

user_name = event["user_name"]
region = event["region"]
instance_id = event["instance_id"]

我的 stepfunction 看起来像:

{
         "StartAt": "CreateEC2Instance",
         "States": {
           "CreateEC2Instance": {
             "Type": "Task",
             "Resource": "arn:aws:states:::lambda:invoke",
             "Parameters": {
               "FunctionName": "MY_ARN_1",
               "Payload": {
                  "region": "eu-central-1",
                  "user_name": "MY_USERNAME"
              }},
             "Next": "AttachEFStoEC2"
           },
            "AttachEFStoEC2": {
             "Type": "Task",
             "Resource":"MY_ARN_2",
             "End": true
         }

错误是:

{
  "error": "KeyError",
  "cause": {
    "errorMessage": "'user_name'",
    "errorType": "KeyError",
    "stackTrace": [
      "  File \"/var/task/lambda_function.py\", line 7, in lambda_handler\n    user_name = event[\"user_name\"]\n"
    ]
  }
}
{
         "StartAt": "CreateEC2Instance",
         "States": {
           "CreateEC2Instance": {
             "Type": "Task",
             "Resource": "arn:aws:states:::lambda:invoke",
             "ResultPath": "$.randomstring",
             "Parameters": {
               "FunctionName": "MY_ARN_1",
               "Payload": {
                  "region": "eu-central-1",
                  "user_name": "MY_USERNAME"
              }},
             "Next": "AttachEFStoEC2"
           },
            "AttachEFStoEC2": {
             "Type": "Task",
             "Resource":"MY_ARN_2",
                   "Parameters": {
                       "outputfromearlierfunction.$": "$.randomstring.Payload"
                   },
             "End": true
         }

然后尝试访问 function 之类的内部

receivedinput = event.get('outputfromearlierfunction')
user_name = receivedinput["user_name"]
region = receivedinput["region"]
instance_id = receivedinput["instance_id"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM