LoginSignup
1
1

More than 3 years have passed since last update.

【AWS/S3】C#でS3バケット内に特定のフォルダが存在するか確認する

Posted at

はじめに

開発環境

 - Windows10
 - VisualStudio2017
 - AWSSDK.S3のバージョンは3.3.104.39

開発言語

 - C#

やりたかったこと

S3にファイルをアップロードする際に、既にディレクトリがアップロードされているものは警告を表示するようにしたかった。

やり方

ソースコードは以下の通り。
既に存在するとtrue,存在しないとfalseが返ります。


 bool isDirExist(string Buketname ,string Path)
{
    basiccredentials = new BasicAWSCredentials(アクセスキーID,シークレットアクセスキー);

    using (var S3Client = new AmazonS3Client(basiccredentials, this.wwRegion))
    {
        ListObjectsRequest request = new ListObjectsRequest();
        request.BucketName = Buketname ;
        request.Prefix = Path;

        var response =S3Client.ListObjects(request);

        if (response.S3Objects.Count!=0) return true;
        else return false; // 存在なし

    }
}

Buketname :S3バケット名
Path:検索したいディレクトリのパス(ex. main/20200225/log1/ など)

ListObjectsのPrefix に確認したいディレクトリパスを指定しListObjectsを呼び出すと
指定したディレクトリパス配下に格納されているオブジェクトのリストを取得できます。

ディレクトリの中にファイルが存在しないのにディレクトリが作成されている・・・
という事は無いはずなので、このS3Objects.Countが0以外であればディレクトリパスが存在している ということです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1