AWS 람다 함수 관리 툴 – APEX (5)

부끄러운 번역이지만 AWS 주간 소식 모음에 APEX 글이 링크되었습니다 🙂

로그 확인

Apex는 함수의 출력 로그를 보기 위해 CloudWatch Logs와 연동됩니다. apex logs에 함수의 이름이 지정되지 않으면 기본적으로 모든 함수의 로그가 표시됩니다. 로그 히스토리의 시간 범위를 지정할 수도 있고 (기본값: 5분) 아래와 같이 결과를 필터링할 수도 있습니다.

예제

최근 5분간 모든 함수의 로그 확인하기

$ apex logs

uppercase, lowercase 함수의 로그 확인하기

$ apex logs uppsercase lowercase

모든 함수의 로그를 추적(follow)하기 (tail처럼 보기)

$ apex logs -f

특정 함수의 로그 추적하기

$ apex logs -f foo

최근 1시간의 로그 보기

$ apex logs --since 1h
$ apex logs -s 1h

auth로 시작하는 모든 함수의 로그 보기

$ apex logs auth*

성능 지표(Metrics) 보기

apex metrics 명령어는 주어진 시간 동안의 함수의 실행 횟수, 총 실행 시간, 스로틀링, 에러에 대한 지표를 표시합니다.

예제

최근 24시간 동안의 모든 함수에 대한 성능 지표 보기

$ apex metrics

uppercase
  invocations: 1242
  duration: 65234ms
  throttles: 0
  error: 0

lowercase
  invocations: 1420
  duration: 65234ms
  throttles: 0
  error: 5

최근 15분동안의 지표보기

$ apex metrics --since 15m

uppercase
  invocations: 16
  duration: 4212ms
  throttles: 0
  error: 0

lowercase
  invocations: 23
  duration: 5200ms
  throttles: 0
  error: 5

인프라스트럭처 관리하기

Apex는 인프라스트럭쳐 관리를 위해 Terraform과 연동합니다. Apex는 현재 람다 함수에 대한 관리 기능만을 제공하고 있기 때문에 Lambda resource 같은 추가적인 자원을 Terraform이나 Cloudformation을 이용하여 관리하고 싶을 수 있습니다.

인프라스트럭쳐 관리

apex infra 명령어는 terraform 명령어에 대한 wrapper 입니다. Apex는 다수의 변수를 제공하고 복수의 Terraform 환경을 구성하는데 도움을 줍니다.

./infrastructure 디렉토리에 prodstage같은 환경이 존재한다면 아래와 같을 것입니다.

infrastructure/
├── prod
│   └── main.tf
├── stage
│   └── main.tf

예를 들어 apex infra --env prod plan 명령어는 아래 명령어와 동일한 일을 수행하면서 Apex에 설정된 여러 정보들을 여러가지 -var 플래그를 통해 전달해줍니다.

$ cd infrastructure/prod && terraform plan

환경에 대한 이름은 --env 플래그에 설정하거나 설정하지 않는다면 project.json에 설정된 defaultEnvironment 값이 사용됩니다.

Terraform 변수

현재 Terraform에 공개된 변수는 다음과 같습니다.

  • aws_region : us-west-2와 같은 AWS의 리전 명
  • apex_environment : prodstage같은 환경 명
  • apex_function_role : 람다 롤의 ARN
  • apex_function_arns : 모든 람다 함수의 ARN 매핑 정보
  • apex_function_names : 모든 람다 함수의 이름 매핑 정보

참고 사항

  • current라는 앨리어스가 참조되었다는 것을 지정하기 위해서는 ${apex_function_myfunction}:current를 명시적으로 할당해야 합니다.
  • apex_function_name 변수는 apex deploy를 통해 최소 1번은 배포되어야 참조할 수 있습니다.