“this”类型的参数不可分配给 AWS CDK 中“Construct”类型的参数

aro*_*roe 2 typescript aws-cdk

我在使用 CDK 时遇到问题,因为该this属性出错并表示我无法将“this”分配给类型构造的参数。这发生在该const s3ListLambdaRole部分的开始,并使之后的每个新变量声明也会出现同样的错误。

import * as sns from '@aws-cdk/aws-sns';
import * as subs from '@aws-cdk/aws-sns-subscriptions';
import * as sqs from '@aws-cdk/aws-sqs';
import * as cdk from '@aws-cdk/core';
import * as s3 from '@aws-cdk/aws-s3';
import * as lambda from '@aws-cdk/aws-lambda';
import * as path from 'path';
import { Bucket } from '@aws-cdk/aws-s3';
import * as iam from'@aws-cdk/aws-iam';


export class SecurityBaselineDevStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const testSecurityqueue = new sqs.Queue(this, 'testSecurityqueue', {
      visibilityTimeout: cdk.Duration.seconds(300)
    });

    const testSecuritytopic = new sns.Topic(this, 'testSecuritytopic');

      testSecuritytopic.addSubscription(new subs.SqsSubscription(testSecurityqueue));
    //Creating lambda role below
    const s3ListLambdaRole = new iam.Role(this, 's3ListLambdaRole', {
      assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
    });

    s3ListLambdaRole.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('AWSLambdaFullAccess')) //creates LambdaFullAccess Role

    //Adding specific permissions to role now

    s3ListLambdaRole.addToPolicy(new iam.PolicyStatement({
      resources: ['*'], //adds full access to lamda
      actions: ['s3']
    }));

    const s3ListLambda = new lambda.Function (this, 's3ListLambda', {
      runtime: lambda.Runtime.PYTHON_3_6,
      handler: 'listS3.handler',
      role:s3ListLambdaRole,
      code: lambda.Code.fromAsset(path.join(__dirname, '../lambda'))
    });

    const testSecurityBucket = new s3.Bucket(this, 'testSecurityBucket');






    }

  }
Run Code Online (Sandbox Code Playgroud)

先感谢您!

Yog*_*war 7

当 CDK 依赖项的版本不同时会发生这种情况。请确保 CDK 依赖项具有相同的版本。

  • 删除node_modules文件夹
  • 删除package-lock.json
  • 确保 package.json 中的所有依赖项都使用相同版本。
  • 删除依赖项之前的胡萝卜^符号
  • npm 安装


Cra*_*lin 6

如果有人目前遇到这个问题,就像我所做的那样,这就是导致我来到这里的原因,我所做的解决这个问题的方法是使用 cdk 库并从中导入我需要的东西。

import {Stack, StackProps, App, aws_s3 as s3, aws_iam as iam } from 'aws-cdk-lib';
import { BucketEncryption } from 'aws-cdk-lib/aws-s3';
Run Code Online (Sandbox Code Playgroud)