Standards & Governance Basics
Seven starter habits for a new AWS SDK codebase - five basic and two intermediate.
Search across all documentation pages
Seven starter habits for a new AWS SDK codebase - five basic and two intermediate.
None of these require tooling you don't already have. They are decisions to make once, in writing, before drift sets in.
CONTRIBUTING.md, a wiki page, or a pinned team doc. The format matters less than that it exists.Pick a single pattern for client variable names and stick to it everywhere.
# --- Python (boto3) ---
# Convention: <service>_client, lowercase, no abbreviation guessing
s3_client = boto3.client("s3")
dynamodb_client = boto3.client("dynamodb")// --- TypeScript (AWS SDK v3) ---
// Convention: <service>Client, camelCase, matches the imported class
const s3Client = new S3Client({});
const dynamoDbClient = new DynamoDBClient({});Never let boto3 or @aws-sdk/client-* float on an unpinned range.
# --- requirements.txt (Python) ---
boto3==1.43.10
botocore==1.43.10// --- package.json (TypeScript) ---
{
"dependencies": {
"@aws-sdk/client-s3": "3.700.0",
"@aws-sdk/client-dynamodb": "3.700.0"
}
}poetry.lock or package-lock.json) mean every install is reproducible.boto3>=1.40) can pull in a new minor version mid-deploy with no warning.Related: Dependency Governance for AWS SDK Packages - the full pinning and update-cadence policy.
Wrap the common "catch and classify" pattern once instead of repeating it at every call site.
# --- Python (boto3) ---
from botocore.exceptions import ClientError
def is_not_found(err: ClientError) -> bool:
return err.response["Error"]["Code"] in ("NoSuchKey", "404")// --- TypeScript (AWS SDK v3) ---
export function isNotFound(err: unknown): boolean {
return err instanceof Error && err.name === "NotFound";
}isNotFound, not checkErr) keeps intent obvious at the call site.Both languages have a real typing story for the SDK; use it from the start rather than retrofitting it.
# --- Python (boto3) ---
# pip install boto3-stubs[s3,dynamodb]
# mypy picks up the stubs automatically once installed
from mypy_boto3_s3 import S3Client// --- TypeScript (AWS SDK v3) ---
// No extra install: @aws-sdk/client-* ships its own types
import type { S3Client } from "@aws-sdk/client-s3";boto3-stubs/mypy-boto3 installed per-service to get typed clients; TypeScript gets this for free from @aws-sdk/client-*.Related: Coding Standards for boto3 & SDK v3 Codebases - where type checking fits among the other conventions.
Decide, once, how often SDK dependencies get reviewed and bumped.
Example team policy (put this in CONTRIBUTING.md):
- Review boto3/botocore and @aws-sdk/client-* versions quarterly.
- Dependabot/Renovate PRs for patch/minor bumps: merge within one sprint.
- Major version bumps: read the changelog, test in a branch, schedule deliberately.A single short doc that lists services and SDK versions in use, reviewed on the same cadence as dependency updates.
Example tracking note (updated quarterly):
- S3, DynamoDB, Lambda - boto3 1.43.x, @aws-sdk/client-* 3.700.x
- Last deprecation review: 2026-07-01
- Open items: none currently flagged by AWS's console bannersRelated: Tracking AWS Deprecations & SDK Major Versions - the full process this note supports.
Point the team at AWS's actual sources instead of relying on word of mouth.
Sources worth bookmarking:
- AWS What's New (aws.amazon.com/new) - service-level announcements
- boto3/botocore changelog on GitHub - Python SDK release notes
- AWS SDK for JavaScript v3 GitHub releases - Node/TypeScript SDK release notes
- AWS re:Post - community Q&A, useful for migration gotchasRelated: Staying Current: AWS What's New & SDK Release Notes - the full habit loop.
Stack versions: This page was written for boto3 1.43.x (Python 3.10+) and the AWS SDK for JavaScript v3 (Node.js 18+).
Reviewed by Chris St. John·Last updated Jul 23, 2026