通过CLI更新AWS API Gateway资源策略的正确语法?

问题描述 投票:2回答:1

我正在尝试通过CLI在我的API Gateway实例上更新资源策略,但似乎找不到正确的JSON语法。在文档中,它说使用“​​补丁操作”,据我了解,它需要该策略的字符串JSON。我尝试了缩小的JSON,转义的JSON,单引号,无引号,而且似乎没有任何作用。该文档在补丁操作的value字段中没有实际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:

相关文档here

json amazon-web-services api command-line-interface
1个回答
3
投票

以下命令已针对我的环境进行了测试-(使用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对象转换为字符串化的文本,我用过this site。基本上,将JSON粘贴到输入文本框中,然后将字符串化的文本复制到AWS CLI命令中。

更多信息here

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.