zjm555
zjm555

Reputation: 861

Unauthenticated bucket listing possible with boto?

I am using boto to interact with S3 buckets, and in some cases I just want to be able to list a publicly-readable bucket without passing my credentials. If I pass credentials, boto actually does not let me list the bucket even though it is publicly visible. Is it possible to connect to S3 and list a bucket without passing credentials?

Upvotes: 1

Views: 314

Answers (2)

Alex B
Alex B

Reputation: 2385

I find that this works without creds if you are just reading the head of the bucket:

import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket(options.bucket)
s3.meta.client.head_bucket(Bucket=bucket.name)

I use it when I need to ping my bucket for readability.

Upvotes: 0

zjm555
zjm555

Reputation: 861

The docs don't mention it, but after digging into the code I discovered a hidden kwarg that solves my problem:

conn = boto.connect_s3(anon=True)

Then you can call conn.get_bucket() on any bucket that is publicly readable.

Upvotes: 2

Related Questions