You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pulumi配置EventBridge定时触发AWS Batch任务部署报错

问题

我尝试配置EventBridge按固定调度规则触发AWS Batch作业,目前已可通过Pulumi成功部署Batch作业与EventBridge规则,但在部署EventTarget资源时遇到如下错误:

Creating EventBridge Target failed: ValidationException: Parameter(s) BatchParameters not supported for target: my_event_target-ca7145e.

我此前曾通过AWS控制台为同一个Batch作业配置过EventBridge触发规则,全程无问题且作业可正常运行。

相关配置代码如下:

const eventBridgeDeadLetterQueue = new aws.sns.Topic("myEventBridge", {});

const myJob = new aws.batch.JobDefinition("my_job", {
    containerProperties: pulumi.interpolate `{
        "image": "${myImage}",
        "resourceRequirements": [
            {"type": "VCPU", "value": "1"},
            {"type": "MEMORY", "value": "4096"}
          ],
        "environment": [],
        "jobRoleArn": "${myEcsTaskRole.arn}",
        "executionRoleArn": "${myEcsTaskExecutionRole.arn}"
    }`,
    type: "container",
    timeout: {
        'attemptDurationSeconds': 30 * 60
    },
    platformCapabilities: ['FARGATE']
});

const myRule = new aws.cloudwatch.EventRule("myRule", {
    description: "Fire a batch job",
    scheduleExpression: "cron(30 15 * * ? *)"
});

// 若注释掉该target配置,即可成功完成部署
const myEventTarget = new aws.cloudwatch.EventTarget("my_event_target", {
    arn: eventBridgeDeadLetterQueue.arn,
    rule: myRule.name,
    inputPath: "$",  // 我也曾尝试设置input: "",仍出现相同错误
    batchTarget: {
        jobDefinition: myJob.arn,
        jobName: "My Job Name"
    }
});

请问上述配置存在什么问题?

解答

核心问题是EventTarget的目标资源ARN配置错误。

  • aws.cloudwatch.EventTarget资源的arn字段,需要填写实际要触发的目标资源ARN,也就是AWS Batch作业队列的ARN,你当前填的是SNS死信主题的ARN。SNS主题类型的目标本身不支持BatchParameters配置参数,所以会抛出参数不支持的校验错误。
  • 死信队列不能填在主arn字段,需要单独在Target的deadLetterConfig块里指定。
  • 你使用的是Fargate类型的Batch作业,batchTarget配置块还缺少必填的jobQueueArn(作业队列ARN)、platformCapability(指定为FARGATE)、Fargate任务必需的网络配置(子网、安全组参数),修正ARN问题后如果不补全这些参数,还会遇到新的校验错误。

修正后的EventTarget配置参考:

const myEventTarget = new aws.cloudwatch.EventTarget("my_event_target", {
    // 此处填写Batch作业队列的ARN,不是死信队列ARN
    arn: myBatchJobQueue.arn,
    rule: myRule.name,
    // 死信队列单独配置在deadLetterConfig下
    deadLetterConfig: {
        arn: eventBridgeDeadLetterQueue.arn
    },
    batchTarget: {
        jobDefinition: myJob.arn,
        jobName: "My Job Name",
        // 补全必填的作业队列ARN
        jobQueueArn: myBatchJobQueue.arn,
        // 指定Fargate平台能力
        platformCapability: "FARGATE",
        // 补全Fargate任务必需的网络配置
        networkConfiguration: {
            subnets: mySubnetIds,
            securityGroups: [mySecurityGroup.id],
            assignPublicIp: false
        }
    }
});

你之前在控制台配置能成功,是因为控制台选择目标类型为AWS Batch时,会自动把目标ARN填充为Batch作业队列的ARN,不会出现把SNS主题填为Batch类型目标主ARN的情况。

内容的提问来源于stack exchange,提问作者uncountable

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:48:18