【问题标题】:Send messages from multiple SNS topics to a single Amazon SQS将来自多个 SNS 主题的消息发送到单个 Amazon SQS
【发布时间】:2021-04-14 02:32:04
【问题描述】:

Terraform 新手!

我正在尝试将来自两个 SNS 主题 SNSASNSB 的消息发送到亚马逊 SQS 当我在本地执行plz plan 并且“然后”我尝试通过 JENKINS 进行部署时,一切都很好,这给了我一个错误提示:

Error: error creating SNS topic subscription: AuthorizationError: User: arn:aws:sts::325400131687:assumed-role/JENKINSDEPLOY/ is not authorized to perform: 
SNS:Subscribe on resource: arn:aws:sns:us-east-1:453101592424:snsb

有趣的是,SNSA 没有这个问题 我得到一个输出说aws_sns_topic_subscription.snsa: Creation complete after 1s

我对两个 SNS 都授予了相同的权限,我的两美分在 Roles/Perms 上,我认为我搞砸了!! 因为当我尝试在我的MsgPerm.yml 中重新排序 SNS 主题时(先放置 SNSB,然后是 SNSA),这次 SNSB 被创建并得到了与 SNSA 相同的错误

任何与此问题相关的建议或cmet,将不胜感激,谢谢

我的角色和权限设置如下:

MsgPerm.yml

---
statements:
  -
    effect: "Allow"
    actions:
      - "sqs:AddPermission"
      - "sqs:CreateQueue"
      - "sqs:DeleteQueue"
      - "sqs:Get*"
      - "sqs:List*"
      - "sqs:PurgeQueue"
      - "sqs:RemovePermission"
      - "sqs:SetQueueAttributes"
      - "sqs:TagQueue"
      - "sqs:UnTagQueue"
    resources:
      - !Sub "arn:aws:sqs:${AWS::Region}:${AWS::AccountId}:myproject*"
  -
    effect: "Allow"
    actions:
      - "sqs:SendMessage"
      - "sqs:SendMessageBatch"
      - "sqs:ReceiveMessage"
      - "sqs:DeleteMessage"
      - "sqs:DeleteMessageBatch"
      - "sqs:DeleteQueue"
      - "sqs:CreateQueue"
      - "sqs:AddPermission"
      - "sqs:PurgeQueue"
      - "sqs:RemovePermission"
      - "sqs:TagQueue"
      - "sqs:UntagQueue"
      - "sqs:Set*"
      - "sqs:Get*"
      - "sqs:List*"
    resources:
      - !Sub "arn:aws:sqs:${AWS::Region}:${AWS::AccountId}:myproject*"
      - "arn:aws:sns:us-east-1:453101592424:snsa"
      - "arn:aws:sns:us-east-1:453101592424:snsb"
  -
    effect: "Allow"
    actions:
      - "sns:CreateTopic"
      - "sns:DeleteTopic"
      - "sns:Subscribe"
      - "sns:Unsubscribe"
      - "sns:AddPermission"
      - "sns:RemovePermission"
      - "sns:Receive"
      - "sns:Publish"
      - "sns:TagResource"
      - "sns:UntagResource"
      - "sns:Set*"
      - "sns:Get*"
      - "sns:List*"
    resources:
      - !Sub "arn:aws:sns:${AWS::Region}:${AWS::AccountId}:PREFIX*"
      - "arn:aws:sns:us-east-1:453101592424:snsa"
      - "arn:aws:sns:us-east-1:453101592424:snsb"

JENKINSDEPLOY.yml

---
managedPolicyArns:
  -
    name: Enterprise/GoldenVPCRequirements
    cignamanaged: true
  -
    name: AmazonAPIGatewayAdministrator
    awsmanaged: true
  -
    name: MsgPerm
    awsmanaged: false
  -
    name: SecurityPerm
    awsmanaged: false

federated: true

最后是我的sns.tf 文件

resource "aws_sns_topic_subscription" "snsa" {
  topic_arn = "arn:aws:sns:${var.datastore_account_region}:${var.datastore_account_id}:${var.sns_topic_snsa}"
  protocol  = "sqs"
  endpoint  = aws_sqs_queue.incoming.arn

  depends_on = [
    aws_sqs_queue.incoming
  ]
}


resource "aws_sns_topic_subscription" "snsb" {
  topic_arn = "arn:aws:sns:${var.datastore_account_region}:${var.datastore_account_id}:${var.sns_topic_snsb}"
  protocol  = "sqs"
  endpoint  = aws_sqs_queue.incoming.arn

  depends_on = [
    aws_sqs_queue.incoming
  ]
}

【问题讨论】:

    标签: yaml terraform amazon-sqs amazon-sns terragrunt


    【解决方案1】:

    你的错误信息写道:

    arn:aws:sns:us-east-1:453101592424:SNSB
    

    但您的政策使用(不同的情况snsb):

    arn:aws:sns:us-east-1:453101592424:snsb
    

    主题名称区分大小写

    【讨论】:

    • 是的,我知道,snsa 和 snsb - 这些是编造的名字,我的问题是错字,我现在已经更新了,谢谢
    猜你喜欢
    • 2020-06-11
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多