在 AWS CDK TypeScript 中'This'



我是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

相关内容

最新更新