mirror of
https://github.com/awslabs/amazon-bedrock-agentcore-samples.git
synced 2025-09-08 20:50:46 +00:00
65 lines
2.2 KiB
Python
65 lines
2.2 KiB
Python
import boto3
|
|
|
|
|
|
def enable_observability_for_resource(
|
|
resource_arn: str,
|
|
resource_id: str,
|
|
account_id: str,
|
|
region: str = 'us-east-1'
|
|
):
|
|
"""
|
|
Enable observability for a Bedrock AgentCore resource (e.g., Memory Store)
|
|
"""
|
|
logs_client = boto3.client('logs', region_name=region)
|
|
|
|
# Step 0: Create new log group for vended log delivery
|
|
log_group_name = f'/aws/vendedlogs/bedrock-agentcore/{resource_id}'
|
|
logs_client.create_log_group(logGroupName=log_group_name)
|
|
log_group_arn = f'arn:aws:logs:{region}:{account_id}:log-group:{log_group_name}'
|
|
|
|
# Step 1: Create delivery source for logs
|
|
logs_source_response = logs_client.put_delivery_source(
|
|
name=f"{resource_id}-logs-source",
|
|
logType="APPLICATION_LOGS",
|
|
resourceArn=resource_arn
|
|
)
|
|
|
|
# Step 2: Create delivery source for traces
|
|
traces_source_response = logs_client.put_delivery_source(
|
|
name=f"{resource_id}-traces-source",
|
|
logType="TRACES",
|
|
resourceArn=resource_arn
|
|
)
|
|
|
|
# Step 3: Create delivery destinations
|
|
logs_destination_response = logs_client.put_delivery_destination(
|
|
name=f"{resource_id}-logs-destination",
|
|
deliveryDestinationType='CWL',
|
|
deliveryDestinationConfiguration={
|
|
'destinationResourceArn': log_group_arn,
|
|
}
|
|
)
|
|
|
|
# Traces required for memory only
|
|
traces_destination_response = logs_client.put_delivery_destination(
|
|
name=f"{resource_id}-traces-destination",
|
|
deliveryDestinationType='XRAY'
|
|
)
|
|
|
|
# Step 4: Create deliveries (connect sources to destinations)
|
|
logs_delivery = logs_client.create_delivery(
|
|
deliverySourceName=logs_source_response['deliverySource']['name'],
|
|
deliveryDestinationArn=logs_destination_response['deliveryDestination']['arn']
|
|
)
|
|
|
|
# Traces required for memory only
|
|
traces_delivery = logs_client.create_delivery(
|
|
deliverySourceName=traces_source_response['deliverySource']['name'],
|
|
deliveryDestinationArn=traces_destination_response['deliveryDestination']['arn']
|
|
)
|
|
|
|
print(f"Observability enabled for {resource_id}")
|
|
return {
|
|
'logs_delivery_id': logs_delivery['id'],
|
|
'traces_delivery_id': traces_delivery['id']
|
|
} |