我正在尝试将现有的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执行此操作
实际示例,如何使用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
上面,我使用来自json,然后才能在CLI命令中使用。/tmp/sqs_polcy
命令所需的策略创建set-queue-attributes
文件。您的策略
必须字符串化
但是,当您使用自己的自定义策略时,AWS文档说明了以下内容
AddPermission为您生成一个策略。您可以使用SetQueueAttributes
上传您的政策。
可以通过set-queue-attributes功能访问。
您的策略将需要根据Policy
的键值转换为JSON文件。
作为警告,这样做将
替换附加到您的SQS队列的策略,因此请确保事先进行验证。