Serverless Framework로 만든 Lambda에 X-Ray의 활성 추적 적용

X-ray가 마침내 Lambda를 지원했습니다.
아직 미리 보기 버전이기도 하며, CloudFormation에서는 Lambda에 X-Ray의 액티브 트레이스를 설정하는 정의는 추가되지 않은 모습입니다.
그 때문에 CloudFormation을 이용하고 있는 Serverless Framework에서도 아직 X-Ray를 이용할 수 없습니다만・・・

뭐 기다리지 않네요.

그래서 수작업 섞어서 설정해 보았습니다.

사전 준비



Lambda에서 X-Ray로 데이터를 전송하려면 iamRoleStatements가 필요합니다.serverless.yml 에 써 둡시다.

serverless.yml
provider:
  name: aws
  runtime: nodejs4.3
  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "xray:PutTraceSegments"
        - "xray:PutTelemetryRecords"
      Resource:
        - "*"

배포된 Lambda에 수동으로 X-Ray 설정



배포 후 AWS의 관리 콘솔에서 X-Ray 설정을 활성화합니다.
Lambda의 경우 X-Ray의 관리 화면이 아니라 Lambda의 관리 화면 측에서 설정하므로주의하십시오.


활성 추적 사용을 켜고 저장합니다.

"Lambda의 수가 많기 때문에 수작업은 힘들다"는 분은 AWS-CLI를 사용합시다.
update-function-configurationTracingConfig 를 사용하면 좋을 것 같습니다

Lambda 실행 결과 보기



여기까지 하면, 나머지는 X-Ray가 잘 해 줍니다.



체크 박스의 온 오프만으로 설정할 수 있으므로, 부담없이 시험해 부담없이 멈출 수 있는 것이 좋네요.

Tips: sls deploy에서 충돌하지 않습니까?



CloudFormation에서 정의한 내용을 수동으로 설정 변경하고 있습니다만, 현재 sls deploy 로의 갱신도 문제 없게 할 수 있는 모습입니다.

CloudFormation이 Lambda - X-Ray를 지원할 때 어떻게 될지는 모르겠지만, 최악 한번 X-Ray 연계를 모두 끊고 나서 Serverless Framework 측에서 재설정할 필요가 있을지도 모릅니다.

Tips: sls remove 벗기기



IAMRole을 X-Ray측에서도 사용한다(?)로부터인가, sls remove
$ sls remove --stage xraytest --profile static
Serverless: Getting all objects in S3 bucket...
Serverless: Removing objects in S3 bucket...
Serverless: Removing Stack...
Serverless: Checking Stack removal progress...
...............................................................................................................................................................................................................................................................Serverless: Deployment failed!

  Serverless Error ---------------------------------------

     An error occurred while provisioning your stack: IamRoleLambdaExecution
     - Cannot delete entity, must detach all policies first..

  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Forums:        forum.serverless.com
     Chat:          gitter.im/serverless/serverless

  Your Environment Information -----------------------------
     OS:                 darwin
     Node Version:       7.4.0
     Serverless Version: 1.10.1

AWS 콘솔에서 CloudFormation 화면으로 이동하여 스택 삭제를 다시 시도하세요.

현장에서는 이상입니다.

좋은 웹페이지 즐겨찾기