2017-09-13 20 views
0

バケットが存在することを確認するためにboto3 s3呼び出しがあります。私のコードは私たちの東1を使い果たしています。私が調べているs3バケットは私たち西2です。Boto3 s3 head_bucket()タイムアウト・クロス領域

私がテストしているS3クライアントの罰金を取得することができるよ、と私は呼ん:

s3_client.head_bucket(Bucket='mybucket') 

この呼び出しは永久にハングアップするようです。私はエラーにいくつかのトレースバックを取得すると、それは言う: ConnectTimeoutError(botocore.awsrequest.AWSHTTPSConnectionで...「s3-us-west-2.amazonaws.comへの接続がタイムアウトになった」

私は同じことを試してみました。私たち-東-1でのバケットとコードでコードが罰金を返します。

?これはクロス地域の問題ですか?

+0

をあなたはS3にアクセスするためにVPCエンドポイントを使用していますか? –

答えて

1

あなたはEC2からこれを実行していますか?もしそうなら、この呼び出しを行うときに、なぜコードがハングしませんこのHTTPSの出力トラフィックが許可されていることを確認するために、セキュリティグループを確認してください。

+0

EC2から実行し、ポート443でアウトバウンドを許可する必要があるように思えます。私は、s3_west = boto3.resource( 's3'、region_name = 'us-west-2')、そしてs3_west.meta.client.head_bucket(Bucket = 'mybucket')を使って回避策を見つけました。リソース –

+1

の代わりにs3クライアントを使用して呼び出しを行う方がよいでしょう。これはバグのようです。 botoのどのバージョン? – roktechie

+0

私が使っているビルドスクリプトは 'pip install boto3'ですので、最新バージョンのboto3だと思います。私が発信トラフィックを持つ正しい出口ルールを持っていなかった場合、私は永遠にぶら下げるよりもエラーになるだろうと考えていました...これは私にもバグかもしれないと信じていました。 boto3は異なる地域で異なった働きをしますか?私が意味することは、boto3コールは私たちの東1で働くことができますが、私たちは西2で働くことができないということですか? –