From 24f47b7ab7e9c5f688a3bbf0679f61434ced9fdf Mon Sep 17 00:00:00 2001 From: George Fu Date: Thu, 29 Oct 2026 16:26:02 +0000 Subject: [PATCH] Internalize client generation and pin smithy-python codegen --- .gitignore | 3 + Makefile | 13 +- codegen/.gitignore | 1 + codegen/build.gradle.kts | 21 +- codegen/gen_client.py | 369 +++++++++++++++--- codegen/gradle.properties | 1 + codegen/smithy-python.toml | 3 + .../aws-sdk-api-gateway/README.md | 20 + .../aws-sdk-bedrock-agent-runtime/README.md | 20 + .../aws-sdk-bedrock-agent/README.md | 20 + .../README.md | 20 + .../aws-sdk-bedrock-agentcore/README.md | 20 + .../README.md | 20 + .../aws-sdk-bedrock-data-automation/README.md | 20 + .../aws-sdk-bedrock-runtime/README.md | 20 + .../client-overlays/aws-sdk-bedrock/README.md | 20 + .../aws-sdk-cloudtrail/README.md | 20 + .../aws-sdk-cognito-identity/README.md | 20 + .../aws-sdk-connecthealth/README.md | 20 + .../aws-sdk-dynamodb/README.md | 20 + .../aws-sdk-guardduty/README.md | 20 + .../client-overlays/aws-sdk-lambda/README.md | 20 + .../aws-sdk-lex-runtime-v2/README.md | 20 + .../client-overlays/aws-sdk-polly/README.md | 20 + .../aws-sdk-qbusiness/README.md | 20 + .../aws-sdk-sagemaker-runtime-http2/README.md | 20 + .../aws-sdk-secrets-manager/README.md | 20 + .../client-overlays/aws-sdk-signin/README.md | 20 + scripts/client-overlays/aws-sdk-sns/README.md | 20 + scripts/client-overlays/aws-sdk-sqs/README.md | 20 + scripts/client-overlays/aws-sdk-sts/README.md | 20 + .../aws-sdk-transcribe-streaming/README.md | 20 + 32 files changed, 833 insertions(+), 78 deletions(-) create mode 100644 codegen/gradle.properties create mode 100644 codegen/smithy-python.toml create mode 100644 scripts/client-overlays/aws-sdk-api-gateway/README.md create mode 100644 scripts/client-overlays/aws-sdk-bedrock-agent-runtime/README.md create mode 100644 scripts/client-overlays/aws-sdk-bedrock-agent/README.md create mode 100644 scripts/client-overlays/aws-sdk-bedrock-agentcore-control/README.md create mode 100644 scripts/client-overlays/aws-sdk-bedrock-agentcore/README.md create mode 100644 scripts/client-overlays/aws-sdk-bedrock-data-automation-runtime/README.md create mode 100644 scripts/client-overlays/aws-sdk-bedrock-data-automation/README.md create mode 100644 scripts/client-overlays/aws-sdk-bedrock-runtime/README.md create mode 100644 scripts/client-overlays/aws-sdk-bedrock/README.md create mode 100644 scripts/client-overlays/aws-sdk-cloudtrail/README.md create mode 100644 scripts/client-overlays/aws-sdk-cognito-identity/README.md create mode 100644 scripts/client-overlays/aws-sdk-connecthealth/README.md create mode 100644 scripts/client-overlays/aws-sdk-dynamodb/README.md create mode 100644 scripts/client-overlays/aws-sdk-guardduty/README.md create mode 100644 scripts/client-overlays/aws-sdk-lambda/README.md create mode 100644 scripts/client-overlays/aws-sdk-lex-runtime-v2/README.md create mode 100644 scripts/client-overlays/aws-sdk-polly/README.md create mode 100644 scripts/client-overlays/aws-sdk-qbusiness/README.md create mode 100644 scripts/client-overlays/aws-sdk-sagemaker-runtime-http2/README.md create mode 100644 scripts/client-overlays/aws-sdk-secrets-manager/README.md create mode 100644 scripts/client-overlays/aws-sdk-signin/README.md create mode 100644 scripts/client-overlays/aws-sdk-sns/README.md create mode 100644 scripts/client-overlays/aws-sdk-sqs/README.md create mode 100644 scripts/client-overlays/aws-sdk-sts/README.md create mode 100644 scripts/client-overlays/aws-sdk-transcribe-streaming/README.md diff --git a/.gitignore b/.gitignore index 501acd30..f3dbe4d9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ # macOS system files .DS_Store +# IDE +.idea/ + # Docs build artifacts site/ docs/clients/ diff --git a/Makefile b/Makefile index 550e26e9..43184115 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,10 @@ PYTHON_VERSION := 3.12 # Colocated smithy-python checkout that provides the codegen jars. SMITHY_PYTHON ?= ../smithy-python -.PHONY: docs docs-serve docs-clean docs-install docs-lock venv gen publish-codegen aio-check +# Clients per gradle build in `make clients`; lower it if the build runs out of heap. +BATCH_SIZE ?= 25 + +.PHONY: docs docs-serve docs-clean docs-install docs-lock venv gen clients publish-codegen aio-check # Publishes the smithy-python codegen jars to the local Maven cache so `gen` # can resolve them. Run once, and again whenever the generator changes. @@ -14,7 +17,13 @@ publish-codegen: # Regenerate one client from its service model: `make gen dynamodb`. # Accepts dynamodb, aws_sdk_dynamodb, aws-sdk-dynamodb, or a hyphenated model name. gen: - SMITHY_PYTHON=$(SMITHY_PYTHON) uv run python codegen/gen_client.py $(filter-out gen,$(MAKECMDGOALS)) + SMITHY_PYTHON=$(abspath $(SMITHY_PYTHON)) uv run python codegen/gen_client.py $(filter-out gen,$(MAKECMDGOALS)) + +# Regenerate every client from codegen/aws-models with codegen built from the +# smithy-python commit in codegen/smithy-python.toml. Each client is cleared first, +# keeping only the paths in gen_client.py's KEEP, then scripts/client-overlays is applied. +clients: + SMITHY_PYTHON=$(abspath $(SMITHY_PYTHON)) uv run python codegen/gen_client.py --all --pinned --batch-size $(BATCH_SIZE) # Swallow the client-name argument so make does not treat it as a target. # Scoped to `gen` so it does not mask typos in unrelated commands. diff --git a/codegen/.gitignore b/codegen/.gitignore index 47abe1a7..0921a6a2 100644 --- a/codegen/.gitignore +++ b/codegen/.gitignore @@ -2,3 +2,4 @@ build/ smithy-build.json __pycache__/ +.smithy-python/ diff --git a/codegen/build.gradle.kts b/codegen/build.gradle.kts index 92e4d47d..67849917 100644 --- a/codegen/build.gradle.kts +++ b/codegen/build.gradle.kts @@ -13,28 +13,23 @@ repositories { mavenCentral() } -// Read the codegen and smithy versions from the colocated smithy-python -// checkout so this harness tracks whatever generator you build against, -// rather than a literal that silently rots when smithy-python bumps. -// Falls back to the last-known values if the checkout can't be read. -val smithyPython = file(System.getenv("SMITHY_PYTHON") ?: "../smithy-python") +// Read the codegen and smithy versions from the smithy-python checkout being built +// against, so this harness tracks that generator instead of a literal that rots. +val smithyPython = file(System.getenv("SMITHY_PYTHON") ?: "../../smithy-python") -fun readVersion(file: File, regex: Regex, fallback: String): String = - if (file.exists()) { - file.readLines().firstNotNullOfOrNull { regex.find(it)?.groupValues?.get(1) } ?: fallback - } else { - fallback - } +fun readVersion(file: File, regex: Regex): String = + file.takeIf { it.exists() } + ?.readLines() + ?.firstNotNullOfOrNull { regex.find(it)?.groupValues?.get(1) } + ?: error("cannot read ${regex.pattern} from $file; set SMITHY_PYTHON to a smithy-python checkout") val codegenVersion = readVersion( smithyPython.resolve("codegen/build.gradle.kts"), Regex("""version\s*=\s*"([^"]+)""""), - "0.5.1", ) val smithyVersion = readVersion( smithyPython.resolve("codegen/gradle/libs.versions.toml"), Regex("""^smithy\s*=\s*"([^"]+)""""), - "1.73.0", ) dependencies { diff --git a/codegen/gen_client.py b/codegen/gen_client.py index e9bc26a4..bbafd67d 100644 --- a/codegen/gen_client.py +++ b/codegen/gen_client.py @@ -1,125 +1,368 @@ #!/usr/bin/env python3 -"""Generate one aws-sdk-python client from its service model via smithy-python codegen. +"""Regenerate aws-sdk-python clients from service models via smithy-python codegen. -Usage: python codegen/gen_client.py +Usage: python codegen/gen_client.py (--all | ...) [--pinned] [--batch-size N] accepts dynamodb, aws_sdk_dynamodb, aws-sdk-dynamodb, or bedrock-runtime forms. + --pinned builds codegen from the smithy-python commit in codegen/smithy-python.toml; + without it, the codegen last published to the local Maven cache is used. """ +import argparse import json +import os +import re import shutil import subprocess import sys +import tomllib +from collections.abc import Iterator +from contextlib import contextmanager from pathlib import Path CODEGEN_DIR = Path(__file__).resolve().parent REPO = CODEGEN_DIR.parent MODELS = CODEGEN_DIR / "aws-models" CLIENTS = REPO / "clients" +OVERLAYS = REPO / "scripts" / "client-overlays" PROJECT = "aws-sdk-python-codegen" +META_PACKAGE = "aws-sdk-python" +DEFAULT_BATCH_SIZE = 25 +POINTER = CODEGEN_DIR / "smithy-python.toml" +PINNED_DIR = CODEGEN_DIR / ".smithy-python" + +# Paths codegen never emits; they survive the pre-generation delete. A path codegen +# does emit but that must differ from codegen output belongs in client-overlays. +KEEP = ( + ".changes", + "CHANGELOG.md", + "LICENSE", + "NOTICE", + "Makefile", + "docs", + "examples", + "scripts", + "tests/integration", + "zensical.toml", +) + +# The integration tests of these clients set up resources with boto3. +CLIENTS_REQUIRING_BOTO3 = { + "aws-sdk-connecthealth", + "aws-sdk-lex-runtime-v2", + "aws-sdk-transcribe-streaming", +} +CLIENT_DOC_DEPS = {"zensical", "mkdocstrings[python]"} + + +def main() -> None: + sys.stdout.reconfigure(line_buffering=True) + parser = argparse.ArgumentParser() + group = parser.add_mutually_exclusive_group(required=True) + group.add_argument("--all", action="store_true") + group.add_argument("names", nargs="*", default=[]) + parser.add_argument("-b", "--batch-size", type=int, default=DEFAULT_BATCH_SIZE) + parser.add_argument("--pinned", action="store_true") + args = parser.parse_args() + if args.batch_size < 1: + sys.exit("--batch-size must be at least 1") + + models = ( + sorted(MODELS.glob("*.json")) + if args.all + else [resolve_model(n) for n in args.names] + ) + if not models: + sys.exit("no clients selected") + + if args.pinned: + with _pinned_codegen(_pinned_commit()) as gradle_args: + _generate(models, args.batch_size, gradle_args) + else: + _generate(models, args.batch_size, []) + + +def _generate(models: list[Path], batch_size: int, gradle_args: list[str]) -> None: + docs_deps = _docs_deps() + for start in range(0, len(models), batch_size): + batch = models[start : start + batch_size] + _build(batch, gradle_args) + for model in batch: + _install_client(model.stem, docs_deps) + + +def _pinned_commit() -> str: + with POINTER.open("rb") as f: + commit = tomllib.load(f)["commit"] + if not re.fullmatch(r"[0-9a-f]{40}", commit): + sys.exit(f"{POINTER}: commit must be a full 40-character hash, got {commit!r}") + return commit + + +@contextmanager +def _pinned_codegen(commit: str) -> Iterator[list[str]]: + colocated = _smithy_python() + if not (colocated / ".git").exists(): + sys.exit(f"no smithy-python checkout at {colocated}") + git = ["git", "-C", str(colocated)] + if subprocess.run([*git, "cat-file", "-e", f"{commit}^{{commit}}"]).returncode: + subprocess.run([*git, "fetch", "origin", commit], check=True) + + worktree = PINNED_DIR / commit + subprocess.run([*git, "worktree", "prune"], check=True) + if worktree.exists(): + subprocess.run( + [*git, "worktree", "remove", "--force", str(worktree)], check=True + ) + subprocess.run( + [*git, "worktree", "add", "--detach", str(worktree), commit], check=True + ) + + # Every develop commit carries the same nominal version, so a shared ~/.m2 is + # last-publish-wins; a private repo guarantees the jars come from this commit. + m2 = PINNED_DIR / "m2" + gradle_args = [f"-Dmaven.repo.local={m2}"] + previous = os.environ.get("SMITHY_PYTHON") + os.environ["SMITHY_PYTHON"] = str(worktree) + try: + marker = m2 / "smithy-python-commit" + if not (marker.exists() and marker.read_text() == commit): + print(f"publishing smithy-python codegen at {commit}") + codegen = worktree / "codegen" + subprocess.run( + [ + str(codegen / "gradlew"), + "-p", + str(codegen), + *gradle_args, + ":core:publishToMavenLocal", + ":aws:core:publishToMavenLocal", + "-q", + ], + check=True, + ) + marker.write_text(commit) + yield gradle_args + finally: + if previous is None: + os.environ.pop("SMITHY_PYTHON") + else: + os.environ["SMITHY_PYTHON"] = previous + subprocess.run( + [*git, "worktree", "remove", "--force", str(worktree)], check=True + ) + + +def _smithy_python() -> Path: + return Path( + os.environ.get("SMITHY_PYTHON", REPO.parent / "smithy-python") + ).resolve() def resolve_model(name: str) -> Path: - """Map any client-name form to its aws-models/.json file.""" key = name.strip() for prefix in ("aws-sdk-", "aws_sdk_"): if key.startswith(prefix): - key = key[len(prefix):] + key = key[len(prefix) :] break - # Models are hyphenated on disk; accept underscores too. - candidates = {key, key.replace("_", "-"), key.replace("-", "_")} - for cand in candidates: + for cand in {key, key.replace("_", "-"), key.replace("-", "_")}: model = MODELS / f"{cand}.json" if model.exists(): return model available = sorted(p.stem for p in MODELS.glob("*.json")) - sys.exit( - f"no model for '{name}' in {MODELS}\navailable: {', '.join(available)}" - ) + sys.exit(f"no model for '{name}' in {MODELS}\navailable: {', '.join(available)}") def service_id(model: Path) -> str: shapes = json.loads(model.read_text())["shapes"] services = [k for k, v in shapes.items() if v.get("type") == "service"] if len(services) != 1: - sys.exit(f"expected exactly one service shape in {model.name}, found {services}") + sys.exit( + f"expected exactly one service shape in {model.name}, found {services}" + ) return services[0] -def main() -> None: - if len(sys.argv) != 2: - sys.exit("usage: gen_client.py ") - - model = resolve_model(sys.argv[1]) - slug = model.stem # e.g. bedrock-runtime - module = "aws_sdk_" + slug.replace("-", "_") # aws_sdk_bedrock_runtime - client_dir_name = "aws-sdk-" + slug # aws-sdk-bedrock-runtime - svc = service_id(model) - - version = "0.0.1" - client_pyproject = CLIENTS / client_dir_name / "pyproject.toml" - if client_pyproject.exists(): - for line in client_pyproject.read_text().splitlines(): - if line.startswith("version"): - version = line.split("=", 1)[1].strip().strip('"') - break - - build_config = { - "version": "1.0", +def _projection(model: Path) -> dict[str, object]: + slug = model.stem + # Per-projection imports make each client's input independent of its batch. + return { "imports": [str(model)], - "projections": { - slug: { - "transforms": [ - {"name": "includeServices", "args": {"services": [svc]}}, - {"name": "removeUnusedShapes"}, - ], - "plugins": { - "python-client-codegen": { - "service": svc, - "module": module, - "moduleVersion": version, - } - }, + "plugins": { + "python-client-codegen": { + "service": service_id(model), + "module": _module(slug), + "moduleVersion": _client_version(slug), } }, } + + +def _module(slug: str) -> str: + return "aws_sdk_" + slug.replace("-", "_") + + +def _client_version(slug: str) -> str: + pyproject = CLIENTS / f"aws-sdk-{slug}" / "pyproject.toml" + if pyproject.exists(): + return _read_version(pyproject) + # As in the release build: clients share major.minor, so a new one starts at .0. + for existing in sorted(CLIENTS.glob("aws-sdk-*/pyproject.toml")): + if existing.parent.name != META_PACKAGE: + major, minor, _ = _read_version(existing).split(".") + return f"{major}.{minor}.0" + sys.exit("cannot determine a version for new client: no existing client has one") + + +def _read_version(pyproject: Path) -> str: + with pyproject.open("rb") as f: + return tomllib.load(f)["project"]["version"] + + +def _build(models: list[Path], gradle_args: list[str]) -> None: + build_config = { + "version": "1.0", + "projections": {m.stem: _projection(m) for m in models}, + } build_file = CODEGEN_DIR / "smithy-build.json" build_file.write_text(json.dumps(build_config, indent=4) + "\n") - print(f"generating {client_dir_name} ({svc}) -> module {module} v{version}") - + print(f"generating {len(models)} client(s): {', '.join(m.stem for m in models)}") subprocess.run( - [str(CODEGEN_DIR / "gradlew"), "-p", str(CODEGEN_DIR), "clean", "build", "-q"], + [ + str(CODEGEN_DIR / "gradlew"), + "-p", + str(CODEGEN_DIR), + *gradle_args, + "clean", + "build", + "-q", + ], check=True, ) + +def _install_client(slug: str, docs_deps: list[str]) -> None: + name = f"aws-sdk-{slug}" projection = ( - CODEGEN_DIR / "build" / "smithyprojections" / PROJECT / slug / "python-client-codegen" + CODEGEN_DIR + / "build" + / "smithyprojections" + / PROJECT + / slug + / "python-client-codegen" ) if not projection.is_dir(): sys.exit(f"codegen produced no output at {projection}") + generated = _relative_files(projection) + _check_keep_untouched(name, generated) + overlays = _overlay_files(name, generated) - dest_src = CLIENTS / client_dir_name / "src" / module - if dest_src.exists(): - shutil.rmtree(dest_src) - dest_src.parent.mkdir(parents=True, exist_ok=True) - shutil.copytree(projection / "src" / module, dest_src) + dest = CLIENTS / name + _clear(dest) + shutil.copytree(projection, dest, dirs_exist_ok=True) + for rel in overlays: + shutil.copyfile(OVERLAYS / name / rel, dest / rel) - _format(dest_src, CLIENTS / client_dir_name / "pyproject.toml") - print(f"wrote {dest_src}") + if docs_deps: + _uv_add(dest, "docs", docs_deps) + if name in CLIENTS_REQUIRING_BOTO3: + _uv_add(dest, "test", ["boto3"]) + _format(dest / "src" / _module(slug), dest / "pyproject.toml") + print(f"wrote {dest}") -def _format(src_dir: Path, config: Path) -> None: - """Format generated code with smithy-python's lockfile-pinned ruff. +def _relative_files(root: Path) -> set[str]: + return {p.relative_to(root).as_posix() for p in root.rglob("*") if p.is_file()} + + +def _is_kept(rel: str) -> bool: + return any(rel == k or rel.startswith(k + "/") for k in KEEP) + + +def _check_keep_untouched(name: str, generated: set[str]) -> None: + clashes = sorted(rel for rel in generated if _is_kept(rel)) + if clashes: + sys.exit( + f"{name}: codegen now emits kept paths {clashes}; " + "remove them from KEEP and move any hand edits to scripts/client-overlays" + ) - The generator only formats when ruff is on its own PATH, which gradle's env - lacks; run the pinned formatter explicitly so output matches committed style. - """ - import os - smithy_python = Path(os.environ.get("SMITHY_PYTHON", REPO.parent / "smithy-python")) +def _overlay_files(name: str, generated: set[str]) -> list[str]: + root = OVERLAYS / name + if not root.is_dir(): + return [] + overlays = sorted(_relative_files(root)) + stray = [rel for rel in overlays if rel not in generated] + if stray: + sys.exit( + f"{name}: overlays {stray} do not replace any generated file; " + "move them into the client and add them to KEEP" + ) + return overlays + + +def _clear(dest: Path) -> None: + if not dest.exists(): + return + ignored = _ignored(dest) + for path in sorted(dest.rglob("*"), key=lambda p: len(p.parts), reverse=True): + rel = path.relative_to(dest).as_posix() + if ( + _is_kept(rel) + or rel in ignored + or any(rel.startswith(i + "/") for i in ignored) + ): + continue + if path.is_dir() and not path.is_symlink(): + if not any(path.iterdir()): + path.rmdir() + else: + path.unlink() + + +def _ignored(dest: Path) -> set[str]: + # Gitignored files (venvs, lockfiles) are local state, not leftover codegen output. + out = subprocess.run( + [ + "git", + "ls-files", + "--others", + "--ignored", + "--exclude-standard", + "--directory", + "-z", + ".", + ], + cwd=dest, + check=True, + capture_output=True, + text=True, + ).stdout + return {p.rstrip("/") for p in out.split("\0") if p} + + +def _docs_deps() -> list[str]: + deps = [] + for line in (REPO / "requirements-docs.in").read_text().splitlines(): + line = line.split("#")[0].strip() + if line and re.split(r"[<>=!~]", line)[0] in CLIENT_DOC_DEPS: + deps.append(line) + return deps + + +def _uv_add(client: Path, group: str, deps: list[str]) -> None: + subprocess.run( + ["uv", "add", "--group", group, "--frozen", *deps], cwd=client, check=True + ) + + +def _format(src_dir: Path, config: Path) -> None: + # The generator only formats when ruff is on gradle's PATH, which it usually is not. + smithy_python = _smithy_python() if not (smithy_python / "pyproject.toml").exists(): print(f"skipping ruff: no smithy-python checkout at {smithy_python}") return - cfg = ["--config", str(config)] if config.exists() else [] + cfg = ["--config", str(config)] for cmd in ( ["uv", "run", "ruff", "check", str(src_dir), "--fix", *cfg], ["uv", "run", "ruff", "format", str(src_dir), *cfg], diff --git a/codegen/gradle.properties b/codegen/gradle.properties new file mode 100644 index 00000000..241cc982 --- /dev/null +++ b/codegen/gradle.properties @@ -0,0 +1 @@ +org.gradle.jvmargs=-Xmx4096M diff --git a/codegen/smithy-python.toml b/codegen/smithy-python.toml new file mode 100644 index 00000000..5198efa4 --- /dev/null +++ b/codegen/smithy-python.toml @@ -0,0 +1,3 @@ +# The smithy-python commit `make clients` builds codegen from. May be any commit +# reachable from the colocated smithy-python checkout, including a local one. +commit = "6c2dfa2c689c2352985ffb05eef1bfc5e3a697e7" diff --git a/scripts/client-overlays/aws-sdk-api-gateway/README.md b/scripts/client-overlays/aws-sdk-api-gateway/README.md new file mode 100644 index 00000000..7477ff62 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-api-gateway/README.md @@ -0,0 +1,20 @@ +# Amazon API Gateway Client + +The `aws-sdk-api-gateway` package provides a client for making +requests to Amazon API Gateway. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-api-gateway +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/api-gateway/) - + the API Gateway client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-bedrock-agent-runtime/README.md b/scripts/client-overlays/aws-sdk-bedrock-agent-runtime/README.md new file mode 100644 index 00000000..6ea75cfc --- /dev/null +++ b/scripts/client-overlays/aws-sdk-bedrock-agent-runtime/README.md @@ -0,0 +1,20 @@ +# Agents for Amazon Bedrock Runtime Client + +The `aws-sdk-bedrock-agent-runtime` package provides a client for making +requests to Agents for Amazon Bedrock Runtime. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-bedrock-agent-runtime +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/bedrock-agent-runtime/) - + the Bedrock Agent Runtime client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-bedrock-agent/README.md b/scripts/client-overlays/aws-sdk-bedrock-agent/README.md new file mode 100644 index 00000000..c340b92d --- /dev/null +++ b/scripts/client-overlays/aws-sdk-bedrock-agent/README.md @@ -0,0 +1,20 @@ +# Agents for Amazon Bedrock Client + +The `aws-sdk-bedrock-agent` package provides a client for making +requests to Agents for Amazon Bedrock. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-bedrock-agent +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/bedrock-agent/) - + the Bedrock Agent client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-bedrock-agentcore-control/README.md b/scripts/client-overlays/aws-sdk-bedrock-agentcore-control/README.md new file mode 100644 index 00000000..e64c6a9b --- /dev/null +++ b/scripts/client-overlays/aws-sdk-bedrock-agentcore-control/README.md @@ -0,0 +1,20 @@ +# Amazon Bedrock AgentCore Control Client + +The `aws-sdk-bedrock-agentcore-control` package provides a client for making +requests to Amazon Bedrock AgentCore Control. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-bedrock-agentcore-control +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/bedrock-agentcore-control/) - + the Bedrock AgentCore Control client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-bedrock-agentcore/README.md b/scripts/client-overlays/aws-sdk-bedrock-agentcore/README.md new file mode 100644 index 00000000..3a12d46c --- /dev/null +++ b/scripts/client-overlays/aws-sdk-bedrock-agentcore/README.md @@ -0,0 +1,20 @@ +# Amazon Bedrock AgentCore Client + +The `aws-sdk-bedrock-agentcore` package provides a client for making +requests to Amazon Bedrock AgentCore. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-bedrock-agentcore +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/bedrock-agentcore/) - + the Bedrock AgentCore client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-bedrock-data-automation-runtime/README.md b/scripts/client-overlays/aws-sdk-bedrock-data-automation-runtime/README.md new file mode 100644 index 00000000..ac52f1b7 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-bedrock-data-automation-runtime/README.md @@ -0,0 +1,20 @@ +# Runtime for Amazon Bedrock Data Automation Client + +The `aws-sdk-bedrock-data-automation-runtime` package provides a client for making +requests to Runtime for Amazon Bedrock Data Automation. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-bedrock-data-automation-runtime +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/bedrock-data-automation-runtime/) - + the Bedrock Data Automation Runtime client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-bedrock-data-automation/README.md b/scripts/client-overlays/aws-sdk-bedrock-data-automation/README.md new file mode 100644 index 00000000..8a5a9cf4 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-bedrock-data-automation/README.md @@ -0,0 +1,20 @@ +# Data Automation for Amazon Bedrock Client + +The `aws-sdk-bedrock-data-automation` package provides a client for making +requests to Data Automation for Amazon Bedrock. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-bedrock-data-automation +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/bedrock-data-automation/) - + the Bedrock Data Automation client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-bedrock-runtime/README.md b/scripts/client-overlays/aws-sdk-bedrock-runtime/README.md new file mode 100644 index 00000000..9fc85a63 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-bedrock-runtime/README.md @@ -0,0 +1,20 @@ +# Amazon Bedrock Runtime Client + +The `aws-sdk-bedrock-runtime` package provides a client for making +requests to Amazon Bedrock Runtime. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-bedrock-runtime +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/bedrock-runtime/) - + the Bedrock Runtime client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-bedrock/README.md b/scripts/client-overlays/aws-sdk-bedrock/README.md new file mode 100644 index 00000000..6a626298 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-bedrock/README.md @@ -0,0 +1,20 @@ +# Amazon Bedrock Client + +The `aws-sdk-bedrock` package provides a client for making +requests to Amazon Bedrock. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-bedrock +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/bedrock/) - + the Bedrock client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-cloudtrail/README.md b/scripts/client-overlays/aws-sdk-cloudtrail/README.md new file mode 100644 index 00000000..17d42829 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-cloudtrail/README.md @@ -0,0 +1,20 @@ +# AWS CloudTrail Client + +The `aws-sdk-cloudtrail` package provides a client for making +requests to AWS CloudTrail. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-cloudtrail +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/cloudtrail/) - + the CloudTrail client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-cognito-identity/README.md b/scripts/client-overlays/aws-sdk-cognito-identity/README.md new file mode 100644 index 00000000..ed470e53 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-cognito-identity/README.md @@ -0,0 +1,20 @@ +# Amazon Cognito Identity Client + +The `aws-sdk-cognito-identity` package provides a client for making +requests to Amazon Cognito Identity. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-cognito-identity +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/cognito-identity/) - + the Cognito Identity client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-connecthealth/README.md b/scripts/client-overlays/aws-sdk-connecthealth/README.md new file mode 100644 index 00000000..a024b197 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-connecthealth/README.md @@ -0,0 +1,20 @@ +# Connect Health Client + +The `aws-sdk-connecthealth` package provides a client for making +requests to Connect Health. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-connecthealth +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/connecthealth/) - + the ConnectHealth client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-dynamodb/README.md b/scripts/client-overlays/aws-sdk-dynamodb/README.md new file mode 100644 index 00000000..7c4bbb2b --- /dev/null +++ b/scripts/client-overlays/aws-sdk-dynamodb/README.md @@ -0,0 +1,20 @@ +# Amazon DynamoDB Client + +The `aws-sdk-dynamodb` package provides a client for making +requests to Amazon DynamoDB. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-dynamodb +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/dynamodb/) - + the DynamoDB client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-guardduty/README.md b/scripts/client-overlays/aws-sdk-guardduty/README.md new file mode 100644 index 00000000..f38bc9e5 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-guardduty/README.md @@ -0,0 +1,20 @@ +# Amazon GuardDuty Client + +The `aws-sdk-guardduty` package provides a client for making +requests to Amazon GuardDuty. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-guardduty +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/guardduty/) - + the GuardDuty client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-lambda/README.md b/scripts/client-overlays/aws-sdk-lambda/README.md new file mode 100644 index 00000000..224711aa --- /dev/null +++ b/scripts/client-overlays/aws-sdk-lambda/README.md @@ -0,0 +1,20 @@ +# AWS Lambda Client + +The `aws-sdk-lambda` package provides a client for making +requests to AWS Lambda. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-lambda +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/lambda/) - + the Lambda client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-lex-runtime-v2/README.md b/scripts/client-overlays/aws-sdk-lex-runtime-v2/README.md new file mode 100644 index 00000000..f3f9145f --- /dev/null +++ b/scripts/client-overlays/aws-sdk-lex-runtime-v2/README.md @@ -0,0 +1,20 @@ +# Amazon Lex Runtime V2 Client + +The `aws-sdk-lex-runtime-v2` package provides a client for making +requests to Amazon Lex Runtime V2. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-lex-runtime-v2 +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/lex-runtime-v2/) - + the Lex Runtime V2 client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-polly/README.md b/scripts/client-overlays/aws-sdk-polly/README.md new file mode 100644 index 00000000..9b270de1 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-polly/README.md @@ -0,0 +1,20 @@ +# Amazon Polly Client + +The `aws-sdk-polly` package provides a client for making +requests to Amazon Polly. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-polly +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/polly/) - + the Polly client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-qbusiness/README.md b/scripts/client-overlays/aws-sdk-qbusiness/README.md new file mode 100644 index 00000000..1af7325a --- /dev/null +++ b/scripts/client-overlays/aws-sdk-qbusiness/README.md @@ -0,0 +1,20 @@ +# QBusiness Client + +The `aws-sdk-qbusiness` package provides a client for making +requests to QBusiness. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-qbusiness +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/qbusiness/) - + the QBusiness client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-sagemaker-runtime-http2/README.md b/scripts/client-overlays/aws-sdk-sagemaker-runtime-http2/README.md new file mode 100644 index 00000000..90db86cd --- /dev/null +++ b/scripts/client-overlays/aws-sdk-sagemaker-runtime-http2/README.md @@ -0,0 +1,20 @@ +# Amazon SageMaker Runtime HTTP2 Client + +The `aws-sdk-sagemaker-runtime-http2` package provides a client for making +requests to Amazon SageMaker Runtime HTTP2. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-sagemaker-runtime-http2 +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/sagemaker-runtime-http2/) - + the SageMaker Runtime HTTP2 client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-secrets-manager/README.md b/scripts/client-overlays/aws-sdk-secrets-manager/README.md new file mode 100644 index 00000000..bc43fa37 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-secrets-manager/README.md @@ -0,0 +1,20 @@ +# AWS Secrets Manager Client + +The `aws-sdk-secrets-manager` package provides a client for making +requests to AWS Secrets Manager. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-secrets-manager +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/secrets-manager/) - + the Secrets Manager client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-signin/README.md b/scripts/client-overlays/aws-sdk-signin/README.md new file mode 100644 index 00000000..0c6b2081 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-signin/README.md @@ -0,0 +1,20 @@ +# AWS Sign-In Service Client + +The `aws-sdk-signin` package provides a client for making +requests to AWS Sign-In Service. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-signin +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/signin/) - + the Signin client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-sns/README.md b/scripts/client-overlays/aws-sdk-sns/README.md new file mode 100644 index 00000000..b7ca3e8e --- /dev/null +++ b/scripts/client-overlays/aws-sdk-sns/README.md @@ -0,0 +1,20 @@ +# Amazon Simple Notification Service Client + +The `aws-sdk-sns` package provides a client for making +requests to Amazon Simple Notification Service. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-sns +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/sns/) - + the SNS client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-sqs/README.md b/scripts/client-overlays/aws-sdk-sqs/README.md new file mode 100644 index 00000000..94acaa45 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-sqs/README.md @@ -0,0 +1,20 @@ +# Amazon Simple Queue Service Client + +The `aws-sdk-sqs` package provides a client for making +requests to Amazon Simple Queue Service. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-sqs +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/sqs/) - + the SQS client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-sts/README.md b/scripts/client-overlays/aws-sdk-sts/README.md new file mode 100644 index 00000000..0d323c64 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-sts/README.md @@ -0,0 +1,20 @@ +# AWS Security Token Service Client + +The `aws-sdk-sts` package provides a client for making +requests to AWS Security Token Service. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-sts +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/sts/) - + the STS client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4. diff --git a/scripts/client-overlays/aws-sdk-transcribe-streaming/README.md b/scripts/client-overlays/aws-sdk-transcribe-streaming/README.md new file mode 100644 index 00000000..68d08390 --- /dev/null +++ b/scripts/client-overlays/aws-sdk-transcribe-streaming/README.md @@ -0,0 +1,20 @@ +# Amazon Transcribe Streaming Service Client + +The `aws-sdk-transcribe-streaming` package provides a client for making +requests to Amazon Transcribe Streaming Service. + +> **Note:** This SDK is experimental and in early development. Breaking changes +> may occur prior to the release of version 1.0.0. + +## Installation + +```bash +python -m pip install aws-sdk-transcribe-streaming +``` + +## Documentation + +- [API Reference](https://docs.aws.amazon.com/sdk-for-python/v4/reference/clients/transcribe-streaming/) - + the Transcribe Streaming client, available operations, and types. +- [Developer Guide](https://docs.aws.amazon.com/sdk-for-python/v4/guide/) - + configuration, authentication, and usage of the AWS SDK for Python v4.