Terraform Setup for Using AWS Lambda With S3 | by nhammad | Apr, 2022

I just lately got here throughout a state of affairs the place I needed to make modifications to a bunch of incoming S3 recordsdata. One of the best ways to take action was to make use of occasion triggers that run an AWS Lambda operate each time a brand new file was uploaded to S3. Though the method of making S3 buckets, occasion notifications, and Lambda features is fairly easy whereas utilizing the console, it might turn into a bit difficult whereas utilizing Terraform.

Assuming that you have already got a fundamental Terraform setup, let’s look into how one can first construct your buckets.

For variables just like the bucket identify, you may both retailer values as native variables in a separate file or you may easy quote them right here. Whether or not you need server-side encryption or not is optionally available, and often will depend on your use case.

To start with, you might want to create a src listing, which is able to comprise the Python code in your Lambda operate.

terraform
│ buckets.tf
│ lambda.tf
│ notifications.tf
│ permissions.tf
│ ...
└───src
│ │ conversion_lambda_python_file.py
│ │
│ │

The filename you give to your Python file right here will later be used because the handler worth for Lambda’s Terraform setup. Your Lambda operate ought to have a operate known as the lambda_handler. It may look one thing like this:.

Learn particulars about what this Lambda does here.

Discover how we’re studying the occasion key within the lambda_handler operate. Now, our Lambda’s Terraform setup may look considerably like this:

The archive_file module generates an archive of the Python file, which may then be used inside our Lambda operate. You may also cross surroundings variables into your Lambda operate.

One factor to notice is that by default, Lambda has a timeout of three seconds and reminiscence of 128 MBs solely. Relying on what number of S3 recordsdata you need to course of, you would possibly need to change these parameters to their most values:

Reminiscence measurement = 10240

Timeout = 900

Now, we have to create an occasion notification that can set off a Lambda operate each time a brand new file is uploaded to S3. You’ll be able to modify the occasions parameter, for instance, in the event you additionally need to run your Lambda operate when a file is eliminated or restored as nicely.

For those who solely need to think about a specific folder of your S3 bucket, you may add the folder’s identify(s) because the filter prefix. Equally, in the event you solely need to think about particular sort of recordsdata that may trigger a set off, you may add the file extension because the filter suffix parameter.

Don’t neglect that we additionally want to present our S3 bucket the mandatory permissions in order that it is ready to invoke a Lambda operate.

No matter function you’re utilizing in your Terraform setup would additionally require different permission insurance policies corresponding to entry to S3, or Cloudwatch logs for debugging.

If you wish to give your function the permissions to sure actions just for a specific bucket, as an alternative of all, it’s also possible to specify the related sources underneath the Useful resource choice.

and that’s largely about it!

In one other article, I’ve described how you are able to do the identical issues utilizing the AWS console. You’ll be able to learn extra about it right here:

More Posts