AWSについての基礎知識の備忘録
どういった記事なのか
AWSで環境構築するために、見積や契約、環境構築をするための基礎知識の備忘録
どんな人間が書いているか
- プログラマー歴10年ちょいの初心者
- ITに関わった当初はテストエンジニア、その後プログラマー・SEに転身
- C# -> php -> ruby とプログラム未経験から職場とともにメイン言語を渡り歩いてきた
他のVPS・レンタルサーバと比べたAWSのメリット
AWS(Amazon Web Services)は他のVPS(仮想プライベートサーバ)やレンタルサーバと比較して、以下のような多くのメリットがある
スケーラビリティ
AWSはオンデマンドでリソースを増減できるためアクセスが集中するタイミングでリソースを簡単に拡張できるこれによりパフォーマンスの低下を防ぐことができる
グローバルインフラストラクチャ
AWSは世界中にデータセンターを持っておりユーザーに対して地理的に近いサーバーからサービスを提供できるこれにより遅延を最小限に抑え高速なパフォーマンスを実現する
豊富なサービス群
コンピューティングストレージデータベースAI/ML IoTセキュリティなど幅広いサービスが提供されており一つのプラットフォームで必要なものを全て揃えることができる
コスト効率
使用した分だけ支払う従量課金制(Pay-as-you-go)を採用しており初期費用が不要スポットインスタンスやリザーブドインスタンスを利用することでさらにコストを抑えることができる
高可用性と耐障害性
複数のアベイラビリティゾーン(AZ)を活用することで高い可用性と耐障害性を実現しているこれによりサービスの停止時間を最小限に抑えることができる
セキュリティ
AWSは多層的なセキュリティ対策を提供しておりデータ暗号化認証アクセス制御など業界標準に準拠したセキュリティ機能を提供しているまた各種セキュリティ認証を取得している
マネージドサービス
AWSは多くのマネージドサービス(例えばRDS Lambda Elastic Beanstalk)を提供しておりインフラ管理の負担を軽減するこれにより開発者はアプリケーションの開発に集中できる
エコシステムとサポート
AWSは豊富なドキュメントコミュニティサポートトレーニングプログラムおよび公式サポートを提供しているまた多くのサードパーティツールやサービスと統合されている
柔軟性とカスタマイズ性
多様なインスタンスタイプやストレージオプションを提供しており特定のニーズに合わせてカスタマイズすることが可能
イノベーションのスピード
AWSは頻繁に新機能やサービスをリリースしており最新技術をいち早く取り入れることができる
これらの特長からAWSは特に大規模なウェブサービスやアプリケーションのホスティングデータ解析機械学習IoTプロジェクトなどに適している他のVPSやレンタルサーバと比較して総合的なサービスの質と提供範囲が広く多様なニーズに対応できる点が大きなメリット
AWSにおいてWEBサービスを構築する際に利用するサービス
Amazon EC2(Elastic Compute Cloud)
- WEBサーバとして仮想マシンを利用するサービス
- インスタンスタイプの選択(例:t3.micro, m5.largeなど)
- オンデマンドインスタンス、リザーブドインスタンス、スポットインスタンスの選択
- Amazon Machine Image(AMI)の選定(例:Amazon Linux, Ubuntuなど)
Amazon S3(Simple Storage Service)
- ストレージサービスとして静的ファイルやメディアファイルの保存に利用
- バケットの作成と設定(例:バージョニング、アクセス制御リストなど)
- S3 Transfer Accelerationを使用した高速転送
Amazon RDS(Relational Database Service)
- データベースとしてMySQL, PostgreSQL, MariaDB, Oracle, SQL Serverなどの選択
- インスタンスクラスの選定(例:db.t3.micro, db.m5.largeなど)
- マルチAZデプロイメントの設定による高可用性の確保
Amazon Route 53
- DNS管理サービスとしてドメイン名の登録とルーティングの設定
- レイテンシーベースのルーティングやヘルスチェックの設定
Amazon CloudFront
- コンテンツ配信ネットワーク(CDN)としてS3やEC2のコンテンツを高速に配信
- エッジロケーションの選定とディストリビューションの設定
- SSL/TLSの設定とカスタムドメインの使用
AWS IAM(Identity and Access Management)
- ユーザーやロールの作成と権限の設定
- ポリシーの作成と適用(例:管理者アクセス、S3フルアクセスなど)
- MFA(多要素認証)の設定
AWS CloudWatch
- ログの収集とモニタリング
- メトリクスの設定とアラームの作成
- ダッシュボードの作成と監視
AWS Elastic Beanstalk
- WEBアプリケーションのデプロイと管理を簡略化するプラットフォームサービス
- サポートされているプラットフォームの選択(例:Node.js, Python, Javaなど)
- スケーリング設定と環境設定の管理
AWS WAF(Web Application Firewall)
- アプリケーションレベルのファイアウォール設定
- ルールの作成と適用(例:IPブロッキング、SQLインジェクション防止など)
AWS Certificate Manager(ACM)
- SSL/TLS証明書の管理
- 証明書のリクエストと自動更新設定
月額費用の見積もり
AWS Pricing Calculatorの利用
- AWS Pricing Calculatorを使用して、サービスごとの詳細な見積もりが可能
- サービス(例:EC2, S3, RDSなど)を選択し、使用量や構成を入力することで、月額料金を計算できる
Amazon EC2の見積もり
- インスタンスタイプの選定(例:t3.micro, m5.largeなど)
- 利用時間の入力(例:24時間/日, 30日/月)
- リザーブドインスタンスやスポットインスタンスの選択でコストを削減可能
- EBS(Elastic Block Store)ストレージの容量と種類の選定
Amazon S3の見積もり
- ストレージ使用量(例:100GB, 1TBなど)の入力
- リクエスト数(PUT, GETなど)の見積もり
- データ転送量の見積もり(インターネットへのアウトバウンドトラフィック)
Amazon RDSの見積もり
- インスタンスタイプの選定(例:db.t3.micro, db.m5.largeなど)
- ストレージ容量と種類(例:汎用(SSD), プロビジョンドIOPS(SSD))
- マルチAZデプロイメントの有無
Amazon CloudFrontの見積もり
- データ転送量(エッジロケーションからのアウトバウンドトラフィック)の見積もり
- リクエスト数(HTTP, HTTPS)の見積もり
Amazon Route 53の見積もり
- ホストゾーン数
- DNSクエリ数
AWS Supportプランの選択
- Basic, Developer, Business, Enterpriseの各プランから選択
- プランに応じてサポート料金が追加される
追加のサービス
- AWS Lambdaの利用(リクエスト数と実行時間)
- AWS CloudWatchのモニタリングとログストレージ
見積もりのステップ
- AWS Pricing Calculatorにアクセス
- 「Create estimate」をクリック
- 使用するサービスを選択
- 各サービスの詳細設定を入力(インスタンスタイプ、ストレージ容量、データ転送量など)
- 見積もり結果を確認
環境構築手順
AWSアカウントの作成とログイン
- AWSの公式サイトにアクセスし、新しいアカウントを作成
- クレジットカード情報を登録し、アカウントの認証を完了
- AWS Management Consoleにログイン
IAMユーザーとグループの設定
- AWS Management ConsoleでIAMサービスを選択
- 新しいユーザーを作成し、適切な権限を付与
- IAMグループを作成し、ユーザーをグループに追加
- MFA(多要素認証)の設定
VPC(Virtual Private Cloud)の設定
- VPCウィザードを使用して新しいVPCを作成
- サブネット、インターネットゲートウェイ、ルートテーブルを設定
- セキュリティグループとネットワークACLの設定
EC2インスタンスの起動
- EC2ダッシュボードで「Launch Instance」を選択
- 適切なAmazon Machine Image(AMI)を選択(例:Amazon Linux, Ubuntu)
- インスタンスタイプを選択(例:t3.micro, m5.large)
- VPCとサブネットを選択
- セキュリティグループを設定(例:HTTP, HTTPS, SSHの許可)
- キーペアを作成または既存のキーペアを選択し、インスタンスを起動
RDSインスタンスの設定
- RDSダッシュボードで「Create database」を選択
- データベースエンジンを選択(例:MySQL, PostgreSQL)
- インスタンスタイプとストレージ容量を設定
- VPCとサブネットグループを設定
- マルチAZデプロイメントの有無を選択
- データベース認証情報を設定
S3バケットの作成
- S3ダッシュボードで「Create bucket」を選択
- バケット名とリージョンを設定
- バケットの設定(バージョニング、アクセス制御リストなど)
Route 53でDNS設定
- Route 53ダッシュボードで「Create hosted zone」を選択
- ドメイン名を入力し、ホストゾーンを作成
- 必要に応じてレコードを追加(例:Aレコード、CNAMEレコード)
CloudFrontの設定
- CloudFrontダッシュボードで「Create Distribution」を選択
- オリジンサーバ(例:S3バケットまたはEC2インスタンス)を設定
- ディストリビューション設定を完了し、カスタムドメインとSSL/TLS証明書を設定
CloudWatchでモニタリング設定
- CloudWatchダッシュボードでメトリクスとアラームを設定
- ロググループとログストリームを作成し、EC2インスタンスやその他のサービスからログを収集
デプロイとテスト
- 必要なアプリケーションコードをEC2インスタンスにデプロイ
- データベース接続を確認し、アプリケーションが正しく動作するかテスト
- 監視とログを確認し、問題がないかチェック
スケーラブルで高可用性のあるAWS環境を構築するためのサービス
Auto Scaling
- サービスの概要: AWS Auto Scalingは、需要に応じてEC2インスタンスの数を自動的に増減することで、アプリケーションの可用性を維持し、コストを最適化するサービス
- 適用方法:
- EC2ダッシュボードで「Auto Scaling Groups」を選択
- 「Create Auto Scaling group」をクリックし、起動テンプレートを選択
- Auto Scalingグループの名前、VPC、サブネットを設定
- ディスク容量やセキュリティグループを設定
- スケーリングポリシーを設定(例:ターゲットトラッキング、ステップスケーリング)
- 必要なメトリクスを設定し、完了
Elastic Load Balancing (ELB)
- サービスの概要: ELBは、複数のEC2インスタンス間でトラフィックを自動的に分散することで、アプリケーションの可用性と耐障害性を向上させるサービス
- 適用方法:
- EC2ダッシュボードで「Load Balancers」を選択
- 「Create Load Balancer」をクリックし、ロードバランサーのタイプを選択(例:Application Load Balancer, Network Load Balancer)
- ロードバランサーの名前、スキーム、VPC、サブネットを設定
- リスナーとセキュリティグループを設定
- ターゲットグループを作成し、ヘルスチェックを設定
- 設定を確認し、ロードバランサーを作成
Amazon RDS Multi-AZ Deployments
- サービスの概要: Amazon RDSのMulti-AZ配置は、データベースインスタンスを複数のアベイラビリティゾーンにレプリケートすることで、高可用性と耐障害性を提供するサービス
- 適用方法:
- RDSダッシュボードで「Create database」を選択
- データベースエンジンを選択(例:MySQL, PostgreSQL)
- デプロイメントオプションで「Multi-AZ deployment」を選択
- インスタンスタイプとストレージを設定
- データベース認証情報を設定
- VPC、サブネットグループ、セキュリティグループを設定し、データベースを作成
Amazon S3 Cross-Region Replication
- サービスの概要: Amazon S3のクロスリージョンレプリケーションは、S3バケットのオブジェクトを異なるリージョンのバケットに自動的にレプリケートすることで、データの可用性と耐障害性を向上させるサービス
- 適用方法:
- S3ダッシュボードでレプリケートしたいバケットを選択
- 「Management」タブをクリックし、「Replication rules」を選択
- 「Create replication rule」をクリックし、ルール名を設定
- レプリケーションのソースバケットとデスティネーションバケットを選択
- レプリケーションの条件やオプションを設定し、ルールを作成
AWS LambdaとAPI Gateway
- サービスの概要: AWS Lambdaは、サーバー管理なしでコードを実行できるサーバーレスコンピューティングサービス。API Gatewayは、APIの作成、管理、保護を行うサービス
- 適用方法:
- Lambdaダッシュボードで「Create function」を選択
- 関数の名前、ランタイム、ロールを設定し、関数を作成
- API Gatewayダッシュボードで「Create API」を選択
- APIのタイプを選択(例:REST API, HTTP API)
- リソースとメソッドを作成し、Lambda関数をバックエンドとして設定
- 必要なIAMロールとポリシーを設定し、APIをデプロイ
Amazon CloudFront
- サービスの概要: Amazon CloudFrontは、グローバルに分散したエッジロケーションを通じて、静的および動的なコンテンツを高速に配信するCDNサービス
- 適用方法:
- CloudFrontダッシュボードで「Create Distribution」を選択
- オリジン設定を行い(例:S3バケット、EC2インスタンス)
- ディストリビューション設定を行い、キャッシュビヘイビアを設定
- SSL/TLS証明書の設定を行い、カスタムドメインを使用する場合は設定
- ディストリビューションを作成し、完了
Amazon EFS(Elastic File System)
- サービスの概要: Amazon EFSは、複数のEC2インスタンスからアクセス可能なスケーラブルで完全マネージドなNFSファイルシステムを提供するサービス
- 適用方法:
- EFSダッシュボードで「Create file system」を選択
- ファイルシステムの名前、VPC、パフォーマンスモードを設定
- マウントターゲットを作成し、必要なサブネットとセキュリティグループを設定
- EC2インスタンスにEFSをマウントし、使用開始
Discussion