对于在 AWS CDK 中创建 SNS 主题并向其中添加 HTTPS 订阅时出现“必须提供协议,如果URL未解决”错误的解决方案如下:
在输入 URL 的地方添加必要的协议:
import * as cdk from 'aws-cdk-lib';
import * as sns from 'aws-cdk-lib/aws-sns';
import * as subs from 'aws-cdk-lib/aws-sns-subscriptions';
import * as iam from 'aws-cdk-lib/aws-iam';
const myStack = new cdk.Stack();
const myTopic = new sns.Topic(myStack, 'MyTopic');
const s3BucketArn = 'arn:aws:s3:::my-bucket';
const endpoint = 'https://my-endpoint.com';
new subs.HttpSubscription(endpoint, {
protocol: subs.SubscriptionProtocol.HTTPS // 添加 HTTPS 协议
}).bind(myTopic);
myTopic.addSubscription(new subs.S3Subscription(
s3BucketArn,
{
// 添加 S3 权限
filterPolicy: {
eventType: sns.SubscriptionFilter.stringFilter({
whitelist: ['ObjectCreated:*'],
}),
},
protocol: subs.SubscriptionProtocol.HTTPS
}));
或在实际使用的代码中,直接在 URL 中添加必要的协议:
const endpoint = 'https://my-endpoint.com';
在这两种解决方案中,都需要添加 HTTPS 协议以解决此错误。
下一篇:AWSCDK安装问题