📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の13版が非表示) | |||
| 12行目: | 12行目: | ||
* 適切な設定により柔軟に性能を向上できる。(パフォーマンス) | * 適切な設定により柔軟に性能を向上できる。(パフォーマンス) | ||
* アクセス権限を簡単に設定できる。(セキュリティ) | * アクセス権限を簡単に設定できる。(セキュリティ) | ||
<br> | |||
[[ファイル:AWS Amazon EC2 1.png|フレームなし|中央]] | |||
<br> | <br> | ||
また、より機能を限定したSaaSやPaaSと比較した場合の特徴としては、「様々なことができるが、何かをするためには自身で逐次設定が必要である」ことが挙げられる。<br> | また、より機能を限定したSaaSやPaaSと比較した場合の特徴としては、「様々なことができるが、何かをするためには自身で逐次設定が必要である」ことが挙げられる。<br> | ||
ただし、近年ではサーバーレス技術を用いて設定管理を簡略化できるFargateやLambda等のサービスに置き換えられることも増えている。<br> | ただし、近年ではサーバーレス技術を用いて設定管理を簡略化できるFargateやLambda等のサービスに置き換えられることも増えている。<br> | ||
<br> | <br> | ||
しかし、様々なことができ、かつ、料金が安いというAmazon EC2の特徴は多くの企業にとって魅力的である。<br> | |||
<br><br> | <br><br> | ||
| 197行目: | 199行目: | ||
<u>また、EBSのみで使用できる機能であるため、インスタンスストアでは使用できないことに注意する。</u><br> | <u>また、EBSのみで使用できる機能であるため、インスタンスストアでは使用できないことに注意する。</u><br> | ||
<br> | <br> | ||
<u>スナップショットによるバックアップの詳細は、[[ | <u>スナップショットによるバックアップの詳細は、[[AWS - Amazon EC2#バックアップ]]のページを参照すること。</u><br> | ||
<br> | <br> | ||
===== インスタンスストア ===== | ===== インスタンスストア ===== | ||
一般的に、Amazon EC2のストレージにはEBSが使用されるが、一部のインスタンスタイプではインスタンスストアと呼ばれるストレージが選択できる。<br> | 一般的に、Amazon EC2のストレージにはEBSが使用されるが、一部のインスタンスタイプではインスタンスストアと呼ばれるストレージが選択できる。<br> | ||
| 246行目: | 249行目: | ||
<br><br> | <br><br> | ||
== | == ネットワーク == | ||
外部からAmazon EC2へアクセスする場合は、ネットワークの構築をする必要がある。<br> | 外部からAmazon EC2へアクセスする場合は、ネットワークの構築をする必要がある。<br> | ||
<br> | <br> | ||
| 276行目: | 279行目: | ||
デフォルトの設定において、Amazon EC2インスタンスを作成するとデフォルトのVPCが自動的に紐付けられるため、単一のAmazon EC2であればVPCを意識しなくとも使用できる。<br> | デフォルトの設定において、Amazon EC2インスタンスを作成するとデフォルトのVPCが自動的に紐付けられるため、単一のAmazon EC2であればVPCを意識しなくとも使用できる。<br> | ||
しかし、複雑なシステムを構築する場合は、VPCの知識は必須となる。<br> | しかし、複雑なシステムを構築する場合は、VPCの知識は必須となる。<br> | ||
[[ファイル:AWS Amazon EC2 VPC 1.png|フレームなし|中央]] | |||
<br> | |||
VPCの詳細を知りたい場合は、[[AWS - Amazon VPC]]のページを参照すること。<br> | |||
<br> | <br> | ||
==== ENI ==== | ==== ENI ==== | ||
ENI (Elastic Network Interface) サービスを着脱 (アタッチ / デタッチ) することにより、ネットワークへの接続経路、すなわちインスタンスに付与されたIPアドレスの数を増減することができる。<br> | ENI (Elastic Network Interface) サービスを着脱 (アタッチ / デタッチ) することにより、ネットワークへの接続経路、すなわちインスタンスに付与されたIPアドレスの数を増減することができる。<br> | ||
| 343行目: | 350行目: | ||
AWSにおいては、公開鍵認証にキーペアを使用してSSH接続する。<br> | AWSにおいては、公開鍵認証にキーペアを使用してSSH接続する。<br> | ||
<br> | <br> | ||
詳細については、[[AWS - Amazon EC2#セキュリティ機能#キーペア]]のページおよび[[AWS - Amazon EC2#セキュリティ機能#セキュリティグループ]]のページを参照すること。<br> | |||
<br><br> | <br><br> | ||
| 398行目: | 393行目: | ||
<br> | <br> | ||
==== キーペア ==== | ==== キーペア ==== | ||
キーペアとは、Amazon EC2インスタンスへの接続において、公開鍵認証に使用する鍵を指す。<br> | |||
公開鍵をサーバ側で保持して、秘密鍵をクライアント側で保持することにより、公開鍵認証によるSSH接続を行う。<br> | |||
<br> | |||
<u>なお、一般的なオンプレで使用する公開鍵との違いがあることに注意する。</u><br> | |||
* 一般的なオンプレではクライアント側で両鍵を生成するが、キーペアではサーバ側(AWS側)で鍵を生成する。 | |||
* 秘密鍵をAWSからのダウンロードする場合は、1度しかできない。<br>秘密鍵を紛失した場合は、キーペアの再生成が必要となる。 | |||
<br> | |||
また、一般的なオンプレと同様、公開鍵と秘密鍵の特性から以下に示すことが成り立つ。<br> | |||
* 秘密鍵を複数のクライアントで共有する事は避けるべきである。 | |||
* 公開鍵(インスタンス起動時に選択する鍵)を複数のインスタンスで共有することは構わない。 | |||
<br> | <br> | ||
==== セキュリティグループ ==== | ==== セキュリティグループ ==== | ||
セキュリティグループとは、インスタンスをグルーピングしてIPアドレスとポート番号に基づくアクセス制限を設定することにより、ファイアウォールのようなアクセス制御を実現する機能である。<br> | |||
セキュリティグループはVPC内部の機能のため、詳細を知りたい場合は、[[AWS - Amazon_EC2#VPC|AWS - Amazon_EC2#VPC]]のページを参照すること。<br> | |||
<br> | <br> | ||
==== EC2 Image builder ==== | ==== EC2 Image builder ==== | ||
| 406行目: | 413行目: | ||
<br> | <br> | ||
EC2 Image builderの詳細を知りたい場合は、[https://dev.classmethod.jp/articles/ec2-image-builder/ DevelopersIOのWebサイト]を参照すること。<br> | EC2 Image builderの詳細を知りたい場合は、[https://dev.classmethod.jp/articles/ec2-image-builder/ DevelopersIOのWebサイト]を参照すること。<br> | ||
<br><br> | |||
== バックアップ == | |||
Amazon EC2インスタンスをサービスに利用する場合、耐障害性等を考慮すると定期的にバックアップを取得する必要がある。<br> | |||
バックアップには、AMIとスナップショットの2種類の方法があり、これらバックアップを自動取得するためのライフサイクルマネージャやAWS Backupを使用する。<br> | |||
<br> | |||
==== AMIおよびスナップショットによるバックアップの違い ==== | |||
スナップショットを取得できるのはEBS使用時のみであるため、インスタンスストアは考慮しないものとする。<br> | |||
<br> | |||
バックアップ元のインスタンス内容を再現するためには、AMIとスナップショット両方を取得する必要がある。<br> | |||
AMIとスナップショットは、下表に示すように保持している情報が異なり、両方が揃って初めてインスタンスの構成情報を再現できる。<br> | |||
<br> | |||
<center> | |||
{| class="wikitable" | style="background-color:#fefefe;" | |||
|- | |||
! style="background-color:#66CCFF;" | 種類 | |||
! style="background-color:#66CCFF;" | 保持している情報 | |||
|- | |||
| AMI || インスタンスの構成情報<br>(アーキテクチャ + 紐付くスナップショット等) | |||
|- | |||
| スナップショット || EBS内のデータ<br>(OSの実イメージ + ユーザがインストールしたソフトウェア等) | |||
|} | |||
</center> | |||
<br> | |||
AMIは、スナップショットの紐付け情報も保持しているため、AMIはスナップショットを内包する存在とみなすこともできる。<br> | |||
したがって、実用上はAMIのみを取得することによりスナップショットを兼ねることができ、両者を別個にバックアップする必要性は低い。<br> | |||
下図に示すように、AMI作成画面には、同時にスナップショットを取得する機能が存在する。<br> | |||
<br> | |||
また、AMIもスナップショットもインスタンスタイプやネットワーク等の情報は保持していないため、これらを起動テンプレートとして保存することにより、より迅速なインスタンスの復旧が実現できる。<br> | |||
一方、ライフサイクルマネージャでバックアップを自動化する場合は、より更新頻度の高いスナップショットを高頻度に、それほど頻繁に変化しないAMIは低頻度にしても構わない。<br> | |||
<br> | |||
==== AMI / スナップショットの注意点 ==== | |||
* AMIをバックアップとして使用する場合の注意点 | |||
*: AMIを長期間放置する場合、セキュリティパッチが当たっていないため、EC2 Image builderで定期的に更新することを推奨する。 | |||
*: AMIはリージョンごとに固有なため、リージョンごとに別個に取得が必要である。 | |||
*: ただし、[https://aws.amazon.com/jp/premiumsupport/knowledge-center/copy-ami-region/ 他のリージョンにコピーする機能]がある。 | |||
*: <br> | |||
*: AMIを[https://docs.aws.amazon.com/ja%20jp/AWSEC2/latest/UserGuide/sharingamis-explicit.html 他のアカウントと共有]することもできる。 | |||
*: <br> | |||
* スナップショットの注意点 | |||
*: スナップショットの作成と復元は有料である。 | |||
*: スナップショットはリージョンごとに固有なため、リージョンごとに別個に取得が必要となる。 | |||
*: ただし、[https://docs.aws.amazon.com/ja%20jp/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html 他のリージョンにコピーする機能]がある。 | |||
*: <br> | |||
*: スナップショットを[https://docs.aws.amazon.com/ja%20jp/AWSEC2/latest/UserGuide/ebs-copy-snapshot.html 他のアカウントと共有]することもできる。 | |||
*: スナップショットの詳細や作成手順を知りたい場合は、[https://docs.aws.amazon.com/ja%20jp/AWSEC2/latest/UserGuide/EBSSnapshots.html AWSの公式Webサイト]を参照すること。 | |||
<br> | |||
==== ライフサイクルマネージャ ==== | |||
ライフサイクルマネージャは、ルール(ポリシー)に基づき、インスタンスのバックアップ作成を自動化するための機能である。<br> | |||
インスタンスのバックアップにはAMIとスナップショットの2種類が存在するが、ライフサイクルマネージャではいずれかを選択することができる。<br> | |||
<br> | |||
例えば、「毎日0時にスナップショットによるバックアップを作成する」というポリシーを作成することができる。<br> | |||
<br> | |||
設定方法の詳細については、[https://dev.classmethod.jp/articles/ec2-snapshot-by-amazon-dlm/ DevelopersIOのWebサイト]を参照すること。<br> | |||
<br> | |||
==== AWS Backup ==== | |||
ライフサイクルマネージャと似たサービスとして、AWS Backupがある。<br> | |||
<br> | |||
ライフサイクルマネージャがAmazozn EC2の機能であるのに対して、AWS Backupは単独のサービスとして提供されているため、Amazon EC2以外のサービスのバックアップ (RDS、EFS、DynamoDB等)にも対応している。<br> | |||
<br> | |||
AWS BackupにおけるAMIのバックアップ機能は、2020年末にライフサイクルマネージャも対応したため、Amazon EC2のバックアップであれば大きな隔たりはない。<br> | |||
ただし、世代管理の方法に差があったり、AWS BackupはAMIには含まれないインスタンスタイプ等の情報も保持するため、他のサービスとの併用の有無(例: RDS等と併用する等)を考慮して、どちらを使用するかを決定する。<br> | |||
<br> | |||
インスタンスタイプ等を保持できるAWS Backupの方が汎用性が高いと思われる。<br> | |||
<br><br> | |||
== その他の機能 == | |||
ネットワーク、セキュリティ、バックアップの機能以外にも、Amazon EC2には下表に示す機能が存在する。<br> | |||
<br> | |||
<center> | |||
{| class="wikitable" | style="background-color:#fefefe;" | |||
|- | |||
! style="background-color:#66CCFF;" | 名称 | |||
! style="background-color:#66CCFF;" | 説明 | |||
|- | |||
| 起動テンプレート || インスタンス起動時の設定をテンプレート登録して、次回以降の入力を簡略化する。 | |||
|- | |||
| 専有ホスト<br>(Dedicated Hosts) || 1台の物理サーバを1人のユーザで専有して、ソフトウェアライセンスの持ち込みや該当するセキュリティ要件への対応を実現する。 | |||
|- | |||
| キャパシティの予約 || キャパシティ(計算資源)の確保により、起動エラーを防いで特定の期間インスタンスの確実な起動を確保する。 | |||
|} | |||
</center> | |||
<br> | |||
==== 起動テンプレート ==== | |||
インスタンスの起動時には、AMI、インスタンスタイプ、ストレージ等の様々な設定を適用することができる。<br> | |||
<br> | |||
例えば、同じ設定のインスタンスを複数起動する場合、これらの設定を毎回入力していては面倒である。<br> | |||
そのため、インスタンス起動時の設定を<u>起動テンプレート</u>として登録することにより、次回以降の設定を簡略化することができる。<br> | |||
<br> | |||
特に、起動テンプレートはAuto Scalingの使用時は必須ともいえる機能であり、Auto Scalingグループ内の全てのインスタンスに当機能で作成した設定を渡すことができる。<br> | |||
<br> | |||
==== 専有ホスト (Dedicated Hosts) ==== | |||
一般的に、AWSのようなIaaSでは1台の物理サーバを複数台の仮想サーバで共有しており、複数のAWSアカウントのユーザが1台の物理サーバを共有した状態となることが多い。<br> | |||
専有ホストでは、1台の物理サーバを1人のユーザで専有することができ、以下に示す用途に用いられる。<br> | |||
* ユーザ独自のソフトウェアライセンスの持ち込み (AWSで提供されていないOS等) | |||
* コンプライアンス(セキュリティ要件)上、他ユーザと同じサーバでの動作を避ける場合 | |||
<br> | |||
専有ホストと似たサービスに[https://aws.amazon.com/jp/ec2/pricing/dedicated-instances/ ハードウェア専有インスタンス]がある。<br> | |||
ハードウェア専有インスタンスも、<u>同一物理サーバ上で他ユーザのインスタンスが起動しないこと</u>が保証されるため、専有ホストと共通しているが、<br> | |||
あくまでインスタンス単位のサービスのため、ホスト(物理サーバ)単位で提供を受けられる専有ホストと比較すると、以下に示す制約が生じる。<br> | |||
<br> | |||
<center> | |||
{| class="wikitable" | style="background-color:#fefefe;" | |||
|- | |||
! style="background-color:#66CCFF;" | | |||
! style="background-color:#66CCFF;" | 専有ホスト | |||
! style="background-color:#66CCFF;" | ハードウェア専有インスタンス | |||
|- | |||
| style="font-weight: bold;background-color:#30ee30;" | 課金単位 | |||
|| ホスト(物理サーバ)単位 || インスタンス単位 | |||
|- | |||
| style="font-weight: bold;background-color:#30ee30;" | ホスト単位のソフトウェアライセンス持ち込み | |||
|| 可能 || 不可 | |||
|- | |||
| style="font-weight: bold;background-color:#30ee30;" | ホスト内でのインスタンスの起動場所 | |||
|| ユーザ側で制御可能 || ユーザ側で制御不可<br>(AWS側で自動決定) | |||
|- | |||
| style="font-weight: bold;background-color:#30ee30;" | ソケット、コア、ホストIDの可視性 | |||
|| あり || なし | |||
|- | |||
| style="font-weight: bold;background-color:#30ee30;" | 停止インスタンスの再起動時の使用ホスト | |||
|| 同一ホストが保証される || 他のホストに移ることもある | |||
|} | |||
</center> | |||
<br> | |||
基本的に、ハードウェア専有インスタンスよりも専有ホストの方がユーザ側で利用する自由度が高い。<br> | |||
<br> | |||
==== キャパシティの予約 ==== | |||
キャパシティ予約とは、ある期間インスタンスを立ち上げられる権利を予約するサービスのことである。<br> | |||
<br> | |||
「立ち上げられる権利」とは、インスタンスの立ち上げ時において、<u>InsufficientInstanceCapacity</u>と呼ばれるキャパシティ不足に由来するエラーが発生して、インスタンスの立ち上げに失敗する場合がある。<br> | |||
自動での立ち上げを設定している場合、失敗に気付かずに長時間に渡ってインスタンスが停止して、提供するサービスの停止に繋がる恐れがある。<br> | |||
<br> | |||
この<u>InsufficientInstanceCapacity</u>エラーを防ぐため、キャパシティ(物理サーバ等の計算資源)を確保して、特定の期間インスタンスの確実な起動を確保するサービスがキャパシティの予約である。<br> | |||
<br> | |||
キャパシティの予約は、対応するインスタンス購入方式に応じて下表から選択する。<br> | |||
<center> | |||
{| class="wikitable" | style="background-color:#fefefe;" | |||
|- | |||
! style="background-color:#66CCFF;" | 名称 | |||
! style="background-color:#66CCFF;" | 対応するインスタンス購入方式 | |||
|- | |||
| オンデマンドキャパシティ予約 || オンデマンドインスタンス | |||
|- | |||
| キャパシティ予約 || リザーブドインスタンス | |||
|} | |||
</center> | |||
<br><br> | <br><br> | ||