46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
"""
|
|
SSM Parameter Store utilities for agent patterns.
|
|
|
|
Provides a single shared function for fetching parameters from AWS SSM
|
|
Parameter Store, used by agents to retrieve configuration values like
|
|
Gateway URLs that are set during deployment.
|
|
"""
|
|
|
|
import logging
|
|
import os
|
|
|
|
import boto3
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def get_ssm_parameter(parameter_name: str) -> str:
|
|
"""
|
|
Fetch a parameter value from AWS SSM Parameter Store.
|
|
|
|
SSM Parameter Store is AWS's service for storing configuration values
|
|
securely. This function retrieves values like Gateway URLs and other
|
|
stack-specific configuration that are set during CDK deployment.
|
|
|
|
Args:
|
|
parameter_name (str): The full SSM parameter name/path
|
|
(e.g. '/my-stack/gateway_url').
|
|
|
|
Returns:
|
|
str: The parameter value.
|
|
|
|
Raises:
|
|
ValueError: If the parameter is not found or cannot be retrieved.
|
|
"""
|
|
region = os.environ.get(
|
|
"AWS_REGION", os.environ.get("AWS_DEFAULT_REGION", "us-east-1")
|
|
)
|
|
ssm = boto3.client("ssm", region_name=region)
|
|
try:
|
|
response = ssm.get_parameter(Name=parameter_name)
|
|
return response["Parameter"]["Value"]
|
|
except ssm.exceptions.ParameterNotFound:
|
|
raise ValueError(f"SSM parameter not found: {parameter_name}")
|
|
except Exception as e:
|
|
raise ValueError(f"Failed to retrieve SSM parameter {parameter_name}: {e}")
|