【问题标题】:Get data from AWS ECS run task back to AWS Lambda将数据从 AWS ECS 运行任务返回到 AWS Lambda
【发布时间】: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


    【解决方案1】:

    你不见了environmentargument。它应该是:

            overrides={
                'containerOverrides': [
                    {
                        'name': 'listmodels',
                        'command': [
                            "ls",
                            "--target",
                            "dev"
                        ],
                        'environment': [
                                {
                                    'name': 'OUTPUT_LOCATION',
                                    'value': 's3://sm1-retail/1.txt'
                                },
                            ]  
                    },
                ],
    

    【讨论】:

      猜你喜欢
      • 2021-11-15
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 2016-11-25
      • 2018-12-03
      • 1970-01-01
      相关资源
      最近更新 更多