尝试通过CloudFormation创建AWS::ApiGateway::BasePathMapping
时,出现以下错误:
Invalid domain name identifier specified
以下是应该创建AWS::ApiGateway::BasePathMapping
的CloudFormation模板的部分:
{
"Parameters": {
"ApiDomainName": {
"Description": "The domain name for the API",
"Type": "String"
}
},
"Resources": {
"ApiBasePathMapping": {
"Type": "AWS::ApiGateway::BasePathMapping",
"Properties": {
"DomainName": {
"Ref": "ApiDomainName"
},
"RestApiId": {
"Ref": "RepositoryApi"
},
"Stage": {
"Ref": "ApiProductionStage"
}
},
"DependsOn": [
"ApiProductionStage"
]
}
}
}
documentation没有提及它需要对DomainName
有什么特别之处,但是这个资源的文档似乎缺少一些信息(例如,它没有列出输出,即使有一个Distribution Domain Name
作为示例创建。)
堆栈的其余部分按预期工作。我试图将此资源添加为更改集。我拥有我想要使用的域名,并且我已在ACM中为此域创建了一个证书。
答案 0 :(得分:7)
从AWS论坛引用:
您只能在域名后创建或修改基本路径映射 已添加到API网关。这“无效的域名标识符 在指定的域名时返回指定的“错误消息” 找不到基本路径映射,表示尚未添加 爱好。
此外,截至2017年3月,通过CloudFormation将域名添加到API网关的唯一方法是通过CloudFormation提供的自定义资源。
参考:https://forums.aws.amazon.com/message.jspa?messageID=769627
答案 1 :(得分:1)
现在可以做到这一点。您只需要在CFN模板上明确声明存在依赖项(DependsOn
):
...
ApiDevMapping:
Type: 'AWS::ApiGateway::BasePathMapping'
Properties:
BasePath: v1.0
Stage: dev
DomainName: my-api.example.com
RestApiId: !Ref MobileApiDev
DependsOn:
- MobileApiDevDomain
...