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 버킷 κ°„ 연결이 μ™„λ£Œλœλ‹€. μœ„ μ½”λ“œλΈ”λŸ­μ„ 보면 둜그 κ·Έλ£Ή 및 λ‘œκ·ΈμŠ€νŠΈλ¦Όμ΄λ¦„μ„ μž‘μ„±ν•΄μ•Όν•˜λŠ” 뢀뢄이 μžˆλ‹€. μ΄λŠ” ν΄λΌμš°λ“œ μ›ŒμΉ˜μ—μ„œ μ„€μ •ν•˜λŠ” 것이닀. λžŒλ‹€μ™€ ν΄λΌμš°λ“œ μ›ŒμΉ˜λ₯Ό μ—°κ²°ν•˜λŠ” 뢀뢄이 ν•„μš”ν•˜λ‹€. μ΄λŠ” λ‹€μŒ κ²Œμ‹œκΈ€μ—μ„œ 닀뀄보도둝 ν•˜κ² λ‹€.