kinesis hose 이용한 코

정재훈·2023년 3월 15일

아래는 Greengrass에서 들어오는 센서 데이터를 Kinesis Firehose를 이용하여 S3에 저장하는 Python 코드입니다.

python
Copy code
import greengrasssdk
import json
import boto3

AWS Greengrass SDK를 초기화합니다.

client = greengrasssdk.client('iot-data')

Kinesis Firehose 및 S3 클라이언트를 초기화합니다.

firehose = boto3.client('firehose')
s3 = boto3.client('s3')

Firehose Delivery Stream 이름 및 S3 Bucket 이름을 지정합니다.

delivery_stream_name = 'my-delivery-stream'
s3_bucket_name = 'my-s3-bucket'

Greengrass의 Lambda 함수의 핸들러 함수입니다.

def lambda_handler(event, context):

# 이벤트에서 센서 데이터를 가져옵니다.
sensor_data = event['sensor_data']

# 센서 데이터를 JSON 문자열로 직렬화합니다.
json_data = json.dumps(sensor_data)

try:
    # Kinesis Firehose Delivery Stream으로 데이터를 전송합니다.
    response = firehose.put_record(
        DeliveryStreamName=delivery_stream_name,
        Record={
            'Data': json_data
        }
    )
    print("Successfully sent data to Kinesis Firehose")
    
    # S3에 데이터를 저장합니다.
    response = s3.put_object(
        Bucket=s3_bucket_name,
        Key='sensor_data.json',
        Body=json_data.encode('utf-8'),
        ContentType='application/json'
    )
    print("Successfully saved data to S3")
    
except Exception as e:
    print("Failed to send data to Kinesis Firehose and save to S3: {}".format(e))

return

위 코드에서는 boto3 모듈을 사용하여 Kinesis Firehose 및 S3 클라이언트를 초기화하고, put_record() 메서드를 사용하여 Kinesis Firehose Delivery Stream으로 데이터를 전송합니다. 그리고 put_object() 메서드를 사용하여 S3에 데이터를 저장합니다.

또한, 이 코드에서는 Greengrass Lambda 함수의 핸들러 함수로 lambda_handler() 함수를 사용하고, 이벤트에서 센서 데이터를 가져오고 JSON 문자열로 직렬화합니다. 이후, try/except 블록을 사용하여 Kinesis Firehose 및 S3에 데이터를 전송하고 저장합니다.

마지막으로, print() 함수를 사용하여 적절한 로그를 출력합니다. 이 코드를 Greengrass Lambda 함수에 배포하여 사용하면, 센서 데이터를 Kinesis Firehose를 이용하여 S3에 쉽게 저장할 수 있습니다.

0개의 댓글