@@ -399,7 +399,9 @@ export class AwsMetricAttributeGenerator implements MetricAttributeGenerator {
399399 } else if ( AwsSpanProcessingUtil . isKeyPresent ( span , AWS_ATTRIBUTE_KEYS . AWS_DYNAMODB_TABLE_ARN ) ) {
400400 remoteResourceType = NORMALIZED_DYNAMO_DB_SERVICE_NAME + '::Table' ;
401401 remoteResourceIdentifier = AwsMetricAttributeGenerator . escapeDelimiters (
402- this . extractDynamoDbTableNameFromArn ( span . attributes [ AWS_ATTRIBUTE_KEYS . AWS_DYNAMODB_TABLE_ARN ] )
402+ RegionalResourceArnParser . extractDynamoDbTableNameFromArn (
403+ span . attributes [ AWS_ATTRIBUTE_KEYS . AWS_DYNAMODB_TABLE_ARN ]
404+ )
403405 ) ;
404406 } else if ( AwsSpanProcessingUtil . isKeyPresent ( span , AWS_ATTRIBUTE_KEYS . AWS_KINESIS_STREAM_NAME ) ) {
405407 remoteResourceType = NORMALIZED_KINESIS_SERVICE_NAME + '::Stream' ;
@@ -409,7 +411,9 @@ export class AwsMetricAttributeGenerator implements MetricAttributeGenerator {
409411 } else if ( AwsSpanProcessingUtil . isKeyPresent ( span , AWS_ATTRIBUTE_KEYS . AWS_KINESIS_STREAM_ARN ) ) {
410412 remoteResourceType = NORMALIZED_KINESIS_SERVICE_NAME + '::Stream' ;
411413 remoteResourceIdentifier = AwsMetricAttributeGenerator . escapeDelimiters (
412- this . extractKinesisStreamNameFromArn ( span . attributes [ AWS_ATTRIBUTE_KEYS . AWS_KINESIS_STREAM_ARN ] )
414+ RegionalResourceArnParser . extractKinesisStreamNameFromArn (
415+ span . attributes [ AWS_ATTRIBUTE_KEYS . AWS_KINESIS_STREAM_ARN ]
416+ )
413417 ) ;
414418 } else if ( AwsSpanProcessingUtil . isKeyPresent ( span , AWS_ATTRIBUTE_KEYS . AWS_S3_BUCKET ) ) {
415419 remoteResourceType = NORMALIZED_S3_SERVICE_NAME + '::Bucket' ;
@@ -421,31 +425,31 @@ export class AwsMetricAttributeGenerator implements MetricAttributeGenerator {
421425
422426 remoteResourceType = NORMALIZED_SNS_SERVICE_NAME + '::Topic' ;
423427 remoteResourceIdentifier = AwsMetricAttributeGenerator . escapeDelimiters (
424- this . extractResourceNameFromArn ( snsArn )
428+ RegionalResourceArnParser . extractResourceNameFromArn ( snsArn )
425429 ) ;
426430 cloudFormationIdentifier = AwsMetricAttributeGenerator . escapeDelimiters ( snsArn ) ;
427431 } else if ( AwsSpanProcessingUtil . isKeyPresent ( span , AWS_ATTRIBUTE_KEYS . AWS_SECRETSMANAGER_SECRET_ARN ) ) {
428432 const secretsArn = span . attributes [ AWS_ATTRIBUTE_KEYS . AWS_SECRETSMANAGER_SECRET_ARN ] ;
429433
430434 remoteResourceType = NORMALIZED_SECRETSMANAGER_SERVICE_NAME + '::Secret' ;
431435 remoteResourceIdentifier = AwsMetricAttributeGenerator . escapeDelimiters (
432- this . extractResourceNameFromArn ( secretsArn )
436+ RegionalResourceArnParser . extractResourceNameFromArn ( secretsArn )
433437 ) ;
434438 cloudFormationIdentifier = AwsMetricAttributeGenerator . escapeDelimiters ( secretsArn ) ;
435439 } else if ( AwsSpanProcessingUtil . isKeyPresent ( span , AWS_ATTRIBUTE_KEYS . AWS_STEPFUNCTIONS_STATEMACHINE_ARN ) ) {
436440 const stateMachineArn = span . attributes [ AWS_ATTRIBUTE_KEYS . AWS_STEPFUNCTIONS_STATEMACHINE_ARN ] ;
437441
438442 remoteResourceType = NORMALIZED_STEPFUNCTIONS_SERVICE_NAME + '::StateMachine' ;
439443 remoteResourceIdentifier = AwsMetricAttributeGenerator . escapeDelimiters (
440- this . extractResourceNameFromArn ( stateMachineArn )
444+ RegionalResourceArnParser . extractResourceNameFromArn ( stateMachineArn )
441445 ) ;
442446 cloudFormationIdentifier = AwsMetricAttributeGenerator . escapeDelimiters ( stateMachineArn ) ;
443447 } else if ( AwsSpanProcessingUtil . isKeyPresent ( span , AWS_ATTRIBUTE_KEYS . AWS_STEPFUNCTIONS_ACTIVITY_ARN ) ) {
444448 const activityArn = span . attributes [ AWS_ATTRIBUTE_KEYS . AWS_STEPFUNCTIONS_ACTIVITY_ARN ] ;
445449
446450 remoteResourceType = NORMALIZED_STEPFUNCTIONS_SERVICE_NAME + '::Activity' ;
447451 remoteResourceIdentifier = AwsMetricAttributeGenerator . escapeDelimiters (
448- this . extractResourceNameFromArn ( activityArn )
452+ RegionalResourceArnParser . extractResourceNameFromArn ( activityArn )
449453 ) ;
450454 cloudFormationIdentifier = AwsMetricAttributeGenerator . escapeDelimiters ( activityArn ) ;
451455 } else if ( AwsSpanProcessingUtil . isKeyPresent ( span , AWS_ATTRIBUTE_KEYS . AWS_LAMBDA_FUNCTION_NAME ) ) {
@@ -725,24 +729,6 @@ export class AwsMetricAttributeGenerator implements MetricAttributeGenerator {
725729 return rpcService === 'Lambda' && span . attributes [ SEMATTRS_RPC_METHOD ] === LAMBDA_INVOKE_OPERATION ;
726730 }
727731
728- private static extractDynamoDbTableNameFromArn ( attribute : AttributeValue | undefined ) : string | undefined {
729- return this . extractResourceNameFromArn ( attribute ) ?. replace ( 'table/' , '' ) ;
730- }
731-
732- private static extractKinesisStreamNameFromArn ( attribute : AttributeValue | undefined ) : string | undefined {
733- return this . extractResourceNameFromArn ( attribute ) ?. replace ( 'stream/' , '' ) ;
734- }
735-
736- // Extracts the name of the resource from an arn
737- private static extractResourceNameFromArn ( attribute : AttributeValue | undefined ) : string | undefined {
738- if ( typeof attribute === 'string' && attribute . startsWith ( 'arn:aws:' ) ) {
739- const split = attribute . split ( ':' ) ;
740- return split [ split . length - 1 ] ;
741- }
742-
743- return undefined ;
744- }
745-
746732 /** Span kind is needed for differentiating metrics in the EMF exporter */
747733 private static setSpanKindForService ( span : ReadableSpan , attributes : Attributes ) : void {
748734 let spanKind : string = SpanKind [ span . kind ] ;
0 commit comments