☁️

【エンジニア初学者】クラウドサービスの基礎(AWS)

に公開

クラウドサービスとは

クラウドサービスとは、インターネットを通じて「サーバー」「ストレージ」「データベース」などの機能を必要な分だけ使えるサービスのことです。

たとえば:

  • 自分のパソコンでアプリを動かす → オンプレミス
  • インターネット上のサーバーで動かす → クラウド

クラウドの特徴:

  • 初期コストが低い(サーバーを買う必要が無い)
  • 世界中からアクセスできる
  • インフラの保守管理の負担が軽減される。

中でも AWS(Amazon Web Services) はAmazon社が提供するクラウドサービスで、世界中で使われている代表的なクラウドサービスです。


AWSの基本概念

リージョンとアベイラビリティーゾーン(AZ)

リージョン:AWSのデータセンターがある地域(例:東京リージョン)
2025年の時点で30以上のリージョンが存在しています。
AZ(アベイラビリティーゾーン):1つのリージョンの中にある複数の独立したデータセンター群
例えば東京リージョンではap-northeast-1aなど、3つのAZが存在します。

AZごとに、電源・ネットワーク・物理的な場所が独立しているため、あるAZが障害を起こしても、別のAZに切り替えてシステムを動かし続けることができます。
これが高可用性(High Availability) の仕組みです。


マネージドサービスとは?

マネージドサービスとは、AWSが以下のような「面倒な作業」を代行してくれるサービスです。

  • OSのアップデート
  • ハードウェアの監視や復旧
  • サーバーのセキュリティパッチ適用
  • 負荷に応じたスケーリング(自動でリソースを増減)

つまり、インフラの運用保守に時間を取られることなく、アプリケーションやサービス開発に集中できるのがメリットです。


よく使うAWSサービスまとめ

AWS CLI(Command Line Interface)

AWSのリソースをコマンドライン(ターミナル)から操作できるツールです。

主な用途:

  • EC2インスタンスの起動・停止
  • S3へのファイルアップロード・ダウンロード
  • IAMユーザーの作成
  • バッチ処理や自動スクリプトに組み込む

インストール確認コマンド:

 aws --version

GUI操作が不要で自動化・効率化に欠かせないツールです。

AWS Systems Manager(SSM)

複数のAWSのリソースを一括で管理・監視できる便利なサービス群です。
その中でも特に使われるのが「Parameter Store」というサービスです。

Parameter Store の用途:

  • データベースのパスワードやAPIキーなどの機密情報を安全に保存
  • 環境ごとの設定値(開発・本番など)を一元管理

取得コマンド例(復号化付き):

aws ssm get-parameter --name "your-parameter" --with-decryption

JSONのクエリを使えば値だけ抽出することもできます:

--query "Parameter.Value"

Amazon EC2(Elastic Compute Cloud)

仮想サーバー(インスタンス)をクラウド上で作成・管理できるサービスです。

よくある使い方:

  • Webサーバーの構築(例:NginxやApache)
  • バッチ処理の実行
  • 簡易的なテスト環境作成

インスタンスの種類(ファミリー):

タイプ 用途の例
汎用(t3, t4gなど) 小~中規模Webアプリ、ブログなど
コンピューティング最適化(c6gなど) ゲームサーバー、計算処理が多いアプリ
メモリ最適化(r6gなど) 大規模DB、インメモリ処理
ストレージ最適化(i3など) 高速ディスクI/Oが求められるシステム

インスタンスの状態:

  • Running:実行中、料金発生中
  • Stopped:停止中、課金停止(EBS料金など一部除く)
  • Terminated:削除済み、復元不可

Amazon ECS と AWS Fargate(コンテナサービス)

ECS(Elastic Container Service)とは?
Dockerなどのコンテナ化されたアプリケーションを実行・管理できるサービスです。
Fargateとは?
インフラの管理を完全にAWSに任せられるECSの実行モードです。

  • 自分でEC2を立てなくてもコンテナを動かせる
  • スケーリングや保守も不要
  • 料金は使った分だけ

アプリをすばやくデプロイしたいときに最適です。

Amazon ECR(Elastic Container Registry)

Dockerイメージ(アプリケーションの実行に必要な設計図)を保存・共有できる保管庫(レジストリサービス)です。

  • プライベートなDocker Hubのような役割
  • ECSやEKSと組み合わせて使う
  • 自動スキャン機能でセキュリティリスクもチェック可能

Amazon SQS(Simple Queue Service)

アプリ同士のやりとりを「キュー」(順番待ち)として管理できるサービス。
直接つながずに、非同期で連携できます。

同期処理と非同期処理

同期処理は、「処理が終わるまで次に進まない」やり方です。
たとえば、自動販売機でジュースを買うとき、ボタンを押してジュースが出てくるまで待ちますよね。
その「待ってる時間」があるのが同期処理です。

非同期処理は、「処理が終わるのを待たずに次に進む」やり方です。
たとえば、フードコートで注文して番号札をもらって、呼ばれるまで好きなことをして待てるようなものです。
順番が来たら受け取るだけ。これが非同期処理です。

Amazon SQSを使うと、この非同期のやりとりができるため、システム同士が「すぐに返事を待たずに」効率よく連携できます。

キューの種類

タイプ 特徴
標準キュー 高速、安価、順序保証なし、少なくとも1回配信
FIFOキュー 順序保証あり、1回だけ配信、費用やや高め

DLQ(Dead Letter Queue)
失敗したメッセージを隔離するためのキュー(自動的に別キューに退避)。
後から手動で確認・再処理を行う事がかのうです。
DLQに入っているメッセージ数 = 失敗したメッセージ数というようなイメージです。

Amazon S3(Simple Storage Service)

