導入
Amazon S3は、ファイル(オブジェクト)を大量・安価・高耐久に保管するクラウドストレージです。画像・バックアップ・ログなど、あらゆるファイルの保存先として実務で最も使われるAWSサービスの1つです。
図解
flowchart LR
APP["C♯アプリ"] -->|PutObject(アップロード)| B["S3 バケット<br/>(ファイルの入れ物)"]
B -->|GetObject(ダウンロード)| APP
style B fill:#fff3e0
サンプル(読み物)
using Amazon.S3;
using Amazon.S3.Model;
var s3 = new AmazonS3Client(Amazon.RegionEndpoint.APNortheast1);
string bucket = "my-app-bucket";
// アップロード(PutObject)
await s3.PutObjectAsync(new PutObjectRequest
{
BucketName = bucket,
Key = "reports/2026-07.txt", // バケット内のパス(キー)
ContentBody = "月次レポートの内容",
});
// ダウンロード(GetObject)
using var response = await s3.GetObjectAsync(bucket, "reports/2026-07.txt");
using var reader = new StreamReader(response.ResponseStream);
string content = await reader.ReadToEndAsync();
Console.WriteLine(content); // 月次レポートの内容
- バケットがファイルの入れ物、キーがバケット内のパス(
reports/2026-07.txt) PutObjectAsyncでアップロード、GetObjectAsyncでダウンロード(すべてawait)- 大きなファイルは
TransferUtilityで分割アップロードもできる - 公開範囲はバケットポリシー/ACLで制御(既定は非公開。安易な公開は情報漏洩の原因)
詳細手順
- AWSコンソールでS3バケットを作成する
- スターター
144-aws-s3/starter.zipを開き、バケット名を自分のものに変更してF5実行する - アップロード後、S3コンソールでファイルが増えていることを確認する
まとめ
- S3はファイル(オブジェクト)を保管するクラウドストレージ
- バケット+キーで管理、
PutObjectAsync/GetObjectAsyncで読み書き - 公開範囲の設定を誤ると情報漏洩になる(既定の非公開を尊重)
次回: NoSQLデータベースAmazon DynamoDBです。
テンプレート構成(教材制作用メモ)
144-aws-s3/
└── starter.zip # AWSSDK.S3導入済み / アップロード&ダウンロードのTODO / README