I had faced same error "An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied"
Note:
Bucket policy not a good solution.
In IAM service create new custom policy attached with respective user would be safer.
Solved by below procedure:
IAM Service > Policies > Create Policy > select JSON >
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:ListBucketVersions"
],
"Resource": [
"arn:aws:s3:::<bucket name>"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload",
"s3:DeleteObjectVersion",
"s3:GetObjectVersion",
"s3:PutObjectACL",
"s3:ListBucketVersions"
],
"Resource": [
"arn:aws:s3:::<bucketname>/*"
]
}
]
}
Select Next Tag > Review Policy enter and create policy.
Select the newly created policy
Select the tab 'Policy Usage' in edit window of newly created policy window.
Select "Attach" select the user from the list and Save.
Now try in console with bucket name to list the objects, without bucket name it throws same error.
$aws s3 ls