Amazon S3에서 Lambda 함수 사용
Amazon S3 서비스는 파일을 업로드하거나 제거 할 수있는 파일 스토리지에 사용됩니다. S3 버킷에 파일 업로드가있을 때 S3에서 AWS Lambda를 트리거 할 수 있습니다. AWS Lambda에는 AWS Lambda 함수의 시작점 역할을하는 핸들러 함수가 있습니다. 핸들러에는 이벤트의 세부 사항이 있습니다. 이 장에서는 S3 버킷에 파일을 업로드 할 때 AWS S3를 사용하여 AWS Lambda 함수를 트리거하는 방법을 살펴 보겠습니다.
Amazon S3에서 AWS Lambda 함수를 사용하는 단계
Amazon S3에서 AWS Lambda를 사용하려면 다음이 필요합니다.
- S3 버킷 생성
- s3 및 람다 작업 권한이있는 역할 생성
- 람다 함수를 만들고 s3를 트리거로 추가합니다.
예
Amazon S3와 AWS Lambda 간의 기본 상호 작용을 보여주는 예제를 통해 이러한 단계를 살펴 보겠습니다.
사용자가 Amazon S3 버킷에 파일을 업로드합니다.
파일이 업로드되면 백그라운드에서 AWS Lambda 함수를 트리거하여 파일이 업로드되었다는 콘솔 메시지의 형태로 출력을 표시합니다.
파일이 업로드되면 사용자는 Cloudwatch 로그에서 메시지를 볼 수 있습니다.
예제의 흐름을 설명하는 블록 다이어그램은 다음과 같습니다.
S3 버킷 생성
먼저 아래 단계를 사용하여 AWS 콘솔에서 s3 버킷을 생성 해 보겠습니다.
1 단계
Amazon 서비스로 이동하여 S3 아래 주어진 이미지에서 강조 표시된대로 저장 섹션에서-
2 단계
S3 스토리지를 클릭하고 Create bucket 업로드 된 파일을 저장합니다.
3 단계
클릭하면 Create bucket 버튼을 누르면 다음과 같은 화면을 볼 수 있습니다.
4 단계
세부 사항을 입력하십시오 Bucket name, Select the Region 클릭 Create왼쪽 하단에있는 버튼. 따라서 이름이 다음과 같은 버킷을 만들었습니다.workingwithlambdaands3.
5 단계
이제 버킷 이름을 클릭하면 아래와 같이 파일을 업로드하라는 메시지가 표시됩니다.
따라서 S3에서 버킷 생성이 완료되었습니다.
S3 및 Lambda에서 작동하는 역할 생성
S3 및 Lambda에서 작동하는 역할을 생성하려면 아래 단계를 따르십시오.
1 단계
AWS 서비스로 이동하여 아래와 같이 IAM을 선택합니다.
2 단계
이제 IAM -> Roles 아래와 같이-
3 단계
이제 Create role이 역할을 사용할 서비스를 선택하십시오. Lambda를 선택하고Permission 단추.
4 단계
아래에서 권한을 추가하고 클릭 Review.
5 단계
다음 권한을 선택했는지 확인하십시오.
우리가 선택한 정책이 AmazonS3FullAccess, AWSLambdaFullAccess 과 CloudWatchFullAccess.
6 단계
이제 역할 이름, 역할 설명을 입력하고 Create Role 하단의 버튼.
따라서 우리의 역할은 lambdawiths3service 생성됩니다.
Lambda 함수 생성 및 S3 트리거 추가
이 섹션에서는 Lambda 함수를 생성하고 여기에 S3 트리거를 추가하는 방법을 살펴 보겠습니다. 이를 위해 아래에 주어진 단계를 따라야합니다.
1 단계
AWS 서비스로 이동하여 아래와 같이 Lambda를 선택합니다.
2 단계
딸깍 하는 소리 Lambda 추가 프로세스를 따르십시오. Name. 선택Runtime, Role등을 만들고 함수를 만듭니다. 우리가 생성 한 Lambda 함수는 아래 스크린 샷에 나와 있습니다.
3 단계
이제 S3 트리거를 추가하겠습니다.
4 단계
위에서 트리거를 선택하고 아래 표시된대로 세부 사항을 추가하십시오.
5 단계
버킷 드롭 다운에서 생성 된 버킷을 선택합니다. 이벤트 유형에는 다음과 같은 세부 정보가 있습니다.
고르다 Object Created (All), 파일 업로드, 제거 등의 경우 AWS Lambda 트리거가 필요하기 때문입니다.
6 단계
추가 된 파일을 필터링하는 데 사용되는 Prefix 및 File 패턴을 추가 할 수 있습니다. 예를 들어 .jpg 이미지에 대해서만 람다를 트리거합니다. 업로드 된 모든 파일에 대해 Lambda를 트리거해야하므로 지금은 공백으로 두겠습니다. 딸깍 하는 소리Add 버튼을 눌러 트리거를 추가합니다.
7 단계
아래와 같이 Lambda 함수에 대한 트리거 디스플레이를 찾을 수 있습니다.
aws lambda 함수에 대한 세부 정보를 추가하겠습니다. 여기에서는 온라인 편집기를 사용하여 코드를 추가하고 nodejs를 런타임 환경으로 사용합니다.
8 단계
AWS Lambda로 S3를 트리거하려면 아래와 같이 코드에서 S3 이벤트를 사용해야합니다.
exports.handler = function(event, context, callback) {
console.log("Incoming Event: ", event);
const bucket = event.Records[0].s3.bucket.name;
const filename = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
const message = `File is uploaded in - ${bucket} -> ${filename}`;
console.log(message);
callback(null, message);
};
이벤트 매개 변수에는 S3event의 세부 사항이 있습니다. S3bucket에서 이미지를 업로드 할 때 기록 될 버킷 이름과 파일 이름을 관리했습니다.
9 단계
이제 변경 사항을 저장하고 S3upload로 lambda 함수를 테스트 해 보겠습니다. 다음은 AWS Lambda에 추가 된 코드 세부 정보입니다.
10 단계
이제 역할, 메모리 및 시간 제한을 추가하겠습니다.
11 단계
이제 Lambda 함수를 저장합니다. Amazon 서비스에서 S3를 열고 앞서 만든 버킷을 엽니 다.workingwithlambdaands3.
아래와 같이 이미지를 업로드하십시오-
12 단계
딸깍 하는 소리 Upload 그림과 같이 파일을 추가하는 버튼-
13 단계
딸깍 하는 소리 Add files파일을 추가합니다. 파일을 끌어서 놓을 수도 있습니다. 이제Upload 단추.
따라서 S3 버킷에 하나의 이미지를 업로드했습니다.
14 단계
트리거 세부 정보를 보려면 AWS 서비스로 이동하여 CloudWatch. Lambda 함수에 대한 로그를 열고 다음 코드를 사용하십시오.
exports.handler = function(event, context, callback) {
console.log("Incoming Event: ", event);
const bucket = event.Records[0].s3.bucket.name;
const filename = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
const message = `File is uploaded in - ${bucket} -> ${filename}`;
console.log(message);
callback(null, message);
};
Cloudwatch에서 관찰 할 수있는 출력은 다음과 같습니다.
AWS Lambda 함수는 파일이 S3 버킷에 업로드되고 세부 정보가 아래와 같이 Cloudwatch에 기록 될 때 트리거됩니다.