Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to link AWS S3 with AWS Lambda

I want to connect my AWS S3 with my AWS Lambda. I created my s3 bucket and named it xyz. While creating an event source on my AWS Lambda function, it is showing the following error

There was an error creating the event source mapping: Your bucket must be in the same region as the function.

While going through this link, I found out that I needed to setup a event notification for the s3 bucket for the AWS Lambda function. But I am unable to setup event notification for the s3 bucket as it is not showing settings for an AWS lambda function in the events tab of the s3 bucket's properties.

My Policy document for the IAM role I created for Lambda is as follows

{
"Version": "VersionNumber",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
        ],
        "Resource": "arn:aws:logs:*:*:*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::xyz/*"
        ]
    }
   ]
 }

Can somebody let me know why I am unable to create an event for AWS Lambda for an operation on s3 bucket?

like image 948
shubhamagiwal92 Avatar asked Mar 15 '23 18:03

shubhamagiwal92


1 Answers

Thanks to John's comment, I was able to resolve this issue.

This problem occurs when (clearly stated by the error message) Lambda and S3 buckets are residing in different regions.

For creating lambda in the same region as that of s3 bucket, you need to know bucket's region.

To view the region of an Amazon S3 bucket, click on the bucket in the management console, then go to the Properties tab. The region will be displayed

Now that you know your target region. You can just switch to that region, in aws console, by selecting a region from the dropdown selection menu on top right corner just before Support menu.

Once you change your region to that of s3 bucket, creating a new lambda function will solve the issue.

like image 141
Kinaan Khan Sherwani Avatar answered Mar 26 '23 17:03

Kinaan Khan Sherwani