bashスクリプトでS3バケット内のファイルの有無を判断する方法とは?

2024/03/05に公開

はじめに

bashスクリプトでS3バケット内のファイルの有無を判断する方法についてアウトプットしたいと思います。

前提

  • S3バケット作成済み
  • MacからAWS環境にアクセス
  • AWSCLIが使用可能
awscliバージョン
$ aws --version
aws-cli/2.15.11 Python/3.11.6 Darwin/23.2.0 exe/x86_64 prompt/off
$

スクリプト

aws s3 lsgrep -wを組み合わせたコマンドを実行し、戻り値で判断します。

s3-filecheck.sh
#!/bin/bash

aws s3 ls s3://testbucket0983/folder/2024/02/21/test.txt | grep -w "test.txt"

if [ $? -eq 0 ]; then
  echo "ファイルがあります。"
else
  echo "ファイルがありません。"
fi

実行結果は、以下になります。

  • ファイルがある場合
実行結果
$ sh s3-filecheck.sh
2024-03-05 19:22:52          0 test.txt
ファイルがあります。
$
  • ファイルがない場合
実行結果
$ sh s3-filecheck.sh
ファイルがありません。
$

参考

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-services-s3-commands.html#using-s3-commands-listing-buckets

https://tech.kurojica.com/archives/9576/

Discussion