Amazon S3 とは?基本的な使い方や料金を学ぼう
AWS でドキュメントや画像を格納するとしたら、S3 が最初の候補になります。しかし、適当に S3 を使ってしまうと、後からセキュリティやコストで苦労することが多くなるため、基本的な Amazon S3 の使い方を説明します。
Amazon S3 とは
ドキュメント、画像、動画などデータを格納できるストレージサービスです。S3 ではデータのことをオブジェクトと言い、オブジェクトを格納するリソースをバケットと言います。基本的にはオブジェクトを格納するサービスになりますが、用途に合わせてコストを抑えたり、意図せずオブジェクトが公開されないようにセキュリティを意識する必要があります。
Amazon S3 とは - Amazon Simple Storage Service
クラウドへのデータの保存と、Amazon S3 ウェブサービスでのバケットとオブジェクトの中心的概念を説明します。
料金
S3 の料金は実際に使用した分だけ発生する従量課金になります。主にどれぐらいのオブジェクトサイズをどのストレージクラスに保存したかで決まります。他にはリクエストやデータ転送などありますが、100 万リクエストを超えてから意識すれば問題ないです。
S3 料金
ストレージクラス
色々ありますが、良く使うストレージクラスは以下になります。デフォルトは S3 標準になっているため、バックアップ目的などで頻繁にアクセスしない場合は、ストレージクラスを変更してコストを抑えましょう。
Amazon S3 ストレージクラスの理解と管理 - Amazon Simple Storage Service
ユースケースシナリオとパフォーマンスアクセス要件を考慮して、Amazon S3 に格納するオブジェクトのために、耐久性の高いストレージクラスを選択する方法について説明します。
| 用途 | ストレージクラス | 料金 (東京リージョン) |
|---|---|---|
| 頻繁に使用する | S3 標準 | USD 0.025/GB |
| 月に数回使用する | S3 標準 - 低頻度アクセス | USD 0.0138/GB |
| 四半期に使用する | S3 Glacier Instant Retrieval | USD 0.005/GB |
| ほぼ使用しない | S3 Glacier Deep Archive | USD 0.002/GB |
セキュリティ
S3 のセキュリティ問題は多く、外部からアクセスできてしまった場合、機密情報が漏洩するリスクがあります。そのため、S3 のアクセス許可を制限し、必要なユーザーやサービスからのみアクセスできるようにしましょう。なお、外部に公開する予定がないのであれば、必ずパブリックアクセスはブロックしておくことをお勧めします。
Amazon S3 のセキュリティのベストプラクティス - Amazon Simple Storage Service
Amazon S3 でのセキュリティ問題に対処するためのガイドラインとベストプラクティスについて説明します。
Amazon S3 ストレージへのパブリックアクセスのブロック - Amazon Simple Storage Service
Amazon S3 でパブリックアクセスのブロックを使用する方法について説明します。
パブリックアクセスは、アクセスコントロールリスト (ACL)、アクセスポイントポリシー、バケットポリシー、またはそのすべてからバケットおよびオブジェクトに付与されます。Amazon S3 のすべてのアクセスポイント、バケット、オブジェクトへのパブリックアクセスを確実にブロックするために、アカウントへのパブリックアクセスをブロックする 4 つの設定をすべて有効にすることをお勧めします。
AWS CLI で S3 を使ってみる
AWS CLI で S3 を使ってみましょう。実際にコマンドを実行した場合にどうなるか結果を記載します。
バケットの作成
バケット名はすべてのアカウントで一意になりますので、固有の名称を付けて一意の名前にしましょう。なお、AWS CLI のプロファイルで指定したリージョンに作成されます。
❯ aws s3 mb s3://exrecord-test-bucket
make_bucket: exrecord-test-bucket
バケットが作成されたことを確認します。
❯ aws s3 ls
2026-04-12 05:07:26 exrecord-test-bucket
パブリックアクセスの設定を確認します。すべての項目が true であれば、外部からアクセスできない安全な状態です。
❯ aws s3api get-public-access-block --bucket exrecord-test-bucket
{
"PublicAccessBlockConfiguration": {
"BlockPublicAcls": true,
"IgnorePublicAcls": true,
"BlockPublicPolicy": true,
"RestrictPublicBuckets": true
}
}
オブジェクトのアップロード
ローカルのファイルを S3 バケットにアップロードします。
❯ aws s3 cp test.txt s3://exrecord-test-bucket
upload: ./test.txt to s3://exrecord-test-bucket/test.txt
バケット内のオブジェクト一覧は以下で確認できます。バケット作成と同じコマンドでバケットを指定します。
❯ aws s3 ls s3://exrecord-test-bucket
2026-04-12 05:10:22 0 test.txt
オブジェクトのダウンロード
S3 バケットからローカルにファイルをダウンロードします。アップロードとは引数の順番が逆という違いであるため、注意が必要です。
❯ aws s3 cp s3://exrecord-test-bucket/test.txt .
download: s3://exrecord-test-bucket/test.txt to ./test.txt
まとめ
S3 がどういうサービスであったり、基本的な使い方について説明しました。AWS を利用する上で S3 はほぼ必ず使用することになるため、以下のポイントを押さえた使い方をしていきましょう。
- パブリックアクセスブロック設定を必ず確認する
- 必要最小限のアクセス権限のみを付与する
- アクセス頻度に応じたストレージクラスを選択してコストを最適化する
これらを意識することで、安全かつコスト効率の良い S3 運用ができます。