AWS API Gateway - 如何通过CLI或GO aws-sdk向root资源添加方法?

时间:2016-10-06 01:30:57

标签: amazon-web-services aws-sdk aws-cli aws-api-gateway terraform

AWS Console的{​​{1}}上,您可以向API Gateway method root添加新的/必须先添加新资源。

但我无法通过apiaws cli(对于GO)了解如何做到这一点。

这甚至可能吗?

PS:最终我想通过aws-sdk

这样做

4 个答案:

答案 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部分有时也会出现问题。