【问题标题】:Using aws cli to add send message permission for SQS使用 aws cli 为 SQS 添加发送消息权限
【发布时间】:2020-06-09 10:12:00
【问题描述】:

我正在尝试将现有的 SQS 队列设置为 SNS 主题的订阅者。在 AWS 控制台的权限选项卡中,我可以将策略文档设置为

{
  "Version": "2012-10-17",
  "Id": "arn:aws:sqs:us-east-1:7670234568007:stdsourcequeue/SQSDefaultPolicy",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "sqs:SendMessage",
      "Resource": "arn:aws:sqs:us-east-1:7670234568007:stdsourcequeue",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:sns:us-east-1:7670234568007:new_posts"
        }
      }
    }
  ]
}

如何使用 aws-cli 来做到这一点

【问题讨论】:

    标签: amazon-web-services amazon-sqs amazon-sns


    【解决方案1】:

    这是一个实际示例,说明如何使用set-queue-attributes

    cat >/tmp/sqs_polcy << EOL
    {
        "Policy": "{\"Version\":\"2012-10-17\",\"Id\":\"arn:aws:sqs:us-east-1:7670234568007:stdsourcequeue\/SQSDefaultPolicy\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"sqs:SendMessage\",\"Resource\":\"arn:aws:sqs:us-east-1:7670234568007:stdsourcequeue\",\"Condition\":{\"ArnEquals\":{\"aws:SourceArn\":\"arn:aws:sns:us-east-1:7670234568007:new_posts\"}}}]}"
    }
    EOL
    
    aws sqs set-queue-attributes \
        --queue-url https://<your-queue-url> \
        --attributes file:///tmp/sqs_polcy
    

    在上面,我使用set-queue-attributes 命令所需的策略创建了/tmp/sqs_polcy 文件。

    您的策略必须从 json 字符串化,然后才能在 CLI 命令中使用。

    【讨论】:

      【解决方案2】:

      这些通常通过用于 SQS 的 add-permission 的 CLI 命令进行管理。

      但是,当您使用自己的自定义策略时,AWS 文档说明了以下内容

      AddPermission 会为您生成策略。您可以使用SetQueueAttributes 上传您的政策。

      这可以通过set-queue-attributes 函数访问。

      您的政策需要根据 Policy 的键值转换为 JSON 文件。

      请注意,这样做会替换附加到您的 SQS 队列的策略,因此请务必事先对其进行验证。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-27
        • 1970-01-01
        相关资源
        最近更新 更多