当我简单地运行下面的代码时,我总是得到这个错误。

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\证书,从那里Boto应该读我的证书。

我的设置错了吗?

下面是boto3的输出。set_stream_logger (botocore,级别=“调试”)。

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

当前回答

如果使用AWS

在我的情况下,我必须在IAM角色中添加以下策略,以允许ec2实例读取ec2标记。这将消除“无法定位凭据”错误 :

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": "ec2:DescribeTags",
        "Resource": "*"
    }
  ]
}

其他回答

boto3在文件夹中查找凭据,例如

C:\ProgramData\Anaconda3\envs\tensorflow\Lib\site-packages\botocore\.aws

您应该在这个文件夹中保存两个文件凭证和配置。

您可能希望查看boto3在此链接中搜索凭据的一般顺序。在配置凭据子标题下查看。

尝试手动指定键

    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 /凭证文件错误。

它处理了一个包含以下内容的文件:

[default]
aws_access_key_id=XXXXXXXXXXXXXX
aws_secret_access_key=YYYYYYYYYYYYYYYYYYYYYYYYYYY

注意,必须有一个配置文件名称“[default]”。一些官方文件提到了一个名为“[凭证]”的配置文件,这对我来说并不适用。

我是这样解决这个问题的:

aws configure

之后我手动输入:

AWS Access Key ID [None]: xxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxx
Default region name [None]: us-east-1
Default output format [None]: just hit enter

从那以后,它对我起作用了

我只是遇到了这个问题。这对我来说很管用:

pip install botocore==1.13.20

来源:https://github.com/boto/botocore/issues/1892