如何将 lambda 连接到 CloudFront? AWS CDK JS
How to connect lambda to CloudFront? AWS CDK JS
代码:
rootOriginFunc = new cloudfront.experimental.EdgeFunction(stack, 'RootOriginFunction', {
runtime: lambda.Runtime.NODEJS_14_X,
handler: 'origin.handler',
code: lambda.Code.fromAsset("./lib/lambdas"),
});
const lambdaFunctionAssociations = [
{
functionVersion: rootOriginFunc.currentVersion,
eventType: cloudfront.LambdaEdgeEventType.ORIGIN_REQUEST,
}
];
.....
....
{
pathPattern: pathPattern,
allowedMethods: cloudfront.CloudFrontAllowedMethods.ALL,
forwardedValues: {
queryString: true,
headers: ["Authorization"],
},
defaultTtl,
maxTtl,
minTtl,
isDefaultBehavior,
lambdaFunctionAssociations,
};
错误:
Users/denis/Documents/projects/ok/ok-app/cdk/node_modules/@aws-cdk/aws-cloudfront/lib/web-distribution.ts:601
if (a.lambdaFunction.role && a.lambdaFunction.role instanceof iam.Role && a.lambdaFunction.role.assumeRolePolicy) {
^
TypeError: Cannot read property 'role' of undefined
at CloudFrontWebDistribution.toBehavior (/Users/denis/Documents/projects/ok/ok-app/cdk/node_modules/@aws-cdk/aws-cloudfront/lib/web-distribution.ts:601:30)
at new CloudFrontWebDistribution (/Users/denis/Documents/projects/ok/ok-app/cdk/node_modules/@aws-cdk/aws-cloudfront/lib/web-distribution.ts:478:78)
at new CdkStack (/Users/denis/Documents/projects/ok/ok-app/cdk/lib/cdk-stack.ts:68:26)
at Object.<anonymous> (/Users/denis/Documents/projects/ok/ok-app/cdk/bin/cdk.ts:7:1)
问题
- 根据文档:https://docs.aws.amazon.com/cdk/api/latest/docs/aws-cloudfront-readme.html#lambdaedge不需要提供任何角色。
- 如何提供所需的角色?
环境
- CDK CLI 版本:1.116.0
- 模块版本:1.116.0
- Node.js 版本: v15.3.0
- OS: MacOS
- 语言(版本): Typescript 3.9.7
LambdaFunctionAssociations 应该考虑:lambdaFunction
{
lambdaFunction: IVersion
eventType: LambdaEdgeEventType
}
代码:
rootOriginFunc = new cloudfront.experimental.EdgeFunction(stack, 'RootOriginFunction', {
runtime: lambda.Runtime.NODEJS_14_X,
handler: 'origin.handler',
code: lambda.Code.fromAsset("./lib/lambdas"),
});
const lambdaFunctionAssociations = [
{
functionVersion: rootOriginFunc.currentVersion,
eventType: cloudfront.LambdaEdgeEventType.ORIGIN_REQUEST,
}
];
.....
....
{
pathPattern: pathPattern,
allowedMethods: cloudfront.CloudFrontAllowedMethods.ALL,
forwardedValues: {
queryString: true,
headers: ["Authorization"],
},
defaultTtl,
maxTtl,
minTtl,
isDefaultBehavior,
lambdaFunctionAssociations,
};
错误:
Users/denis/Documents/projects/ok/ok-app/cdk/node_modules/@aws-cdk/aws-cloudfront/lib/web-distribution.ts:601
if (a.lambdaFunction.role && a.lambdaFunction.role instanceof iam.Role && a.lambdaFunction.role.assumeRolePolicy) {
^
TypeError: Cannot read property 'role' of undefined
at CloudFrontWebDistribution.toBehavior (/Users/denis/Documents/projects/ok/ok-app/cdk/node_modules/@aws-cdk/aws-cloudfront/lib/web-distribution.ts:601:30)
at new CloudFrontWebDistribution (/Users/denis/Documents/projects/ok/ok-app/cdk/node_modules/@aws-cdk/aws-cloudfront/lib/web-distribution.ts:478:78)
at new CdkStack (/Users/denis/Documents/projects/ok/ok-app/cdk/lib/cdk-stack.ts:68:26)
at Object.<anonymous> (/Users/denis/Documents/projects/ok/ok-app/cdk/bin/cdk.ts:7:1)
问题
- 根据文档:https://docs.aws.amazon.com/cdk/api/latest/docs/aws-cloudfront-readme.html#lambdaedge不需要提供任何角色。
- 如何提供所需的角色?
环境
- CDK CLI 版本:1.116.0
- 模块版本:1.116.0
- Node.js 版本: v15.3.0
- OS: MacOS
- 语言(版本): Typescript 3.9.7
LambdaFunctionAssociations 应该考虑:lambdaFunction
{
lambdaFunction: IVersion
eventType: LambdaEdgeEventType
}