あらゆるデータ(画像・動画・ログなど)を保存できるオブジェクトストレージです。

特徴:

  • 高い耐久性(99.999999999%)
  • 自動で複数AZに複製される
  • データ容量に上限なし(1ファイル最大5TB)

保存単位 = バケット
バケットとはフォルダのような概念(ただし実態は無い「フラット構造」)でアカウントごとに最大100個作成可能です。
バケット名は重複ができません(グローバルで一意)。

よく使うS3の機能:

  • バージョン管理:誤って削除しても復元可能
  • ライフサイクル設定:一定期間後に自動で削除や低コストストレージに移行
  • 静的Webサイトホスティング:HTMLや画像だけのWebサイトなら簡単に公開可能

AWSのデータベースサービス

サービス名 タイプ 用途
Amazon RDS / Aurora リレーショナル MySQL、PostgreSQLなどの一般的なDB
DynamoDB NoSQL キー・バリュー型、高速スケーラブル
Redshift 分析用 ビッグデータ分析
ElastiCache インメモリ 高速なキャッシュとして利用可能

AWSのセキュリティ基礎

AWSでは「セキュリティは最重要事項」とされており、さまざまなレベルでの保護が組み込まれています。
このセクションでは、AWSのセキュリティに関する基本的な考え方と、実践的なサービスを紹介します。

責任共有モデル(Shared Responsibility Model)

AWSでは「セキュリティはAWSだけではなく、利用者も責任を持つべきもの」という考え方が基本です。
これを「責任共有モデル」と呼びます。

AWSの責任:クラウドの"中身"

  • データセンターのセキュリティ(物理的に鍵がかかっている、監視カメラがあるなど)
  • ネットワークのインフラ(ファイアウォール、冗長構成など)
  • ハードウェアや仮想化基盤の保守・運用
  • 各AWSサービスのセキュリティ機能(暗号化、アクセス制御など)

ユーザーの責任:クラウドの"使い方"

  • OSの設定(例:Linuxのパスワードやファイアウォール設定)
  • インスタンスやS3バケットのアクセス権限管理
  • データの暗号化と保護
  • IAMユーザーの管理・ログイン制御

たとえば:
S3で「公開設定ミスにより全世界からデータが見える」という事故がたまに起きますが、これはユーザー側の責任になります。

IAM(Identity and Access Management)

AWSリソースに対して「誰が・何を・どこまで操作できるか」を管理するためのサービスです。

具体的な使い方:

  • ユーザー:開発者や管理者などのアカウントを個別に作成
  • グループ:似た役割のユーザーをまとめる(例:開発者チーム、管理者チーム)
  • ポリシー:許可・拒否のルール(JSON形式)
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*"
    }
  ]
}

上記の例では「S3に対してすべての操作を許可」という意味になります。

最小権限の原則が重要!(Principle of Least Privilege)
IAMでは「必要最小限の権限のみ与える」ことが重要です。
たとえば、「S3の読み取りだけで良いユーザーに、削除権限まで与える」と、事故の元です。

多層防御(Defense in Depth)

多層防御とは、セキュリティを1つの手段に頼らず、複数の階層(ネットワーク層・アプリ層・データ層など)に防御を施すという考え方です。

たとえば(家のセキュリティ例):

  • 鍵を閉める(アプリケーション側のセキュリティ)
  • 防犯カメラを設置(ログや監視ツール)
  • セキュリティ会社の契約(WAFや脅威検出)
    といった複数の層で守るのが理想です。

AWS WAF(Webアプリのファイアウォール)

AWS WAFは、Webアプリケーションに対する攻撃をブロックするファイアウォールです。
GuardDuty(脅威検出サービス)などが該当します。

以下のような攻撃に効果があります。

  • SQLインジェクション(データベースを不正に操作しようとする攻撃)
  • クロスサイトスクリプティング(XSS)
  • 特定のIPアドレスからの大量アクセス(DDoS攻撃)

WAFの活用例:

  • アクセスルールを設定して、不正なリクエストを事前にブロック
  • CloudFront(CDN)と組み合わせて、より広範囲の防御を実現
  • ルールはマネージドルールを利用することで簡単に設定可能

Amazon GuardDuty(脅威検出サービス)
GuardDutyは、AWSアカウント内で不審な挙動を自動的に検知してくれるサービスです。

何を検知できる?:

  • 不審なIPアドレスからのアクセス
  • いつもと異なるリージョンからのAPIコール
  • EC2インスタンス内での不正プロセス実行
    GuardDutyは、ログを解析し続けていて、問題があれば通知してくれるので、「見逃し」に強いサービスです。

データ暗号化

AWSでは、保存データ(静的)と通信中のデータ(動的) の両方を暗号化できます。

保存データの暗号化(At Rest):

  • S3のファイル、RDSのデータベース、EBS(EC2のストレージ)など
  • AWS管理の鍵 or 自分で管理する鍵(カスタマーキー)で暗号化

通信中のデータの暗号化(In Transit):

  • HTTPS(SSL/TLS)を使ってデータを暗号化
  • クライアントとAWS間、サービス間での通信も対象

AWS KMS(Key Management Service)
KMSは、暗号化に使う鍵(キー)を安全に管理するためのサービスです。

  • 鍵を自動的にローテーション(更新)できる
  • 権限を細かく設定できる(誰がどの鍵を使えるか)
  • 他のAWSサービスと連携して「暗号化有効化」が簡単にできる

たとえば:

  • S3にアップロードするファイルをKMSキーで自動暗号化
  • RDSのデータをKMSキーで暗号化してデータ漏えいを防止

フィードバック歓迎です

誤りや改善点があれば、ぜひコメントやフィードバックをいただけると嬉しいです。

Discussion