[解決済み】boto3を使ってs3のバケットにキーが存在するか確認する。
2022-04-03 04:49:21
質問
boto3にあるキーが存在するか知りたい。バケツの中身をループして、キーが一致したらチェックすることができます。
しかし、それは長いし、やりすぎだと思う。Boto3の公式ドキュメントには、この方法が明示されています。
もしかしたら、私が見落としているのかもしれません。どうすればこれを実現できるのか、どなたかご指摘ください。
どのように解決するのですか?
Boto 2の
boto.s3.key.Key
オブジェクトは、以前は
exists
メソッドは、HEADリクエストをしてその結果を見ることで、S3上にキーが存在するかどうかをチェックするものでしたが、現在は存在しないようです。自分でやるしかない。
import boto3
import botocore
s3 = boto3.resource('s3')
try:
s3.Object('my-bucket', 'dootdoot.jpg').load()
except botocore.exceptions.ClientError as e:
if e.response['Error']['Code'] == "404":
# The object does not exist.
...
else:
# Something else has gone wrong.
raise
else:
# The object does exist.
...
load()
は単一のキーに対して HEAD リクエストを行います。これは、問題のオブジェクトが大きい場合やバケットに多くのオブジェクトがある場合でも高速に処理できます。
もちろん、そのオブジェクトが存在するかどうかを確認するのは、それを使う予定があるからかもしれません。そのような場合は、そのオブジェクトが存在するかどうかを確認するために
load()
を実行し
get()
または
download_file()
を直接実行し、そこでエラーケースを処理します。
関連
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み] 関数内でグローバル変数を使用する
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] 与えられたキーがすでに辞書に存在するかどうかをチェックする
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] 変数が存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み】典型的なテストディレクトリ構造でunittestを実行する
-
[解決済み】boto3でエラーが発生した場合の対処方法について
-
[解決済み] S3バケット内のサブフォルダ名をboto3から取得する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピロウズ画像色処理の具体的な活用方法
-
opencvとpillowを用いた顔認証システム(デモあり)
-
Pythonコンテナのための組み込み汎用関数操作
-
PicgoのイメージベッドツールをPythonで実装する
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
Python百行で韓服サークルの画像クロールを実現する
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?