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

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

by A Lim Han 2023. 8. 3.

πŸ‘‘ "Unable to locate credentials" 였λ₯˜λž€?

"Unable to locate credentials" μ—λŸ¬λž€ AWS 계정과 κ΄€λ ¨ν•˜μ—¬ AWS 자격 증λͺ…(인증 정보)을 찾을 수 없을 λ•Œ λ°œμƒν•˜λŠ” 였λ₯˜μ΄λ‹€.

이전 ν¬μŠ€νŠΈμ—μ„œ λ‹€λ£¨μ—ˆλ˜ Boto3와 AWS S3 버킷을 μ΄μš©ν•œ 데이터 μ—…λ‘œλ“œ μžλ™ν™” 슀크립트λ₯Ό μž‘μ„±ν•˜λŠ” κ³Όμ •μ—μ„œ λ°œμƒν•˜μ˜€μœΌλ©°, 이번 ν¬μŠ€νŠΈμ—μ„œλŠ” μœ„ μ—λŸ¬μ˜ ν•΄κ²° λ°©μ•ˆμ„ λ‹€λ£¨μ—ˆλ‹€.

 


πŸ‘‘ λ°œκ²¬ν•œ "Unable to locate credentials" 였λ₯˜μ˜ 주된 원인 및 유의점

1. κ³„μ •μ˜ AWS 자격 증λͺ… 확인

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

 

슀크립트 μž‘μ„± κ³Όμ •μ—μ„œ AWS 자격 증λͺ…을 μ„€μ •ν•˜λŠ” μ ˆμ°¨κ°€ μžˆλŠ”λ°, μ΄λ•Œ μ‹œν¬λ¦Ώ μ—‘μ„ΈμŠ€ ν‚€λ‚˜ μ—‘μ„ΈμŠ€ ν‚€μ˜ IDλ₯Ό 잘λͺ» μž…λ ₯ν•˜κ±°λ‚˜, 두 μš”μ†Œμ˜ 짝이 λ§žμ§€ μ•ŠμœΌλ©΄ μœ„μ™€ 같은 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

 

μ‹œν¬λ¦Ώ μ—‘μ„ΈμŠ€ 킀와 μ—‘μ„ΈμŠ€ ν‚€λ₯Ό μƒμ„±ν•˜μ§€ μ•Šμ€ κ²½μš°μ—λ„ μœ„μ™€ 같은 였λ₯˜κ°€ λ°œμƒν•  수 μžˆλŠ”λ°, 슀크립트λ₯Ό μ‚¬μš©ν•˜κΈ° μ „ λ°˜λ“œμ‹œ AWS κ³„μ •μ˜ μ—‘μ„ΈμŠ€ 킀와 μ‹œν¬λ¦Ώ μ—‘μ„ΈμŠ€ ν‚€λ₯Ό 생성해놓아야 ν•œλ‹€.

 

 

++ AWS Access Key & μ‹œν¬λ¦Ώ μ—‘μ„ΈμŠ€ ν‚€ 생성 및 확인 방법

-->  https://docs.aws.amazon.com/powershell/latest/userguide/pstools-appendix-sign-up.html

 

AWS Account and Access Keys - AWS Tools for PowerShell

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com

 


 

2. ν•¨μˆ˜ 호좜 μ‹œ 인증 정보 전달 μ—¬λΆ€

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)}")

 

μŠ€ν¬λ¦½νŠΈμ—μ„œ μ‹€μ§ˆμ μΈ μ—…λ‘œλ“œ 역할을 μˆ˜ν–‰ν•˜λŠ” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ, ν•„μš”ν•œ 인증 정보λ₯Ό 인자둜 전달해주지 λͺ»ν•˜λŠ” 경우 μœ„μ™€ 같은 μ—λŸ¬κ°€ λ°œμƒν•œλ‹€. 

 

이 경우,  AWS 자격 증λͺ… μ„€μ • μ½”λ“œλ₯Ό 슀크립트 μƒμ—μ„œ 파일 μ €μž₯ 경둜λ₯Ό μ§€μ •ν•˜λŠ” μ½”λ“œμ™€ S3 버킷에 νŒŒμΌμ„ μ—…λ‘œλ“œν•˜λŠ” μ½”λ“œ 사이에 λ³΅μ‚¬ν•˜μ—¬ λ„£μ–΄μ£Όλ©΄ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆλ‹€.

 

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

 

μœ„ μ½”λ“œλ₯Ό

⬇️

μ•„λž˜μ²˜λŸΌ 배치

 

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

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

<!-- 여기에 ν•΄λ‹Ή μ½”λ“œ μΆ”κ°€ -->

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

 


++ μ—λŸ¬ ν•΄κ²° ν›„μ˜ 데이터 μ—…λ‘œλ“œ μžλ™ν™” μŠ€ν¬λ¦½νŠΈκ°€ κΆκΈˆν•˜λ‹€λ©΄?

-->  Boto3 SDKλ₯Ό ν™œμš©ν•œ 데이터 μ—…λ‘œλ“œ μžλ™ν™” 슀크립트 μž‘μ„± Forward AWS S3 Bucket (https://alim11.tistory.com/398)

 

[Data Processing] Boto3 SDKλ₯Ό ν™œμš©ν•œ 데이터 μ—…λ‘œλ“œ μžλ™ν™” 슀크립트 μž‘μ„± (Forward AWS S3 Bucket)

🌸 Boto3 SDKλ₯Ό ν™œμš©ν•œ 데이터 μ—…λ‘œλ“œ μžλ™ν™” 슀크립트 μž‘μ„± (Forward AWS S3 Bucket) 1. pip λͺ…λ Ήμ–΄λ₯Ό μ΄μš©ν•˜μ—¬ boto3 μ„€μΉ˜ !pip install boto3 ++ boto3 λž€? boto3λŠ” Amazon Web Services (AWS)와 μƒν˜Έμž‘μš©ν•˜κΈ° μœ„ν•œ μ˜€ν”ˆ μ†Œ

alim11.tistory.com