Skip to content

Commit 39d7948

Browse files
committed
add support for Lambda EventSourceMapping attribute
1 parent cd614f0 commit 39d7948

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
@@ -46,6 +46,7 @@ internal sealed class AwsAttributeKeys
4646
internal static readonly string AttributeAWSDynamoTableName = "aws.table_name";
4747
internal static readonly string AttributeAWSSQSQueueUrl = "aws.queue_url";
4848

49+
internal static readonly string AttributeAWSLambdaResourceMappingId = "aws.lambda.resource_mapping.id";
4950
internal static readonly string AttributeAWSS3Bucket = "aws.s3.bucket";
5051
internal static readonly string AttributeAWSSecretsManagerSecretArn = "aws.secretsmanager.secret.arn";
5152
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
@@ -41,6 +41,7 @@ internal class AwsMetricAttributeGenerator : IMetricAttributeGenerator
4141
// Normalized remote service names for supported AWS services
4242
private static readonly string NormalizedDynamoDBServiceName = "AWS::DynamoDB";
4343
private static readonly string NormalizedKinesisServiceName = "AWS::Kinesis";
44+
private static readonly string NormalizedLambdaServiceName = "AWS::Lambda";
4445
private static readonly string NormalizedS3ServiceName = "AWS::S3";
4546
private static readonly string NormalizedSecretsManagerServiceName = "AWS::SecretsManager";
4647
private static readonly string NormalizedSNSServiceName = "AWS::SNS";
@@ -364,6 +365,8 @@ private static string NormalizeRemoteServiceName(Activity span, string serviceNa
364365
case "AmazonKinesis": // AWS SDK v1
365366
case "Kinesis": // AWS SDK v2
366367
return NormalizedKinesisServiceName;
368+
case "Lambda":
369+
return NormalizedLambdaServiceName;
367370
case "Amazon S3": // AWS SDK v1
368371
case "S3": // AWS SDK v2
369372
return NormalizedS3ServiceName;
@@ -409,6 +412,11 @@ private static void SetRemoteResourceTypeAndIdentifier(Activity span, ActivityTa
409412
remoteResourceType = NormalizedKinesisServiceName + "::Stream";
410413
remoteResourceIdentifier = EscapeDelimiters((string?)span.GetTagItem(AttributeAWSKinesisStreamName));
411414
}
415+
else if (IsKeyPresent(span, AttributeAWSLambdaResourceMappingId))
416+
{
417+
remoteResourceType = NormalizedLambdaServiceName + "::EventSourceMapping";
418+
remoteResourceIdentifier = EscapeDelimiters((string?)span.GetTagItem(AttributeAWSLambdaResourceMappingId));
419+
}
412420
else if (IsKeyPresent(span, AttributeAWSS3Bucket))
413421
{
414422
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" } },
@@ -38,6 +39,7 @@ internal class AWSServiceHelper
3839
{ "ARN", AWSSemanticConventions.AttributeAWSSecretsManagerSecretArn },
3940
{ "ActivityArn", AWSSemanticConventions.AttributeAWSStepFunctionsActivityArn },
4041
{ "StateMachineArn", AWSSemanticConventions.AttributeAWSStepFunctionsStateMachineArn },
42+
{ "UUID", AWSSemanticConventions.AttributeAWSLambdaResourceMappingId },
4143
{ "ModelId", AWSSemanticConventions.AttributeGenAiModelId },
4244
{ "GuardrailId", AWSSemanticConventions.AttributeAWSBedrockGuardrailId },
4345
{ "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)