在使用AWS SNS/SQS自托管Encore时,如何修复“unable to verify SNS topic attributes”崩溃?

编程语言 2026-07-11

我正在将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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章