AWS
Lambda ν¨μμ S3 λ²ν· μ°κ²°νκΈ°
parkjiu
2024. 1. 18. 11:17
AWS console μ°½μμ Lambda κ²μ ν μ΄λ

ν¨μ μμ± ν΄λ¦

ν¨μμ΄λ¦μ μ λ ₯νκ³ , λ°νμμ python 3.12 λ₯Ό μ ννλ€. λλ€ ν¨μλ₯Ό μμ±ν λ μ¬μ©ν μΈμ΄λ₯Ό μ ννλ κ². λλ νμ΄μ¬μ΄ μ£Ό μΈμ΄μ΄κΈ° λλ¬Έμ νμ΄μ¬μ μ ννλ€. μ΄λ κ² νλ©΄ ν¨μ μμ±μ λλλ€.

μ΄ νλ©΄μ΄ λμ€λ©΄ μ±κ³΅μ΄λ€. μ΄μ μ¬κΈ° νΈλ¦¬κ±° μΆκ°λ₯Ό ν΄λ¦νλ€.

νΈλ¦¬κ±° μΆκ°μμ μμ€λ₯Ό μ ννλ€. μμ€λ S3λ₯Ό μ ν.

μλ κ·Έλ¦Όμ λμμλ κ² μ²λΌ λ²ν·μ μκΉ μ°λ¦¬κ° λ§λ λ²ν·μ μ ννκ³ , μλ 체ν¬λ°μ€μ νμνκ³ μΆκ°λ₯Ό λλ₯΄λ©΄ lambdaμ νΈλ¦¬κ±° μΆκ°κ° λλ€.

μ½λ-> μ½λ μμ€ μ°½μμ lambda_function.py λΌλ κΈ°λ³Έ νμ΄μ¬ νμΌμ μ νν ν μλ μ½λλ₯Ό μ½μ νκ³ Deployλ₯Ό μ ννλ©΄ λλ€.
λμ€μ μΆκ°μ μΌλ‘ λλ€ν¨μ λ³κ²½μ ν΅ν΄μ νμνκ² μμΌλ©΄ κ°μ μλ§κ² μμ νλ©΄ λλ€.

import boto3
import gzip
import json
def lambda_handler(event, context):
s3 = boto3.client('s3')
logs = boto3.client('logs')
for record in event['Records']:
bucket = record['s3']['bucket']['name']
key = record['s3']['object']['key']
response = s3.get_object(Bucket=bucket, Key=key)
log_data = gzip.decompress(response['Body'].read()).decode('utf-8')
log_group_name = 'YourLogGroupName' //ν΄λΌμ°λμμΉμ λ‘κ·Έ κ·Έλ£Ή μ΄λ¦μ μμ±νλ€.
log_stream_name = 'YourLogStreamName'// ν΄λΌμ°λμμΉμ λ‘κ·Έ μ€νΈλ¦Ό μ΄λ¦μ μμ±νλ€.
response = logs.create_log_stream(
logGroupName=log_group_name,
logStreamName=log_stream_name
)
log_events = [
{
'timestamp': int(record['eventTime'] / 1000),
'message': log_data
}
]
response = logs.put_log_events(
logGroupName=log_group_name,
logStreamName=log_stream_name,
logEvents=log_events
)
μ¬κΈ°κΉμ§ νλ©΄ λλ€ν¨μμ S3 λ²ν· κ° μ°κ²°μ΄ μλ£λλ€. μ μ½λλΈλμ 보면 λ‘κ·Έ κ·Έλ£Ή λ° λ‘κ·Έμ€νΈλ¦Όμ΄λ¦μ μμ±ν΄μΌνλ λΆλΆμ΄ μλ€. μ΄λ ν΄λΌμ°λ μμΉμμ μ€μ νλ κ²μ΄λ€. λλ€μ ν΄λΌμ°λ μμΉλ₯Ό μ°κ²°νλ λΆλΆμ΄ νμνλ€. μ΄λ λ€μ κ²μκΈμμ λ€λ€λ³΄λλ‘ νκ² λ€.