Context: I have configured right aws-access-key and aws-secret-key
I can see buckets contents on aws-console but on aws-cli
Here’s my boto3 code
import boto3
# Enter the name of your S3 bucket here
bucket_name = 'xxxx'
# Enter the name of the region where your S3 bucket is located
region_name = 'ap-southeast-1'
# Create an S3 client
s3 = boto3.client('s3', region_name=region_name)
# List all the objects in the bucket
objects = s3.list_objects(Bucket=bucket_name)
# Print the names of all the objects in the bucket
for object in objects['Contents']:
print(object['Key'])
I have "s3:List*"
under my AWS-policy. What am I missing?
I am trying list all buckets using aws-cli it works using aws-console but not cli. I have rechecked my aws-secret/acess key, everything is right.
EDIT: aws-cli throws error
An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
2
Answers
Usually this kind of error happens if you have multiple AWS profiles in your PC and you are using the wrong profile to make a call a call to AWS
Make sure the default profile is the profile that has access to the AWS account.
You can also use
aws s3 ls --PROFILE_NAME
to get the list of buckets if you have multiple profilesRun
aws sts get-caller identity
to get the current caller identityFrom ListBuckets – Amazon Simple Storage Service:
The wording is a bit confusing, but:
ListBuckets
returns a list of the names of S3 buckets in your AWS AccountListObjects
returns a list of objects in a particular S3 bucketYour Python code is calling
list_objects()
.The AWS CLI error is saying
ListBuckets operation: Access Denied
, which suggests that you are trying to obtain a list of buckets, rather than a list of objects.