AWS SAA
AWSの仕組み
- インフラやアプリ開発に必要な機能がオンデマンドのパーツサービスとして提供されている
- サーバーを立ち上げるのに数分で無料で今すぐに利用できることが特徴
- インフラ/システム機能をブロックパーツのようにオンライン上に組み合わせて自分の好きな構成を実現する仕組み
- AWSのサービスにはアンマネージド型とマネージド型が存在する
- アンマネージド型
- スケーリング/耐障害性/可用性を利用者側で設定し管理する必要がある
- メリット
- 設定が柔軟に可能
- デメリット
- 管理が面倒
- マネージド型
- スケーリング/耐障害性/可用性がサービスに組み込まれておりAWS側で管理されている
- メリット
- 管理が楽
- デメリット
- 設定が限定的
- アンマネージド型
AWSのグローバルインフラ構成
- リージョン
- AZ(アベイラビリティゾーン)
- エッジロケーション
- エッジロケーションはキャッシュデータなどを利用する際の更に小さなエンドポイントとなる拠点
- エンドポイントとはITの分野では、通信ネットワークの末端に接続された機器や端末、あるいは利用者が直に触れて操作する機器などを指すことが多い。
- cloudfrontなどもエッジロケーションの1つ
- エッジロケーションはキャッシュデータなどを利用する際の更に小さなエンドポイントとなる拠点
仮想化を理解する
クラウドと仮想化
- クラウドは仮想化技術によって成り立っているサービス
- 仮想化とインフラの構成を隠して仮想化された単位に分けたり統合したり利用させる技術
- 物理的なインフラに仮想化ソフトウェアを設定して、実質的な機能をユーザーに切り分けて提供する
仮想化の対象
- サーバーの仮想化
- 1台の物理サーバ上に複数のOSを起動させる技
- ハイパーバイザー型・VMmare型・コンテナ型
- ストレージの仮想化
- 複数のストレージを仮想的に統合して1つの大きなストレージプールを構成する
- ブロックレベル仮想化/ファイルレベル仮想化
- ネットワークの仮想化
- 新たな仮想ネットワークの構築や制御を、ソフトウェアにより動的に実施する技術
- SDN・VLAN
- デスクトップの仮想化
- サーバ上においてPC環境のデスクトップ画面を遠隔地にある接続端末に転送する技術
- 仮想PC方式・ブレードPC方式
仮想化のメリット
仮想化を利用することでインフラ利用の効率性や柔軟性が圧倒的に向上する
- サーバースペースの削除・データセンター費用の削減
- 効率的なサーバー利用によるコスト削減
- 調達の迅速化
- 構成変更やメンテナンス対応の柔軟性
- セキュリティの向上
クラウドとは
- 必要に応じて他社所有のハードウェア・ソフトウェア等をネットワークを介して利用するシステム利用形態
- インフラを仮想化することでソフトウェア化されたサービスとして提供されていることでソフトウェア化されたサービスとして提供されているされているのがクラウド型のサービス
クラウド構成要素
クラウドで提供されるシステム構成要素はインフラ、ミドルウェア、アプリケーションの3層
- アプリケーション
- プログラミング開発したアプリケーション
- 業務機能が実装されたパッケージソフトウェア
- ミドルウェア
- ミドルウェアとは共通利用される機能をまとめたソフトウェア
- データベース、Web・アプリケーションサーバ
- インフラ
- 物理的な機器
- ネットワーク回線
クラウドの5つの基本特性
- オンデマンド・セルフサービス
- 利用者は人を介さず、必要に応じてサーバー、ネットワーク、ストレージを設置・拡張・設定が可能
- 幅広いネットワークアクセス
- リソース共有
- ハードウェアの使用容量などのリソースは複数利用者により共有し、利用者の需要に応じて動的に割り当てる
- 迅速な拡張性
- ハードウェア等の資源は必要に応じて自動または手動で増やしたり、減らしたりできる
- サービスは計測可能
- 稼働状況が常に計測されており、利用状況をコントロール・最適化できる
- 計測結果に応じて重量課金が可能
IAM
IAMの概要
IAMとはIdentity and Access Managementは安全にAWS操作を実装するための認証・認可の仕組み
- AWS利用者認証の実施
- アクセスポリシーの設定
- 個人またはグループに設定
https://recipe.kc-cloud.jp/archives/11054
主要トピック
ユーザー、グループ、ポリシー、ロールがIAMの主要な要素
IAMポリシー
IAMユーザー
AWS上の利用者はIAMユーザーという権限を付与されたエンティティとして認定される
- ルートアカウント
- 管理者権限
- 管理者権限の許可が付与されたIAMユーザーのこと
- IAMの操作権限まであり
- ルートアカウントしかできない権限は付与されない
- パワーユーザー
- パワーユーザーはIAM以外の全てのAWSサービスにフルアクセス権限を有するIAMユーザー
- IAMの操作権限なし
IAMグループ
- グループとして権限をまとめて設定される単位のこと
- グループには通常複数のIAMユーザーが設定される
IAMロール
- AWSリソースに対してアクセス権限をロールとして付与できる
- EC2から特定のS3にアクセスできないよう制限をかけたりすることが可能
IAMの認証方式
IAMによるユーザー認証方式は利用するツールに応じて異なる
- アクセスキーID/シークレットアクセスキー
- X.509 Certificate
- AWSマネージメントコンソールへのログインパスワード
- AWSアカウントごとにパスワードを設定してログイン認証をする
- デフォルトは未設定(ログインできない)
- MFA(他要素認証)
- 物理デバイスなどを利用したピンコードによる認証方式
- ルートアカウントなどはMFAを付与してセキュリティを強化することで推奨される
IAM設計
AWSを利用するユーザーの役割やアクセス権限を自社の組織構造と合わせて設計することが重要
- 少数利用がずっと継続する場合は少数利用も含めて最初からIAMグループで設定する方が良い
グループ設計
組織別または個人単位にAWS利用者とその役割別の利用範囲を整理して、グループ設計を実施する
IAMロールへのポリシー適用
システム設計からAWSサービス間の連携有無を抽出する
- システム設計
- システム設計からAWSサービス間の連携箇所を特定
- 必要な権限設定の設定
- リソースに対して必要な権限設定の割り出しを実施
IAMロールの信頼ポリシー
IAMロールは監査人などに一時的な権限を委譲する際にも利用される
- IAMロールの権限委譲操作に特化したポリシー
- 当該の信頼ポリシーを関連づけたIAMロールが保有する情報を、信頼ポリシーの操作主体であるPrincipalに委譲(許可)することができる
VPC
IPアドレスの基礎
- ネットワーク機器やWEBサイトなどの場所を特定するためにIPアドレスを利用する
- IPアドレスは重複されない許されない一意の32ビットデータ
- ICANNという非営利団体が管理する
- IPアドレスは重複が許されない
- IPアドレスは32ビットの数値データ
- ネットワークインターフェースカード(NIC)に割り当てられ、ホストにアタッチされる
- 最も普及しているグローバルIPアドレスであるIPv4は枯渇しつつあるため、IPアドレスが足りない
- IPv6を利用することで無制限に違いIPアドレスを利用できる
グローバルとプライベートのIPアドレス
プライベートIPアドレス
10.0.0.0 ~ 10.255.255.255 172.16.0.0 ~ 172.32.255.255 192.168.0.0 ~ 192.168.255.255
サブネットとサブネットマスク
ネットワークの範囲
- ネットワークの範囲を定義することが必要
- ネットワークの範囲=IPアドレスの利用可能な範囲
- プライベートネットワークをサブネットに分けることができる
- 表記方法
10.0.1.0/16
CIDR(Classlesss Inter-Domain Routing)
196.51.×××.×××/16 左から16桁目までが同じネットワーク範囲と指定
ネットワーク部とホスト部
サブネットによるグループ化
- ローカルなネットワークに沢山の機器がつながっている特定の端末を発見しづらい
VPCの概要
VPC(Virtual Private Cloud)はAWSクラウドのネットワークからユーザー専用の領域を切り出してくれる仮想ネットワークサービス
- 任意のIPアドレスを範囲を選択して仮想ネットワークを構築
- サブネットの作成、ルートテーブルやネットワークゲートウェイの設定など仮想ネットワーキング環境を完全に制御可能
- 必要に応じてクラウド内外のネットワーク同士を接続することも可能
- 複数の接続オプションが利用可能
- 単一のVPCを構築すると単一AZの範囲に認定される
- 同一リージョン内ではVPCは複数のAZにリソースを含めることもできる
- VPCとサブネットの組み合わせでネットワーク空間を構築する
- VPCはサブネットとのセットが必須
VPCの設定
VPCウィザードを利用しない場合はVPCを作成、サブネットを作成と1つずつ作成する
サブネット
- サブネットはCIDR範囲で分割したネットワーク
- VPCとサブネットにはCIDR(IPアドレス範囲)が付与され、ネットワークレンジが決まる
- インターネットゲートウェイへのルーティング有無でサブネットのタイプが分かれる
VPC外部接続
インターネット経路を設定
AWSのルートテーブルは、 サブネット内にあるインスタンス等がどこに通信にいくかのルールを定めたものです。つまり、ルートテーブルはパケットの宛先(IPアドレス)を見て、どこに通信を流すかが書かれている表です。この表をみてパケットを運ぶので、表にない宛先のものはパケットを送らないので、通信できません。サブネット毎にどこに通信ができるかを定めたものだというところがポイントです。
ルートテーブルの役割
- パブリックサブネットからインターネットに接続するにはインターネットゲートウェイが必要
- インターネットゲートウェイはルーターの1つ
- サブネットのルートテーブルにインタネットゲートウェイへのルートを設定することでパブリックサブネットになる
プライベートサブネットを作成する
グローバルとプライベートのIPアドレス
- IPアドレスはグローバルIPアドレスとプライベートIPアドレスで使い方が分かれる
- DHCOサーバーがローカル端末に対してプライベートIPアドレスを付与して、接続できるようにする
- IPアドレスとして利用範囲を決めるのがサブネットマスクという機能
グローバルIPアドレスとプライベートIPアドレスを対応付けるのがNATというの機器またはソフトウェア
NATが1対1で変換するのに対して、IPマスカレードは複数のプライベートIPアドレスをグローバルIPアドレスに変換する
- プライベートサブネット内のインスタンスに接続するには踏み台サーバーが必要
- 戻りトラフィックにはNATゲートウェイが必要
まとめ
- NATゲートウェイはグローバルIPアドレスとプライベートIPアドレスとを関連づけるアドレス変換を実施
- プライベートサブネットからの返信トラフィックはNATゲートウェイを介して変換されてインターネットゲートウェイに送ることができインターネットへの返信が可能になる
通信プロトコルとOSI参照モデル
- 通信のルール
- インターネットの通信の際にメールやWEBアクセスなど、目的によって通信方法が異なる
- HTTP(Hyper Text Transfer Protocol)はHTML(Hyper Text Markup Language)で書かれた文書などの情報をやり取りする時に使われるプロトコル\
- ポート番号
- 通信する出入り口となるのがポート番号で、メールボックスのような役割をになっている
- ポートとはオペレーティングシステムがデータ通信を行うためのエンドポイント
- インターネット上の通信プロトコルで同じコンピュータ内で動作する複数のソフトウェアのどれが通信するかを指定するための番号
セキュリティグループとネットワークACL
- セキュリティグループ
- ネットワークACL
NATゲートウェイ
- WEBさサーバーからプライベートサブネット内のEC2インスタンスにアクセスする
- プライベートサブネット内のインスタンスに接続する踏み台サーバーが必要。インターネットへのトラフィックにはNATゲートウェイが必要(ソフトウェア更新など)
VPCとの接続
EC2
公開鍵認証方式を学ぶ
- EC2インスタンスを作成した際にキーペアを作成して、PEMファイルをダウンロード
- 作成したEC2インスタンスが自分のモノであると証明するためにPEMという鍵を利用する
- キーペアであるため、EC2インスタンス側にも対になる鍵を持っている
- この認証方式を公開鍵認証方式という、基本的な暗号方式を利用している
- 秘密鍵
- 自分自身だけが所有しており、そのデータや領域が自分のものだと表明するための鍵
- 公開鍵
- 公開鍵は秘密鍵を利用する対象となる相手に共有することを目的とした公開された鍵
- 作成したEC2インスタンスに入る際は、このPEMを指定して認証することが必要
- EC2のPEMキーも1つで複数のEC2インスタンス用のカギとして利用することができる
SSHを学ぶ
- SSHプロトコルを利用してEC2インスタンスに安全な接続を実施する
- Linuxエンジニアにはお馴染みのリモートマシン操作ツール
- SSH(Secure Shell):クライアントとリモートマシン間の通信を暗号化するプロトコル
- SSHコマンド:SSH方式によってリモートマシン上でコマンドを実行するコマンド。主にLinuxサーバーの操作に利用
- SSHクライアント:SSHによるリモートマシン操作を支援するコマンドプロンプトタイプのソフトウェア
AMIイメージ
- AMIイメージからOSセッティング方式を選択すること
- 逆にEC2インスタンスの内容をAMIとしてバックアップ可能
- OSの設定情報
- サーバーの構成情報
- ルートボリュームに構成されたEBSやインスタンスストアのデータ
- AMIはリージョンにおいて一意のものであり、他のリージョンでそのまま利用できない
- EC2インスタンスはAMIを利用して起動・バックアップ・共有することができる
EBS
- EBSはEC2インスタンスと共に利用されるブロックストレージ
- インスタンス上のワークロード(仕事量、作業負荷)などに利用
- AWSは3つのストレージサービスを提供
- EC2が利用するのはインスタンスストアとEBSの2タイプのストレージ
- インスタンスストア
- ホストコンピュータに内蔵されたディスクでEC2と不可分のブロックレベルの物理ストレージ
- EC2の一時的なデータが保持され、EC2の停止・終了と共にデータがクリアされる
- 無料
- Elastic Block Store(EBS)
- ネットワークで接続されたブロックレベルのストレージでEC2とは独立管理
- EC2を終了してもEBSデータは保持可能
- SnapshotをS3に保持可能
- 別途EBS料金が必要
- インスタンスストア
- EBSの特徴
- スタップショット
- EBSはスナップショットを利用して取得する
- 特徴
- スナップショットでバックアップ
- スナップショットからEBSを復元する際は別AZにも可能
- スナップショットはS3に保存される
- スナップショットの2世代以降は増分を保存する増分バックアップとなる
- スナップショットとAMI
S3
AWSは3つの形式のストレージサービスを提供
- ブロックストレージ
- オブジェクトストレージ
- 安価かつ耐久性を持つオンラインストレージ
- オブジェクト形式でデータを保存
- 例:S3、Glacier
- ファイルストレージ
- 複数のEC2インスタンスから同時にアタッチ可能な共有ストレージサービス
- ファイル形式でデータを保存
- 例:EFS
## Simple Storage Service(S3)
特徴
データ保存形式
オブジェクトの構成
S3のオブジェクトは以下のような要素で構成されている
- Key
- オブジェクト名前
- バケット内のオブジェクトは一意に識別する
- Value
- データそのものであり、バイト値で構成される
- バージョンID
- バージョン管理に用いるID
- メタデータ
- オブジェクトに付随する属性の情報
- サブリソース
- バケット構成情報を保存及び管理する為のサポートを提供
S3の整合性モデル
- S3は高い可用性を実現するため、データ更新・削除には結果整合性モデルを採用
- 同時書き込みはタイムスタンプ処理を実施
S3のアクセス管理
S3のアクセス管理は用途に応じて方式を使い分ける
S3のアクセス管理
S3はインターネットからパブリックアクセスの設定が可能
S3の機能
S3アクセスポイント
S3上の共有データセットを使用するアプリケーションへの大規模なデータアクセス管理を実施
- アクセスポイントの作成
- アプリケーション向けにS3パケット内にアクセスするためのアクセスポイントを作成
- アクセス制限設定
- VPCアクセス制限設定
- アクセス管理の実行
- アプリケーション向けのアクセス対象を拡大・制限するなど容易にコントロール可能
S3アクセスアナライザー
アクセスポリシーに沿っているかを確認し、不正なアクセスが発生していないか、アクセスポリシーを管理する機能
ライフサイクル管理
バケット内のオブジェクト単位でストレージクラスの変更や削除時期などを設定することができる
レプリケーション
リージョン間を跨ぐクロスリージョンレプリケーションにより耐障害性を高める
バージョン管理
ユーザーによる誤操作でデータ削除などが発生してもバージョンから復元できる
バックアップ
Glacierを利用してバックアップと復元を実施可能
アーカイブ
- 複数リージョンをレプリケートすることが可能
- S3オブジェクトデータをライフサイクル設定によりGlacierに移動 リストア
- バージョン管理機能によって削除されたデータを復元するのが基本
利用状況の確認
S3の利用状況やS3のイベント発生を確認することができる
CORS
クロスオリジンリソースシェアリング(CORS)により特定のドメインにロードされたアプリケーションが異なるドメイン内のリソースと通信する方法
マルチアップロード
大容量オブジェクトをいくつかに分けてアップロードする機能
バッチオペレーション
S3オブジェクトの大量データに対して一括処理を実行することが可能
- ジョブ
- ジョブはS3バッチオペレーションの機能の基本単位でジョブを作成することがバッチオペレーションを作成
- ジョブにはオブジェクトのリストに対して指定された操作を実行するために必要な全ての情報を登録
- S3バッチオペレーションにオブジェクトのリストを渡し、それらのオブジェクトに対して実行するアクションを指定
- マニフェスト
S3の用途
大量データを長期保存するという観点から用途を検討する
コンテンツ配信・保管
CMSから画像等のコンテンツデータの保管先にS3を利用する
ログ・バッチの保管場所
ログファイルやバッチファイルの保存場所としてS3を利用する
バックアップ・ディザスタリカバリ
バックアップの中長期の保存場所としてS3を利用する
WEBの静的ホスティング
S3のみで静的なWEBサイトをホスティングして構築可能
データレイク
S3はデータレイクとしてデータ活用のハブとして利用できる
AWS CLI
AWS CLIはコマンドラインから複数のAWSサービスを制御・管理することが可能
S3の外部接続
標準的なストレージプロトコルを利用して外部システム環境とAWSのストレージサービスを接続するサービス
- AWSが有する機能や性能を活用できることが大きな利点
- データ移転や保存などAWSストレージを利用したい場合に用いる
Storage Gatewayのタイプ
- 利用するデータに応じて3つのゲートウェイを利用する
Amazon S3 Glacier
バックアップなど中長期保存用のS3よりも安価なストレージ
- S3と同じ耐久性で値段が安い
- 一方で、データ取得などの迅速性がない
Glacierの仕組み
S3とは異なり、ボールトとアーカイブという単位でデータを保存
AWSアーキテクチャ設計の基礎
AZの選択
- 1つのリージョンにつき2つのAZを利用してアーキテクチャを設計することが基本(3つ以上はコスト効率が低下する)
- マルチAZにサーバーやDBの冗長構成を確立させることで高い可用性を実現する
VPC
サブネットの分割
- サブネットはCIDR範囲で分割したネットワークセグメント
- サブネットはインターネットアクセス範囲を定義するためlに利用する
サブネットのサイズは「/24」以上の大きいサブネットを推奨
パブリックサブネット
- インターネットと接続が必要なリソースを揃える
- インターネットとのアクセス制御に利用する
- 例
- ウェブアプリケーションのインターネットアクセス制御
プライベートサブネット
1つのAZに対して1つのパブリックサブネットと1つのプライベートサブネットが基本
- プライベートサブネットに多くのIPアドレスを割り当てる
Well-Archtected Framework
- 5つの設計原則
- Reliability(信頼性)
- Perfomance Efficiency(パフォーマンス効率)
- Security(安全性)
- AWS内のデータ・システム・アセットの保護とモニタリングによりセキュリティを高める
- 設計事項
- セキュリティの基本対応領域は以下の4つ
- Cost Optimization(コスト最適化)
- Operational Excellence(運用上の優秀性)
- 運用上の優秀性とは計画変更が起こった場合や予期せねイベントの発生時において、自動化された運用実務及び文書化されテストされレビューされた手順があること
- 設計事項
- コードに基づく運用実施
- ビジネス目的に沿った運用手順
- 定期的かつ小規模で増加的な変更実施
- 予期せねイベントへの応答テスト
- 運用イベントと障害からの学習
- 運用手順を最新のものに保持すること
- 運用上の優秀性の基本対応領域は以下の3つ
AWSのベストプラクティス
- スケーラビリティの確保
- 環境の自動化
- システムの安定性・整合性及び組織の効率性を改善するための主要プロセスを自動化する
- 関連する主要サービス
- Cloud Formation
- Codeシリーズ
- ECS
- Elastic Beastalk
- OpsWorks
- Cloud Watch
- 使い捨てリソースの使用
- サーバーなどのコンポーネントを一時的なリソースとして利用・設計する
- 関連する主要サービス
- EC2
- Auto Scaling
- コンポーネントの疎結合
- サーバーではなくサービス(サーバレス)
- 最適なデータベース選択
- ワークロードに応じた最適なデータベース技術を利用する
- 関連する主要なサービス
- Redshift
- RDS
- Dynamo DB
- Aurora
- Elastic search
- 増大するデータ量対応
- IOT/ビックデータなどで絶えず増加するデータの保持を効率的に実施する
- 関連する主要サービス
- S3
- Kinesis
- Glacier
- 単一障害点の排除
- コスト最適化
- リソースが適切なサイズから必要に応じたスケールアウト・スケールインの実施と最適な料金プランの選択
- キャッシュの利用
- 繰り返し取り出すデータやコンテンツについてはキャッシュを利用する構成
- 関連する主要サービス
- Cloud Front
- Elastic Cache
- セキュリティの確保
- 全てのレイヤー・業界・リソース内/外においてセキュリティを実装する
信頼性の設計
高可用性
- 高可用性とはアーキテクチャにより自動でシステムのダウンタイムを限りなくゼロにすること
- AWSアーキテクチャ設計において高可用なシステムを実現するかが重要なポイントとなる
- 高可用なサービス利用
- 高可用なアーキテクチャ設計
- 基本機能はユーザー側で高可用な設計をする必要がある
- 高可用性の非機能要件
ELB(Elastic Load Balancing)
- マネージド型のロードバランシングサービスでEC2インスタンスの処理を分散する際に標準的に利用する
- 特徴
主要機能
ELBの種類
- CLB
- 初期に提供されたELB
- 標準的なL4/L7におけるロードバランシングが可能だが複雑な設定はできない