C#でAWS S3にデータを送受信方法
ソースコード
・usingパッケージ
using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.IO;
using System, using System.IOは標準で呼び出せる。
using Amazon, using Amazon.S3, using Amazon.S3.ModelはNugetパッケージマネージャからインストールする。
・C#からAWS S3へのデータ送信ソースコード
static IAmazonS3 client; static string bucketName = ""; //バケット名の入力 static string profileName = "default"; static string accessKey = ""; //アクセスキーの入力 static string secretKey = ""; //シークレットキーの入力 [Obsolete] static void Main(string[] args) { Amazon.Util.ProfileManager.RegisterProfile(profileName, accessKey, secretKey); using (client = new AmazonS3Client(RegionEndpoint.APNortheast1)) { string[] files = Directory.GetFiles("folder", "*", SearchOption.AllDirectories); foreach (string str in files) { string str2 = str.Replace("\\", "/"); WritingAnObject(str, str2); } } } static async void WritingAnObject(string filename, string filename2) { try { PutObjectRequest putRequest = new PutObjectRequest { BucketName = bucketName, Key = filename2, FilePath = filename }; PutObjectResponse response = await client.PutObjectAsync(putRequest); Console.WriteLine("Status Code: " + response.HttpStatusCode); } }
ソースコード解説
バケット名, アクセスキー, シークレットキーはご自身のAWSのキーを使用。
アクセスキー、シークレットキーはIAMユーザーの認証情報から取得可能。
Amazon.Util.ProfileManager.RegisterProfile("string", "string", "string")で後のprofileNameで参照できるプロファイルを登録する。
client = new AmazonS3Client(RegionEndPoint.APNortheast1)
new AmazonS3Client()でアプリケーションのデフォルト設定から読み込まれた認証情報を使用してAWSS3Clientを構築。
RegionEndPoint.APNortheast1はリージョンの設定。
using(){} はusingステートメントといってリソースの破棄を行う。
(ファイルなどはアンマネージド型リソースなのでリソースの権利取得から操作、破棄までのプログラムを記述しなければならないが、usingでリソースの破棄するプログラムを省略でき、簡略化することが可能)
string[] files = Directory.GetFiles("folder", "*", SearchOption.AllDirectories);
Directory.GetFiles()は指定したディレクトリ内のファイル名前(パスを含む)を返す。
folder, "*", SearchOption.AllDirectoriesは「(自分のソースコード配置位置)\bin\Debug\net6.0」内にfolderの中のデータすべてを意味する。
ワイルドカード"*"はすべてのフォルダを意味する。(正規表現)
SearchOption.AllDirectoriesはサブフォルダも含めたすべてのフォルダを取得する。