2017-09-13 64 views
0

我有一個boto3 s3調用來檢查存在一個存儲桶。我的代碼耗盡了我們的東1,而我正在研究的s3桶位於us-west-2。Boto3 s3 head_bucket()超出跨區域

我能得到我所測試的客戶端S3罰款,然後我打電話:

s3_client.head_bucket(Bucket='mybucket') 

這一呼籲似乎永遠掛起。當我得到了一些錯誤回溯它說: ConnectTimeoutError(botocore.awsrequest.AWSHTTPSConnection在...「連接到s3-us-west-2.amazonaws.com超時」

我已經試過相同。在水桶代碼美國東部-1和代碼返回罰款。

爲什麼在進行此調用時的代碼掛?這是一個跨區域的問題?

+0

您是否在使用VPC端點訪問S3? –

回答

1

你從EC2上運行嗎?如果是這樣的,請檢查您的安全組以確保允許此HTTPS出口流量。

+0

從EC2運行,似乎應該允許出站在端口443允許出去。我使用s3_west = boto3.resource('s3',region_name ='us-west-2'),然後s3_west.meta.client.head_bucket(Bucket ='mybucket')找到了解決方法。傾向於使用s3客戶端而不是資源 –

+1

這聽起來像一個錯誤。什麼版本的博託? – roktechie

+0

我使用的構建腳本是'pip install boto3',所以我相信它是最新版本的boto3。正在考慮如果我沒有正確的出口規則來傳輸流量,我會得到一個錯誤,而不是永遠懸掛......這導致我相信它也可能是一個錯誤。 boto3在不同地區的工作方式不同嗎?我的意思是,一個boto3電話可以在我們工作 - 東1,但不能在我們工作 - 西2? –