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

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 configure

然后填写密钥和区域。

这之后做下一步使用任何环境。你可以有多个钥匙,这取决于你的帐户。能否管理多个环境或密钥

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

其他回答

我也有同样的问题,它可以通过在主目录中创建配置和凭据文件来解决。下面展示了我解决这个问题的步骤。

创建一个配置文件:

touch ~/.aws/config

在那个文件里,我输入了区域

[default]
region = us-west-2

然后创建证书文件:

touch ~/.aws/credentials

然后输入你的凭证

[Profile1]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX 
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

设置好所有这些后,然后我的python文件连接桶。运行此文件将列出所有内容。

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)

你也可以参考以下链接:

带有Python Boto3库的Amazon S3 Boto 3文档 Boto3: Amazon S3 as Python Object Store

导出证书也可以,在linux:

export AWS_SECRET_ACCESS_KEY="XXXXXXXXXXXX"
export AWS_ACCESS_KEY_ID="XXXXXXXXXXX"

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

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

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

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

终端类型:-

aws configure

然后填写密钥和区域。

这之后做下一步使用任何环境。你可以有多个钥匙,这取决于你的帐户。能否管理多个环境或密钥

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

如果您正在寻找另一种方法,请尝试使用 AmazonCLI

终端类型:-

aws configure

然后填写密钥和区域。