diff --git a/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/_aws_attribute_keys.py b/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/_aws_attribute_keys.py index 855b9c42a..323ccbe56 100644 --- a/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/_aws_attribute_keys.py +++ b/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/_aws_attribute_keys.py @@ -23,6 +23,7 @@ AWS_BEDROCK_KNOWLEDGE_BASE_ID: str = "aws.bedrock.knowledge_base.id" AWS_BEDROCK_AGENT_ID: str = "aws.bedrock.agent.id" AWS_BEDROCK_GUARDRAIL_ID: str = "aws.bedrock.guardrail.id" +AWS_BEDROCK_GUARDRAIL_ARN: str = "aws.bedrock.guardrail.arn" AWS_SECRETSMANAGER_SECRET_ARN: str = "aws.secretsmanager.secret.arn" AWS_SNS_TOPIC_ARN: str = "aws.sns.topic.arn" AWS_STEPFUNCTIONS_STATEMACHINE_ARN: str = "aws.stepfunctions.state_machine.arn" diff --git a/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/_aws_metric_attribute_generator.py b/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/_aws_metric_attribute_generator.py index 93d13ee9b..4e7eb8be0 100644 --- a/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/_aws_metric_attribute_generator.py +++ b/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/_aws_metric_attribute_generator.py @@ -8,6 +8,7 @@ from amazon.opentelemetry.distro._aws_attribute_keys import ( AWS_BEDROCK_AGENT_ID, AWS_BEDROCK_DATA_SOURCE_ID, + AWS_BEDROCK_GUARDRAIL_ARN, AWS_BEDROCK_GUARDRAIL_ID, AWS_BEDROCK_KNOWLEDGE_BASE_ID, AWS_CLOUDFORMATION_PRIMARY_IDENTIFIER, @@ -423,6 +424,7 @@ def _set_remote_type_and_identifier(span: ReadableSpan, attributes: BoundedAttri elif is_key_present(span, AWS_BEDROCK_GUARDRAIL_ID): remote_resource_type = _NORMALIZED_BEDROCK_SERVICE_NAME + "::Guardrail" remote_resource_identifier = _escape_delimiters(span.attributes.get(AWS_BEDROCK_GUARDRAIL_ID)) + cloudformation_primary_identifier = _escape_delimiters(span.attributes.get(AWS_BEDROCK_GUARDRAIL_ARN)) elif is_key_present(span, AWS_BEDROCK_KNOWLEDGE_BASE_ID): remote_resource_type = _NORMALIZED_BEDROCK_SERVICE_NAME + "::KnowledgeBase" remote_resource_identifier = _escape_delimiters(span.attributes.get(AWS_BEDROCK_KNOWLEDGE_BASE_ID)) diff --git a/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/patches/_bedrock_patches.py b/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/patches/_bedrock_patches.py index edc1b19ec..581ca36f4 100644 --- a/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/patches/_bedrock_patches.py +++ b/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/patches/_bedrock_patches.py @@ -7,6 +7,7 @@ from amazon.opentelemetry.distro._aws_attribute_keys import ( AWS_BEDROCK_AGENT_ID, AWS_BEDROCK_DATA_SOURCE_ID, + AWS_BEDROCK_GUARDRAIL_ARN, AWS_BEDROCK_GUARDRAIL_ID, AWS_BEDROCK_KNOWLEDGE_BASE_ID, ) @@ -23,6 +24,7 @@ _KNOWLEDGE_BASE_ID: str = "knowledgeBaseId" _DATA_SOURCE_ID: str = "dataSourceId" _GUARDRAIL_ID: str = "guardrailId" +_GUARDRAIL_ARN: str = "guardrailArn" _MODEL_ID: str = "modelId" _AWS_BEDROCK_SYSTEM: str = "aws_bedrock" @@ -217,6 +219,13 @@ def on_success(self, span: Span, result: _BotoResultT): guardrail_id, ) + guardrail_arn = result.get(_GUARDRAIL_ARN) + if guardrail_arn: + span.set_attribute( + AWS_BEDROCK_GUARDRAIL_ARN, + guardrail_arn, + ) + class _BedrockRuntimeExtension(_AwsSdkExtension): """