我正在嘗試創建一個 cdk 堆疊以s3:ObjectCreated:Put在 S3 上發生事件后觸發 lambda 。
我下面一些教程(像這樣的一個),但我不能夠使事件源的創作S3EventSource作品,我收到的時候我試圖桶屬性添加到事件源的打字稿錯誤:
const s3PutEventSource = new S3EventSource(bucket, {
events: [
s3.EventType.OBJECT_CREATED_PUT
]
});
目前,我在 IDE 上以及嘗試運行npm run cdk deploy命令時收到以下錯誤:
lib/cdk-s3-stack.ts:29:48 - error TS2345: Argument of type 'import("/Users/jeprandini/cdk-s3/src/node_modules/@aws-cdk/aws-s3/lib/bucket").Bucket' is not assignable to parameter of type 'import("/Users/jeprandini/cdk-s3/src/node_modules/@aws-cdk/aws-ec2/node_modules/@aws-cdk/aws-s3/lib/bucket").Bucket'.
Property '_resource' is missing in type 'import("/Users/jeprandini/cdk-s3/src/node_modules/@aws-cdk/aws-s3/lib/bucket").Bucket' but required in type 'import("/Users/jeprandini/cdk-s3/src/node_modules/@aws-cdk/aws-ec2/node_modules/@aws-cdk/aws-s3/lib/bucket").Bucket'.
29 const s3PutEventSource = new S3EventSource(bucket, {
~~~~~~
node_modules/@aws-cdk/aws-ec2/node_modules/@aws-cdk/aws-s3/lib/bucket.d.ts:1489:22
1489 private readonly _resource;
~~~~~~~~~
'_resource' is declared here.
Subprocess exited with error 1
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! s3-to-lambda-cdk@0.1.0 cdk: `cdk "deploy"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the s3-to-lambda-cdk@0.1.0 cdk script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/jeprandini/.npm/_logs/2021-11-09T20_53_14_772Z-debug.log
我的堆疊代碼:
import * as cdk from '@aws-cdk/core';
import * as s3 from '@aws-cdk/aws-s3';
import { NodejsFunction } from '@aws-cdk/aws-lambda-nodejs';
import { S3EventSource} from '@aws-cdk/aws-lambda-event-sources';
export class S3ToLambdaCdkStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const BUCKET_NAME = 'demo-bucket'
// S3 bucket
const bucket = new s3.Bucket(this, BUCKET_NAME, {
/**
* The following properties ensure the bucket is properly
* deleted when we run cdk destroy */
autoDeleteObjects: true,
removalPolicy: cdk.RemovalPolicy.DESTROY
});
const lambdaReadStream = new NodejsFunction(this, 'readStream', {
entry: 'lambda-fns/readStream/handler.js',
handler: 'handler'
});
const s3eventSource = new S3EventSource(bucket, {
events: [
s3.EventType.OBJECT_CREATED_PUT
]
});
lambdaReadStream.addEventSource(s3eventSource);
// Outputs
new cdk.CfnOutput(this, 'BucketArn', { value: bucket.bucketArn });
new cdk.CfnOutput(this, 'LambdaFunctionArn', { value: lambdaReadStream.functionArn });
}
}
我的 package.json 檔案:
{
"name": "cdk-s3",
"version": "0.1.0",
"bin": {
"cdk-s3": "bin/cdk-s3.js"
},
"scripts": {
"build": "tsc",
"watch": "tsc -w",
"test": "jest",
"cdk": "cdk"
},
"devDependencies": {
"@aws-cdk/assert": "1.116.0",
"@types/jest": "^26.0.10",
"@types/node": "10.17.27",
"aws-cdk": "^1.127.0",
"jest": "^26.4.2",
"ts-jest": "^26.2.0",
"ts-node": "^9.0.0",
"typescript": "~3.9.7"
},
"dependencies": {
"@aws-cdk/aws-lambda": "^1.95.1",
"@aws-cdk/aws-s3": "1.95.1",
"@aws-cdk/aws-lambda-event-sources": "^1.127.0",
"@aws-cdk/aws-lambda-nodejs": "^1.127.0",
"@aws-cdk/core": "^1.127.0"
}
}
uj5u.com熱心網友回復:
看起來您的cdk匯入中存在一些依賴項沖突,對于某些依賴項,您正在使用該版本,1.127.0而對于其他依賴項,您正在使用該版本1.95.1,例如@aws-cdk/aws-s3庫。
通常,您需要為所有 cdk 模塊使用相同的版本。嘗試?1.95.1為所有 CDK 模塊使用該版本。
為此,將 cdk 依賴項更改為 version ?1.95.1,使用該命令rm -rf node_modules洗掉您的node_modules目錄并運行npm i以重新創建該node_modules目錄并再次安裝您的模塊。
之后,您可以npm run cdk deploy毫無問題地運行該命令。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/355133.html
上一篇:如果創建了VPC終端節點,則無法訪問公共AWSAPI網關終端節點
下一篇:無法恢復AWSEC2公共IP地址
