목적
lambda를 이용해 이미지 썸네일을 만들어보자.
cloudwatch log를 이용해 모니터링하자.
구성
사용자 -----s3 (소스) ---- Lambda ---- s3 (타켓)
q-ok
순서
<1> S3 버킷 2개 만들기
<2> Lambda 만들기
<3> 기능 테스트
<4> 모니터링 , 로깅
<1> S3 버킷 2개 만들기
1
seo-bucket-13
seo-bucket-13-resized
// 버킷이름뒤에 resized라고 해야한다. 이름 변경 금지. 소스에 resized에 넣는다.
// 지역도 변경하지 마세요
2
버킷 ARN을 복사해 놓는다.
3
이미지 파일 1개 올리기
1.jpg 파일 하나를 올린다.
<2> Lambda 만들기
1
람다 > 함수 생성
seo-image-lambda1
python 3.7
기본 실행 역할 변경 >
기존 역할 사용 > 선택 >
seo-lambda-image-resize-role
// S3에 데이터를 넣는 권한이 필요하다.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:*"
],
"Resource": "arn:aws:logs:*:*:*",
"Effect": "Allow"
},
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::*",
"Effect": "Allow"
}
]
}
> 함수 작성
2
람다를 실행시키는 소스로 S3 이벤트를 사용해보자. ?
트리거 추가
S3
버킷
seo-bucket-12
모든 객체 생성 이벤트
3
재귀적 호출 체크 > 추가
4
이벤트 트리거로 사용할수 있는것들
5
// 람다 함수 코드 반영하기
코드 클릭 > 작업 > Zip file upload ( 소스코드 작성 파일)
Create-Thumbnail"Lambda 함수" 의 배포 패키지가 너무 커서 인라인 코드 편집을 활성화할 수 없습니다. 그러나 함수를 호출할 수 있습니다.
6
런타임 설정 > 편집 > 핸들러
CreateThumbnail.handler
저장
// 참고 : 메모리를 늘리면 CPU도 증가함.
시간초과는 최대 시간 설정
VPC 안에 넣을지 , 밖에 넣을지 선택 - 여기서는 VPC사용하지 않음.
<3> 기능 테스트
1
테스트 > 이벤트 템플릿 > Amazon s3 put 선택
이벤트 이름
upload1
2
이벤트 수정 3곳
s3 버킷 2곳을 수정해야 한다.
S3가서 버킷 ARN복사해서 수정한다.
3
key에 1.jpg로 변경
4
테스트
성공 확인
5
S3가서 썸네일 확인
seo-bucket-13-resized 버킷에서 확인
3.1 KB로 줄어듬
<4> 람다 > 모니터링에서 결과 확인
1.
람다에서 그래프로 확인
람다 > 모니터링 > Cloud watch 로그 보기
또는
CloudWach > 로그 > 로그 그룹에서 보기 > /aws/lambda/seo-lambda-image-resize
감사합니다.