>웹 프론트엔드 >JS 튜토리얼 >Lambda를 사용하여 EventBridge에서 이벤트 예약

Lambda를 사용하여 EventBridge에서 이벤트 예약

Linda Hamilton
Linda Hamilton원래의
2024-12-20 01:36:11387검색

Schedule Events in EventBridge with Lambda

이 블로그 게시물에서는 AWS EventBridge Scheduler 및 AWS Lambda를 사용하여 이벤트를 예약하는 방법을 살펴보겠습니다. 이 방법은 효율적이고 확장 가능하므로 애플리케이션이 개별 EventBridge 규칙을 복잡하게 만들지 않고도 예약된 여러 이벤트를 처리할 수 있습니다. 뛰어들어 보세요!

AWS EventBridge란 무엇입니까?

AWS EventBridge는 자체 애플리케이션, 통합 SaaS(Software-as-a-Service) 애플리케이션 및 AWS 서비스의 데이터를 사용하여 애플리케이션을 쉽게 연결할 수 있게 해주는 서버리스 이벤트 버스 서비스입니다. EventBridge는 이벤트 소스에서 실시간 데이터 스트림을 제공하고 해당 데이터를 AWS Lambda, Amazon SNS 등과 같은 대상으로 라우팅합니다.

AWS 람다란 무엇입니까?

AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스입니다. S3, DynamoDB 또는 EventBridge와 같은 다른 AWS 서비스에서 직접 Lambda 함수를 트리거하고 하루에 몇 건의 요청에서 초당 수천 요청까지 자동으로 확장할 수 있습니다.

전제 조건

시작하기 전에 다음 사항을 확인하세요.

  1. AWS 계정
  2. Node.js 기본 지식
  3. 머신에 구성된 AWS CLI

1단계: AWS 환경 설정

IAM 역할 생성

먼저 AWS EventBridge Scheduler가 Lambda 함수를 호출할 수 있도록 허용하는 IAM 역할을 생성해야 합니다.

  1. IAM 콘솔로 이동: IAM 콘솔로 이동하여 왼쪽 탐색 창에서 역할을 선택한 다음 역할 생성을 클릭합니다.

  2. 신뢰할 수 있는 엔터티 선택: AWS 서비스를 선택하고 Lambda를 선택한 후 다음: 권한을 클릭합니다.

  3. 정책 연결: 다음 관리형 정책을 연결합니다.

    • AWSLambdaBasicExecutionRole: 기본 Lambda 실행 권한을 제공합니다.
    • AmazonEventBridgeSchedulerFullAccess: EventBridge Scheduler가 일정을 관리할 수 있도록 허용합니다.
  4. 검토 및 생성: 역할 이름(예: LambdaExecutionRole)을 제공하고 설정을 검토한 후 역할 생성을 클릭합니다.

  5. 신뢰 관계 업데이트: 역할이 생성된 후 역할 세부 정보 페이지로 이동합니다. 신뢰 관계 탭에서 신뢰 관계 편집을 클릭하세요. Scheduler.amazonaws.com 서비스를 포함하도록 신뢰 정책을 업데이트합니다.

   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "lambda.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       },
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "scheduler.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }

2단계: Lambda 함수 생성

예약된 이벤트를 처리할 Lambda 함수를 생성하겠습니다.

  1. Lambda 콘솔로 이동: Lambda 콘솔로 이동하여 함수 생성을 클릭하고 처음부터 작성을 선택합니다.

  2. Lambda 함수 구성: 함수 이름을 processScheduledEvent로 설정하고 Node.js 16.x를 런타임으로 선택한 다음 이전에 생성한 기존 역할(LambdaExecutionRole)을 사용합니다. 함수 생성을 클릭하세요.

  3. 함수 코드 추가: 기본 코드를 이벤트를 처리하는 논리로 바꿉니다. 예를 들어 이벤트 세부 정보를 기록하거나 이벤트 데이터를 기반으로 특정 작업을 수행할 수 있습니다.

   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "lambda.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       },
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "scheduler.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
  1. 함수 배포: 배포를 클릭하여 변경 사항을 저장합니다.

3단계: 이벤트 일정 잡기

이제 AWS EventBridge Scheduler를 사용하여 이벤트를 예약하는 코드를 작성해 보겠습니다.

먼저 필요한 AWS SDK 모듈을 설치합니다.

   exports.handler = async (event) => {
     const eventDetails = event;

     // Your logic to process the event
     console.log("Processing scheduled event:", eventDetails);

     // Example: Process event
     // processEvent(eventDetails);

     return {
       statusCode: 200,
       body: JSON.stringify('Event processed successfully'),
     };
   };

다음은 예약 기능 구현 단계를 요약한 것입니다.

이벤트 세부정보 추출

애플리케이션 입력에서 이벤트 세부정보를 추출합니다. 예는 다음과 같습니다.

npm install @aws-sdk/client-scheduler @aws-sdk/client-lambda

IST를 UTC로 변환

예정된 시간을 IST(인도 표준시)에서 UTC(협정 세계시)로 변환합니다.

const eventDetails = {
  name: "TEST-EVENT-01",
  userId: "USER123",
  eventId: "EVENT-001",
  eventTime: '2024-12-17T18:05:00+05:30' // IST time in ISO format
};

UTC 시간 문자열 형식 지정

UTC 시간 문자열이 EventBridge Scheduler에 필요한 올바른 형식(yyyy-MM-ddTHH:mm:ssZ)인지 확인하세요.

const istTime = new Date(eventDetails.eventTime); // IST time
const utcTime = new Date(istTime.getTime() - 5.5 * 60 * 60 * 1000); // Convert to UTC

EventBridge 일정 생성

AWS SDK를 사용하여 Lambda 함수 ARN을 대상으로 지정하고 이벤트 세부 정보를 입력으로 포함하여 EventBridge 일정을 생성합니다.

const utcString = utcTime.toISOString().split('.')[0] + 'Z';

결론

이 블로그 게시물에서는 AWS EventBridge Scheduler와 Lambda를 사용하여 예약된 이벤트를 설정하는 과정을 살펴보았습니다. 이 접근 방식을 사용하면 애플리케이션이 여러 예정된 이벤트를 효율적이고 확장 가능하게 처리할 수 있습니다. AWS의 강력한 기능을 사용하면 사용자 경험을 향상하고 운영을 간소화하는 강력한 기능을 구축할 수 있습니다.

즐거운 코딩하세요!

위 내용은 Lambda를 사용하여 EventBridge에서 이벤트 예약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.