Skip to content

Commit 36007c8

Browse files
committed
update aws lambda detector
1 parent baccd98 commit 36007c8

File tree

2 files changed

+28
-29
lines changed

2 files changed

+28
-29
lines changed

detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsLambdaDetectorSync.ts

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -19,47 +19,32 @@ import {
1919
IResource,
2020
Resource,
2121
ResourceAttributes,
22-
ResourceDetectionConfig,
2322
} from '@opentelemetry/resources';
24-
import {
25-
SEMRESATTRS_CLOUD_PROVIDER,
26-
SEMRESATTRS_CLOUD_PLATFORM,
27-
SEMRESATTRS_CLOUD_REGION,
28-
SEMRESATTRS_FAAS_VERSION,
29-
SEMRESATTRS_FAAS_NAME,
30-
CLOUDPROVIDERVALUES_AWS,
31-
CLOUDPLATFORMVALUES_AWS_LAMBDA,
32-
} from '@opentelemetry/semantic-conventions';
3323

3424
/**
3525
* The AwsLambdaDetector can be used to detect if a process is running in AWS Lambda
3626
* and return a {@link Resource} populated with data about the environment.
3727
* Returns an empty Resource if detection fails.
3828
*/
3929
export class AwsLambdaDetectorSync implements DetectorSync {
40-
detect(_config?: ResourceDetectionConfig): IResource {
30+
detect(): IResource {
31+
const awsRegion = process.env.AWS_REGION;
4132
const functionName = process.env.AWS_LAMBDA_FUNCTION_NAME;
42-
if (!functionName) {
43-
return Resource.empty();
44-
}
45-
4633
const functionVersion = process.env.AWS_LAMBDA_FUNCTION_VERSION;
47-
const region = process.env.AWS_REGION;
34+
const logGroupName = process.env.AWS_LAMBDA_LOG_GROUP_NAME;
35+
const logStreamName = process.env.AWS_LAMBDA_LOG_STREAM_NAME;
36+
const memorySize = process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE as string;
4837

4938
const attributes: ResourceAttributes = {
50-
[SEMRESATTRS_CLOUD_PROVIDER]: String(CLOUDPROVIDERVALUES_AWS),
51-
[SEMRESATTRS_CLOUD_PLATFORM]: String(CLOUDPLATFORMVALUES_AWS_LAMBDA),
39+
'aws.log.group.names': [logGroupName],
40+
'cloud.provider': 'aws',
41+
'cloud.platform': 'aws_lambda',
42+
'cloud.region': awsRegion,
43+
'faas.name': functionName,
44+
'faas.version': functionVersion,
45+
'faas.instance': logStreamName,
46+
'faas.max_memory': parseInt(memorySize) * 1024 * 1024,
5247
};
53-
if (region) {
54-
attributes[SEMRESATTRS_CLOUD_REGION] = region;
55-
}
56-
57-
if (functionName) {
58-
attributes[SEMRESATTRS_FAAS_NAME] = functionName;
59-
}
60-
if (functionVersion) {
61-
attributes[SEMRESATTRS_FAAS_VERSION] = functionVersion;
62-
}
6348

6449
return new Resource(attributes);
6550
}

detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsLambdaDetectorSync.test.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,12 @@ describe('awsLambdaDetectorSync', () => {
3535

3636
describe('on lambda', () => {
3737
it('fills resource', async () => {
38+
process.env.AWS_REGION = 'us-east-1';
3839
process.env.AWS_LAMBDA_FUNCTION_NAME = 'name';
3940
process.env.AWS_LAMBDA_FUNCTION_VERSION = 'v1';
40-
process.env.AWS_REGION = 'us-east-1';
41+
process.env.AWS_LAMBDA_LOG_GROUP_NAME = '/aws/lambda/name';
42+
process.env.AWS_LAMBDA_LOG_STREAM_NAME = '2024/03/14/[$LATEST]123456';
43+
process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE = '128';
4144

4245
const resource = awsLambdaDetectorSync.detect();
4346

@@ -48,6 +51,17 @@ describe('awsLambdaDetectorSync', () => {
4851

4952
assert.strictEqual(resource.attributes['faas.name'], 'name');
5053
assert.strictEqual(resource.attributes['faas.version'], 'v1');
54+
assert.strictEqual(
55+
resource.attributes['faas.instance'],
56+
'2024/03/14/[$LATEST]123456'
57+
);
58+
assert.strictEqual(
59+
resource.attributes['faas.max_memory'],
60+
128 * 1024 * 1024
61+
);
62+
assert.deepStrictEqual(resource.attributes['aws.log.group.names'], [
63+
'/aws/lambda/name',
64+
]);
5165
});
5266
});
5367

0 commit comments

Comments
 (0)