λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
βœ’οΈ Amazon Web Services (AWS)

[AWS] Boto3 SDKλ₯Ό ν™œμš©ν•œ 데이터 μ—…λ‘œλ“œ μžλ™ν™” (Forward AWS S3 Bucket)

by A Lim Han 2023. 8. 2.

🌸 Boto3 SDKλ₯Ό ν™œμš©ν•œ 데이터 μ—…λ‘œλ“œ μžλ™ν™” (Forward AWS S3 Bucket)

1. pip λͺ…λ Ήμ–΄λ₯Ό μ΄μš©ν•˜μ—¬ boto3 μ„€μΉ˜

!pip install boto3

 

++ boto3 λž€?

boto3λŠ” Amazon Web Services (AWS)와 μƒν˜Έμž‘μš©ν•˜κΈ° μœ„ν•œ μ˜€ν”ˆ μ†ŒμŠ€ 라이브러리둜, AWS와 μƒν˜Έμž‘μš©ν•˜κΈ° μœ„ν•œ λ‹€μ–‘ν•œ κΈ°λŠ₯κ³Ό 클래슀λ₯Ό μ œκ³΅ν•œλ‹€.

boto3λŠ” SDK μ€‘μ—μ„œλ„ Python ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ₯Ό μ‚¬μš©ν•˜λŠ”λ°, AWS μ„œλΉ„μŠ€ 쀑 S3(Simple Storage Service)λ‚˜ EC2(Elastic Compute Cloud) λ“± λ‹€μ–‘ν•œ μ„œλΉ„μŠ€μ— μ ‘κ·Όν•˜μ—¬ 데이터 μ—…λ‘œλ“œ & λ‹€μš΄λ‘œλ“œν•˜λŠ” λ“±μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ‹€.

2. AWS 자격 증λͺ… μ„€μ • ν›„ ν΄λΌμ΄μ–ΈνŠΈ 객체 생성

import boto3

# AWS 자격 증λͺ… μ„€μ •
aws_access_key_id = 'μ—‘μ„ΈμŠ€ ν‚€ ID',
aws_secret_access_key = 'κ³„μ •μ˜ μ‹œν¬λ¦Ώ μ—‘μ„ΈμŠ€ ν‚€'

# AWS ν΄λΌμ΄μ–ΈνŠΈ 생성
s3_client = boto3.client('s3', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key)

3. boto3λ₯Ό μž„ν¬νŠΈν•œ ν›„, νŒŒμΌμ„ S3 버킷에 μ—…λ‘œλ“œν•˜λŠ” upload_file_to_s3() ν•¨μˆ˜ κ΅¬ν˜„

import boto3

def upload_file_to_s3(local_file_path, bucket_name, s3_file_path, aws_access_key_id, aws_secret_access_key):
    """
    둜컬 νŒŒμΌμ„ S3 버킷에 μ—…λ‘œλ“œν•˜λŠ” ν•¨μˆ˜
    :param local_file_path: μ—…λ‘œλ“œν•  둜컬 파일의 경둜 (예: "C:\\Users\\USER\\Desktop\\1234.mp3")
    :param bucket_name: μ—…λ‘œλ“œν•  S3 λ²„ν‚·μ˜ 이름
    :param s3_file_path: S3 버킷 λ‚΄μ—μ„œ 파일이 μ €μž₯될 경둜 및 이름 (예: "uploads/1234.mp3")
    :param aws_access_key_id: AWS μ•‘μ„ΈμŠ€ ν‚€ ID
    :param aws_secret_access_key: AWS λΉ„λ°€ μ•‘μ„ΈμŠ€ ν‚€
    """
    try:
        s3_client = boto3.client('s3', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key)
        s3_client.upload_file(local_file_path, bucket_name, s3_file_path)
        print(f"파일이 μ„±κ³΅μ μœΌλ‘œ S3 버킷에 μ—…λ‘œλ“œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 버킷: '{bucket_name}', 경둜: '{s3_file_path}'")
    except Exception as e:
        print(f"파일 μ—…λ‘œλ“œμ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€. 였λ₯˜ λ©”μ‹œμ§€: {str(e)}")

4. μ—…λ‘œλ“œν•  파일의 경둜 μ„€μ •

# μ—…λ‘œλ“œν•  둜컬 파일의 경둜
local_file_path = "/content/test.txt.txt"

5. S3 버킷λͺ… μ„€μ • ν›„, 파일 μ €μž₯ 경둜 및 파일이 μ €μž₯될 이름 지정

# S3 λ²„ν‚·μ˜ 이름
bucket_name = "giveittome"

# S3 버킷 λ‚΄μ—μ„œ 파일이 μ €μž₯될 경둜 및 이름
s3_file_path = "hello/test.txt"

6. upload_file_to_s3() ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ νŒŒμΌμ„ S3 버킷에 μ—…λ‘œλ“œ

# νŒŒμΌμ„ S3 버킷에 μ—…λ‘œλ“œ
upload_file_to_s3(local_file_path, bucket_name, s3_file_path, aws_access_key_id, aws_secret_access_key)

7. 파일이 μ„±κ³΅μ μœΌλ‘œ μ—…λ‘œλ“œλ˜μ—ˆμŒμ„ 확인

 


++ 파일 μ—…λ‘œλ“œλ₯Ό μ‹€νŒ¨ν–ˆλ‹€λ©΄?

-->  였λ₯˜ λ©”μ‹œμ§€: Unable to locate credentials" μ—λŸ¬ ν•΄κ²° 방법 ( https://alim11.tistory.com/400 )

 

[Data Processing] "파일 μ—…λ‘œλ“œμ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€. 였λ₯˜ λ©”μ‹œμ§€: Unable to locate credentials" μ—λŸ¬ ν•΄κ²° 방법

πŸ‘‘ "Unable to locate credentials" 였λ₯˜λž€? "Unable to locate credentials" μ—λŸ¬λž€ AWS 계정과 κ΄€λ ¨ν•˜μ—¬ AWS 자격 증λͺ…(인증 정보)을 찾을 수 없을 λ•Œ λ°œμƒν•˜λŠ” 였λ₯˜μ΄λ‹€. 이전 ν¬μŠ€νŠΈμ—μ„œ λ‹€λ£¨μ—ˆλ˜ Boto3와 AWS S3 버

alim11.tistory.com