带有DomainNameOptions的AWS CDK api映射



我有下面的python cdk来构建我的API

domain_name = _apigateway.DomainNameOptions(
certificate=certificate,
domain_name=custom_domain_name,
mtls={
"bucket": _s3.Bucket.from_bucket_arn(self, 'BucketByArn', mtls_bucket_arn),
"key": mtls_bucket_key
},
security_policy=_apigateway.SecurityPolicy("TLS_1_2")
)
api_01 = _apigateway.LambdaRestApi(
self,
api_id,
rest_api_name=rest_api_name,
domain_name=domain_name,
handler=measurements_fn,
deploy_options=_apigateway.StageOptions(stage_name=stage),
proxy=False
)
api_01.node.default_child.add_property_override(
"DisableExecuteApiEndpoint",
"true"
)

有2个端点附加到api,我想创建一个api映射。根据文档,我看到我应该使用_apigatewayv2。ApiMapping

_apigatewayv2.ApiMapping(
self,
id='someId',
api=api_01,
api_mapping_key='api/1.0',
domain_name=domain_name
)

但是domain_name选项由于

而失败

预期对象引用,已获得{"jsii.struct&quot美元:{"fqn"@aws-cdk/aws-apigateway.DomainNameOptions"

的情况是,我需要DomainNameOptions,因为我使用LambdaRestApi,基于文档期望这样一个对象。

任何关于如何实现API映射我的情况下的想法?

如果您查看aws_apigatewayv2.ApiMapping和domain_name对象的文档,您可以看到它期望iDomainName对象-因此您必须找到具有相同接口钩子的适当对象。但是,如果你在文档中点击它,它会把你带到这里- anapigatewayv2iddomainname接口,而不是DomainNameOptions的原始版本。(在apigateway模块中,而不是apigatewayv2模块中)

所有这些都是说…你的交叉库并不总是像预期的那样工作,最重要的是apigatewayv2是实验性的,容易出现一些集成问题,明天可能会改变。

当您尝试使用连接到Lambda的Rest API时,那么apigateway(不是v2)模块应该足够了。(apigatewayv2更多用于实验性的HTTP api的lambda)

只使用aws_apigateway模块,你可以这样做:

my_domain = _apigateway.DomainName(
self, "MyDomain",
domain_name=my_domain_name)
my_domain.add_base_path_mapping(
target_api= my_api, # a aws_apigateway.RestApi() object
)

然后你要确保你的route53 ARecord也被更新了,否则dns将不适用于你的自定义域。(这是使用' aws_route53和aws_route53_targets模块)

_route53.ARecord(
self, "MyDomainAliasRecord",
zone=my_route53_zone, # a aws_route53.HostedZone() Object
target=my_route_53_target # a aws_route53.RecordTarget() object),
record_name=my_domain_name
)

相关内容

  • 没有找到相关文章

最新更新