diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts index cca362e293..1427ae0386 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts @@ -538,6 +538,15 @@ export class AwsInstrumentation extends InstrumentationBase { if (requestId) { span.setAttribute(AttributeNames.AWS_REQUEST_ID, requestId); } + + const httpStatusCode = err?.$metadata?.httpStatusCode; + if (httpStatusCode) { + span.setAttribute( + SEMATTRS_HTTP_STATUS_CODE, + httpStatusCode + ); + } + const extendedRequestId = err?.extendedRequestId; if (extendedRequestId) { span.setAttribute( diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v3.test.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v3.test.ts index 8dee305175..0e3a752c1b 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v3.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v3.test.ts @@ -167,6 +167,7 @@ describe('instrumentation-aws-sdk-v3', () => { expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual('PutObject'); expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('S3'); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(403); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); expect(span.attributes[AttributeNames.AWS_REQUEST_ID]).toEqual( 'MS95GTS7KXQ34X2S'