【发布时间】:2021-11-29 22:58:30
【问题描述】:
所以问题是 lambda 需要能够从 vpc 中的 db 读取并启动 ecs fargate 任务。但是如果 lambda 在 vpc 中,那么它不会启动任务本身,而是 lambda 超时。
import json
import boto3
client = boto3.client('ecs')
cluster_name = 'as-dev'
task_name = 'as-dev:2'
def lambda_handler(event, context):
# TODO implement
try:
response = client.run_task(
cluster=cluster_name,
launchType = 'FARGATE',
taskDefinition=task_name,
count = 1,
platformVersion='LATEST',
networkConfiguration={
'awsvpcConfiguration': {
'subnets': [
'subnet-12345ab12345'
],
'securityGroups': [
'sg-123451234sasdqwe'
],
'assignPublicIp': 'ENABLED'
}
}
)
print(response)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
except Exception as e:
print(e)
return {
'statusCode': 500,
'body': str(e)
}
(配置因明显原因而改变)
如果在 ec2 上作为简单的 python 程序运行,代码可以正常工作。只有将 vpc 添加到 lambda 时,它才会停止工作并超时。
【问题讨论】:
-
您的问题不清楚。到底发生了什么?有任何错误、超时吗?
-
超时,抱歉已编辑问题并添加了相同内容。
-
仍在努力。使用 ecs 快速入门有助于创建 vpc 子网等,然后打开 ecs 端点允许 lambda 访问 ecs。但是对于预先存在的 vpc 仍然无法正常工作,同样的情况不会发生,我正在尝试进行逆向工程以了解原因。但你是对的,这是 lambda 方面的网络问题。
标签: python-3.x amazon-web-services aws-lambda amazon-ecs amazon-vpc