はじめに
開発環境
- 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以外であればディレクトリパスが存在している ということです。