正在尝试设置
Cloudfront
使用
Lambda function url
代码如下:
this.distribution = new Distribution(this, id + "Distro", {
comment: id + "Distro",
defaultBehavior: {
origin: new S3Origin(s3Site),
viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
},
additionalBehaviors: {
[`api-prd-v2/*`]: {
compress: true,
originRequestPolicy: originRequestPolicy,
origin: new HttpOrigin(functionUrl.url, {
protocolPolicy: OriginProtocolPolicy.HTTPS_ONLY,
originSslProtocols: [OriginSslPolicy.TLS_V1_2],
}),
allowedMethods: AllowedMethods.ALLOW_ALL,
viewerProtocolPolicy: ViewerProtocolPolicy.HTTPS_ONLY,
cachePolicy: apiCachePolicy,
},
这个
functionUrl
对象在不同的堆栈中创建,并传递到
cloudformation
堆栈,定义如下:
this.functionUrl = new FunctionUrl(this, 'LambdaApiUrl', {
function: this.lambdaFunction,
authType: FunctionUrlAuthType.NONE,
cors: {
allowedOrigins: ["*"],
allowedMethods: [HttpMethod.GET, HttpMethod.POST],
allowCredentials: true,
maxAge: Duration.minutes(1)
}
});
上述代码失败,因为“参数源名称不能包含冒号”。
大概是因为
functionUrl.url
评估为
https://xxx.lambda-url.ap-southeast-2.on.aws/
(注意
https://
)而
HttpOrigin
参数应该只是域名
xxx.lambda-url.ap-southeast-2.on.aws
。
不过,我不能只写代码来破解网址(即。
functionUrl.url.replace("https://", "")
)因为当我的代码执行时
url
属性类似于
${Token[TOKEN.350]}
。
函数url工作正常:如果我硬编码
HttpOrigin
到函数url的值(例如
xxx.lambda-url.ap-东南-2.on.aws
)-效果很好。
如何使用CDK代码设置从Cloudfront到函数url的引用?
我正在使用
aws-cdk
版本2.21.1。
有一个悬而未决的问题需要添加支持:
https://github.com/aws/aws-cdk/issues/20090