从 SQS 队列启动 AWS Batch

我有一个长期运行的批处理作业,计划迁移到 AWS Batch。由于运行这项工作需要几个小时,我不能使用 AWS Lambda。

但是,其中一项要求是从我的 AWS SQS 队列中触发此作业。

我找不到任何关于此的参考文档。它甚至可行吗?

stack overflow Starting AWS Batch from SQS queue
原文答案

答案:

作者头像

您可以在监听 SQS 消息时实现以下方法:

public void onMessage( Message message ) throws JMSException {

    SQSTextMessage sqsTextMessage = ( SQSTextMessage ) message;
    String text = sqsTextMessage.getText();

    AWSBatch awsBatch = AWSBatchClientBuilder.standard()
       .withCredentials(new DefaultAWSCredentialsProviderChain())
       .withRegion("region")
       .build();

    SubmitJobRequest submitRequest = new SubmitJobRequest()
       .withJobDefinition("job-definition-name")
       .withJobName("job-name")
       .withJobQueue("job-queue");

    SubmitJobResult submitResult = awsBatch.submitJob(submitRequest);
  }