0

关于AWS Console对于API Gateway,可以在apiroot/)中添加新的method,而无需先添加新的资源。AWS API网关 - 如何通过CLI或GO aws-sdk将方法添加到根资源?

但我不知道如何做到这一点与aws cliaws-sdk(GO)。

这甚至可能吗?

PS:最终我想通过terraform来做到这一点。

+0

我不确定我是否按照你所说的。当您在API网关上创建新方法时,您可以同时将其连接到资源(即使在控制台中),因为实际上该方法是资源的一部分(定义方法在AWS控制台中的资源下)。因此,使用Terraform时,创建新方法时,您必须提供方法的资源。 – ydaetskcoR

回答

0

好的,我想我至少找到了terraform的答案。

得到我们想要添加的方法root resource来,我们就可以使用

aws_api_gateway_rest_api.ApiName.root_resource_id

0

高兴你发现在terraform这样的答案。

如果你想在aws-cli中使用,请使用put-method

0

您可以按照以下步骤使用aws-cli来实现它。

您可以创建aws apigateway put-method一个新的方法,其中需要进行以下参数:--rest-API-ID,--resource-ID,--http法,--authorization型

首先,找到您的--rest-api-id从json-output中添加到根资源的方法。

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