일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- web shell
- ELB
- 정보처리기사
- splunk db connect
- File Upload
- metacodem
- 정처기필기
- AWS CLI
- 블록체인
- web3 보안
- 탈중앙화
- Session Manager
- 메타코드M
- web security academy
- aws lambda
- 티스토리챌린지
- 스마트 컨트랙트
- 보안 그룹
- systems manager
- AWS SSM
- 스마트컨트랙트
- metacode
- aws 트리거
- 오블완
- 정처기 필기
- web3
- Path Traversal
- 정처기
- amazon s3 트리거
- 메타코드
- Today
- Total
min8282
[AWS] Amazon S3 트리거를 사용하여 썸네일 이미지 생성 본문
https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/with-s3-tutorial.html
자습서: Amazon S3 트리거를 사용하여 썸네일 이미지 생성 - AWS Lambda
Amazon S3 버킷 이름은 전역적으로 고유하지만 리소스 기반 정책을 사용할 때는 버킷이 반드시 계정에 속하도록 지정하는 것이 가장 좋습니다. 버킷을 삭제하면 다른 AWS 계정가 동일한 Amazon 리소
docs.aws.amazon.com
이 글에서는 Amazon S3 버킷에 업로드된 이미지를 자동으로 리사이징 하여 다른 S3 버킷에 저장하는 과정을 다룹니다. Amazon 공식 자습서를 참고하여 Amazon S3 트리거를 사용해 자동으로 썸네일 이미지를 생성하는 Lambda 함수를 만들어 보았습니다.
실습 목표
- Amazon S3에 이미지 파일이 업로드되면 자동으로 Lambda 함수를 실행하도록 트리거를 설정합니다.
- Lambda 함수는 이미지를 리사이징한 후, 썸네일을 다른 S3 버킷에 저장합니다.
- AWS Management Console을 사용하여 실습을 진행합니다.
1. S3 버킷 생성
Amazon S3>범용 버킷>버킷 만들기
Source 버킷: msjwabucket (원본 이미지가 업로드될 버킷)
Destination 버킷: msjwabucket-resized (리사이징된 이미지가 저장될 버킷)
2. Lambda 실행 권한 정책 생성
Lambda 함수를 생성하는 첫 번째 단계는 권한 정책의 생성입니다. Lambda 함수가 S3 버킷과 CloudWatch 로그에 접근할 수 있도록 IAM 정책을 생성합니다. 이 자습서에서 정책을 통해 Amazon S3 버킷에 대한 읽기 및 쓰기 권한을 Lambda에 부여하고 Amazon CloudWatch Logs에 쓸 수 있습니다.
IAM>정책>정책 생성
다음 JSON 정책을 입력하고
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:PutLogEvents",
"logs:CreateLogGroup",
"logs:CreateLogStream"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::*/*"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::*/*"
}
]
}
정책 이름은 자습서와 비슷한 이름으로 LambdaS3Policy01로 이름 설정합니다.
현재 생성 중인 정책의 정의된 권한을 한 번 확인해 주고 정책을 생성합니다.
3. 실행 역할(Role) 생성
다음은 역할을 생성하겠습니다. 실행 역할은 AWS 서비스 및 리소스에 액세스할 수 있는 권한을 Lambda 함수에 부여하는 IAM 역할입니다. 함수에 Amazon S3 버킷에 대한 읽기 및 쓰기 액세스 권한을 부여하려면 이전 단계에서 생성한 권한 정책을 연결합니다.
IAM>역할>역할 생성
신뢰할 수 있는 엔터티 유형: AWS 서비스 선택
사용 사례: Lambda 선택
권한 정책: 앞서 만든 LambdaS3Policy01 선택
역할 이름: LambdaS3Role로 지정 후 역할 생성
4. Lambda 함수 생성
AWS CLI 또는 Lambda 콘솔을 사용하여 Lambda 함수를 생성할 수 있습니다. 선택한 언어의 지침에 따라 함수를 생성합니다. 저는 이미 만들어 둔 lambda_function.zip을 사용하겠습니다. 해당 파일의 코드 관련 내용은 AWS 공식 자습서 링크에서 확인할 수 있습니다.
Lambda>함수>함수 생성
함수 이름: CreateThumbnail
런타임: Python 3.9
기본 실행 역할: 기존 역할 사용 선택 후 LambdaS3Role 선택
생성 후 코드 소스에서 lambda_function.zip 파일을 업로드하고 저장합니다.
lambda_function.zip 파일 업로드 후 저장
5. Lambda 트리거 추가
CreateThumbnail 함수에서 트리거 추가 클릭
트리거 구성: S3 선택
버킷: msjwabucket
이벤트 유형: 모든 객체 생성 이벤트
재귀 호출 부분에 주의 사항을 확인 후 추가 버튼 클릭
S3 트리거 추가 완료
6. Amazon S3 트리거를 사용하여 함수 테스트
Lambda 함수가 정상적으로 잘 작동하는지 이미지 파일을 올려서 확인해 봅니다.
Source 버킷(msjwabucket)에 테스트 이미지를 업로드합니다.
msjwabucket에 noh.png 파일이 업로드 확인
Lambda 함수가 실행되면서 Destination 버킷(msjwabucket-resized)에 썸네일 이미지가 자동으로 생성됩니다.
생성된 리사이징 이미지를 확인하면 성공적으로 작동하는 것을 확인할 수 있습니다. (341.4KB -> 103.2KB)
7. 정리 및 삭제
실습이 마무리 됐으므로 생성한 리소스를 삭제합니다.
CreateThumbnail Lambda 함수 삭제
msjwabucket-resized 버킷 삭제 (내부 객체 먼저 삭제 필요)
msjwabucket 버킷 삭제
Lambda를 사용하여 Amazon S3 버킷에 추가된 객체에 대한 파일 처리 작업을 수행하는 방법을 실습했습니다. 서버를 따로 생성하지 않고도 이벤트 기반으로 이미지를 처리할 수 있는 점이 매우 유용했습니다.
'Security > Cloud' 카테고리의 다른 글
[AWS] AWS SSM을 이용한 EC2 인스턴스 연결 (SSH 대체) (0) | 2025.03.07 |
---|---|
[AWS] AWS CloudFormation을 통한 인프라 구성 (0) | 2025.03.07 |
[AWS] Amazon RDS를 사용하여 MySQL 데이터베이스 생성 및 연결 (0) | 2025.03.05 |
[AWS] AWS VPC 엔드포인트 설정 및 프라이빗 인스턴스에서 S3 접근 (0) | 2025.03.05 |
[AWS] AWS ELB & Auto Scaling을 활용한 고가용성 웹서버 구축 (0) | 2025.03.04 |