【AWS】 EC2の解説
AWS EC2(Amazon Elastic Compute Cloud)
EC2は、Amazon Web Services(AWS)の提供するクラウドベースの仮想サーバーコンピューティングのこと。これにより、ユーザーは物理的なハードウェアを購入や設定することなく、オンデマンドでコンピューティングリソースを確保・利用することができる。
料金は従量課金制になっていて、使用した分だけ料金が発生する。
EC2設定項目
AMI (Amazon Machine Image): インスタンスを起動するためのベースとなるイメージを選択する。これにはオペレーティングシステムや必要なソフトウェアが含まれる。
インスタンスタイプ: 必要なCPU、メモリ、ストレージ、ネットワークキャパシティに基づいて選択する。例: t2.micro、m5.largeなど。
インスタンス詳細の設定:
数: 起動したいインスタンスの数
ネットワーク: VPCの選択
サブネット: 使用するサブネットの選択
自動割り当てIP: パブリックIPの自動割り当てを有効/無効にする
その他の設定、例: IAM ロールの割り当て、シャットダウンの動作、テナンシー(専用or共有ホスト)など
ストレージ: EBSボリュームのタイプ、サイズ、IOPSを設定する。
タグ: インスタンスやボリュームにキーと値のペアを追加して、管理を容易にする。
セキュリティグループ: インスタンスへのネットワークアクセスを制御するためのルールを設定する。このグループは、特定のIPアドレスやポートへのアクセスを許可/拒否することができます。
キーペア: インスタンスにSSHで接続するための公開キーと秘密キーのペアを選択または新しく作成する。
AWS AMI
Amazon Machine Image (AMI) は、Amazon EC2 インスタンスの起動に使用される仮想サーバーイメージ。特定のOSをベースにしており、サーバが実行する基本的なソフトウェア環境を提供し、WebサーバーのAMIでは、ApacheやNginxなどのソフトウェアが予めインストールされている場合がある。
AMI の利点として再現性があり、同じソフトウェアや設定を持つインスタンスを迅速に複数起動することができる。
インスタンスタイプ
EC2の性能やリソースを指定するカテゴリのこと
汎用インスタンス(General Purpose)
mシリーズ:
例: m5, m6g, m7i
特徴: バランスの取れたコンピューティング、メモリ、ネットワーク性能。
用途: 中規模のデータベース、ウェブサーバー、アプリケーションサーバー。
表示例: m5.large, m6g.medium
tシリーズ(バースト可能):
例: t2, t3, t4g
特徴: ベースラインのCPU性能と必要に応じてバーストする能力。
用途: 小規模なウェブサーバー、開発・テスト環境。
表示例: t3.micro, t4g.medium
Macインスタンス:
例: mac1, mac2
特徴: macOSアプリケーションの開発、テスト。
用途: iOSやmacOSアプリケーションの開発、ビルド、テスト。
表示例: mac1.metal, mac2.metal
コンピューティング最適化インスタンス
cシリーズ:
例: c5, c6g, c7i
特徴: 高いコンピューティング性能。
用途: 高パフォーマンスのウェブサーバー、バッチ処理、ゲームサーバー。
表示例: c5.large, c6g.medium
メモリ最適化インスタンス
rシリーズ:
例: r5, r6g, r7i
特徴: 大容量メモリ。
用途: 高性能データベース、インメモリアナリティクス。
表示例: r5.large, r6g.medium
xシリーズ:
例: x1, x2idn
特徴: 超大容量メモリ。
用途: 大規模なインメモリデータベース、SAP HANA。
表示例: x1.32xlarge, x2idn.24xlarge
ストレージ最適化インスタンス
iシリーズ:
例: i3, i4i
特徴: 高いディスクI/O性能。
用途: 高速NoSQLデータベース、分散ファイルシステム。
表示例: i3.large, i4i.xlarge
dシリーズ:
例: d2, d3
特徴: 大容量ストレージ。
用途: データウェアハウス、Hadoop。
表示例: d2.xlarge, d3.2xlarge
アクセラレーテッドコンピューティングインスタンス
pシリーズ:
例: p3, p4
特徴: GPUを利用した高性能コンピューティング。
用途: 機械学習トレーニング、HPC。
表示例: p3.2xlarge, p4d.24xlarge
gシリーズ:
例: g4dn, g5
特徴: GPUを利用したグラフィック処理。
用途: 3Dレンダリング、機械学習推論。
表示例: g4dn.xlarge, g5.2xlarge
infシリーズ:
例: inf1, inf2
特徴: 機械学習推論に最適化。
用途: 機械学習推論、自然言語処理。
表示例: inf1.xlarge, inf2.24xlarge
高性能コンピューティングインスタンス
hpcシリーズ:
例: hpc6a, hpc6id
特徴: 高性能コンピューティングに最適化。
用途: 高度な計算タスク、シミュレーション。
表示例: hpc6a.48xlarge
EC2インスタンス購入オプション
EC2インスタンスを効率的に利用するためのさまざまな購入オプション
スポットリクエスト(Spot Instances)
スポットインスタンスは、未使用のEC2キャパシティを割引価格で提供するオプション。通常のオンデマンド価格より最大90%安いが、この未使用キャパシティはAWS全体のリソース状況に依存しており、需要が高まるとAWSが必要とする場合にインスタンスが強制終了されることがある。
これにより、大量のバッチ処理ジョブや柔軟な終了時間を持つワークロードに最適な選択肢となる。
使用用途:
ビッグデータ処理
コンテナ化されたワークロード
CI/CDワークロード
大規模データ解析
Savings Plans
特定の使用量に対して1年または3年の期間にわたって割引を提供する料金モデル。1年または3年のコミットメント期間にわたって低価格で利用でき、インスタンスタイプやリージョンに縛られない柔軟な利用が可能。使用量に基づいた一定の割引が適用されるため、長期的な予算計画とコスト管理に適している。
使用用途:
長期的な予算計画とコスト管理
継続的な使用が見込まれるワークロード
リザーブドインスタンス
特定のインスタンスタイプとリージョンで1年または3年の期間にわたって割引を提供する購入オプション。1年または3年の期間で最大75%の割引があり、可用性確保オプションも提供されている。オプションとして標準(交換可能)とコンバーチブル(交換不可)があり、常時稼働が必要なアプリケーションや長期的に安定したキャパシティが必要なワークロードに最適である。
使用用途:
常時稼働が必要なアプリケーション
長期的に安定したキャパシティが必要なワークロード
専有ホスト(Dedicated Hosts)
専有ホストは、物理的なサーバーを専有し、そのサーバー上のすべてのインスタンスを制御するオプション。専有ホストはインスタンスごとではなくホスト単位で課金され、ライセンス持ち込み(BYOL)が可能。セキュリティとコンプライアンス要件を満たすための専有リソースを提供し、ライセンス持ち込み(BYOL)のソフトウェアやセキュリティとコンプライアンスの高いワークロードに適している。
使用用途:
ライセンス持ち込み(BYOL)のソフトウェア
セキュリティとコンプライアンスの高いワークロード
カスタムハードウェア要件
キャパシティーの予約
特定の期間に特定のインスタンスタイプのキャパシティを確保するオプション。キャパシティの予約は即時キャパシティを確保でき、予約したキャパシティはオンデマンド料金で利用可能。短期的なキャパシティ確保に便利で、ピークトラフィックの対応や重要なイベントやリリース時のキャパシティ確保に適している。
使用用途:
ピークトラフィックの対応
重要なイベントやリリース時のキャパシティ確保
リージョン間でのキャパシティ管理
起動テンプレート
Amazon EC2インスタンスの起動に関する設定をテンプレート化するための機能。
インスタンスの設定(AMI、インスタンスタイプ、キーペア、セキュリティグループなど)を事前に定義できるため、毎回同じ構成でインスタンスを起動できる。この設定の一貫性に加え、バージョン管理機能により、設定の変更を追跡し、特定のバージョンを指定してインスタンスを起動することが可能だ。
これにより、変更の管理が容易になり、必要に応じて過去のバージョンにロールバックすることもできる。
テンプレートの例(CLI表記)
aws ec2 create-launch-template --launch-template-name MyComplexLaunchTemplate \
--version-description "Version 1" \
--launch-template-data '{
"ImageId": "ami-0abcdef1234567890",
"InstanceType": "t3.medium",
"KeyName": "my-key-pair",
"SecurityGroupIds": ["sg-0123456789abcdef0"],
"IamInstanceProfile": {"Arn": "arn:aws:iam::123456789012:instance-profile/MyInstanceProfile"},
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"VolumeSize": 30,
"VolumeType": "gp2",
"DeleteOnTermination": true
}
},
{
"DeviceName": "/dev/sdb",
"Ebs": {
"VolumeSize": 100,
"VolumeType": "gp2",
"DeleteOnTermination": false
}
}
],
"UserData": "IyEvYmluL2Jhc2ggCmFwdC11cGRhdGUgJiYgYXB0LWdldCB1cGRhdGUgLXkKc3VkbyB5dW0gaW5zdGFsbCBodHRwZCBnaXQgd2dldCBuZ2lueApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2xpLmdpdApjZCBhd3MtY2xpCm1rZGlyIC9vcHQvYXdzCmNkIC9vcHQvYXdzCm5vaC1wYXJjZWwgLS1zZXBhcmF0ZSAiIiAtLWNoYXIgIlxuIiBhd3MtY2xpLgo="
}'
以下の設定が含まれている
AMI: ami-0abcdef1234567890
インスタンスタイプ: t3.medium
キーペア: my-key-pair
セキュリティグループ: sg-0123456789abcdef0
IAMロール: MyInstanceProfile
ブロックデバイスマッピング:
/dev/sda1: 30GB, gp2, インスタンス終了時に削除
/dev/sdb: 100GB, gp2, インスタンス終了時に削除しない
ユーザーデータ: 起動時に特定のスクリプトを実行
インスタンスの起動
aws ec2 run-instances --launch-template LaunchTemplateName=MyComplexLaunchTemplate,Version=1\
Amazon Elastic Block Store (EBS)
Amazon EC2インスタンスにアタッチできるブロックレベルのストレージサービスであり、高い耐久性と可用性を持つ。
・EBSボリューム
一般的なディスクとして使え、データベースやアプリケーションのデータ保管に適す。また、EBSはスナップショットをサポートしており、特定の時点のボリュームのコピーをAmazon S3に保存できる。
・インスタンスストア
一時的なブロックレベルのストレージで、インスタンスのライフサイクルと連動しており、インスタンスが停止または終了すると、インスタンスストアのデータも失われる。一時的なデータやキャッシュとしての利用が主。
・Amazon FSx, Amazon EFS
ファイルレベルのストレージサービス。これらは、複数のインスタンスから同時にアクセスできる共有ファイルシステムを提供する。
・Amazon S3
オブジェクトベースのストレージサービスであり、ウェブコンテンツのホスティングやバックアップ、大規模なデータ解析のソースデータとして利用される。
セキュリティグループ
Amazon EC2での仮想ファイアウォールとして機能し、インスタンスにどのようなトラフィックを許可するか、あるいは拒否するかをコントロールするためのルールを指定する。
ステートフル:
送信したリクエストは自動的に戻りトラフィックとして受け入れられる。
インバウンド/アウトバウンドのルール:
インバウンドルールは外部からインスタンスへのアクセスをコントロール。
アウトバウンドルールはインスタンスから外部へのアクセスをコントロール。
デフォルト設定:
新しく作成されたセキュリティグループは、デフォルトですべてのインバウンドトラフィックを拒否、アウトバウンドトラフィックを許可。
変更の即時反映:
セキュリティグループのルールを変更すると、すぐにその変更が関連するインスタンスに適用される。
ELBやRDSなど、他のAWSサービスとの連携:
他のAWSサービスのリソースに対しても、セキュリティグループを使用してアクセスを制限することができる。
Elastic IP(EIP)
Amazon Web Services (AWS) のAmazon Elastic Compute Cloud (EC2) サービスで提供される静的なIPv4アドレスのこと。
運用中のEC2インスタンスに問題が発生した場合、Elastic IPの利点として、別のインスタンスに迅速にそのアドレスを再マッピングできるため、サービスのダウンタイムを減少させることができる。
また、Elastic IPは一度取得すれば、ユーザーが明示的にリリースしない限りAWSアカウントに関連付けられ続ける。これにより、ドメイン名などのDNS設定の変更なく、長期間にわたり同じIPアドレスを使用することができる。注意点として、もし利用しないElastic IPを保持している場合や、無料枠を超える利用が発生した場合には追加の料金が発生した、Elastic IPは特定のAWSリージョンに紐づいているため、異なるリージョンのインスタンスには適用することができない。
Elastic Load Balancing (ELB)
入ってくるアプリケーションのトラフィックを複数のターゲット、例えばAmazon EC2インスタンス、コンテナ、IPアドレス、Lambda関数などに自動的に分散するサービス。
ELBはアクティブなアプリケーションのヘルスチェックを行い、問題のあるインスタンスにトラフィックを送ることなく、正常に動作するターゲットにトラフィックをルーティングする。この機能で、システム内の一部に障害が発生してもアプリケーション全体のダウンタイムを最小化することができる。
アプリケーション層での負荷分散としてのApplication Load Balancerと、トランスポート層での負荷分散としてのNetwork Load Balancerの2つの主要なタイプがある。
Application Load BalancerはHTTP/HTTPSトラフィックのロードバランシングに特化しており、コンテンツベースのルーティングをサポートする。
一方、Network Load BalancerはTCP、UDP、TCP/UDPトラフィックに最適化されており、高速で高容量のトラフィックに対応している。
よろしければサポートお願いします!よりいい情報を発信します。