TECH MEDIA

テックメディア


ノウハウ
Amazon S3

【C#】Amazon S3とのオブジェクト連携方法 Part.2

目次
  1. 01|はじめに
  2. 02|Amazon S3のアップロード時にメタデータを持たせる方法
  3. 03|転送速度高速化「Transfer Acceleration」
  4. 04|フロント画面からの参照
  5. 05|さいごに

1. はじめに

こんにちは。三度の飯より酒が好き。エンジニアの岩澤です。
今回はAWSの中でも主要サービスの「Amazon S3」とアプリケーションのオブジェクト連携方法part2となります。

こちらでは、前回紹介したアップロードなどの応用や実際にS3に保存したオブジェクトの参照方法などについて紹介したいと思います。

 

※Part.1を先にお読みになってからご一読ください!

2. Amazon S3のアップロード時にメタデータを持たせる方法

Amazon S3ではオブジェクトのアップロードを行った際に更新日には、S3にオブジェクトが挙げられた日時が保存されます。
そのため、ローカルのファイルの更新日が「2023/01/01 11:00:00」だったとしてもアップロード時には、
アップロード日の時間がS3のオブジェクトの更新日となってしまいます。
これだと、例えば「ローカルの画像がS3にアップロードされている画像よりも新しい画像だったら~」などという
条件でアップロードを分岐する際に、ローカルとS3では同一の画像でも更新日として保持している情報が異なります。
そのような場合に、S3の各オブジェクトに独自のプロパティのようなものを持たせたい!と思いませんか?
そんな時に活躍するのが「メタデータ」です。

 

例)ローカルの画像が持つ最終更新日をメタデータとしてS3のオブジェクトにセットしアップロードする

// クライアント生成
var client = new AmazonS3Client(
    "xxxxx", // アクセスキー
    "yyyyy", // シークレットアクセスキー
    RegionEndpoint.APNortheast1); // エンドポイント(RegionEndpointの定数から指定可能)
 
// 転送用クラス
var transferUtility = new TransferUtility(client);
 
// 転送対象ファイルのリクエスト情報生成
var uploadRequest = new TransferUtilityUploadRequest
{
    BucketName = "testBucket", // バケット名
    Key = "/test/A.jpg", // 転送した後のS3配置ディレクトリ(S3キー)
    FilePath = file // 転送対象のローカルのファイルパス
};
 
// メタデータとして、「lastmodified」という名前でファイル更新日を定義する
uploadRequest.Metadata.Add("lastmodified", localLastModified);
 
// アップロード
transferUtility.Upload(uploadRequest);

 

上記のようにコードを書くことで、メタデータとしてオブジェクトに値を持たせることができます。
ここで定義したメタデータはもちろん後に取得なども可能で、
下記のようにAWSのコンソール画面から各オブジェクトの
メタデータを確認することもできます。

3. 転送速度高速化「Transfer Acceleration」

Amzaon S3に対して大量にアップロードを行う場合ネックとなってくるのがやはりパフォーマンスです。
そのような際に便利なサービスとしてS3への転送ルートの最適化を行ってくれる「Transfer Acceleration」があります。
こちらを利用することで、Amazon S3に対してファイルをアップロードする際に通常よりも高速な転送速度を実現することができます。
「Transfer Acceleration」は、バケットレベルで有効化を行うことができるので、
ぜひ転送速度をネックに感じた際には利用の検討をオススメします。
♥注意
地理的に遠いリージョンにあるバケットに対して高速化の効果が大きいため、
リージョンの距離によっては効果が大きく得られない可能性があります。

4. フロント画面からの参照

S3の画像を参照する方法はシンプルです。
S3にはそのオブジェクトへの参照を行うための
オブジェクトURLというものが各オブジェクトに発行されます。
そのオブジェクトURLを利用することでアクセスが可能となります。
例)オブジェクトURLを指定してS3に格納している画像を参照する
<img src="オブジェクトURL" alt="s3画像" />

5. さいごに

Part1,2と2本立てでAmazon S3とのオブジェクト連携や参照方法について紹介していきました。
やはり、世はクラウド時代。
その中でもトップクラスに利用されているAWSのストレージサービス
Amazon S3」とのオブジェクト連携は今後も必要不可欠になってくるものであると思います。
実際に利用する際にはパフォーマンスの観点から並列化実装などを行い
大きなデータを素早く処理できるようにすることを強くオススメしますが、
今回は簡潔に取得・アップロード・参照にフォーカスをあてて紹介しました。
今回紹介したもの以外にも、様々なメソッドやクラスがAWSから提供されているので、
ぜひご興味ありましたらAWSとの連携で遊んでみてください。
この記事をお読みの皆さんの少しでもお役に立てたら幸いです。
ここまで読んでいただきいただきありがとうございました!
RECRUIT 採用情報

「eビジネスに関わる全ての人を幸せにする」
私達とともに新たな時代をつくりませんか?