[Node.js] AWS.S3.getObject メソッドを実行したときにファイルが存在しなかった場合のエラーを見分ける

作成日: 2022年08月01日

AWS.S3.getObject メソッドで取得しようとしたときに、Key に存在しないファイルを指定すると、エラーがスローされます。そのエラーを try-catch 構文で捕捉し、エラーオブジェクトの code プロパティのエラーコードを判別することでエラーの種類を判別することができます。下記のコードでは、ファイルが存在しないときに発生する NoSuchKey エラーの場合に、ログを出力してプログラムを終了しています。

const AWS = require("aws-sdk");

async function main() {
  const s3 = new AWS.S3({
    region: "ap-northeast-1",
  });

  const result = null;
  try {
    result = await s3
      .getObject({
        Bucket: "dummy.s3.example.com",
        Key: "dummy_files/dummy_file_does_not_exist.txt",
      })
      .promise();
  } catch (e) {
    if (e.code === "NoSuchKey") {
      console.log("the file does not exist");
      return;
    }
  }

  console.log(result.Body.toString());
}

main();

実行結果は下記のとおりです。

the file does not exist
Node.js AWS