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

AWS CloudFormation部署Synthetics Canary触发EventSourceArn校验失败

报错解决步骤

你遇到的Model validation failed (#/EventSourceArn: failed validation constraint for keyword [pattern])报错是因为配置中的EventSourceArn不符合AWS规定的ARN格式规范,可按以下步骤逐一排查修复:

  • 首先修正Canary命名违规问题
    AWS对AWS::Synthetics::Canary的Name属性有强制要求:长度必须在1-21个字符之间,只能包含小写字母、数字和连字符,首字符必须为小写字母。你当前配置的test12345678901234567889-development长度远超上限,会导致关联资源的ARN生成异常,直接触发校验失败。
    修正示例:
Name:
  Fn::Sub: test-dev-monitor
  • 检查关联事件源的ARN配置
    你贴出的Canary资源本身没有直接定义EventSourceArn参数,该报错通常来自模板中其他关联资源,比如触发Canary运行的AWS::Events::Rule规则、关联S3事件通知等配置,需要确认这些资源的EventSourceArn严格遵循AWS标准ARN格式arn:aws:<服务名>:<区域>:<账号ID>:<资源路径>,无拼写错误、缺段、特殊字符未转义问题。

  • 修复脚本中的转义字符残留
    你配置的Script代码段中有HTML转义字符&gt;,需要替换为原生的>,否则脚本执行会出错,修正后的代码:

Script: |
  const https = require('https')
  const URL = process.env.URL;
  var synthetics = require('Synthetics');
  const log = require('SyntheticsLogger');
  log.info('URL:'+URL);
  exports.handler = async function(event) {
    const promise = new Promise(function(resolve, reject) {
      https.get(URL, (res) => {
          resolve(res.statusCode)
        }).on('error', (e) => {
          reject(Error(e))
        })
      })
    return promise
  }
  • 校验动态参数引用有效性
    确认你在环境变量中引用的${Portfolio}和${ApplicationEnvironmentTag}两个模板参数已经提前定义,没有空值或非法特殊字符,避免生成的SSM参数路径异常导致后续关联资源配置错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:15:01