[boto] Boto3 오류 : botocore.exceptions.NoCredentialsError : 자격 증명을 찾을 수 없습니다.

다음 코드를 실행하면 항상이 오류가 발생합니다.

s3 = boto3.resource('s3')
    bucket_name = "python-sdk-sample-%s" % uuid.uuid4()
    print("Creating new bucket with name:", bucket_name)
    s3.create_bucket(Bucket=bucket_name)

내 자격 증명 파일을

C:\Users\myname\.aws\credentials, Boto가 내 자격 증명을 읽어야하는 곳입니다.

내 설정이 잘못 되었습니까?

다음은 boto3.set_stream_logger('botocore', level='DEBUG').

2015-10-24 14:22:28,761 botocore.credentials [DEBUG] Skipping environment variable credential check because profile name was explicitly set.
2015-10-24 14:22:28,761 botocore.credentials [DEBUG] Looking for credentials via: env
2015-10-24 14:22:28,773 botocore.credentials [DEBUG] Looking for credentials via: shared-credentials-file
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: config-file
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: ec2-credentials-file
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: boto-config
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: iam-role



답변

수동으로 키 지정 시도

    s3 = boto3.resource('s3',
         aws_access_key_id=ACCESS_ID,
         aws_secret_access_key= ACCESS_KEY)

보안 문제를 위해 코드에 ACCESS_ID 및 ACCESS_KEY를 직접 포함하지 마십시오. 환경 구성을 사용하고 @Tiger_Mike가 제안한대로 코드에 삽입하는 것을 고려하십시오.

Prod 환경의 경우 순환 액세스 키 사용을 고려 하십시오 .
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey


답변

나는 같은 문제가 있었고 내 ~/.aws/credentials파일 의 형식 이 잘못 되었음을 알았습니다 .

다음을 포함하는 파일로 작업했습니다.

[default]
aws_access_key_id=XXXXXXXXXXXXXX
aws_secret_access_key=YYYYYYYYYYYYYYYYYYYYYYYYYYY

프로필 이름은 ” [default]” 이어야합니다 . 일부 공식 문서는 ” [credentials]” 라는 이름의 프로필을 참조하는데 , 이는 저에게 적합하지 않습니다.


답변

다른 방법을 찾고 있다면 다음을 사용하여 자격 증명을 추가해보십시오.
AmazonCLI를 추가해보십시오.

터미널 유형에서 :-

aws configure

그런 다음 키와 지역을 입력하십시오.


답변

Unix의 ~ / .aws / credentials 파일이 다음과 같은지 확인하십시오.

[MyProfile1]
aws_access_key_id = yourAccessId
aws_secret_access_key = yourSecretKey

[MyProfile2]
aws_access_key_id = yourAccessId
aws_secret_access_key = yourSecretKey

Python 스크립트는 다음과 같이 표시되어야하며 작동합니다.

from __future__ import print_function
import boto3
import os

os.environ['AWS_PROFILE'] = "MyProfile1"
os.environ['AWS_DEFAULT_REGION'] = "us-east-1"

ec2 = boto3.client('ec2')

# Retrieves all regions/endpoints that work with EC2
response = ec2.describe_regions()
print('Regions:', response['Regions'])

출처 : https://boto3.readthedocs.io/en/latest/guide/configuration.html#interactive-configuration .


답변

이 지침은 AWS 용 단일 사용자 프로필이있는 Windows 시스템 용입니다. ~/.aws/credentials파일이 다음과 같은지 확인하십시오.

[profile_name]
aws_access_key_id = yourAccessId
aws_secret_access_key = yourSecretKey

자격 증명에서 찾을 수 있도록 AWS_DEFAULT_PROFILE환경 변수 를 설정해야했습니다 profile_name.
그런 다음 내 파이썬이 연결할 수있었습니다. 예 : 여기에서

import boto3

# Let's use Amazon S3
s3 = boto3.resource('s3')

# Print out bucket names
for bucket in s3.buckets.all():
    print(bucket.name)


답변

나는 또한 동일한 문제가 있었는데, 홈 디렉토리에 구성 및 자격 증명 파일을 생성하여 해결할 수 있습니다. 아래는이 문제를 해결하기 위해 수행 한 단계를 보여줍니다.

구성 파일 만들기 :

touch ~/.aws/config

그리고 그 파일에서 나는 지역에 들어갔다

[default]
region = us-west-2

그런 다음 자격 증명 파일을 만듭니다.

touch ~/.aws/credentials

그런 다음 자격 증명을 입력하십시오

[Profile1]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

이 모든 것을 설정 한 후 내 파이썬 파일을 버킷에 연결합니다. 이 파일을 실행하면 모든 내용이 나열됩니다.

import boto3
import os

os.environ['AWS_PROFILE'] = "Profile1"
os.environ['AWS_DEFAULT_REGION'] = "us-west-2"

s3 = boto3.client('s3', region_name='us-west-2')
print("[INFO:] Connecting to cloud")

# Retrieves all regions/endpoints that work with S3

response = s3.list_buckets()
print('Regions:', response)

아래 링크를 참조 할 수도 있습니다.


답변

터미널 유형에서 :-

aws configure

그런 다음 키와 지역을 입력하십시오.

이 후 다음 단계를 수행하여 모든 환경을 사용하십시오. 계정에 따라 여러 키를 가질 수 있습니다. 여러 환경 또는 키 관리 가능

import boto3
aws_session = boto3.Session(profile_name="prod")
# Create an S3 client
s3 = aws_session.client('s3')