创建AWS SNS订阅遇InvalidParameter错误:TopicArn参数无效
我在为AWS SES模板配置渲染失败事件通知时,按照SNS订阅文档操作,却遇到以下错误:
无法创建订阅。
错误代码:InvalidParameter - 错误信息:无效参数:TopicArn
已经通过aws configure get region确认区域配置正确,aws sts get-caller-identity验证账号无误。
以下是具体排查和解决步骤:
核对TopicArn格式与正确性
SNS主题ARN的标准格式为arn:aws:sns:<区域ID>:<账号ID>:<主题名称>,比如arn:aws:sns:us-east-1:123456789012:SES-Render-Failures。检查是否存在拼写错误:区域代码格式错误(如us-east-1写成useast-1)、账号ID数字位数不对、主题名称大小写错误(SNS主题名称区分大小写)。确认SNS主题与SES同区域
SES的事件通知要求关联的SNS主题必须和SES处于同一区域,哪怕本地CLI区域配置正确,主题在其他区域也会触发该错误。验证主题存在性
执行CLI命令aws sns list-topics列出当前区域的所有主题,确认你使用的TopicArn在返回结果中。如果主题是刚创建的,等待几秒再尝试,避免服务同步延迟。检查输入的ARN是否有冗余字符
复制粘贴TopicArn时可能带入空格、换行符或引号,手动输入一遍ARN再尝试订阅。检查IAM权限与主题访问策略
当前操作账号需要拥有sns:Subscribe权限,同时SNS主题的访问策略需允许该账号执行订阅操作。主题访问策略中应包含类似如下的授权语句:{ "Effect": "Allow", "Principal": { "AWS": "你的账号ARN" }, "Action": "sns:Subscribe", "Resource": "你的TopicArn" }
内容的提问来源于stack exchange,提问作者Colfah

