Today I had to create a new user in our S3 account and to give him all permissions to just one bucket.
As you can see in our S3 file-manager implementation ( https://github.com/Mashape/file-manager ) I use these two lines to load credentials from a properties file and to connect to the S3 bucket
` s3Service = new RestS3Service(awsCredentials);bucket = s3Service.getBucket(properties.getProperty(“s3.bucket”)); `
The second lines throws an exception if you don’t give s3:ListAllMyBuckets permission to that user. So the final policy I used is this:
"Statement": [
{
"Action": [
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::*"
},
{
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket",
"arn:aws:s3:::bucket/*"
]
}
]
Obviously you can avoid the “Action”: “s3:*” part and put just a list of actions you want to allow..