I can successfully perform this command so I'm pretty sure that s3:ListBucket
role is provided:
aws s3 ls s3://bucket_name/folder1/folder2/
2021-09-01 21:09:36 51432 filename_2021-09-01.csv.gz
2021-09-02 21:09:32 684445 filename_2021-09-02.csv.gz
2021-09-03 21:09:34 654864 filename_2021-09-03.csv.gz
2021-09-04 21:09:31 875684 filename_2021-09-04.csv.gz
This also works fine:
aws s3 cp s3://bucket_name/folder1/folder2/filename_2021-09-01.csv.gz
I'm sure the creds in boto3 is correct because this works fine:
s3 = boto3.client('s3', region_name='us-east-1', aws_access_key_id=KEY_ID, aws_secret_access_key=ACCESS_KEY)
s3.download_file(Filename=filename,Bucket=bucket_name,Key=bucket_dir + filename)
But I cant get the list to work in boto3 without an access issue:
def keys(bucket_name, prefix='/', delimiter='/'):
prefix = prefix[1:] if prefix.startswith(delimiter) else prefix
bucket = boto3.resource('s3', region_name='us-east-1', aws_access_key_id=KEY_ID, aws_secret_access_key=ACCESS_KEY).Bucket(bucket_name)
return (_.key for _ in bucket.objects.filter(Prefix=prefix))
print(list(keys(bucket_name)))
I get the error below:
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied
I'm guessing my code is in correct but I've tried a few ways still Access Denied