Skip to main content

Centralized Settings Loader for Python Apps

Project description

sai-akruti

Centralized, flexible settings loader for Python apps using Pydantic v2.x.

This library provides a reusable, extensible settings system with built-in support for:

  • Multiple .env files
  • AWS Systems Manager (SSM) Parameter Store
  • AWS Secrets Manager
  • Standard environment variables and secret files (handled via Pydantic automatically)

It’s designed for clean separation of settings logic and allows each app to define its own settings hierarchy, source priorities, and overrides.


✅ Features

  • Compatible with Pydantic v2.x (pydantic-settings).
  • Automatically loads settings on instantiation — no manual .load() needed.
  • Supports per-environment configuration (dev, prod, etc.).
  • Easy to extend for other sources (YAML, remote config, etc.).
  • Production-safe and future-proof.

✅ Installation

pip install sai-akruti

✅ AWS Credentials & IAM Permissions (Required)

This library can also use AWS Systems Manager (SSM) Parameter Store and AWS Secrets Manager for secure configuration. Required IAM Permissions:

Ensure your environment (developer machine, Lambda, EC2, ECS, etc.) has the following IAM permissions:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ssm:GetParametersByPath",
        "secretsmanager:GetSecretValue"
      ],
      "Resource": "*"
    }
  ]
}

Best Practice: In production, restrict the "Resource" field to specific parameter/secret ARNs.

How Credentials Are Provided:

This library uses boto3's standard credential chain:

  • Environment Variables(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, etc.)
  • ~/.aws/credentials or configured profiles (via aws configure).
  • IAM Role on EC2, Lambda, or ECS (via Instance Metadata Service).
  • AWS CLI SSO or other advanced credential providers.

Usage in Lambda Functions:

When used in an AWS Lambda function:

  • Assign an IAM Role to your Lambda function with the above permissions.
  • No manual credential configuration is needed—boto3 automatically uses the Lambda’s IAM Role.
  • Example IAM Policy for Lambda:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ssm:GetParametersByPath",
        "secretsmanager:GetSecretValue"
      ],
      "Resource": "arn:aws:ssm:REGION:ACCOUNT_ID:parameter/your-prefix/*"
    }
  ]
}

How to retrieve AWS Account ID:

To retrieve the AWS Account ID in your code:

import boto3
account_id = boto3.client("sts").get_caller_identity()["Account"]

How to release to PyPI manually: To release a new version to PyPI, follow these steps:

  1. Update the version in pyproject.toml.
  2. Build the package:
    python -m build
    
  3. Upload to PyPI:
     python publish
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sai_akruti-0.3.3.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sai_akruti-0.3.3-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file sai_akruti-0.3.3.tar.gz.

File metadata

  • Download URL: sai_akruti-0.3.3.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.12.0 Windows/11

File hashes

Hashes for sai_akruti-0.3.3.tar.gz
Algorithm Hash digest
SHA256 d82a1fccf24afbff425801668719e181971644023bfb1b838b08f707aab67592
MD5 c5c606d7480657f79964013049200e0a
BLAKE2b-256 67cfdca185232effb906436a47508d0992e673dfcaa3251faa3aa18352139ead

See more details on using hashes here.

File details

Details for the file sai_akruti-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: sai_akruti-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.12.0 Windows/11

File hashes

Hashes for sai_akruti-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 64602b6137bcce7ba308df35a4316d97331a6941b2f3d2e921fa01941290e30b
MD5 c004be9951f560635a227ffc680cda31
BLAKE2b-256 cd7e7024d994893d7c024347740bccb40204eb67c478709fa3a08bfcea7a7ef1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page