为什么我得到 Resource's path part only allow a-zA-Z0-9._-: 在尝试使用 Terraform 创建 API 网关资源时?
Why do I get Resource's path part only allow a-zA-Z0-9._-: when trying to create an API gateway resource using Terraform?
是否可以使用 Terraform 从根目录创建和 AWS API gateway resources 子目录?
做的时候
resource "aws_api_gateway_resource" "MyDemoResource" {
rest_api_id = aws_api_gateway_rest_api.MyDemoAPI.id
parent_id = aws_api_gateway_rest_api.MyDemoAPI.root_resource_id
path_part = "/will/this/work"
}
我收到错误:
aws_api_gateway_resource.MyDemoResource: 1 error occurred: aws_api_gateway_resource.MyDemoResource: Error creating API Gateway Resource: BadRequestException: Resource's path part only allow a-zA-Z0-9._-: or a valid greedy path variable and curly braces at the beginning and the end."
我找到了这个 GitHub ticket 和其他一些喜欢的人。我不确定这是错误还是有变通办法的设计。
此外,如果我在 AWS 控制台中手动创建并导入它,完整路径会正确显示在属性 path
中,但不会出现在输入 path_part
.
中
"aws_api_gateway_resource.MyDemoResource": {
"type": "aws_api_gateway_resource",
"depends_on": [],
"primary": {
"id": "foo",
"attributes": {
"id": "foo",
"parent_id": "foo",
**"path": "/will/this/work"**,
**"path_part": "work"**,
"rest_api_id": "foo"
}
path_part
是 last path segment of an API Gateway resource,而不是 完整的 路径。这反映了您在 AWS 控制台中看到的树状结构。
导出了完整路径,是的,但没有作为参数。这就是为什么您在导入的 Terraform 状态中拥有完整路径 path
和最后一个路径段 - work
- 作为 path_part
.
目前,您没有经过最后一个路径段;你传递的是完整路径。
您需要做的是为路径段的不同部分指定 3 个不同的 aws_api_gateway_resource
,并正确指定父 ID 以创建您需要的结构:
will
父 ID 为 aws_api_gateway_rest_api.{REST-API-NAME}.root_resource_id
this
父 ID 为 aws_api_gateway_resource.will.id
work
父 ID 为 aws_api_gateway_resource.this.id
视觉表示:
MyAPI
├─ /will
│ ├─ /this
│ │ ├─ /work
是否可以使用 Terraform 从根目录创建和 AWS API gateway resources 子目录?
做的时候
resource "aws_api_gateway_resource" "MyDemoResource" {
rest_api_id = aws_api_gateway_rest_api.MyDemoAPI.id
parent_id = aws_api_gateway_rest_api.MyDemoAPI.root_resource_id
path_part = "/will/this/work"
}
我收到错误:
aws_api_gateway_resource.MyDemoResource: 1 error occurred: aws_api_gateway_resource.MyDemoResource: Error creating API Gateway Resource: BadRequestException: Resource's path part only allow a-zA-Z0-9._-: or a valid greedy path variable and curly braces at the beginning and the end."
我找到了这个 GitHub ticket 和其他一些喜欢的人。我不确定这是错误还是有变通办法的设计。
此外,如果我在 AWS 控制台中手动创建并导入它,完整路径会正确显示在属性 path
中,但不会出现在输入 path_part
.
"aws_api_gateway_resource.MyDemoResource": {
"type": "aws_api_gateway_resource",
"depends_on": [],
"primary": {
"id": "foo",
"attributes": {
"id": "foo",
"parent_id": "foo",
**"path": "/will/this/work"**,
**"path_part": "work"**,
"rest_api_id": "foo"
}
path_part
是 last path segment of an API Gateway resource,而不是 完整的 路径。这反映了您在 AWS 控制台中看到的树状结构。
导出了完整路径,是的,但没有作为参数。这就是为什么您在导入的 Terraform 状态中拥有完整路径 path
和最后一个路径段 - work
- 作为 path_part
.
目前,您没有经过最后一个路径段;你传递的是完整路径。
您需要做的是为路径段的不同部分指定 3 个不同的 aws_api_gateway_resource
,并正确指定父 ID 以创建您需要的结构:
will
父 ID 为aws_api_gateway_rest_api.{REST-API-NAME}.root_resource_id
this
父 ID 为aws_api_gateway_resource.will.id
work
父 ID 为aws_api_gateway_resource.this.id
视觉表示:
MyAPI
├─ /will
│ ├─ /this
│ │ ├─ /work