in subfunctions/ALE_single_account.py [0:0]
def create_bucket(unique_end):
"""Function to create the bucket for storing logs"""
try:
account_number = sts.get_caller_identity()["Account"]
logging.info("Creating bucket in %s" % account_number)
logging.info("CreateBucket API Call")
if region == 'us-east-1':
logging_bucket_dict = s3.create_bucket(
Bucket="aws-log-collection-" + account_number + "-" + region + "-" + unique_end
)
else:
logging_bucket_dict = s3.create_bucket(
Bucket="aws-log-collection-" + account_number + "-" + region + "-" + unique_end,
CreateBucketConfiguration={
'LocationConstraint': region
}
)
logging.info("Bucket Created.")
logging.info("Setting lifecycle policy.")
logging.info("PutBucketLifecycleConfiguration API Call")
lifecycle_policy = s3.put_bucket_lifecycle_configuration(
Bucket="aws-log-collection-" + account_number + "-" + region + "-" + unique_end,
LifecycleConfiguration={
'Rules': [
{
'Expiration': {
'Days': 365
},
'Status': 'Enabled',
'Prefix': '',
'ID': 'LogStorage',
'Transitions': [
{
'Days': 90,
'StorageClass': 'INTELLIGENT_TIERING'
}
]
}
]
}
)
logging.info("Lifecycle Policy successfully set.")
logging.info("PutObject API Call")
create_ct_path = s3.put_object(
Bucket="aws-log-collection-" + account_number + "-" + region + "-" + unique_end,
Key='cloudtrail/AWSLogs/' + account_number + '/')
logging.info("PutBucketPolicy API Call")
bucket_policy = s3.put_bucket_policy(
Bucket="aws-log-collection-" + account_number + "-" + region + "-" + unique_end,
Policy='{"Version": "2012-10-17", "Statement": [{"Sid": "AWSCloudTrailAclCheck20150319","Effect": "Allow","Principal": {"Service": "cloudtrail.amazonaws.com"},"Action": "s3:GetBucketAcl","Resource": "arn:aws:s3:::aws-log-collection-' + account_number + '-' + region + '-' + unique_end + '"},{"Sid": "AWSCloudTrailWrite20150319","Effect": "Allow","Principal": {"Service": "cloudtrail.amazonaws.com"},"Action": "s3:PutObject","Resource": "arn:aws:s3:::aws-log-collection-' + account_number + '-' + region + '-' + unique_end + '/cloudtrail/AWSLogs/' + account_number + '/*","Condition": {"StringEquals": {"s3:x-amz-acl": "bucket-owner-full-control"}}}]}'
)
logging.info("Setting the S3 bucket Public Access to Blocked")
logging.info("PutPublicAccessBlock API Call")
bucket_private = s3.put_public_access_block(
Bucket="aws-log-collection-" + account_number + "-" + region + "-" + unique_end,
PublicAccessBlockConfiguration={
'BlockPublicAcls': True,
'IgnorePublicAcls': True,
'BlockPublicPolicy': True,
'RestrictPublicBuckets': True
},
)
except Exception as exception_handle:
logging.error(exception_handle)
return account_number