mcommit's message

ソフトウェア開発の仕事をしているsimotinといいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

AWS S3の同期用ライブラリ.Net(C#)を作りました

仕事でAWS S3を使うことがあり、windows上でS3とローカルのフォルダを同期させるようなライブラリが欲しかったのですが、いろいろ探してみてそれらしいライブラリが見当たらなかったので必要になったので作ってみました。

というか、同期ができるツールとしてAWS CLIというのがamazonから出ているのですがpythonで作られているためか日本語のファイルの同期とかがうまくできずカッとなって作りました。

Githubで公開していますので興味がある方はご自由にお使いください。


GitHub - simotin/AmazonS3Lib: .Net S3 Client Library For Sync

■使い方

使い方のサンプルとしてSampleプロジェクトのprogram.csをご参照ください。
不明点とかあればコメントしてもらえれば回答できる範囲で回答致します。

■仕様

同期と言ってもかなりざっくりと作っています。同期の仕様は以下の通りです。

1.S3上にあるファイルを全てローカルにダウンロード
2.ローカルにあるファイルを全てS3にアップロード
3.1、2で同じ名前のファイルがある場合はタイムスタンプの新しい方を優先

■QA

Q.

「いつファイルやフォルダを消すのか?」

A.

「同期処理ではファイルやフォルダの削除は行いません」
「ただし削除用のAPIは作っています。注意点としてS3上のフォルダを削除するときはフォルダ内の全てのファイルを削除しておく必要があるようです」

■補足

前提としてS3を利用するにあたっての設定が終わっていることが前提です。
S3はアクセスポリシーを適切に設定してあげないとセキュリティ上問題がでてくるので利用する前にその辺の設定とかはやっておくべきかと思います。

■できること・やりたい事

なんといっても、このライブラリをうまく活用すればオレオレDropboxができます。
DropboxTortoiseSVNみたいにファイルやフォルダにアイコンオーバーレイをかけたいのですが、C#ではできなくて、VCのAPIを使わないといけないみたいです。この辺についても今後勉強して試してみたいです。

■独り言

実は10月で30歳になるのですが、最近仕事以外でプログラミングの成果を出していないのでちょっと焦っています。

本音をいうとRubyのようなオープンソースの開発にも参加してみたいのですがなかなかそういった時間は確保できていません。せめて仕事を通して作ったものだけでもと思い公開してみました。

プログラミングは大好きなのですが、最近は自分の実力の低さを歯がゆく感じることが多いですね。