Setting the file. One moment.
Subchapter 37.54
scripts/cloudwatch/di_region.py
Python47 lines2 KB
"""Region resolution for the dynamic-instrumentation host scripts.
WHY THIS EXISTS
``di_instrumentation.py`` (application-signals client) and ``di_snapshots.py``
(CloudWatch Logs client) both need to pick an AWS region, and they must pick it
the SAME way so a breakpoint created in one region and the snapshots later read
for it land in the same region. Centralizing the policy here keeps the two
host scripts from drifting apart.
POLICY (mirrors boto3's own precedence, minus the profile region)
explicit --region flag > AWS_REGION > AWS_DEFAULT_REGION > us-east-1
* ``AWS_PROFILE`` is honored for CREDENTIALS only (by the client builders); the
profile's configured region is deliberately ignored so the target region is
always explicit and overridable per invocation.
* Both ``AWS_REGION`` and ``AWS_DEFAULT_REGION`` are consulted because boto3
itself honors both; reading only ``AWS_REGION`` would surprise a caller who
set ``AWS_DEFAULT_REGION`` instead.
* The ``us-east-1`` fallback means a call never fails for lack of a region, but
callers are expected to pass ``--region`` or set the env var to target the
region their service actually runs in (see SKILL.md).
The ``--region`` flag is a thin front-end: the host script sets
``AWS_REGION`` from the flag before dispatch, so the existing env-driven client
builders pick it up with no change to operation signatures.
"""
import os
from typing import Optional
DEFAULT_REGION = "us-east-1"
def resolve_region(explicit: Optional[str] = None) -> str:
"""Resolve the AWS region using the documented precedence.
Args:
explicit: A region passed directly (e.g. from a ``--region`` flag).
When falsy, environment variables and the default are consulted.
Returns:
``explicit`` if provided, else ``AWS_REGION``, else
``AWS_DEFAULT_REGION``, else ``us-east-1``.
"""
if explicit:
return explicit
return os.environ.get("AWS_REGION") or os.environ.get("AWS_DEFAULT_REGION") or DEFAULT_REGION