오늘도 한 뼘 더

[AWS-Jenkins] CloudTrail, EventBridge, Jenkins 사용하여 AWS 람다 코드 관리하기 본문

DevOps & Infra/AWS

[AWS-Jenkins] CloudTrail, EventBridge, Jenkins 사용하여 AWS 람다 코드 관리하기

나른한댕댕이🐶 2025. 3. 12. 11:42
728x90
반응형

  # 배경  

이전까지 AWS Lambda 함수에 작성된 코드는 개발자가 AWS Lambda 콘솔에서 직접 작성하였다.

직접 Console 창을 이용하다 보니 코드가 제대로 관리되지 않는 문제가 있었다. 

작성된 코드를 GitLab에서 관리하기로 하고 Lambda 함수의 코드를 다운받아 GitLab에 업로드하는 스크립트를 작성하였다.

그러나 AWS Lambda의 경우 한 번 작성해 높은 코드를 변경하는 일 잦지 않아 스크립트를 언제 돌려야하는지 고민을 하던 차에 AWS CloudTrail에서 발생된 이벤트를 확인할 수 있음을 인지하고 CloudTrail과 EventBridge를 통해서 람다 함수 코드가 업데이트 될때 Jenkins에서 해당 스크립트를 돌릴 수 있도록 설정하기로 하였다.

 

  # CloudTrail에서 이벤트 확인하기  

람다 코드를 업데이트 했을 때 정확한 이벤트 이름을 확인하기 위해서 코드 업데이트를 하고 발생하는 이벤트 이름을 확인하였다.

아래 이벤트 이름을 확인할 수 있었다.

UpdateFunctionCode20150331v2

 

  # EventBridge 설정 및 Jenkins 원격 빌드 유발  

## Jenkins 원격 빌드 유발

EventBridge에서 특정 이벤트 발생 이후 Jenkins가 돌아가게끔 하기 위해서 

jenkins 사용자 설정에서 API Token을 발행하였다. 

* token_name : from_eventbridge

* token : 123456789abcdefghijk

 

그리고 아래 curl을 통하여 원격 빌드가 동작됨을 확인하였다. 

curl -X POST https://[user]:[token]@[jenkins_url]\?token\=from_eventbridge

 

## EventBridge 설정하기

이벤트 규칙을 생성 > 이벤트 규칙에서 이벤트 패턴과 대상을 통해서 특정 이벤트가 발생했을 때 작업을 할 수 있도록 설정한다.

 

이벤트 패턴

{
  "source": ["aws.lambda"],
  "detail": {
    "eventSource": ["lambda.amazonaws.com"],
    "eventName": ["UpdateFunctionCode20150331v2"]
  }
}

 

대상

  • API 대상과 연결을 생성해서 람다 함수의 코드가 업데이트 되었을 때 jenkins를 부를 수 있도록 한다.

API 대상 설정 내용

  • API 엔드포인트의 경우 jenkins 구성에서 원격빌드를 선택할 경우 어떤 주소를 사용해야하는지 작성되어있어 참고하면 된다.

 

연결 내용

  • jenkins에서 발급 받은 토큰이 사용자의 암호라고 생각하면 된다.
    • Basic auth 방법을 통해서 user와 password에 각각 사용자와 사용자 설정에서 발급받았던 API 토큰 값을 넣어주면 된다.
728x90
반응형
Comments