FLASK - S3 연동
2024. 2. 8. 00:46ㆍpython
Flask에서는 boto3
를 사용하여 AWS S3에 액세스할 수 있습니다. 다음은 Flask에서 POST 형태로 전송된 버킷 이름과 키를 이용하여 S3에서 파일 내용을 읽어오는 간단한 예제입니다.
from flask import Flask, request, jsonify
import boto3
from botocore.exceptions import NoCredentialsError
app = Flask(__name__)
# AWS 자격 증명 설정 (안전한 방식으로 관리해야 합니다.)
aws_access_key = 'YOUR_AWS_ACCESS_KEY'
aws_secret_key = 'YOUR_AWS_SECRET_KEY'
s3_bucket_name = 'YOUR_S3_BUCKET_NAME'
def read_s3_file(bucket, key):
try:
# S3 클라이언트 생성
s3 = boto3.client('s3', aws_access_key_id=aws_access_key, aws_secret_access_key=aws_secret_key)
# S3에서 파일 내용 읽기
response = s3.get_object(Bucket=bucket, Key=key)
content = response['Body'].read().decode('utf-8')
return content
except NoCredentialsError:
return "AWS credentials not available"
except Exception as e:
return f"Error reading S3 file: {str(e)}"
@app.route('/read_s3_content', methods=['POST'])
def get_s3_content():
# POST로 전송된 JSON 데이터 파싱
data = request.get_json()
# 전송된 데이터에서 버킷 이름과 키 추출
bucket_name = data.get('bucket')
key = data.get('key')
# S3에서 파일 내용 읽기
content = read_s3_file(bucket_name, key)
# 결과를 JSON 형태로 반환
return jsonify({"content": content})
if __name__ == '__main__':
app.run(debug=True)
이 Flask 앱은 /read_s3_content
엔드포인트를 가지고 있습니다. POST 요청을 통해 JSON 형식으로 {"bucket": "YOUR_BUCKET_NAME", "key": "YOUR_FILE_KEY"}
를 전송하면 해당 버킷과 키에 있는 파일의 내용을 읽어와서 JSON 형태로 반환합니다.
YOUR_AWS_ACCESS_KEY
, YOUR_AWS_SECRET_KEY
, YOUR_S3_BUCKET_NAME
부분을 각각 본인의 AWS 자격 증명과 버킷 정보로 변경하시기 바랍니다. 그리고 보안 상의 이유로 액세스 키와 시크릿 키는 코드에 하드코딩하지 않는 것이 좋습니다. 최선의 방법은 환경 변수 또는 AWS의 보안 기능을 사용하여 관리하는 것입니다.
'python' 카테고리의 다른 글
Python MultiProcessing (0) | 2024.03.16 |
---|---|
python 원형 그래프 / 제일 많은 Ratio 강조 (1) | 2024.01.24 |
원그래프 그리기 / 가장 많은 부분 강조 (0) | 2024.01.24 |
Flask & React 연결 (w/ s3) (0) | 2024.01.23 |
SQLite python - table 속성 추가 (0) | 2024.01.19 |