|
29 | 29 | _AWS_SQS_QUEUE_URL: str = "aws.sqs.queue.url"
|
30 | 30 | _AWS_SQS_QUEUE_NAME: str = "aws.sqs.queue.name"
|
31 | 31 | _AWS_KINESIS_STREAM_NAME: str = "aws.kinesis.stream.name"
|
| 32 | +_AWS_BEDROCK_AGENT_ID: str = "aws.bedrock.agent.id" |
| 33 | +_AWS_BEDROCK_GUARDRAIL_ID: str = "aws.bedrock.guardrail.id" |
| 34 | +_AWS_BEDROCK_KNOWLEDGE_BASE_ID: str = "aws.bedrock.knowledge_base.id" |
| 35 | +_AWS_BEDROCK_DATA_SOURCE_ID: str = "aws.bedrock.data_source.id" |
| 36 | +_GEN_AI_REQUEST_MODEL: str = "gen_ai.request.model" |
32 | 37 |
|
33 | 38 |
|
34 | 39 | # pylint: disable=too-many-public-methods
|
@@ -66,7 +71,7 @@ def set_up_dependency_container(cls):
|
66 | 71 | )
|
67 | 72 | }
|
68 | 73 | cls._local_stack: LocalStackContainer = (
|
69 |
| - LocalStackContainer(image="localstack/localstack:2.0.1") |
| 74 | + LocalStackContainer(image="localstack/localstack:3.5.0") |
70 | 75 | .with_name("localstack")
|
71 | 76 | .with_services("s3", "sqs", "dynamodb", "kinesis")
|
72 | 77 | .with_env("DEFAULT_REGION", "us-west-2")
|
@@ -372,6 +377,132 @@ def test_kinesis_fault(self):
|
372 | 377 | span_name="Kinesis.PutRecord",
|
373 | 378 | )
|
374 | 379 |
|
| 380 | + def test_bedrock_runtime_invoke_model(self): |
| 381 | + self.do_test_requests( |
| 382 | + "bedrock/invokemodel/invoke-model", |
| 383 | + "GET", |
| 384 | + 200, |
| 385 | + 0, |
| 386 | + 0, |
| 387 | + rpc_service="Bedrock Runtime", |
| 388 | + remote_service="AWS::BedrockRuntime", |
| 389 | + remote_operation="InvokeModel", |
| 390 | + remote_resource_type="AWS::Bedrock::Model", |
| 391 | + remote_resource_identifier="amazon.titan-text-premier-v1:0", |
| 392 | + request_specific_attributes={ |
| 393 | + _GEN_AI_REQUEST_MODEL: "amazon.titan-text-premier-v1:0", |
| 394 | + }, |
| 395 | + span_name="Bedrock Runtime.InvokeModel", |
| 396 | + ) |
| 397 | + |
| 398 | + def test_bedrock_get_guardrail(self): |
| 399 | + self.do_test_requests( |
| 400 | + "bedrock/getguardrail/get-guardrail", |
| 401 | + "GET", |
| 402 | + 200, |
| 403 | + 0, |
| 404 | + 0, |
| 405 | + rpc_service="Bedrock", |
| 406 | + remote_service="AWS::Bedrock", |
| 407 | + remote_operation="GetGuardrail", |
| 408 | + remote_resource_type="AWS::Bedrock::Guardrail", |
| 409 | + remote_resource_identifier="bt4o77i015cu", |
| 410 | + request_specific_attributes={ |
| 411 | + _AWS_BEDROCK_GUARDRAIL_ID: "bt4o77i015cu", |
| 412 | + }, |
| 413 | + span_name="Bedrock.GetGuardrail", |
| 414 | + ) |
| 415 | + |
| 416 | + def test_bedrock_agent_runtime_invoke_agent(self): |
| 417 | + self.do_test_requests( |
| 418 | + "bedrock/invokeagent/invoke_agent", |
| 419 | + "GET", |
| 420 | + 200, |
| 421 | + 0, |
| 422 | + 0, |
| 423 | + rpc_service="Bedrock Agent Runtime", |
| 424 | + remote_service="AWS::Bedrock", |
| 425 | + remote_operation="InvokeAgent", |
| 426 | + remote_resource_type="AWS::Bedrock::Agent", |
| 427 | + remote_resource_identifier="Q08WFRPHVL", |
| 428 | + request_specific_attributes={ |
| 429 | + _AWS_BEDROCK_AGENT_ID: "Q08WFRPHVL", |
| 430 | + }, |
| 431 | + span_name="Bedrock Agent Runtime.InvokeAgent", |
| 432 | + ) |
| 433 | + |
| 434 | + def test_bedrock_agent_runtime_retrieve(self): |
| 435 | + self.do_test_requests( |
| 436 | + "bedrock/retrieve/retrieve", |
| 437 | + "GET", |
| 438 | + 200, |
| 439 | + 0, |
| 440 | + 0, |
| 441 | + rpc_service="Bedrock Agent Runtime", |
| 442 | + remote_service="AWS::Bedrock", |
| 443 | + remote_operation="Retrieve", |
| 444 | + remote_resource_type="AWS::Bedrock::KnowledgeBase", |
| 445 | + remote_resource_identifier="test-knowledge-base-id", |
| 446 | + request_specific_attributes={ |
| 447 | + _AWS_BEDROCK_KNOWLEDGE_BASE_ID: "test-knowledge-base-id", |
| 448 | + }, |
| 449 | + span_name="Bedrock Agent Runtime.Retrieve", |
| 450 | + ) |
| 451 | + |
| 452 | + def test_bedrock_agent_get_agent(self): |
| 453 | + self.do_test_requests( |
| 454 | + "bedrock/getagent/get-agent", |
| 455 | + "GET", |
| 456 | + 200, |
| 457 | + 0, |
| 458 | + 0, |
| 459 | + rpc_service="Bedrock Agent", |
| 460 | + remote_service="AWS::Bedrock", |
| 461 | + remote_operation="GetAgent", |
| 462 | + remote_resource_type="AWS::Bedrock::Agent", |
| 463 | + remote_resource_identifier="TESTAGENTID", |
| 464 | + request_specific_attributes={ |
| 465 | + _AWS_BEDROCK_AGENT_ID: "TESTAGENTID", |
| 466 | + }, |
| 467 | + span_name="Bedrock Agent.GetAgent", |
| 468 | + ) |
| 469 | + |
| 470 | + def test_bedrock_agent_get_knowledge_base(self): |
| 471 | + self.do_test_requests( |
| 472 | + "bedrock/getknowledgebase/get_knowledge_base", |
| 473 | + "GET", |
| 474 | + 200, |
| 475 | + 0, |
| 476 | + 0, |
| 477 | + rpc_service="Bedrock Agent", |
| 478 | + remote_service="AWS::Bedrock", |
| 479 | + remote_operation="GetKnowledgeBase", |
| 480 | + remote_resource_type="AWS::Bedrock::KnowledgeBase", |
| 481 | + remote_resource_identifier="invalid-knowledge-base-id", |
| 482 | + request_specific_attributes={ |
| 483 | + _AWS_BEDROCK_KNOWLEDGE_BASE_ID: "invalid-knowledge-base-id", |
| 484 | + }, |
| 485 | + span_name="Bedrock Agent.GetKnowledgeBase", |
| 486 | + ) |
| 487 | + |
| 488 | + def test_bedrock_agent_get_data_source(self): |
| 489 | + self.do_test_requests( |
| 490 | + "bedrock/getdatasource/get_data_source", |
| 491 | + "GET", |
| 492 | + 200, |
| 493 | + 0, |
| 494 | + 0, |
| 495 | + rpc_service="Bedrock Agent", |
| 496 | + remote_service="AWS::Bedrock", |
| 497 | + remote_operation="GetDataSource", |
| 498 | + remote_resource_type="AWS::Bedrock::DataSource", |
| 499 | + remote_resource_identifier="DATASURCID", |
| 500 | + request_specific_attributes={ |
| 501 | + _AWS_BEDROCK_DATA_SOURCE_ID: "DATASURCID", |
| 502 | + }, |
| 503 | + span_name="Bedrock Agent.GetDataSource", |
| 504 | + ) |
| 505 | + |
375 | 506 | @override
|
376 | 507 | def _assert_aws_span_attributes(self, resource_scope_spans: List[ResourceScopeSpan], path: str, **kwargs) -> None:
|
377 | 508 | target_spans: List[Span] = []
|
@@ -427,7 +558,7 @@ def _assert_semantic_conventions_span_attributes(
|
427 | 558 | self.assertEqual(target_spans[0].name, kwargs.get("span_name"))
|
428 | 559 | self._assert_semantic_conventions_attributes(
|
429 | 560 | target_spans[0].attributes,
|
430 |
| - kwargs.get("remote_service"), |
| 561 | + kwargs.get("rpc_service") if "rpc_service" in kwargs else kwargs.get("remote_service").split("::")[-1], |
431 | 562 | kwargs.get("remote_operation"),
|
432 | 563 | status_code,
|
433 | 564 | kwargs.get("request_specific_attributes", {}),
|
|
0 commit comments