This post explains how to apply and get S3 bucket policy using Python. A bucket policy is a resource-based policy that you can use to grant access permissions to your bucket and the objects in it.
To run the python script for getting bucket policy from your local machine you need to have Boto3 credential set up, refer Setting up boto3 credentials for configuring Boto3 credentials.
AWS Boto3
SDK provides
put_bucket_policy
api to put
policy on a specified S3 bucket. For performing this operation the calling
identity must have
PutBucketPolicy
permissions
on the bucket.
Let's apply below sample policy to S3 bucket. This policy provides
GetObject
permissions to IAM
role with ARN IAM_ROLE_ARN
on
bucket with ARN BUCKET_ARN
.
import json
import boto3
s3_client = boto3.client("s3")
bucket_name = "test-bucket-12344321"
bucket_policy = {
"Id":
"sid1",
"Version":
"2012-10-17",
"Statement": [{
"Sid": "Sid1",
"Action": ["s3:GetObject"],
"Effect": "Allow",
"Resource": ["BUCKET_ARN/*"],
"Principal": {
"AWS": ["IAM_ROLE_ARN"]
}
}]
}
response = s3_client.put_bucket_policy(Bucket=bucket_name,
Policy=json.dumps(bucket_policy))
print(response)
AWS Boto3
SDK provides
get_bucket_policy
api to
retrieve the policy applied to a specified bucket. For performing this
operation the calling identity must have
GetBucketPolicy
permissions
on the bucket.
import boto3
s3_client = boto3.client("s3")
bucket_name = "test-bucket-12344321"
response = s3_client.get_bucket_policy(Bucket=bucket_name)
print(response)
Category: AWS