블로그 릴레이 - AWS Lambda에 X-Ray 도입해 보기

블로그 릴레이 - AWS Lambda에 X-Ray 도입해 보기

안녕하세요 생산지원 그룹 리테일 어플리케이션부의 김승연입니다. 본 블로그는 당사의 한국어 블로그 릴레이의 32번째 블로그입니다. 이번 블로그 주제는 「AWS Lambda에 X-Ray 도입해 보기」 입니다.
2025.09.14

안녕하세요 생산지원 그룹 리테일 어플리케이션부의 김승연입니다.

본 블로그는 당사의 한국어 블로그 릴레이의 32번째 블로그입니다.
이번 블로그 주제는 「AWS Lambda에 X-Ray 도입해 보기」 입니다.

할것

이번에는 외부 API의 상태를 X-Ray 에서 확인해 보도록 하겠습니다.
X-Ray 도입을 위해서 아래 라이브러리를 사용할 예정입니다.
아래 라이러리를 이용하면 별도의 설정 없이 심플하게 X-Ray를 도입하실 수 있습니다.

https://docs.powertools.aws.dev/lambda/typescript/latest/core/tracer/

코드작성

베이스로 할 코드는 아래 블로그의 코드를 이용할 예정입니다.

https://dev.classmethod.jp/articles/korean-blog-relay-try-using-cdk-with-serverless-express/

STEP1: 라이브러리 설치

			
			npm install @aws-lambda-powertools/tracer @middy/core -w server

		

STEP2: iac 코드 수정

			
			...

    // Lambda
    const restApiFunc = new cdk.aws_lambda_nodejs.NodejsFunction(
      this,
      'RestApiFunc',
      {
        architecture: cdk.aws_lambda.Architecture.ARM_64,
        runtime: cdk.aws_lambda.Runtime.NODEJS_20_X,
        tracing: cdk.aws_lambda.Tracing.ACTIVE, // 옵션을 추가
        bundling: {
          bundleAwsSDK: true, // 번들에 AWS SDK 포함
        },
        entry: '../server/src/index.ts',
      },
    );

    // APIGateway REST API
    const restApi = new cdk.aws_apigateway.LambdaRestApi(this, 'RestApi', {
      handler: restApiFunc,
      defaultCorsPreflightOptions: {
        allowOrigins: cdk.aws_apigateway.Cors.ALL_ORIGINS,
        allowMethods: cdk.aws_apigateway.Cors.ALL_METHODS,
        allowHeaders: cdk.aws_apigateway.Cors.DEFAULT_HEADERS,
        maxAge: cdk.Duration.minutes(5),
      },
      deployOptions: {
        stageName: 'v1',
        tracingEnabled: true, // True로 설정해줍니다.
      },
    });

...

		

STEP3: server 코드 수정

			
			...

const tracer = new Tracer({
  serviceName: 'demo',
  captureHTTPsRequests: true,
});

const app = express();
app.use(cors());
app.use(express.json());

app.get('/', async (_req: Request, res: Response): Promise<void> => {
  try {
    const response = await fetch(
      'https://example.com/..., // 외부 API를 설정
    );
    if (response.ok === false) {
      throw new Error('Error');
    }
    const result = await response.json();
    res.status(200).send(result);
  } catch {
    res.status(502).send('failed');
  }
});

export const handler = middy(serverlessExpress({ app: app })).use(
  captureLambdaHandler(tracer),
);


		

확인

코드를 작성하셨다면 이제 디플로이후 직접 AWS Console(CloudWatch → 기록 맵)에서 확인하실 수 있습니다.
현재는 일부로 외부 API에서 401에러를 낸 후 확인한 결과가 됩니다.

x-ray-1

x-ray-2

보충

이외에도 CloudWatch Log를 사용 시 아래 라이브러리를 사용하시면 로그를 통해 더 세분화된 상태를 확인하실 수 있습니다.

https://docs.powertools.aws.dev/lambda/typescript/latest/core/logger/#standard-structured-keys

참고자료

https://docs.powertools.aws.dev/lambda/typescript/latest/core/tracer/

문의 사항은 클래스메소드 코리아로!

클래스메소드 코리아에서는 다양한 세미나 및 이벤트를 진행하고 있습니다.
진행중인 이벤트는 아래 페이지를 참고해주세요.

https://classmethod.kr/board/library

AWS에 대한 상담 및 클래스 메소드 멤버스에 관한 문의사항은 아래 메일로 연락주시면 감사드립니다!
Info@classmethod.kr

この記事をシェアする

FacebookHatena blogX

関連記事