How to get the bucket location of a S3 bucket using Boto3 and AWS Client?

Problem Statement − Use boto3 library in Python to get the location of a S3 bucket. For example, find the location of Bucket_1 in S3

Approach/Algorithm to solve this problem

Step 1 − Import boto3 and botocore exceptions to handle exceptions.

Step 2 − Use bucket_name as the parameter in the function.

Step 3 − Create an AWS session using boto3 library.

Step 4 − Create an AWS client for S3.

Step 5 − Now use the function get_bucket_location_of_s3 and pass the bucket name.

Step 6 − It returns the dictionary containing the details about S3.

Step 7 − Handle the generic exception if something went wrong while getting the bucket location.

Example

Use the following code to get the bucket location −

import boto3
from botocore.exceptions import ClientError

def get_bucket_location_of_s3(bucket_name):
    session = boto3.session.Session()
    s3_client = session.client('s3')
    try:
        result = s3_client.get_bucket_location(Bucket=bucket_name)
    except ClientError as e:
        raise Exception("boto3 client error in get_bucket_location_of_s3: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in get_bucket_location_of_s3 function: " + e.__str__())
    return result

# Example usage - replace with your actual bucket name
print(get_bucket_location_of_s3("your-bucket-name"))

Output

The output will be a dictionary containing the bucket location information −

{
    'LocationConstraint': 'us-west-2',
    'ResponseMetadata': {
        'RequestId': 'ABCD1234567890',
        'HostId': 'example-host-id',
        'HTTPStatusCode': 200,
        'HTTPHeaders': {
            'x-amz-id-2': 'example-id',
            'x-amz-request-id': 'ABCD1234567890',
            'date': 'Thu, 01 Jan 2024 12:00:00 GMT',
            'content-type': 'application/xml',
            'content-length': '0',
            'server': 'AmazonS3'
        },
        'RetryAttempts': 0
    }
}

Understanding the Response

The LocationConstraint field contains the AWS region where the bucket is located. Common values include:

  • 'us-east-1' − US East (N. Virginia) - Default region, returns None
  • 'us-west-1' − US West (N. California)
  • 'us-west-2' − US West (Oregon)
  • 'eu-west-1' − Europe (Ireland)
  • 'ap-southeast-1' − Asia Pacific (Singapore)

Note: If the bucket is in the us-east-1 region, the LocationConstraint will be None instead of 'us-east-1'.

Simplified Version

For a more straightforward approach without custom error handling −

import boto3

def get_bucket_location(bucket_name):
    s3_client = boto3.client('s3')
    response = s3_client.get_bucket_location(Bucket=bucket_name)
    
    # Handle the special case for us-east-1
    location = response['LocationConstraint']
    if location is None:
        location = 'us-east-1'
    
    return location

# Example usage
bucket_location = get_bucket_location("your-bucket-name")
print(f"Bucket location: {bucket_location}")

Conclusion

Use get_bucket_location() method from boto3 S3 client to retrieve bucket location. Remember that us-east-1 region returns None as LocationConstraint, so handle this special case appropriately.

Updated on: 2026-03-25T18:10:34+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements