【ASP.NET Core(C#)】AWS S3からオブジェクトを取得したり更新したりする方法。
はじめに
ASP.NET CoreプロジェクトでAWS S3からオブジェクトを取得したり更新したりする方法を記載します。
NugetからAWSSDK.S3を取得する
Visual Studioにてプロジェクトを右クリック→「Nugetパッケージの管理」よりAWSSDK.S3をインストールします。
S3からオブジェクトを取得する
S3からオブジェクトを取得する際はGetObjectAsyncメソッドを用います。
AmazonS3Client.GetObjectAsync Method (string, string, CancellationToken) | AWS SDK for .NET V3
return await _amazonS3Client.GetObjectAsync("バケット名", "キー名");
S3へオブジェクトを作成/更新する
S3へオブジェクトを作成/更新する際はPutObjectAsyncメソッドを用います。
AmazonS3Client.PutObjectAsync Method (PutObjectRequest, CancellationToken) | AWS SDK for .NET V3
var putRequest = new PutObjectRequest { BucketName = "バケット名", Key = "キー名", FilePath = アップロードするファイル }; await _amazonS3Client.PutObjectAsync(putRequest);
キー名が同じものがある場合は更新され、それ以外の場合は新規作成されます。
サンプルコード
今回書いたサンプルコード(一部分)も載せておきます。
public interface IResolveS3Repository { /// <summary> /// S3からCSVファイルを取得します。 /// </summary> /// <returns></returns> ValueTask<GetObjectResponse> GetCsvFile(); /// <summary> /// S3のCSVファイルを更新します。 /// </summary> /// <returns></returns> ValueTask UpdateCsvFile(); } public class ResolveS3Repository : IResolveS3Repository { private readonly AWSConfig _awsConfig; private readonly LocalStorageConfig _localStorageConfig; private readonly IAmazonS3 _amazonS3Client; public ResolveS3Repository( IOptions<AWSConfig> awsConfig, IOptions<LocalStorageConfig> localStorageConfig, IAmazonS3 amazonS3Client) { _awsConfig = awsConfig.Value; _localStorageConfig = localStorageConfig.Value; _amazonS3Client = amazonS3Client; } public async ValueTask<GetObjectResponse> GetCsvFile() => await _amazonS3Client.GetObjectAsync(_awsConfig.S3.BacketName, _awsConfig.S3.Key); public async ValueTask UpdateCsvFile() { var putRequest = new PutObjectRequest { BucketName = _awsConfig.S3.BacketName, Key = _awsConfig.S3.Key, FilePath = _localStorageConfig.CsvPath }; await _amazonS3Client.PutObjectAsync(putRequest); } }