【发布时间】:2021-05-11 19:51:08
【问题描述】:
我无法在 Lambda 函数中获取参数。如果我在 lambda 中提到参数值,它可以正常工作。当我从 Lambda 函数中删除参数值并尝试从 API 网关或测试 lambda 时,它会处理默认参数值。请帮忙 我的 Lambda 函数是:
import boto3
import time
import json
datetime = time.strftime("%Y%m%d%H%M%S")
stackname = 'myec2'
client = boto3.client('cloudformation')
response = client.create_stack(
StackName= (stackname+ '-' + datetime),
TemplateURL='https://testnaeem.s3.amazonaws.com/ec2tags.yaml',
Parameters=[
{
"ParameterKey": "MyInstanceName",
"ParameterValue": " "
},
{
"ParameterKey": "MyInstanceType",
"ParameterValue": " "
}
]
)
def lambda_handler(event, context):
return(response)
我的 CloudFormation 模板是:
---
Parameters:
MyInstanceType:
Description: Instance type description
Type: String
MyInstanceName:
Description: Instance type description
Type: String
Resources:
MyInstance:
Type: AWS::EC2::Instance
Properties:
AvailabilityZone: us-east-1a
ImageId: ami-047a51fa27710816e
InstanceType: !Ref MyInstanceType
KeyName: miankeyp
Tags:
- Key : Name
Value : !Ref MyInstanceName
- Key : app
Value : demo
请帮助 Lambda 函数需要进行哪些更改。
我的测试值是:
{
"MyInstanceName": "demott",
"MyInstanceType": "t2.micro"
}
【问题讨论】:
-
您能否再次澄清一下,什么不起作用,什么是预期行为,如何重现问题,错误消息是什么?
-
没有错误,但是默认取参数值。因为我正在传递实例大小 t2.micr,但它占用了 m1.small。
-
您的模板中没有默认值,而在 lambda 中您只是使用空字符串。
-
模板中没有默认值,但仍使用 m1.small 实例启动 ec2。
-
如果我在 lambda 函数中使用字符串,那么它可以正常工作。但我想从 API 网关或 lambda 测试函数传递字符串“参数值”。
标签: api aws-lambda amazon-cloudformation serverless gateway