DEV Community

S3CloudHub
S3CloudHub

Posted on

AWS CloudFormation: Creating an S3 Bucket with Lifecycle and Access Control Policies

Amazon Web Services (AWS) CloudFormation allows you to automate the creation and management of AWS resources using infrastructure-as-code templates. By leveraging CloudFormation, you can create an S3 bucket with predefined lifecycle and access control policies, ensuring your storage is secure, cost-optimized, and compliant with organizational policies. Let's dive into a practical guide to achieve this.

Step 1: Understand the Basics

AWS CloudFormation uses YAML or JSON templates to define resources and their configurations. For this tutorial, we will:

  1. Create an S3 bucket.

  2. Attach a lifecycle policy to transition objects to lower-cost storage or delete them after a specified time.

  3. Set up an access control policy to define permissions.

Image description

Step 2: Writing the CloudFormation Template

Here's an example YAML template to create an S3 bucket with a lifecycle policy and access control policy.

AWSTemplateFormatVersion: '2010-09-09'
Description: Create an S3 bucket with lifecycle and access control policies
Resources:
  MyS3Bucket:
    Type: 'AWS::S3::Bucket'
    Properties:
      BucketName: my-cloudformation-s3-bucket
      AccessControl: Private
      LifecycleConfiguration:
        Rules:
          - Id: MoveToGlacier
            Status: Enabled
            Transitions:
              - TransitionInDays: 30
                StorageClass: GLACIER
            ExpirationInDays: 365

  S3BucketPolicy:
    Type: 'AWS::S3::BucketPolicy'
    Properties:
      Bucket: !Ref MyS3Bucket
      PolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal: '*'
            Action: 's3:GetObject'
            Resource: !Sub "arn:aws:s3:::${MyS3Bucket}/*"
Enter fullscreen mode Exit fullscreen mode

Step 3: Key Components Explained

1. S3 Bucket Resource

. BucketName: The unique name of your bucket.

. AccessControl: Configured as Private to ensure that objects are not publicly accessible.

2. LifecycleConfiguration

. Automatically transitions objects to the S3 Glacier storage class after 30 days.

. Deletes objects 365 days after creation, reducing storage costs.

3. Bucket Policy

. Grants read-only access (s3:GetObject) to all users for the objects in the bucket. Modify this as needed for tighter security.

Step 4: Deploy the Template

  1. Upload the Template

. Log in to the AWS Management Console and navigate to the CloudFormation service.

. Click on "Create Stack" and choose "With new resources (standard)."

2. Provide the Template

. Upload the YAML file or paste it directly into the template editor.

3. Specify Stack Details

. Provide a stack name (e.g., S3BucketWithPolicies).

  1. Review and Create Review your configuration, acknowledge the IAM permissions, and click "Create Stack."

5. Monitor the Deployment

. Wait for the stack creation process to complete. The status should change to "CREATE_COMPLETE."

Step 5: Validate the Setup

  1. Verify the S3 Bucket

. Navigate to the S3 service and confirm that the bucket has been created.

2. Check Lifecycle Policy

. In the bucket settings, verify that the lifecycle rule for transitioning and expiring objects is active.

3. Review Access Control

. Test the bucket policy to ensure access permissions are functioning as intended.

Best Practices

1. Use Parameterized Templates

Replace static values (e.g., bucket name) with parameters to make the template reusable.

2. Enable Logging

. Enable server access logging to track requests to your bucket for auditing purposes.

3. Secure Access

. Avoid granting overly broad permissions. Restrict access using IAM roles or specific principals.

4. Monitor Costs

. Use AWS Cost Explorer to monitor the cost savings from transitioning objects to lower-cost storage classes.

By using CloudFormation to create an S3 bucket with lifecycle and access control policies, you can automate and standardize your AWS infrastructure. This approach not only saves time but also ensures your configurations adhere to best practices, making your cloud storage secure and efficient.

Top comments (0)