amazon-cloudfront - 如何将 lambda 连接到 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
- 操作系统: MacOS
- 语言(版本): Typescript 3.9.7
解决方案
LambdaFunctionAssociations应该包含: lambdaFunction
{
lambdaFunction: IVersion
eventType: LambdaEdgeEventType
}
推荐阅读
- asp.net-mvc - c# .net5 动态前缀url 使前缀因访问时搜索多次变化
- python - python _thread 返回第一个 arg 必须是可调用的
- angular - 如何在 Angular 服务中本地保存 Apollo 响应?
- android - Kotlin 捕获图像并将其存储在本地
- postgresql - PostgreSQL 为有序查询选择了错误的多列索引
- redis - 如果我们在 Key 上进行分区,为什么我们需要在 Redis 中使用分布式锁?
- nlp - 使用 SageMaker BlazingText (word2vec) 进行预训练/迁移学习?
- python - ModuleNotFoundError: 没有使用 celery 和 rabbitmq 的名为 'django.config' 的模块
- c++ - 对预先分配的工作区使用 mutable
- java - Hibernate ORM 5.4 并删除了统计信息?