在使用AWS SNS/SQS自托管Encore时,如何修复“unable to verify SNS topic attributes”崩溃?
我正在将Encore应用自托管在AWS ECS上,使用SNS/SQS进行发布/订阅。应用在启动时会崩溃,错误如下:
panic: unable to verify SNS topic attributes (may be missing IAM role allowing access):
operation error SNS: GetTopicAttributes, https response error StatusCode: 0, RequestID: ,
request send failed, Post "<https://sns>..amazonaws.com/": dial tcp: lookup
sns..amazonaws.com: no such host
请注意 sns..amazonaws.com 中的两个点——端点URL缺少区域信息。我的ECS任务角色设置正确,基础设施配置指定了正确的ARN和 URL:
{
"pubsub": [
{
"type": "aws_sns_sqs",
"topics": {
"my-topic": {
"arn": "arn:aws:sns:ap-south-1:123456789:my-topic",
"subscriptions": {
"my-subscription": {
"url": "<https://sqs.ap-south-1.amazonaws.com/123456789/my-subscription>"
}
}
}
}
}
]
}
解决方案
SNS端点URL中的两个点(sns..amazonaws.com)表明在ECS任务中未设置 AWS_REGION 环境变量。尽管你的基础设施配置包含带有正确区域的ARN,AWS SDK仍然需要 AWS_REGION(或 AWS_DEFAULT_REGION)环境变量来构建服务端点URL。
在你的ECS任务定义中设置 AWS_REGION 环境变量:
{
"containerDefinitions": [
{
"environment": [
{
"name": "AWS_REGION",
"value": "ap-south-1"
}
]
}
]
}
添加完毕后,应用应能正常启动,并顺利连接到SNS/SQS。
相关文档:
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。