🧭

aws-sdk-rubyでS3上のファイルの存在チェックをする方法

2021/11/17に公開

aws-sdk-rubyを使って、S3上に特定のファイルが存在するかどうかチェックする方法をまとめました。

前提

AWS SDK for Ruby Version 3のaws-sdk-s3を使用します。

https://github.com/aws/aws-sdk-ruby:embed:cite

実装


# 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を使用して他のことをやりたいんだけど、サンプルソースが見つからない」という場合は公式リファレンスをチェックすると良いでしょう。

https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/S3/Client.html

アクセスすると、使用できるメソッドの一覧が表示されます。単語でページ内検索をして、やりたいことに近いメソッドを検索しましょう。

AWS SDKはS3:Client以外のもさまざまなクラスが存在します。他のクラスの仕様を確認したい場合は、URLのAws/S3/Client.htmlのところを該当のクラスに変更すればAPIリファレンスが確認できます。

Discussion