简体   繁体   English

AWS Lambda参数传递

[英]AWS Lambda parameter passing

I am creating an api with AWS API Gateway with Lambda functions. 我正在使用带有Lambda函数的AWS API Gateway创建一个api。 I want to be able to make an API call with the following criteria: 我希望能够使用以下条件进行API调用:

  • In the method request of the API i have specified the Query String: itemid 在API的方法请求中,我指定了查询字符串:itemid
  • I want to be able to use this itemid value within my lambda function 我希望能够在我的lambda函数中使用此itemid值
  • I am using Python in Lambda 我在Lambda中使用Python

I have tried putting the following in the Mapping template under the Method execution, however get an error: 我尝试将以下内容放在“方法”执行下的“映射”模板中,但是出现错误:

-{ "itemid": "$input.params('itemid')" } -{“ itemid”:“ $ input.params('itemid')”}

您还必须在“资源/方法请求”部分中包括查询字符串参数。

I would use the proxy integration in API Gateway, this way your Lambda function receives the entire request. 我将在API Gateway中使用代理集成,这样您的Lambda函数将接收整个请求。 Take a look at the docs to set it up. 看一下设置它的文档 When configured as a proxy, the input to your Lambda function will look something like this: 当配置为代理时,Lambda函数的输入将如下所示:

{  
   "path":"/test/hello",
   "headers":{  
      "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
      "Accept-Encoding":"gzip, deflate, lzma, sdch, br",
      "Accept-Language":"en-US,en;q=0.8",
      "CloudFront-Forwarded-Proto":"https",
      "CloudFront-Is-Desktop-Viewer":"true",
      "CloudFront-Is-Mobile-Viewer":"false",
      "CloudFront-Is-SmartTV-Viewer":"false",
      "CloudFront-Is-Tablet-Viewer":"false",
      "CloudFront-Viewer-Country":"US",
      "Host":"wt6mne2s9k.execute-api.us-west-2.amazonaws.com",
      "Upgrade-Insecure-Requests":"1",
      "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48",
      "Via":"1.1 fb7cca60f0ecd82ce07790c9c5eef16c.cloudfront.net (CloudFront)",
      "X-Amz-Cf-Id":"nBsWBOrSHMgnaROZJK1wGCZ9PcRcSpq_oSXZNQwQ10OTZL4cimZo3g==",
      "X-Forwarded-For":"192.168.100.1, 192.168.1.1",
      "X-Forwarded-Port":"443",
      "X-Forwarded-Proto":"https"
   },
   "pathParameters":{  
      "proxy":"hello"
   },
   "requestContext":{  
      "accountId":"123456789012",
      "resourceId":"us4z18",
      "stage":"test",
      "requestId":"41b45ea3-70b5-11e6-b7bd-69b5aaebc7d9",
      "identity":{  
         "cognitoIdentityPoolId":"",
         "accountId":"",
         "cognitoIdentityId":"",
         "caller":"",
         "apiKey":"",
         "sourceIp":"192.168.100.1",
         "cognitoAuthenticationType":"",
         "cognitoAuthenticationProvider":"",
         "userArn":"",
         "userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48",
         "user":""
      },
      "resourcePath":"/{proxy+}",
      "httpMethod":"GET",
      "apiId":"wt6mne2s9k"
   },
   "resource":"/{proxy+}",
   "httpMethod":"POST",
   "body": "...",
   "queryStringParameters":{  
      "name":"me"
   },
   "stageVariables":{  
      "stageVarName":"stageVarValue"
   }
}

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

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