Skip to content

Commit 170b4c2

Browse files
authored
Merge pull request #13 from yiyuan-he/update-bedrock
feat: update bedrock resource attributes
2 parents 965f787 + 0a93834 commit 170b4c2

File tree

6 files changed

+38
-2
lines changed

6 files changed

+38
-2
lines changed

instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsExperimentalAttributes.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ final class AwsExperimentalAttributes {
2323
stringKey("aws.bedrock.knowledge_base.id");
2424
static final AttributeKey<String> AWS_DATA_SOURCE_ID = stringKey("aws.bedrock.data_source.id");
2525
static final AttributeKey<String> AWS_GUARDRAIL_ID = stringKey("aws.bedrock.guardrail.id");
26+
static final AttributeKey<String> AWS_GUARDRAIL_ARN = stringKey("aws.bedrock.guardrail.arn");
2627

2728
// TODO: Merge in gen_ai attributes in opentelemetry-semconv-incubating once upgrade to v1.26.0
2829
static final AttributeKey<String> AWS_BEDROCK_RUNTIME_MODEL_ID =

instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkExperimentalAttributesExtractor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_BEDROCK_SYSTEM;
1212
import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_BUCKET_NAME;
1313
import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_ENDPOINT;
14+
import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_GUARDRAIL_ARN;
1415
import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_GUARDRAIL_ID;
1516
import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_KNOWLEDGE_BASE_ID;
1617
import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_LAMBDA_NAME;
@@ -154,6 +155,7 @@ private static void bedrockOnEnd(
154155
switch (serviceName) {
155156
case BEDROCK_SERVICE:
156157
setAttribute(attributes, AWS_GUARDRAIL_ID, awsResp, RequestAccess::getGuardrailId);
158+
setAttribute(attributes, AWS_GUARDRAIL_ARN, awsResp, RequestAccess::getGuardrailArn);
157159
break;
158160
case BEDROCK_AGENT_SERVICE:
159161
String responseClassName = awsResp.getClass().getSimpleName();

instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/RequestAccess.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.lang.invoke.MethodHandle;
99
import java.lang.invoke.MethodHandles;
1010
import java.lang.invoke.MethodType;
11+
import java.lang.reflect.Method;
1112
import javax.annotation.Nullable;
1213

1314
final class RequestAccess {
@@ -110,6 +111,11 @@ static String getGuardrailId(Object request) {
110111
return invokeOrNull(access.getGuardrailId, request);
111112
}
112113

114+
@Nullable
115+
static String getGuardrailArn(Object request) {
116+
return findNestedAccessorOrNull(request, "getGuardrailArn");
117+
}
118+
113119
@Nullable
114120
static String getModelId(Object request) {
115121
RequestAccess access = REQUEST_ACCESSORS.get(request.getClass());
@@ -173,4 +179,21 @@ private static MethodHandle findAccessorOrNull(Class<?> clz, String methodName)
173179
return null;
174180
}
175181
}
182+
183+
@Nullable
184+
private static String findNestedAccessorOrNull(Object obj, String... methodNames) {
185+
Object current = obj;
186+
for (String methodName : methodNames) {
187+
if (current == null) {
188+
return null;
189+
}
190+
try {
191+
Method method = current.getClass().getMethod(methodName);
192+
current = method.invoke(current);
193+
} catch (Exception e) {
194+
return null;
195+
}
196+
}
197+
return (current instanceof String) ? (String) current : null;
198+
}
176199
}

instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsExperimentalAttributes.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ final class AwsExperimentalAttributes {
1616
static final AttributeKey<String> AWS_STREAM_NAME = stringKey("aws.stream.name");
1717
static final AttributeKey<String> AWS_TABLE_NAME = stringKey("aws.table.name");
1818
static final AttributeKey<String> AWS_GUARDRAIL_ID = stringKey("aws.bedrock.guardrail.id");
19+
static final AttributeKey<String> AWS_GUARDRAIL_ARN = stringKey("aws.bedrock.guardrail.arn");
1920
static final AttributeKey<String> AWS_AGENT_ID = stringKey("aws.bedrock.agent.id");
2021
static final AttributeKey<String> AWS_DATA_SOURCE_ID = stringKey("aws.bedrock.data_source.id");
2122
static final AttributeKey<String> AWS_KNOWLEDGE_BASE_ID =

instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkRequest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequestType.BEDROCK;
99
import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequestType.BEDROCKAGENTOPERATION;
10+
import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequestType.BEDROCKAGENTRUNTIMEOPERATION;
1011
import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequestType.BEDROCKDATASOURCEOPERATION;
1112
import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequestType.BEDROCKKNOWLEDGEBASEOPERATION;
1213
import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequestType.BEDROCKRUNTIME;
@@ -42,7 +43,7 @@ enum AwsSdkRequest {
4243
SqsRequest(SQS, "SqsRequest"),
4344
KinesisRequest(KINESIS, "KinesisRequest"),
4445
BedrockRequest(BEDROCK, "BedrockRequest"),
45-
BedrockAgentRuntimeRequest(BEDROCKAGENTOPERATION, "BedrockAgentRuntimeRequest"),
46+
BedrockAgentRuntimeRequest(BEDROCKAGENTRUNTIMEOPERATION, "BedrockAgentRuntimeRequest"),
4647
BedrockRuntimeRequest(BEDROCKRUNTIME, "BedrockRuntimeRequest"),
4748
// BedrockAgent API based requests. We only support operations that are related to
4849
// Agent/DataSources/KnowledgeBases

instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkRequestType.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsExperimentalAttributes.AWS_AGENT_ID;
99
import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsExperimentalAttributes.AWS_BUCKET_NAME;
1010
import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsExperimentalAttributes.AWS_DATA_SOURCE_ID;
11+
import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsExperimentalAttributes.AWS_GUARDRAIL_ARN;
1112
import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsExperimentalAttributes.AWS_GUARDRAIL_ID;
1213
import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsExperimentalAttributes.AWS_KNOWLEDGE_BASE_ID;
1314
import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsExperimentalAttributes.AWS_LAMBDA_ARN;
@@ -34,9 +35,16 @@ enum AwsSdkRequestType {
3435
SQS(request(AWS_QUEUE_URL.getKey(), "QueueUrl"), request(AWS_QUEUE_NAME.getKey(), "QueueName")),
3536
KINESIS(request(AWS_STREAM_NAME.getKey(), "StreamName")),
3637
DYNAMODB(request(AWS_TABLE_NAME.getKey(), "TableName")),
37-
BEDROCK(request(AWS_GUARDRAIL_ID.getKey(), "guardrailIdentifier")),
38+
BEDROCK(
39+
request(AWS_GUARDRAIL_ID.getKey(), "guardrailIdentifier"),
40+
response(AWS_GUARDRAIL_ARN.getKey(), "guardrailArn")),
3841
BEDROCKAGENTOPERATION(
3942
request(AWS_AGENT_ID.getKey(), "agentId"), response(AWS_AGENT_ID.getKey(), "agentId")),
43+
BEDROCKAGENTRUNTIMEOPERATION(
44+
request(AWS_AGENT_ID.getKey(), "agentId"),
45+
response(AWS_AGENT_ID.getKey(), "agentId"),
46+
request(AWS_KNOWLEDGE_BASE_ID.getKey(), "knowledgeBaseId"),
47+
response(AWS_KNOWLEDGE_BASE_ID.getKey(), "knowledgeBaseId")),
4048
BEDROCKDATASOURCEOPERATION(
4149
request(AWS_DATA_SOURCE_ID.getKey(), "dataSourceId"),
4250
response(AWS_DATA_SOURCE_ID.getKey(), "dataSourceId")),

0 commit comments

Comments
 (0)