我是AWS CDK和TypeScript新手。有一个与AWS CDK上下文中的打字稿相关的一般性问题。我试着在stackoverflow中找到一个类似的例子或问题,但找不到。在下面的代码片段中,就上下文而言,this
指的是什么?
// An sqs queue for unsuccessful invocations of a lambda function
import * as sqs from 'aws-cdk-lib/aws-sqs';
const deadLetterQueue = new sqs.Queue(this, 'DeadLetterQueue');
const myFn = new lambda.Function(this, 'Fn', {
runtime: lambda.Runtime.NODEJS_14_X,
handler: 'index.handler',
code: lambda.Code.fromInline('// your code'),
// sqs queue for unsuccessful invocations
onFailure: new destinations.SqsDestination(deadLetterQueue),
});
https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html
示例代码不完整。这种类型的代码可以在Construct
的上下文中找到。一个更合理的版本应该是这样的:
// An sqs queue for unsuccessful invocations of a lambda function
import * as sqs from 'aws-cdk-lib/aws-sqs';
export class MyConstruct extends Construct {
constructor(scope: Construct, id: string) {
super(scope, id);
const deadLetterQueue = new sqs.Queue(this, 'DeadLetterQueue');
const myFn = new lambda.Function(this, 'Fn', {
runtime: lambda.Runtime.NODEJS_14_X,
handler: 'index.handler',
code: lambda.Code.fromInline('// your code'),
// sqs queue for unsuccessful invocations
onFailure: new destinations.SqsDestination(deadLetterQueue),
});
}
}
// https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html
然后 this
引用构造。这种模式可以在所有CDK代码中看到。MyConstruct可能会在栈中被引用:
new MyConstruct(this, 'my-construct');
这里,'this'将引用它所在的Stack
。