AWSの覚え書き(ec2/s3)

サービス名 | 概要 | ユースケース |
---|---|---|
Amazon EC2 | 仮想サーバー | アプリケーションサーバー、データベースサーバー、バッチ処理 |
Amazon EBS | EC2用のブロックストレージ | EC2用のブロックストレージ |
Amazon S3 | オブジェクトストレージ | 静的ファイルのホスティング、データバックアップ、アーカイブ |
費用見積もり

Amazon S3とは
Amazon Simple Storage Service (Amazon S3)は、Amazon Web Services (AWS)が提供するスケーラブルで高可用性のオブジェクトストレージサービスです。
Amazon S3の基本概念
Amazon S3は、インターネット経由でいつでもどこからでもアクセス可能なオブジェクトストレージサービスです。オブジェクトは、データ本体、メタデータ、および一意の識別子から構成されます。S3は以下のような基本概念を持っています。
- バケット (Bucket): オブジェクトを格納するコンテナ。バケット名はグローバルに一意である必要があります。
- オブジェクト (Object): バケット内に保存されるデータ。各オブジェクトは一意のキーによって識別されます。
- キー (Key): オブジェクトを識別するための一意の文字列。
- リージョン (Region): データの物理的な保存場所。ユーザーはデータのリージョンを選択できます。
Amazon S3の特徴
Amazon S3は多くの優れた特徴を持っています。
- スケーラビリティ: データ容量の増減に柔軟に対応でき、必要に応じてスケールアップやスケールダウンが可能です。
- 耐久性: オブジェクトデータは、複数の地理的に分散した施設に複製されるため、高い耐久性を持ちます。
- 可用性: 高いサービス可用性を提供し、いつでもデータにアクセス可能です。
- セキュリティ: データの暗号化、アクセス制御リスト (ACL)、バケットポリシーなど、多層的なセキュリティ機能が提供されます。
- コスト効率: 使用した分だけ課金される従量制料金モデルを採用しています。
Amazon S3のセキュリティ
Amazon S3は、データのセキュリティを確保するためにさまざまな機能を提供しています。
アクセス制御: バケットポリシー、アクセス制御リスト(ACL)、IAMポリシーを使用して、データへのアクセスを細かく制御できます。バケットポリシーはデフォルトではprivate(作成者しかアクセスできない)にされています。
データ暗号化:
サーバーサイド暗号化 (SSE): S3がデータを保存する際に自動的に暗号化します。SSE-S3、SSE-KMS、SSE-Cの3種類があります。
クライアントサイド暗号化: ユーザーがデータをアップロードする前に、クライアント側で暗号化します。
ロギングとモニタリング: S3アクセスログを有効にして、バケットへのアクセス履歴を記録し、AWS CloudTrailを使用してAPI呼び出しを監査できます。
Amazon S3のユースケース
Amazon S3は、さまざまなユースケースで利用されています。
- バックアップとリストア: データのバックアップおよびリストアのためのストレージとして利用されます。
- アーカイブ: 長期間保存が必要なデータのアーカイブに最適です。S3 GlacierやS3 Glacier Deep Archiveを利用することでコストを抑えられます。
- コンテンツ配信: ウェブサイトやアプリケーションの静的コンテンツ(画像、動画、ドキュメントなど)の配信に使用されます。
- データレイク: 大量のデータを集約し、分析や機械学習のためのデータレイクとして利用されます。
- ビッグデータ分析: データ分析ツールやサービスと連携して、ビッグデータの保存および処理に利用されます。

