typescript - Argument av typen 'this' kan inte tilldelas parametern av typen 'Construct' i AWS CDK
Jag har ett problem när jag använder CDK där this-egenskapen ger ett fel och säger att jag inte kan tilldela 'this' till en parameter av typen construct. Detta börjar på const s3ListLambdaRole-delen och gör att varje ny variabeldeklaration efter det också ger samma fel.
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');
}
}
Tack på förhand!
Svar #1
Detta händer när versioner av CDK-beroenden är i olika versioner. Se till att CDK-beroenden har samma version.
- Radera mappen node_modules
- Radera package-lock.json
- Se till att alla beroenden i package.json använder samma version.
- Ta bort ^-symbolen före beroenden
- npm install
Svar #2
Om någon stöter på detta problem just nu, som jag gjorde vilket är vad som ledde mig hit, var det jag gjorde för att lösa det att använda cdk-biblioteket och importera de saker jag behövde därifrån.
import {Stack, StackProps, App, aws_s3 as s3, aws_iam as iam } from 'aws-cdk-lib';
import { BucketEncryption } from 'aws-cdk-lib/aws-s3';
