【发布时间】:2022-11-18 15:43:54
【问题描述】:
我正在使用 Lambda 在 ECS Fargate 中运行我的容器。但是我希望我的容器输出回到我的 Lambda,这似乎不可能直接按照How to pass & return the values from lambda to ECS task
我也在https://nuvalence.io/insights/aws-step-function-integration-with-ecs-or-fargate-tasks-data-in-and-out/ 阅读了它的可能性,但无法解决。我的 docker 图像返回几行,想在 s3 中捕获并再次在 Lambda 中读回。我的 Lambda 如下,它不起作用
def lambda_handler(event, context):
client = boto3.client('ecs')
run_task = client.run_task(
cluster='arn:aws:ecs:us-east-1:12345:cluster/listmodels',
enableExecuteCommand=True,
group='family:listmodels',
launchType='FARGATE',
networkConfiguration={
'awsvpcConfiguration': {
'subnets': [
'subnet-12345',
],
'securityGroups': [
'sg-12345',
],
'assignPublicIp': 'ENABLED'
}
},
overrides={
'containerOverrides': [
{
'name': 'listmodels',
'command': [
"ls",
"--target",
"dev"
],
},
{'Name':'OUTPUT_LOCATION','value':'s3://sm1-retail/1.txt'}
],
'executionRoleArn': 'arn:aws:iam::509094867785:role/ecsTaskExecutionRole',
'taskRoleArn': 'arn:aws:iam::509094867785:role/ecsTaskExecutionRole',
},
propagateTags='TASK_DEFINITION',
taskDefinition='listmodels-task'
)
出现以下错误,我确定此错误是因为我添加了
{'Name':'OUTPUT_LOCATION','value':'s3://sm1-retail/1.txt'}
"errorMessage": "Parameter validation failed:\nUnknown parameter in overrides.containerOverrides[1]: \"Name\", must be one of: name, command, environment, environmentFiles, cpu, memory, memoryReservation, resourceRequirements\nUnknown parameter in overrides.containerOverrides[1]: \"value\", must be one of: name, command, environment, environmentFiles, cpu, memory, memoryReservation, resourceRequirements",
"errorType": "ParamValidationError",
我想知道获取 run_task 输出的更好方法是什么?由于 run_task 不会向调用函数返回任何内容,因此我想到将日志写入 s3 并从那里读取它,但这也失败了。任何帮助表示赞赏。
用例:我需要运行 docker image 并且 docker image 的输出是几个文件名,基于此我的程序决定更改了哪些文件并采取必要的措施
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-ecs aws-fargate