问题描述
在本地堆栈中发生s3事件时,我的lambda函数没有触发吗?
但是在使用“ sls invoke -f hello --stage local”直接触发时会调用
帮我解决这个问题吗? 我已经安装了handler.js和serverless.yml文件
SERVERLESS.yml
service: ls-node
frameworkVersion: '2'
plugins:
- serverless-plugin-typescript
- serverless-localstack
- serverless-dotenv-plugin
- serverless-offline
provider:
name: aws
runtime: nodejs12.x
stage: ${opt:stage,'development'}
region: us-east-1
profile: iamjai
iamRoleStatements:
- Effect: Allow
Action:
- s3:PutBucketNotification
- s3:Getobject
Resource: ["arn:aws:s3:::iamjai-dev/*"]
functions:
hello:
handler: handler.hello
events:
- s3:
bucket: iamjai-dev
events:
- s3:ObjectCreated:*
environment:
TEST_NAME: "iamjai"
TEST_MAIL: "jai@jai.com"
custom:
localstack:
stages:
- local
bucket: iamjai-dev
dotenv:
path: ../.env
basePath: ../
logging: false
# include:
# - CLIENT
# - DATE
handler.js
'use strict';
'use strict';
const AWS = require('aws-sdk');
const s3 = new AWS.S3({ accessKeyId: "1234",secretAccessKey: "5678",endpoint: 'http://localhost:4566',s3ForcePathStyle: true,bucketName: "iamjai-dev" });
const csv=require('csvtojson')
module.exports.hello = async event => {
console.log("Executed!!!!!")
const Bucket = event.Records[0].s3.bucket.name;
const Key = event.Records[0].s3.object.key;
const data = await s3.getobject({ Bucket,Key }).promise();
const params = {
Bucket: Bucket,Key: Key,};
const stream = s3.getobject(params).createReadStream();
// convert csv file (stream) to JSON format data
const jsonArray = await csv().fromStream(stream);
console.log(JSON.stringify(stream))
console.log(jsonArray.length);
// console.log('NAME: ',process.env.NAME);
// console.log('EMAIL: ',process.env.MAIL);
console.log("Raw text:\n" + data.Body.toString('ascii'));
};
当使用localstack在s3存储桶中上传文件时,我需要触发我的lambda函数吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)