api 网关与 aws 批处理集成

Posted

技术标签:

【中文标题】api 网关与 aws 批处理集成【英文标题】:api gateway integration with aws batch 【发布时间】:2019-12-01 03:33:48 【问题描述】:

我想在 AWS 批处理中使用 API 网关

我已经知道如何将 API Gateway 与 AWS lambda naad 一起使用,因为 lambda 有 250 MB 的限制,我无法将其用于集成,现在尝试使用 AWS 批处理

【问题讨论】:

【参考方案1】:

我假设您想使用 API Gateway + Lambda 创建一个端点,用于向 AWS Batch 提交作业请求。

为此,请创建以下 Lambda 函数,该函数将作业提交到 AWS Batch。将“jobQueueArn”替换为您的作业队列的 arn。将 Lambda 函数与 API Gateway 集成。

import boto3

def lambda_handler(event, context):

    client = boto3.client('batch')

    JOB_NAME = event['JobName']
    JOB_QUEUE = "jobQueueArn"
    JOB_DEFINITION = "a-job-definition:1"

    response = client.submit_job(
        jobName = JOB_NAME,
        jobQueue = JOB_QUEUE,
        jobDefinition = JOB_DEFINITION,
        parameters =  'key': 'value' 
        )
    print(response)
    return 0

可以使用parameters 输入传递参数。

参数(字典)-- 传递给作业的附加参数,用于替换作业定义中设置的参数替换占位符。参数被指定为键值对映射。 SubmitJob 请求中的参数会覆盖作业定义中的任何相应参数默认值。

确保将正确的 IAM 策略附加到 Lambda 函数的角色。


    "Version": "2012-10-17",
    "Statement": [
        
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "batch:SubmitJob"
            ],
            "Resource": [
                "*"
            ]
        
    ]

【讨论】:

感谢 Yuke,但我对如何将来自 API 的输入参数传递给批处理有更多疑问。假设一个 json 作为 API "value" : 123" 的输入,它将如何将此值作为输入,因为早期的 lambda 用于处理它 嗨,Arpit,您可以简单地添加参数作为 Client.submit_job 函数的输入,如文档boto3.amazonaws.com/v1/documentation/api/latest/reference/…中所述 我无法在 lambda 中获得 aws 批处理输出。如何在 lambda 日志中查看批处理结果?

以上是关于api 网关与 aws 批处理集成的主要内容,如果未能解决你的问题,请参考以下文章

如何为 ECS 添加带有应用程序负载均衡器的 AWS API 网关?

terraform api 网关与 openapi 规范的集成

AWS WebSocket API 网关必须对 $connect、$disconnect 和 $default 具有相同的集成?

Telegram Bot(用 python 编码)与 AWS API Gateway 集成

来玩 Serverless: 如何把 Express 应用迁移到 Amazon API 网关和 AWS Lambda 上

如何使用 lambda 代理集成来云化 API 网关资源