Animesh Kansal
Animesh Kansal

Reputation: 113

How to trigger a particular version of lambda from s3 events

I am using lambda as an ETL tool to process raw files coming in the s3 bucket.

As time will pass, functionality of lambda function will grow.

Each month, I will change lambda function. so, I want to publish version 1,2,3

How do I make the s3 bucket trigger particular version of lambda for the files ?

How do I test this functionality of production vs test in this case ?

Upvotes: 0

Views: 1636

Answers (2)

Andrea Arseni
Andrea Arseni

Reputation: 1

  • How do I make the s3 bucket trigger particular version of lambda for the files ?

Best practice is not to point to lambda versions, but to use lambda alias which will point to the version you will configure. You can just append the alias name after the ARN of the Lambda.

arn:aws:lambdaName:aliasName
  • How do I test this functionality of production vs test in this case ?

You can trigger the same event multiple times with different lambda aliases (like a production version and a testing one)

Example of multiple event notifications

Upvotes: 0

John Rotenstein
John Rotenstein

Reputation: 269101

From AWS Lambda function aliases - Documentation:

When you use a resource-based policy to give a service, resource, or account access to your function, the scope of that permission depends on whether you applied it to an alias, to a version, or to the function. If you use an alias name (such as helloworld:PROD), the permission is valid only for invoking the helloworld function using the alias ARN. You get a permission error if you use a version ARN or the function ARN. This includes the version ARN that the alias points to.

For example, the following AWS CLI command grants Amazon S3 permissions to invoke the PROD alias of the helloworld Lambda function. Note that the --qualifier parameter specifies the alias name.

$ aws lambda add-permission --function-name helloworld \
--qualifier PROD --statement-id 1 --principal s3.amazonaws.com --action lambda:InvokeFunction \
--source-arn arn:aws:s3:::examplebucket --source-account 123456789012 

In this case, Amazon S3 is now able to invoke the PROD alias. Lambda can then execute the helloworld Lambda function version that the PROD alias references. For this to work correctly, you must use the PROD alias ARN in the S3 bucket's notification configuration.

Upvotes: 2

Related Questions