AWS S3 Bucket

Configure AWS S3 Bucket

Overview

The AWS S3 bucket is used to configure logos and global configuration files in the Citizen Complaints Resolution System.

Steps

1

Configure AWS S3 Bucket

The UI assets, like logos and global config files, are hosted in an S3 bucket.

  • Create a new S3 bucket

  • Add this Bucket Policy to make the contents public:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::works-dev-asset/*"
        }
    ]
}
  • Add the below CORS configuration:

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "x-amz-server-side-encryption",
            "x-amz-request-id",
            "x-amz-id-2"
        ],
        "MaxAgeSeconds": 3000
    }
]
2

To access assets from the S3 bucket in your deployment environment:

  • Update environment.yaml file

 configmaps:
    egov-config:
      data:
        s3-assets-bucket: "(pg-egov-assets|egov-playground-assets|egov-uat-assets)"
  • Possible values: pg-egov-assets, egov-playground-assets, egov-uat-assets, etc.

  • Restart the s3-proxy build after making these changes.

Other viable options in the CCRS context

  1. Azure Blob Storage

    • Works similarly to S3.

    • Can be configured with public access or via signed URLs.

    • Would require updating the s3-proxy or using an Azure CDN endpoint in the environment configuration.

  2. Google Cloud Storage (GCS)

    • Also supports static asset hosting.

    • Public bucket policy or signed URLs possible.

    • Integration changes needed in the configmaps.

  3. Self-hosted HTTP/HTTPS static server

    • Assets placed in an Nginx/Apache/static-file server inside your infra.

    • No cloud dependency, but you need to manage uptime, scaling, and cache headers.

  4. GitHub Pages or similar static site hosting

    • For purely static assets (logos, configs), you can use GitHub Pages, Netlify, or Vercel.

    • Would require adjusting the asset URLs in environment.yaml.

  5. Kubernetes ConfigMaps or PVC (Persistent Volume Claim)

    • Small static files can be mounted directly from ConfigMaps.

    • Good for a few KBs of data, but not ideal for large or frequently updated assets.


Key consideration in CCRS

If you replace AWS S3:

  • You must ensure public accessibility or proper authentication.

  • Update s3-assets-bucket (or equivalent) in environment.yaml to point to the new hosting location.

  • If using s3-proxy, it may need to be replaced with a generic proxy or direct asset URL.

Last updated

Was this helpful?