【发布时间】:2022-01-12 05:19:12
【问题描述】:
我正在创建多个 SQS 队列,并且我想在创建队列后添加一个 Lambda 触发器。执行 cdk 合成器命令时出现错误(见下文)。
我使用的是 1.130 版本的 aws-cdk 并且软件包都是相同的版本 (1.130.0)
构建类型错误时出错:无法读取未定义的属性“范围”
查看堆栈跟踪错误,它在 lambdaFunction.addEventSource 部分失败。
我正在关注 CDK 文档 (https://docs.aws.amazon.com/cdk/api/v1/docs/aws-lambda-event-sources-readme.html),基于此,我认为我正在遵循正确的步骤。
下面是我正在使用的代码:
const cdk = require(`@aws-cdk/core`);
const sqs = require(`@aws-cdk/aws-sqs`);
const { SqsEventSource } = require(`@aws-cdk/aws-lambda-event-sources`);
const lambda = require(`@aws-cdk/aws-lambda`);
const fs = require(`fs`);
const { env } = require(`process`);
class PVInfraSQSTopic extends cdk.Construct {
constructor(scope, id, props) {
super(scope, id, props);
const buildEnvironment = JSON.parse(fs.readFileSync(`./config/`+JSON.parse(env.CDK_CONTEXT_JSON).config+`.json`, `utf8`));
const sqsDLQ = buildEnvironment.sqsDeadLetterQueue;
const lambdas = buildEnvironment.sqsLambdaTrigger;
const sqsQueues = buildEnvironment.sqsQueues;
const alias = buildEnvironment.alias;
const region = buildEnvironment.region;
const awsAccount = buildEnvironment.awsAccount;
const queueName = `sqs-queue`;
// Create Dead Letter Queue.
const dlq = new sqs.Queue(this, `SQSBuild`, {
queueName: sqsDLQ
});
// Create queues and configure dead letter queue for said queues.
sqsQueues.map((item) => {
new sqs.Queue(this, `queue-${item}`, {
queueName: `${item}`,
deadLetterQueue: {
maxReceiveCount: 3,
queue: dlq
}
});
});
// Add SqsEventSource (Lambda Triggers) to new SQS queues
const lambdaFunction = lambda.Function.fromFunctionAttributes(this, `function`, {
functionArn: `arn:aws:lambda:${region}:${awsAccount}:function:${lambdas}:${alias}`
});
lambdaFunction.addEventSource(new SqsEventSource(queueName, {
batchSize: 10
}));
}
}
module.exports = { PVInfraSQSTopic };
lambda 已经存在,所以我不创建它作为这个堆栈的一部分。
【问题讨论】:
标签: aws-cdk