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转义字符>,需要替换为原生的>,否则脚本执行会出错,修正后的代码:
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
相关产品推荐
相关产品推荐

