在AWS Console
的{{1}}上,您可以向API Gateway
method
root
添加新的/
必须先添加新资源。
但我无法通过api
或aws cli
(对于GO)了解如何做到这一点。
这甚至可能吗?
PS:最终我想通过aws-sdk
。
答案 0 :(得分:2)
您可以按照以下步骤使用aws-cli来实现它。
您可以通过aws apigateway put-method
创建一个新方法,其中需要以下参数: - rest-api-id, - resources-id, - http-method, - authorizationization-type
首先,从添加了root资源的方法的json-output中找到 - rest-api-id 。
aws apigateway get-rest-apis
- resource-id 是此处的关键部分。 rest-api的root-resource-id可以通过以下命令获取,该命令返回一个JSON对象。
aws apigateway get-resources --rest-api-id <restApiId> | jq -r '.items[0].id'
jq是一款快速,轻量,灵活的CLI JSON处理器。访问此处了解更多“http://blog.librato.com/posts/jq-json”
替换值并从CLI调用该函数。
示例:
aws apigateway put-method --rest-api-id hgwwri3w30 --http-method POST --authorization-type NONE --resource-id `aws apigateway get-resources --rest-api-id hgwwri3w30 | jq -r '.items[0].id'`
成功后你会收到这样的回复,
{
"httpMethod": "POST",
"authorizationType": "NONE",
"apiKeyRequired": false
}
您可以立即从控制台或使用其他参数在函数调用期间设置方法。
aws apigateway put-method help
答案 1 :(得分:1)
好的,我想我至少在terraform
找到了答案。
要获取我们想要添加方法的root resource
,我们可以使用
aws_api_gateway_rest_api.ApiName.root_resource_id
答案 2 :(得分:0)
很高兴你找到了以terraform方式做到这一点的答案。
如果您想在aws-cli中执行此操作,请使用put-method。
答案 3 :(得分:0)
获得根路径的 id 的更好方法是:
aws apigateway get-resources --rest-api-id <restApiId> --query 'items[?path==`/`]' --output text
然后,您可以将该ID写入文件> output.txt
,并将其加载到kishor提到的put
方法中。
即使使用Terraform,aws_api_gateway_rest_api数据源的root_resource_id
部分有时也会出现问题。