Amazon web services 在Terraform中,如何使用请求路径中的变量指定API网关端点?

Amazon web services 在Terraform中,如何使用请求路径中的变量指定API网关端点?,amazon-web-services,aws-api-gateway,terraform,Amazon Web Services,Aws Api Gateway,Terraform,在AWSAPI网关中,我有一个端点定义为/users/{userId}/someAction,我正试图用terraform重新创建它 我会开始有一些像这样的链接网关资源链 资源“aws\U api\U网关\U资源”“用户”{ rest_api_id=“${var.rest_api_id}” parent_id=“${var.parent_id}” path\u part=“用户” } //{userId}这里? 资源“aws\U api\U网关\U资源”“SomeAction”{ rest_ap

在AWSAPI网关中,我有一个端点定义为
/users/{userId}/someAction
,我正试图用terraform重新创建它

我会开始有一些像这样的链接网关资源链

资源“aws\U api\U网关\U资源”“用户”{
rest_api_id=“${var.rest_api_id}”
parent_id=“${var.parent_id}”
path\u part=“用户”
}
//{userId}这里?
资源“aws\U api\U网关\U资源”“SomeAction”{
rest_api_id=“${var.rest_api_id}”
parent_id=“${aws_api_gateway_resource.UserIdReference.id}”
path\u part=“someAction”
}
在其中,我定义了
aws\u api\u gateway\u方法
以及其他所有内容

如何在terraform中定义此端点?terraform文档和示例不包括此用例。

您需要定义一个要使用其
路径部分的参数:

//列表
资源“aws\U api\U网关\U资源”帐户{
rest\u api\u id=var.gateway\u id
父\u id=aws\u api\u网关\u资源.finance.id
path_part=“账户”
}
//单位
资源“aws\U api\U网关\U资源”帐户{
rest\u api\u id=var.gateway\u id
父\u id=aws\u api\u网关\u资源.accounts.id
path_part=“{accountId}”
}
然后创建和启用路径参数:

资源“aws\u api\u网关\u方法”“获取帐户”{
rest\u api\u id=var.gateway\u id
资源\u id=var.resource\u id
http_method=“GET”
授权=“无”
请求参数={
“method.request.path.accountId”=true
}
}
最后,您可以在中成功创建映射:

资源“aws\U api\U网关\U集成”“获取帐户集成”{
rest\u api\u id=var.gateway\u id
资源\u id=var.resource\u id
http\u method=aws\u api\u gateway\u method.get-account.http\u method
type=“HTTP”
集成\u http\u方法=“获取”
uri=“/integration/accounts/{id}”
passthrough\u behavior=“当\u不匹配时”
请求参数={
“integration.request.path.id”=“method.request.path.accountId”
}
}

该方法需要存在,并且启用了参数,以便集成映射工作。

这不是只针对OP问题的
用户/{userId}
部分吗?目前面临与原始问题相同的问题:设法使
resource/{resourceId}
工作,但没有
resource/{resourceId}/someAction
。尝试在
{pathId}
资源下创建另一个资源,使用它自己的方法和集成,但我得到一个“缺少身份验证令牌”错误-这使我怀疑它实际上没有创建任何内容。您在文档中的何处找到此解决方案?是否只是深入到AWS文档中?根据文档,在方法和集成中分配到
请求参数
所需的Equals运算符
=
,例如,我看到
AWS\u api\u gateway\u资源。帐户已定义,但似乎没有在任何地方引用。这是疏忽吗?我原以为它可能会用在aws\u api\u gateway\u方法中。也许在其
resource\u id
字段中?添加到答案中,您可以将父\u id更改为指向具有动态参数的
aws\u api\u gateway\u资源。