import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
但是此代码不起作用,如何导入我的AWS凭据以便这将返回正确的输出?
错误: botocore.exceptions.EndpointConnectionError:无法连接 到端点网址:“https://s3.aws-east-2.amazonaws.com/”
预期输出: 我的帐户中的桶列表。
答案 0 :(得分:0)
您的实例似乎无法连接到s3服务。运行 aws configure 命令以配置您的AWS访问密钥ID和秘密访问密钥以访问S3。它还会在AWS中提示输入区域名称,确保您提供正确的区域代码。
代码名称 我们 - 东 - 1
美国东部(弗吉尼亚北部)
我们 - 东 - 2
美国东部(俄亥俄州)
我们西-1
美国西部(加利福尼亚州北部)
我们西-2
美国西部(俄勒冈州)
CA-中央-1
加拿大(中环)
EU-中央-1
欧盟(法兰克福)
EU-西-1
欧盟(爱尔兰)
EU-西-2
欧盟(伦敦)
EU-西-3
欧盟(巴黎)
AP-东北-1
亚太(东京)
AP-东北-2
亚太地区(首尔)
AP-东北-3
亚太地区(大阪本地)
AP-东南-1
亚太地区(新加坡)
AP-东南-2
亚太地区(悉尼)
AP-南-1
亚太地区(孟买)
SA - 东 - 1
南美洲(圣保罗)
详细信息:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html
答案 1 :(得分:0)
使用以下命令安装AWS Command Line Interface。有关详细信息,请参阅this文档。
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip
sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
如果还没有用户,请创建一个IAM用户。有关详细信息,请参阅this文档
下载凭证文件credentials.csv
。访问密钥ID和秘密访问密钥将在此文件中列出
使用以下命令配置aws:
aws configure
在配置期间输入AWS Access Key ID, AWS Secret Access Key, Default region name and Default output format
。
有关详细信息,请参阅this文档。
在此之后,你的python代码应该给出预期的结果。
答案 2 :(得分:0)
另一种选择是创建boto3 session
mysession = boto3.Session(
aws_key=AWS_SERVER_PUBLIC_KEY,
aws_secret=AWS_SERVER_SECRET_KEY,
)
s3 = mysession .resource('s3')
答案 3 :(得分:0)
收到的错误是因为boto aws客户端找不到要调用的区域端点,因为没有为客户端配置区域。
Boto在这些地方搜索它和凭据。
如果此python代码在EC2上运行,则最佳做法是设置IAM role for the EC2 instance to assume。在IAM角色中,IAM策略允许访问您需要的任何内容。然后,在实例元数据(8)中可以访问python访问这些凭据。
如果本地开发需要,下一个最好的方法是使用Session Token Service, STS来获取临时凭证并在本地测试代码。
https://boto3.readthedocs.io/en/latest/guide/configuration.html
https://boto3.readthedocs.io/en/latest/guide/index.html#general-feature-guides