本文へスキップ
BecomeCoder

C#実践コース · 第9章 AWS SDK for .NET · レッスン52

Amazon S3 ― ファイルの保存と取得

ローカル実施

導入

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で制御(既定は非公開。安易な公開は情報漏洩の原因)

詳細手順

  1. AWSコンソールでS3バケットを作成する
AWS S3コンソールで新しいバケットを作成する画面
S3コンソールでバケットを作成
  1. スターター144-aws-s3/starter.zipを開き、バケット名を自分のものに変更してF5実行する
  2. アップロード後、S3コンソールでファイルが増えていることを確認する
S3バケット内にアップロードされたファイルが表示されている画面
アップロードされたオブジェクトの確認

まとめ

  • S3はファイル(オブジェクト)を保管するクラウドストレージ
  • バケット+キーで管理、PutObjectAsync/GetObjectAsyncで読み書き
  • 公開範囲の設定を誤ると情報漏洩になる(既定の非公開を尊重)

次回: NoSQLデータベースAmazon DynamoDBです。

テンプレート構成(教材制作用メモ)

144-aws-s3/
└── starter.zip   # AWSSDK.S3導入済み / アップロード&ダウンロードのTODO / README