Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

마로의 개발일지

AWS AppConfig 배포시 Lambda 호출 설정하기 본문

알게된 것

AWS AppConfig 배포시 Lambda 호출 설정하기

maro0201 2023. 4. 22. 15:03

 이전 포스팅에서 Java에서 Aws AppConfig 사용하기를 소개했다. 하지만 리프레시 토큰으로 계속 갱신해서 사용하지 않으면 호출에 상당한 시간이 걸려 다른 방법을 찾게 되었고 그 방법으로 배포된 AppConfig 항목을 Redis 캐시에 저장해서 사용하기로 했다. 사실 AppConfig를 이렇게 쓰는 건 비효율적인 것 같지만 당장은 AppConfig에 저장해서 사용하는 항목이 거의 없어 이렇게 사용하기로 했다.

 

 아무튼 그렇게 하기 위해선 AppConfig가 배포될 때 자동으로 Redis 캐시의 항목을 갱신하는 로직이 필요한데, AppConfig에는 Extension을 통해 배포 상태에 따라 호출하는 항목들을 설정할 수 있다.

새로운 Extension을 생성하기 위해 Create extenstion을 클릭하면 다음과 같은 화면이 나온다.

Action 생성시 필요한 항목들

선택 가능한 배포시 동작할 시점

  • PRE_CREATE_HOSTED_CONFIGURATION_VERSION: 배포 버전 생성 전
  • PRE_START_DEPLOYMENT: 배포전
  • ON_DEPLOYMENT_START: 배포 시작 시
  • ON_DEPLOYMENT_STEP: 배포 단계
  • ON_DEPLOYMENT_BAKING: 배포 베이킹 시
  • ON_DEPLOYMENT_COMPLETE: 배포 완료 시
  • ON_DEPLOYMENT_ROLLED_BACK: 배포 롤백 시

선택 가능한 기능

  • Lambda
  • EventBridge
  • SQS
  • SNS

Action이 실행하는 데 사용할 권한

- 해당 권한은 Action을 행하는데 사용될 권한이다. 나는 람다를 호출하기 위한 권한을 추가해 주었으며 해당 권한을 설정하기 위해 해당 설정을 추가해 주었다. 추가할 땐 공식문서(Configuring Permissions for a custom AWS AppConfig extension)를 참고했다.

Lambda 호출 IAM 권한 설정

Action 실행 시에 추가적으로 전달할 parameters 추가 가능(필수값 여부 설정 가능)


위의 항목들을 모두 설정해서 Extension을 생성하고 Extension 탭의 Add to rsource 버튼이나 Application 생성 시 등록할 수 있다.

참고로 AppConfig가 Extension을 호출해 Action이 실행되어 Lambda를 호출할 때 전달하는 항목들은 다음과 같다.

InvocationId: 호출 ID
Parameters: AppConfig Extension에 저장한 Parameter
Type: 호출 시점
Application: 애플리케이션 Id
Environment: 환경 Id
ConfigurationProfile: 구성 프로필 정보 {Id, Name}
DeploymentNumber: 배포 번호
ConfigurationVersion: 배포 버전

ex)

{
  InvocationId: '34n79sn',
  Parameters: {
    Configuration: 'testConfig',
    Environment: 'dev',
    Application: 'testApp'
  },
  Type: 'OnDeploymentComplete',
  Application: { Id: 'gb2alz1' },
  Environment: { Id: 'cso8ydn' },
  ConfigurationProfile: { Id: 'larpkt4', Name: 'testConfig' },
  DeploymentNumber: 47,
  ConfigurationVersion: '16'
}

 

Comments