AWS CDK报错:使用参数创建SNS HTTPS订阅需指定协议
解决AWS CDK中UrlSubscription动态URL参数的报错问题
问题原因
当使用动态解析的URL(比如CloudFormation参数pagerduty_url的value_as_string)创建SNS的UrlSubscription时,CDK在合成阶段无法提前识别URL的协议类型,因此会抛出Must provide protocol if url is unresolved错误。而硬编码字符串URL时,CDK可以直接解析出协议,所以不会触发这个报错。
解决方案
显式指定UrlSubscription的protocol参数,明确URL使用的协议(PagerDuty通常使用HTTPS协议)。
修改后的代码示例:
from aws_cdk import aws_sns_subscriptions as subscriptions # 假设pagerduty_url是你定义的CfnParameter my_sns_topic.add_subscription( subscriptions.UrlSubscription( pagerduty_url.value_as_string, protocol=subscriptions.SubscriptionProtocol.HTTPS ) )
补充说明
- 如果你的PagerDuty URL使用的是HTTP协议,将
protocol值改为subscriptions.SubscriptionProtocol.HTTP即可。 - 该规则适用于所有动态生成的URL(比如来自其他AWS资源的属性值、参数存储的值等),只要URL在CDK合成阶段无法被静态解析,就必须显式指定协议。
内容的提问来源于stack exchange,提问作者john4ster
相关产品推荐
相关产品推荐

