Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Boto向端点发送请求_Python_Amazon S3_Boto - Fatal编程技术网

Python 如何使用Boto向端点发送请求

Python 如何使用Boto向端点发送请求,python,amazon-s3,boto,Python,Amazon S3,Boto,我试图用下面的代码列出S3容器中的项目 import boto.s3 from boto.s3.connection import OrdinaryCallingFormat conn = boto.connect_s3(calling_format=OrdinaryCallingFormat()) mybucket = conn.get_bucket('Container001') for key in mybucket.list(): print key.name.encode(

我试图用下面的代码列出S3容器中的项目

import boto.s3
from boto.s3.connection import OrdinaryCallingFormat

conn = boto.connect_s3(calling_format=OrdinaryCallingFormat())
mybucket = conn.get_bucket('Container001')

for key in mybucket.list():
    print key.name.encode('utf-8')
然后我得到以下错误

Traceback (most recent call last):
  File "test.py", line 5, in <module>
    mybucket = conn.get_bucket('Container001')
  File "/usr/lib/python2.7/dist-packages/boto/s3/connection.py", line 370, in get_bucket
bucket.get_all_keys(headers, maxkeys=0)
File "/usr/lib/python2.7/dist-packages/boto/s3/bucket.py", line 358, in get_all_keys
'', headers, **params)
File "/usr/lib/python2.7/dist-packages/boto/s3/bucket.py", line 325, in _get_all
response.status, response.reason, body)
boto.exception.S3ResponseError: S3ResponseError: 301 Moved Permanently
<?xml version="1.0" encoding="UTF-8"?>
PermanentRedirectThe bucket you are attempting to access  must be addressed using the  specified endpoint. Please send all future requests to this endpoint.99EBDB9DE3B6E3AF
Container001
<HostId>5El9MLfgHZmZ1UNw8tjUDAl+XltYelHu6d/JUNQsG3OaM70LFlpRchEJi9oepeMy</HostId><Endpoint>Container001.s3.amazonaws.com</Endpoint></Error>
回溯(最近一次呼叫最后一次):
文件“test.py”,第5行,在
mybucket=conn.get_bucket('Container001'))
文件“/usr/lib/python2.7/dist packages/boto/s3/connection.py”,第370行,在get_bucket中
bucket.get_all_键(headers,maxkeys=0)
文件“/usr/lib/python2.7/dist-packages/boto/s3/bucket.py”,第358行,在get\u-all\u键中
'',标题,**参数)
文件“/usr/lib/python2.7/dist-packages/boto/s3/bucket.py”,第325行,全部
响应(状态、响应、原因、正文)
boto.exception.S3ResponseError:S3ResponseError:301已永久移动
因此,必须使用指定的端点对您尝试访问的存储桶进行寻址。请将所有未来的请求发送到此端点。99EBDB9DE3B6E3AF
集装箱001
5El9MLfgHZmZ1UNw8tjUDAl+XltYelHu6d/JUNQsG3OaM70LFlpRchEJi9oepeMyContainer001.s3.amazonaws.com
我试图搜索如何将请求发送到指定的端点,但找不到有用的信息


如何避免此错误?

正如@garnaat所述,@Rico
connect_to_region
使用
普通调用格式

conn = boto.s3.connect_to_region(
   region_name = '<your region>',
   aws_access_key_id = '<access key>',
   aws_secret_access_key = '<secret key>',
   calling_format = boto.s3.connection.OrdinaryCallingFormat()
   )
bucket = conn.get_bucket('<bucket name>')
conn=boto.s3.将\u连接到\u区域(
地区名称=“”,
aws\u访问\u密钥\u id=“”,
aws_secret_access_key='',
调用_format=boto.s3.connection.OrdinaryCallingFormat()
)
桶=连接获取桶(“”)
在终端运行中

nano~/.boto

如果存在一些配置,请尝试注释或重命名文件,然后再次连接。(这对我有帮助)

存在boto配置文件目录。一个接一个地看一看,然后将它们全部清理干净,默认情况下,它会工作。此外,配置可能位于.bash\u配置文件、.bash\u源文件中。。。 我想你必须只允许密钥保密

也尝试使用

调用_format=boto.s3.connection.OrdinaryCallingFormat()


如果您在不调用
格式的情况下尝试
conn=boto.connect\u s3()
,是否仍然会出现错误?这会给我一个不同的错误:boto.exception.S3ResponseError:S3ResponseError:403禁止签出。@drowness根据该页面,这是一个错误。然而,这根线已经有9个月了。是的,是的。您可以尝试他们建议的分支,因为他们无法复制该问题。