Estoy intentando configurar una cola de SQS existente como suscriptor de un tema de SNS. En la consola de AWS en la pestaña de permisos, puedo configurar el documento de política para
{ "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" } } } ] }¿Cómo puedo hacer esto usando aws-cli?
Estos generalmente se administran a través del comando CLI de add-permission para SQS.
Sin embargo, como está utilizando su propia política personalizada, la documentación de AWS establece lo siguiente
AddPermission genera una política para usted. Puede usar
SetQueueAttributespara cargar su política.
Esto sería accesible a través de la función set-queue-attributes .
Su política deberá convertirse en un archivo JSON, contra el valor clave de Policy .
Como advertencia, al hacer esto, se reemplazará la política adjunta a su cola de SQS, así que asegúrese de validarla de antemano.
Este es un ejemplo práctico de cómo hacerlo usando 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 Arriba, creo el archivo /tmp/sqs_polcy con la política, que se requiere para el comando set-queue-attributes .
Su política debe especificarse desde json, antes de que pueda usarla en el comando CLI.