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

LocalStack中CloudFormation创建AWS::SNS::Subscription失败报错

问题解决方案:LocalStack中CloudFormation部署SNS订阅失败(not enough values to unpack)

核心问题原因

LocalStack 3.1.1.dev开发版本存在SNS订阅ARN解析的内部bug:当直接通过字符串拼接生成TopicArn而非引用资源时,无法正确解析ARN的完整结构,导致内部逻辑抛出解包错误。

解决方案

1. 切换到LocalStack稳定版本

开发版可能包含未修复的问题,改用正式稳定版启动:

docker stop localstack
docker run -d -p 4566:4566 -v /var/run/docker.sock:/var/run/docker.sock localstack/localstack:3.1.0

2. 修改CloudFormation模板,正确引用资源ARN

避免直接拼接字符串生成ARN,改为通过资源引用获取标准格式的ARN:

修改后的infrastructure.yaml关键部分:

Resources:
  # 其他资源保持不变

  QueuePolicy:
    Type: AWS::SQS::QueuePolicy
    Properties:
      Queues:
        - !Ref CreateAccountEventQueue
      PolicyDocument:
        Statement:
          - Effect: Allow
            Principal:
              Service: sns.amazonaws.com
            Action:
              - sqs:SendMessage
            Resource: !GetAtt CreateAccountEventQueue.Arn
            Condition:
              ArnEquals:
                aws:SourceArn: !GetAtt CreateAccountEventTopic.Arn  # 引用SNS Topic的ARN

  CreateAccountEventSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      TopicArn: !Ref CreateAccountEventTopic  # 直接引用Topic资源,而非拼接字符串
      Endpoint: !GetAtt CreateAccountEventQueue.Arn
      Protocol: sqs

  CreateAccountEventTopic:
    Type: AWS::SNS::Topic
    Properties:
      DisplayName: !Sub "${AwsTeam}_${AwsSt}_${Environment}_sns_create_account_event_topic"
      TopicName: !Sub "${AwsTeam}_${AwsSt}_${Environment}_sns_create_account_event_topic"

3. 重新部署栈

awslocal cloudformation deploy --template-file infrastructure.yaml --stack-name teststack

验证步骤

  1. 检查栈是否创建成功:
awslocal cloudformation describe-stacks --stack-name teststack
  1. 验证SNS订阅是否存在:
awslocal sns list-subscriptions-by-topic --topic-arn $(awslocal sns list-topics | jq -r '.Topics[] | select(.TopicName | contains("create_account_event")) | .TopicArn')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:35:03