🧭
aws-sdk-rubyでS3上のファイルの存在チェックをする方法
aws-sdk-rubyを使って、S3上に特定のファイルが存在するかどうかチェックする方法をまとめました。
前提
AWS SDK for Ruby Version 3のaws-sdk-s3を使用します。
実装
# Aws::S3::Clientを事前にセットアップしておく
@s3_client = Aws::S3::Client.new
def exists?(key)
@s3_client.head_object(key)
true
rescue StandardError
false
end
Aws::S3::Client#head_objectというメソッドを使用します。
head_objectとはオブジェクトのメタ情報のみを取得するメソッドです。
get_objectだとオブジェクト自体を取得してしまいますが、head_objectだと取得するのはファイルのメタ情報のみですので軽量でオススメです。
rescue StandardError
しているのは、ファイルが存在しない場合にAws::S3::Errors::NotFound
が発生するためです。権限エラー時は別の例外クラスが発生したりしますので、一律StandardErrorとしてキャッチしています。
迷ったら公式リファレンスをチェックしよう
「Aws::S3::Clientを使用して他のことをやりたいんだけど、サンプルソースが見つからない」という場合は公式リファレンスをチェックすると良いでしょう。
アクセスすると、使用できるメソッドの一覧が表示されます。単語でページ内検索をして、やりたいことに近いメソッドを検索しましょう。
AWS SDKはS3:Client以外のもさまざまなクラスが存在します。他のクラスの仕様を確認したい場合は、URLのAws/S3/Client.html
のところを該当のクラスに変更すればAPIリファレンスが確認できます。
Discussion