aws cli команда для подписки на топи c с фильтрами - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь написать команду кросс-аккаунта aws cli, чтобы подписаться на топи c и одновременно создать фильтр для этой подписки. Ниже показано, как выглядит моя команда.

aws sns subscribe --topic-arn arn:aws:sns:region:accountId:my_topic --protocol sqs --notification-endpoint arn:aws:sqs:region:differentAccountId:my_sqs_queue --attributes "{'RawMessageDelivery': 'true', 'FilterPolicy': '{\"filter\": [\"value1\", \"value2\"]}'}"

Когда я запускаю эту ошибку, я получаю сообщение об ошибке ниже.

Unknown options: --attributes, [\value1\,, \value2\]}'}, {'RawMessageDelivery': 'true', 'FilterPolicy': '{" filter\:

У меня есть доступ к администратору для доступа к обеим aws учетным записям. Любые предложения о том, что я делаю неправильно?

РЕДАКТИРОВАТЬ: Я запускаю это в терминале PowerShell кода VS в windows.

1 Ответ

1 голос
/ 18 апреля 2020

Вероятно, есть более простой способ сделать это (например, использовать --cli-input-json и предоставить JSON в файле), но у меня это работает:

aws sns subscribe --topic-arn arn:aws:sns:region:accountId:my_topic --protocol sqs --notification-endpoint arn:aws:sqs:region:differentAccountId:my_sqs_queue --attributes '{\"RawMessageDelivery\": \"true\", \"FilterPolicy\": \"{\\\"filter\\\": [\\\"value1\\\", \\\"value2\\\"]}\"}'

Проблема был JSON, включенный в строку, для которой \" нужно было экранировать как \\\".

...