Lambda를 사용하여 AWS 계정의 태스크를 자동화하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 3월 24일

AWS Lambda를 사용하여 AWS 계정의 태스크를 자동화하고 싶습니다. 어떻게 설정해야 합니까?

간략한 설명

Lambda와 통합하여 일정에 따라 또는 특정 이벤트에 대한 응답으로 함수를 호출할 수 있는 여러 AWS 서비스가 있습니다. Lambda와 통합할 수 있는 AWS 서비스에 대한 자세한 내용은 다른 서비스와 함께 Lambda 사용을 참조하세요.

이 문서에서는 태스크를 자동화하기 위해 Lambda를 사용하는 가장 일반적인 두 가지 AWS 서비스의 예를 보여 줍니다.

더 많은 예를 보려면 예약된 이벤트와 함께 Lambda 사용Amazon S3와 함께 Lambda 사용을 참조하세요.

해결 방법

중요: EventBridge와 Amazon S3는 Lambda 함수의 실행 역할을 자동으로 업데이트하여 리소스 기반 정책을 사용하는 데 필요한 액세스를 추가합니다. 모든 AWS 서비스가 이 작업을 수행하는 것은 아닙니다. Lambda를 다른 AWS 서비스와 통합하는 경우 필요한 권한을 수동으로 추가해야 합니다.

Amazon CloudWatch Logs에 입력을 로깅하는 Lambda 함수 생성

참고: 생성하는 함수는 구성할 이벤트의 대상이 됩니다. 예제 함수 코드를 해당 사용 사례에서 자동화하려는 태스크에 대한 자체 코드로 바꾸세요.

1.    Lambda 콘솔에서 [함수 생성(Create function)]을 선택합니다. [함수 생성(Create function)] 페이지가 열리고 기본 [새로 작성(Author from scratch)] 옵션이 표시됩니다.

2.    [기본 정보(Basic information)] 아래에서 다음을 입력합니다.
[함수 이름(Function name)]에 함수 이름을 입력합니다.
[런타임(Runtime)]에서 [Node.js 14.x]를 선택합니다.

3.    [권한(Permissions)]에서 [기본 실행 역할 변경(Change default execution role)]을 선택합니다. 다음 중 하나를 수행합니다.
Lambda를 처음 사용하는 경우, [기본 Lambda 권한으로 새 역할 생성(Create a new role with basic Lambda permissions)]을 선택합니다.
사용할 Lambda 실행 역할을 이미 생성한 경우, [기존 역할 사용(Use an existing role)]을 선택합니다.
AWS 관리형 정책 템플릿을 사용하여 새 실행 역할을 생성하려는 경우, [AWS 정책 템플릿에서 새 역할 생성(Create a new role from AWS policy templates)]을 선택합니다. 그런 다음 이름을 입력하고 정책 템플릿을 선택합니다.

4.    [함수 생성]을 선택합니다.

5.    [구성(Configuration)] 창의 [함수 코드(Function code)]에서 index.js 파일을 엽니다. 그리고 다음 예제 함수 코드를 복사하여 편집기 창에 붙여 넣습니다.

'use strict';
exports.handler = (event, context, callback) => {
    console.log('LogScheduledEvent');
    console.log('Received event:', JSON.stringify(event, null, 2));
    callback(null, 'Finished');
};

6.    [배포(Deploy)]를 선택합니다.

자세한 내용은 콘솔로 Lambda 함수 만들기를 참조하세요. 자체 배포 패키지를 빌드 및 업로드하거나 컨테이너 이미지를 생성 및 업로드하여 Lambda 함수를 생성할 수도 있습니다.

(EventBridge의 경우) 일정에 따라 또는 이벤트에 대한 응답으로 트리거되는 EventBridge 규칙 생성

예약된 이벤트의 경우

특정 타이밍에 입력 없이 태스크를 자동화하려면 일정에 따라 트리거되는 EventBridge 규칙 생성의 지침을 따릅니다. 자동화된 태스크를 실행할 시기에 대한 일정을 지정해야 합니다. 이벤트에 대한 응답으로 트리거할 대상으로 생성한 Lambda 함수를 추가합니다.

참고: 규칙을 생성하면 정의한 타이밍에 따라 Lambda 함수가 자동으로 호출됩니다. 예제 함수 코드를 사용한 경우, Lambda의 로그 스트림이 일정에 따라 CloudWatch에 채워집니다.

예를 보려면 EventBridge를 사용하여 Lambda 함수 예약을 참조하세요.

서비스 이벤트의 경우

AWS 서비스에 의해 생성된 이벤트에 대한 응답으로 태스크를 자동화하려면 AWS 서비스에 대한 규칙 생성의 지침을 따릅니다.

이 예제 설정의 경우 규칙을 생성할 때 다음 구성을 사용합니다.
[서비스 이름(Service Name)]에서 [EC2]를 선택합니다.
[이벤트 유형(Event Type)]에서 [EC2 인스턴스 상태 변경 알림(EC2 Instance State-change Notification)]을 선택합니다.
대상으로 생성한 Lambda 함수를 추가합니다.

참고: 규칙을 생성하면 정의한 이벤트 패턴이 발생할 때마다 Lambda 함수가 호출됩니다.

자세한 내용은 EventBridge의 이벤트 패턴지원되는 AWS 서비스의 EventBridge 이벤트 예를 참조하세요.

EventBridge 규칙을 테스트하려면

EventBridge 규칙을 테스트하려면 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 인스턴스를 중지 또는 시작하여 상태가 바뀌도록 합니다. Lambda는 CloudWatch에 로그 스트림을 전송합니다.

EC2 인스턴스를 시작하는 방법에 대한 자세한 내용은 인스턴스 시작을 참조하세요.

참고: EC2 인스턴스를 사용하면 AWS 계정에 요금이 발생할 수 있습니다. 이 예제에 사용할 목적으로만 인스턴스를 생성하는 경우 끝나면 인스턴스를 종료하세요.

자세한 내용은 Amazon EventBridge 시작하기를 참조하세요.

(Amazon S3의 경우) Lambda 함수를 트리거하도록 S3 이벤트 알림 구성

Amazon S3 이벤트 알림을 사용하여 Lambda 함수를 트리거하려면 이벤트 알림 활성화 및 구성의 지침을 따릅니다.

이 예제 설정의 경우 S3 이벤트 알림을 생성할 때 다음 구성을 사용합니다.
[이벤트 유형(Event types)]에서 [모든 객체가 이벤트 생성(All object create events)] 확인란을 선택합니다.
[대상(Destination)]에서 [Lambda 함수(Lambda function)]를 선택합니다.
[Lambda 함수(Lambda function)] 드롭다운 목록에서 앞서 생성한 Lambda 함수를 선택합니다.

S3 버킷을 생성하는 방법에 대한 자세한 내용은 첫 번째 S3 버킷 생성을 참조하세요.

Amazon S3 이벤트 알림을 테스트하려면

설정을 테스트하려면 S3 버킷에 객체를 업로드합니다. [Prefix] 또는 [Suffix] 필터를 구성한 경우 객체에 올바른 접두사 또는 접미사가 있는지 확인합니다.

업로드가 완료되면 Lambda 함수가 호출됩니다. 예제 함수 코드를 사용한 경우 Lambda의 로그 스트림이 CloudWatch에 채워집니다. 이러한 CloudWatch 로그에는 S3 버킷 이름 및 객체 이름과 같은 이벤트 객체의 메타데이터가 포함되어 있습니다.

예를 보려면 Amazon S3에 Lambda 사용을 참조하세요.