Amazon S3のアクセス制御
Amazon S3では、データのセキュリティとアクセス制御を確保するために、いくつかの異なるメカニズムが提供されています。これらのメカニズムには、バケットポリシー、アクセス制御リスト(ACL)、IAMポリシーが含まれます。
バケットポリシー
バケットポリシーは、特定のS3バケットおよびその内容へのアクセスを制御するために使用されるJSON形式のポリシーです。バケットポリシーを使用すると、特定のアクションに対してアクセス許可を定義し、条件付きでアクセスを許可することができます。
バケットポリシーの特徴
- リソースレベルのアクセス制御: バケット全体または特定のオブジェクトに対してポリシーを設定できます。
- 柔軟な条件設定: IPアドレス、リクエストのタイムスタンプ、VPCエンドポイントなどの条件を基にアクセスを制御できます。
例: バケットの公開読み取りアクセス
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
アクセス制御リスト(ACL)</a>
アクセス制御リスト(ACL)は、バケットおよびオブジェクトレベルでの基本的なアクセス制御を提供します。ACLを使用すると、特定のAWSアカウントまたはグループに対してアクセス権限を設定できます。
ACLの特徴
- 簡易なアクセス制御: バケットやオブジェクトごとに簡単にアクセス権を設定できます。
- 限定された柔軟性: バケットポリシーやIAMポリシーに比べて柔軟性は低いですが、基本的なアクセス制御には十分です。
例: バケットの公開読み取りアクセス
{
"Grants": [
{
"Grantee": {
"Type": "Group",
"URI": "http://acs.amazonaws.com/groups/global/AllUsers"
},
"Permission": "READ"
}
]
}
IAMポリシー
IAMポリシーは、AWSアカウント内のユーザー、グループ、およびロールに対してアクセス権限を付与するためのポリシーです。IAMポリシーは、AWS全体のリソースに対して適用でき、非常に細かいアクセス制御を提供します。
IAMポリシーの特徴
- ユーザー単位のアクセス制御: 特定のユーザーやグループに対してアクセス権限を付与できます。
- 高い柔軟性: 条件付きアクセス、リソースレベルのアクセス制御など、柔軟な設定が可能です。
例: 特定ユーザーにS3バケットへの読み取りアクセスを許可するポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}

Amazon EC2とは
Amazon Elastic Compute Cloud (Amazon EC2)は、Amazon Web Services (AWS)が提供するスケーラブルな仮想サーバー環境です。EC2は、ユーザーが必要な計算リソースを柔軟に利用できるように設計されており、クラウドコンピューティングの基盤を形成する重要なサービスの一つです。
Amazon EC2の基本概念
Amazon EC2は、仮想マシン(インスタンス)を提供し、ユーザーが計算能力を柔軟に利用できるようにするサービスです。以下は、EC2の基本的な要素です。
- インスタンス: EC2インスタンスは、仮想マシンのことです。さまざまなインスタンスタイプが用意されており、CPU、メモリ、ストレージ、ネットワーク性能が異なります。
- AMI(Amazon Machine Image): インスタンスを起動するためのテンプレートです。AMIには、OS、アプリケーションサーバー、アプリケーションなどの設定が含まれています。
- インスタンスタイプ: インスタンスの種類を表します。一般的な用途向け、コンピューティング最適化、メモリ最適化、ストレージ最適化など、さまざまなタイプが存在します。
- キーペア: SSHアクセスをセキュアに行うための公開鍵と秘密鍵のペアです。
- セキュリティグループ: インスタンスへのインバウンドおよびアウトバウンドトラフィックを制御する仮想ファイアウォールです。
Amazon EC2の特徴
Amazon EC2には多くの特徴があります。
- スケーラビリティ: 必要に応じてインスタンスを起動・停止することで、計算リソースを柔軟にスケールアップおよびスケールダウンできます。
- 多様なインスタンスタイプ: 特定のユースケースに最適なインスタンスタイプを選択できます。たとえば、計算集約型ワークロードにはコンピューティング最適化インスタンス、メモリ集約型ワークロードにはメモリ最適化インスタンスを使用できます。
- 弾力性: オートスケーリング機能を使用して、需要に応じて自動的にインスタンスの数を調整できます。
- コスト効率: オンデマンドインスタンス、リザーブドインスタンス、スポットインスタンスなど、さまざまな料金モデルがあり、コスト効率を最大化できます。
- セキュリティ: VPC(Virtual Private Cloud)内でインスタンスを実行し、セキュリティグループやネットワークACLを使用してアクセスを制御できます。
Amazon EC2のユースケース
Amazon EC2は、さまざまなユースケースで利用されています。
- ウェブホスティング: ウェブサーバーをホスティングし、スケーラブルで高可用性のウェブサイトを構築できます。
- ビッグデータ分析: HadoopやSparkなどのビッグデータ処理フレームワークを実行し、大量のデータを分析できます。
- 機械学習: トレーニングジョブや推論のために、高性能なGPUインスタンスを利用できます。
- コンテナオーケストレーション: Amazon ECSやEKSと組み合わせて、コンテナ化されたアプリケーションを実行できます。
- バックエンドサーバー: データベースサーバーやアプリケーションサーバーとして利用し、バックエンドの処理を行うことができます。

Amazon EC2のインスタンスタイプの選び方
- インスタンスのネーミングでスペックや特徴がわかる。
- とりあえずは
m5.large
などMインスタンスファミリーを使うのが無難 - あとから用途に応じてインスタンスタイプを変える。