A huge part of building serverless applications with AWS is being able to connect certain cloud resources and have them react to certain events.
Currently our HelloLambda function can be triggered by a GET request event sent to the API Gateway, but that's not the only use case when a lambda function can be triggered.
Suppose we'd like to trigger the lambda function whenever a file is uploaded to an S3 bucket, for instance, to generate a thumbnail. Once a thumbnail is generated, lambda function can call another function etc., this behaviour is up to us to define.
In order to call a lambda function when a file is uploaded to an S3 bucket, we need to use an s3Notifications
construct - and that's exactly what we're going to do in this quick lesson.
Starting a few months ago, all new S3 buckets will have BlockAll enabled by default and all ACLs disabled.
So the code that made it work for me was:
const logoBucket = new Bucket(this, 'LogoBucket', {
blockPublicAccess: BlockPublicAccess.BLOCK_ACLS,
accessControl: BucketAccessControl.BUCKET_OWNER_FULL_CONTROL,
});
Also, the way things are done to handle notifications is through event sources.
helloLambda.addEventSource(
new S3EventSource(logoBucket, { events: [EventType.OBJECT_CREATED] })
);