gpt4 book ai didi

api - 从 AWS Lambda 函数创建 CloudFormation 堆栈,传递 API 网关参数

转载 作者:行者123 更新时间:2023-12-03 07:27:04 26 4
gpt4 key购买 nike

我无法获取 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"
}

最佳答案

我修改了你的 lambda 函数的代码。请检查代码中的注释以进行澄清:

import boto3
import time
import json

datetime = time.strftime("%Y%m%d%H%M%S")
stackname = 'myec2'
client = boto3.client('cloudformation')

def lambda_handler(event, context):

print(event) # to check what your even actually is
# it will be printed out in CloudWatch Logs for your
# function

# you have to check what the event actually looks like
# and adjust event['MyInstanceName'] and event['MyInstanceType']
# in the following code

response = client.create_stack(
StackName= (stackname+ '-' + datetime),
TemplateURL='https://testnaeem.s3.amazonaws.com/ec2tags.yaml',
Parameters=[
{
"ParameterKey": "MyInstanceName",
"ParameterValue": event['MyInstanceName']
},
{
"ParameterKey": "MyInstanceType",
"ParameterValue": event['MyInstanceType']
}
]
)

return(response)

顺便说一下,这样的函数和 API 网关可以非常快速地启动大量 ec2 实例。以便您了解这一点。

关于api - 从 AWS Lambda 函数创建 CloudFormation 堆栈,传递 API 网关参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66097698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com