Skip to content

Commit 9046101

Browse files
committed
add support for Lambda EventSourceMapping attribute
1 parent ab1c2f6 commit 9046101

File tree

5 files changed

+16
-0
lines changed

5 files changed

+16
-0
lines changed

src/AWS.Distro.OpenTelemetry.AutoInstrumentation/AwsAttributeKeys.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ internal sealed class AwsAttributeKeys
4848
internal static readonly string AttributeAWSDynamoTableName = "aws.table_name";
4949
internal static readonly string AttributeAWSSQSQueueUrl = "aws.queue_url";
5050

51+
internal static readonly string AttributeAWSLambdaResourceMappingId = "aws.lambda.resource_mapping.id";
5152
internal static readonly string AttributeAWSS3Bucket = "aws.s3.bucket";
5253
internal static readonly string AttributeAWSSecretsManagerSecretArn = "aws.secretsmanager.secret.arn";
5354
internal static readonly string AttributeAWSSNSTopicArn = "aws.sns.topic.arn";

src/AWS.Distro.OpenTelemetry.AutoInstrumentation/AwsMetricAttributeGenerator.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ internal class AwsMetricAttributeGenerator : IMetricAttributeGenerator
4242
// Normalized remote service names for supported AWS services
4343
private static readonly string NormalizedDynamoDBServiceName = "AWS::DynamoDB";
4444
private static readonly string NormalizedKinesisServiceName = "AWS::Kinesis";
45+
private static readonly string NormalizedLambdaServiceName = "AWS::Lambda";
4546
private static readonly string NormalizedS3ServiceName = "AWS::S3";
4647
private static readonly string NormalizedSecretsManagerServiceName = "AWS::SecretsManager";
4748
private static readonly string NormalizedSNSServiceName = "AWS::SNS";
@@ -361,6 +362,8 @@ private static string NormalizeRemoteServiceName(Activity span, string serviceNa
361362
case "AmazonKinesis": // AWS SDK v1
362363
case "Kinesis": // AWS SDK v2
363364
return NormalizedKinesisServiceName;
365+
case "Lambda":
366+
return NormalizedLambdaServiceName;
364367
case "Amazon S3": // AWS SDK v1
365368
case "S3": // AWS SDK v2
366369
return NormalizedS3ServiceName;
@@ -407,6 +410,11 @@ private static void SetRemoteResourceTypeAndIdentifier(Activity span, ActivityTa
407410
remoteResourceType = NormalizedKinesisServiceName + "::Stream";
408411
remoteResourceIdentifier = EscapeDelimiters((string?)span.GetTagItem(AttributeAWSKinesisStreamName));
409412
}
413+
else if (IsKeyPresent(span, AttributeAWSLambdaResourceMappingId))
414+
{
415+
remoteResourceType = NormalizedLambdaServiceName + "::EventSourceMapping";
416+
remoteResourceIdentifier = EscapeDelimiters((string?)span.GetTagItem(AttributeAWSLambdaResourceMappingId));
417+
}
410418
else if (IsKeyPresent(span, AttributeAWSS3Bucket))
411419
{
412420
remoteResourceType = NormalizedS3ServiceName + "::Bucket";

src/OpenTelemetry.Instrumentation.AWS/Implementation/AWSSemanticConventions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ internal static class AWSSemanticConventions
1515
public const string AttributeAWSSQSQueueName = "aws.sqs.queue_name";
1616
public const string AttributeAWSS3BucketName = "aws.s3.bucket";
1717
public const string AttributeAWSKinesisStreamName = "aws.kinesis.stream_name";
18+
public const string AttributeAWSLambdaResourceMappingId = "aws.lambda.resource_mapping.id";
1819
public const string AttributeAWSSecretsManagerSecretArn = "aws.secretsmanager.secret.arn";
1920
public const string AttributeAWSSNSTopicArn = "aws.sns.topic.arn";
2021
public const string AttributeAWSStepFunctionsActivityArn = "aws.stepfunctions.activity.arn";

src/OpenTelemetry.Instrumentation.AWS/Implementation/AWSServiceHelper.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ internal class AWSServiceHelper
1313
{ AWSServiceType.SQSService, new List<string> { "QueueUrl", "QueueName" } },
1414
{ AWSServiceType.S3Service, new List<string> { "BucketName" } },
1515
{ AWSServiceType.KinesisService, new List<string> { "StreamName" } },
16+
{ AWSServiceType.LambdaService, new List<string> { "UUID" } },
1617
{ AWSServiceType.SNSService, new List<string> { "TopicArn" } },
1718
{ AWSServiceType.StepFunctionsService, new List<string> { "ActivityArn", "StateMachineArn" } },
1819
{ AWSServiceType.BedrockRuntimeService, new List<string> { "ModelId" } },
@@ -39,6 +40,7 @@ internal class AWSServiceHelper
3940
{ "ARN", AWSSemanticConventions.AttributeAWSSecretsManagerSecretArn },
4041
{ "ActivityArn", AWSSemanticConventions.AttributeAWSStepFunctionsActivityArn },
4142
{ "StateMachineArn", AWSSemanticConventions.AttributeAWSStepFunctionsStateMachineArn },
43+
{ "UUID", AWSSemanticConventions.AttributeAWSLambdaResourceMappingId },
4244
{ "ModelId", AWSSemanticConventions.AttributeGenAiModelId },
4345
{ "GuardrailId", AWSSemanticConventions.AttributeAWSBedrockGuardrailId },
4446
{ "AgentId", AWSSemanticConventions.AttributeAWSBedrockAgentId },

src/OpenTelemetry.Instrumentation.AWS/Implementation/AWSServiceType.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ internal class AWSServiceType
1010
internal const string SNSService = "SNS";
1111
internal const string S3Service = "S3";
1212
internal const string KinesisService = "Kinesis";
13+
internal const string LambdaService = "Lambda";
1314
internal const string SecretsManagerService = "Secrets Manager";
1415
internal const string StepFunctionsService = "SFN";
1516
internal const string BedrockService = "Bedrock";
@@ -29,6 +30,9 @@ internal static bool IsSnsService(string service)
2930
internal static bool IsS3Service(string service)
3031
=> S3Service.Equals(service, StringComparison.OrdinalIgnoreCase);
3132

33+
internal static bool IsLambdaService(string service)
34+
=> LambdaService.Equals(service, StringComparison.OrdinalIgnoreCase);
35+
3236
internal static bool IsKinesisService(string service)
3337
=> KinesisService.Equals(service, StringComparison.OrdinalIgnoreCase);
3438

0 commit comments

Comments
 (0)