Правильный синтаксис для обновления AWS политики ресурсов API Gateway через CLI? - PullRequest
2 голосов
/ 06 марта 2020

Я пытаюсь обновить политику ресурсов на своем экземпляре API Gateway через интерфейс командной строки, и я не могу найти правильный синтаксис для JSON. В документации говорится, что нужно использовать «операции исправления», и, насколько я понимаю, для политики нужна строка JSON. Я пробовал минимизированный JSON, экранированный JSON, одинарные кавычки, без кавычек, и, кажется, ничего не работает. В документации нет примера фактического JSON в поле значения для операций исправления, поэтому я чувствую себя потерянным.

Я пробовал варианты этой команды:

aws apigateway update-rest-api --rest-api-id abcde123 --patch-operations op=replace,path=/policy,value='{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":"*","Action":"execute-api:Invoke","Resource":"arn:aws:execute-api:region:000000000000:*"},{"Effect":"Deny","Principal":"*","Action":"execute-api:Invoke","Resource":"arn:aws:execute-api:region:000000000000:*","Condition":{"StringNotEquals":{"aws:SourceVpce":["vpce-123456789","vpce-987654321"]}}}]}'

Каждый раз я получаю сообщение об ошибке:

Error parsing parameter '--patch-operations': Expected: '=', received: '{' for input:

Соответствующая документация здесь .

1 Ответ

3 голосов
/ 06 марта 2020

Следующая команда была протестирована в моей среде - (с использованием bash)

aws apigateway update-rest-api --rest-api-id %REST_API_ID% --patch-operations op=replace,path=/policy,value='"{\"Version
\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource
\":\"arn:aws:execute-api:region:000000000000:*\"},{\"Effect\":\"Deny\",\"Principal\":\"*\",\"Action\":\"execute-api:Inv
oke\",\"Resource\":\"arn:aws:execute-api:region:000000000000:*\",\"Condition\":{\"StringNotEquals\":{\"aws:SourceVpce\"
:[\"vpce-123456789\",\"vpce-987654321\"]}}}]}"' --region %REGION%

enter image description here

Ключ заключается в преобразовании JSON объект для преобразования текста в строку, я использовал этот сайт . В основном, вставьте JSON в текстовое поле ввода и скопируйте строковый текст в команду AWS CLI.

Подробнее здесь .

...