S3について
S3の概要
AWSストレージサービス
AWSは3つの形式のストレージサービスを提供
◾️ブロックストレージ ・EC2にアタッチして活用するディスクサービス ・ブロック形式でデータを保存 ・高速、広帯域幅 ・EBS、インスタンスストア
◾️オブジェクトストレージ ・安価かつ高い耐久性をもつオンラインストレージ ・オブジェクト形式でデータを保存 ・S3、Glacier
◾️ファイルストレージ ・複数のEC2インスタンスから同時にアタッチ可能な共有ストレージサービス ・ファイル形式でデータを保存 ・EFS
Simple Storage Service(S3)
ユーザーがデータを容量制限なく保存可能なマネージド型で提供されるオブジェクト型ストレージ
◾️特徴 ・高い耐久性 99.999999999%
・安価なストレージ 容量単価:月額1GB / 約3円
・スケーラブルで安定した性能 データは冗長化されていて保存されデータ容量に依存しない性能がAWS側で保証される
・暗号化 転送中や保存時にデータを暗号化可能
◾️データ保存形式 ・バケット オブジェクトの保存場所 名前はグローバルでユニークな必要あり
・オブジェクト S3に格納されるファイルでURLが付与される バケット内オブジェクト数は無制限 ・データサイズ データサイズは0KBから5TBまで保存可能
S3のオブジェクト構成
・Key オブジェクトの名前であり、バケット内のオブジェクトは一意に識別する
・Value データそのものであり、バイト値で構成される
・バージョンID バージョン管理に用いる
・メタデータ オブジェクトに付随する属性の情報
・サブリソース バケット構成情報を保存および管理するためのサポートを提供 例:アクセス制御リスト(ACL)
S3の用途に応じてストレージタイプを選択する
◾️STANDARD ・複数箇所にデータを複製するため耐久性が非常に高い
◾️STANDARD-IA ・スタンダードに比べて安価 ・データの読み出し容量に応じた課金
◾️One Zone-IA ・アクセス頻度は低いが、必要に応じてすぐに取り出すデータむけ
◾️RRS ・Reduced Redundancy Storage低冗長化ストレージ ・Glacierから取り出したデータ配置など
◾️Amazon Glacier ・最安のアーカイブ用ストレージ ・データ抽出にコストと時間(3〜5時間)を要する ・ライフライクルマネジメントで指定 ・ボールロック機能でデータを保持
S3 Intelligent-Tiering
低頻度アクセスのオブジェクトを自動的に低頻度アクセス層に移動することでコストを削減する
S3の整合性モデル
S3は高い可用性を実現するため、データ更新・削除には結果整合性モデルを採用 同時書き込みはタイムスタンプ処理を実施
◾️新規登録 ・Consisitency Read ・登録後即時にデータが反映される
◾️更新 ・Eventual Consistency Read ・更新直後はデータ反映に時間がかかる
◾️削除 ・Eventual Consistency Read ・削除直後はデータ反映に時間がかかる
S3のアクセス管理
◾️IAMポリシー ・IAMユーザー / サービスに対してS3サービスへのアクセス権限を設定することができる ・一元的にユーザーへのアクセス権限を管理
◾️バケットポリシー ・バケットへのアクセス権をJSONで設定 ・他アカウントへの許可も可能 ・バケット単位の高度なアクセス管理向け
◾️ACL ・バケットと個々のオブジェクトへのアクセス権限をXMLで設定する ・他アカウントへの許可も可能 ・簡易的にアクセス管理向け
◾️著名付きURL ・AWS SDKで生成した著名付きURLでS3のオブジェクトへの一定時間アクセスを許可
S3の暗号化
◾️SSE-S3 ・S3の標準暗号化方式で簡易に利用可能 ・暗号化キーの作成、管理をS3側で自動で実施 ・ブロック暗号の1つである256ビットのAdvanced Encryption Standard(AES-256)を使用してデータを暗号化
◾️SSE-KMS ・AWS KMSに設定した暗号化キーを利用した暗号化を実施 ・ユーザー側でAWS KMSを利用して暗号化キーを作成、管理することが可能 ・クライアント独自の暗号キーを利用可能
◾️SSE-C ・ユーザーが指定したキーによるサーバー側の暗号化(SSE-C)を使用することが可能 ・利用設定や管理がになるのがデメリット
◾️クライアントサイド ・クライアント側の暗号化ではAmazon S3に送信する前にデータを暗号化する方式 ・AWS KMSなどを利用して暗号化キーを作成、実施 ・アプリケーション内に保存したマスターキーを使用
S3アクセスアナライザー
アクセスポリシーに沿っているかを確認し、不正なアクセスが発生していないかアクセスポリシーを監視する機能
・IAMアクセスアナライザーに連動したS3向けの機能 ・バケットポリシー / ACLのモニタリング ・パブリックまたは共有バケットアクセスを検出 ・バケットポリシー、バケットACL、またはその両方 バケットアクセスのソースを検索して確認する場合は、この列の情報をまず使用して迅速で正確な訂正措置を実行する ・全てのパブリックバケットと共有バケットの結果を表示する ・バケットの実際のアクセス状況を確認する
ライフサイクル管理
バケット内のオブジェクト単位でストレージクラスの変更や削除時期などを設定することで実行を自動化する
設定方法 ・バケット全体やPrefixに設定 ・オブジェクト更新日を基準にして日単位で指定し、毎日0:00UTCにキューを実行 ・最大1000ルール ・IAに移動できるのは128KB以上のオブジェクト ・MFA Deleteが有効だと設定不可
レプリケーション
リージョン間を跨ぐクロスリージョンレプリケーションにより耐障害性を高める
◾️レプリケーションのトリガー ・バケットに対するオブジェクト作成、更新、削除をトリガーにレプリケーションを実行する
◾️設定 ・バージョニング機能を有効にする ・バケットは各別リージョンを指定 ・双方向レプリケーションも可能 ・データ転送費用が発生
バージョン管理
ユーザーによる誤操作でデータ削除などが発生してもバージョンから復元できる
設定 ・バケットをバージョン管理する ・バージョン保管されたオブジェクトを参照可能 ・ライフサイクル管理によって保存する期間の指定も可能 ・バケット削除時に古いバージョンの別途削除が必要
バックアップ
Glacierを利用してバックアップと復元が実施可能 ◾️アーカイブ ・複数リージョンでレプリケートすることが可能 ・S3オブジェクトデータをライフライクル設定によりGlacierに移動
◾️リストア ・バージョン管理機能によって削除されたデータを復元するのが基本
利用状況の確認
◾️S3の分析 ・データのアクセスパターンの簡易可視化 ・CSV形式で出力可能 ・バケット内の分析を実施 ・アクセス頻度の低いデータや保存期間を確認してライフライクルポリシー設定に活かしていく
◾️S3のイベント通知 ・バケット内イベントの発生をトリガーにして、SNS / SQS / Lamdbaに通知設定が可能 ・シームレスなシステム連携処理を実現
S3データの解析
◾️S3 Select(Glacier Select) ・S3の内部機能として有している検索機能でS3内で直接にクエリを実行し、データを取得できる ・GZIP圧縮データやCSVやJSONに対して実行可能
◾️Amazon Athena ・Amazon S3内のデータを直接、簡単に分析できるようにするインタラクティブなクエリサービス ・Athena SQLクエリでSageMaker機械学習モデルを呼び出し、機械学習による推論も実行可能
◾️Amazon Macie ・機械学習によりAmazon S3の機密データを検出、分類、保護する、フルマネージド型サービス ・機密データ検出や調査を実施する
◾️Amazon Redshift Spectrum ・Amazon S3の格納データに対して、Amazon Redshiftから直接クエリを実行できる機能 ・Redshiftクラスターが起動されている前提であるため、Redshiftを利用している場合にお勧め
CORS
クロスリージョンリソースシェアリング(CORS)により、特定のドメインにロードされたアプリケーションが異なるドメイン内のリソースと通信する方法を定義
マルチパートアップロード
大容量オブジェクトをいくつかに分けてアップロードする機能
バッチオペレーション
S3オブジェクトの大量データに対して一括処理を実行することが可能
◾️ジョブ ・ジョブはS3バッチオペレーションの機能の基本単位で、ジョブを作成することでバッチオペレーションを作成 ・ジョブにはオブジェクトのリストに対して指定された操作を実行するために必要な全ての情報を登録 ・S3バッチオペレーションにオブジェクトのリストを渡し、それらのオブジェクトに対して実行するアクションを指定
◾️マニフェスト ・マニフェストはAmazon S3が作用するオブジェクトキーをリストするAmazon S3オブジェクト
・マニフェストオブジェクトキー、ETag、およびオプションでバージョンIDを指定
・AmazonS3インベントリレポート / CSVファイルの2つの形式で設定
S3の用途
大量データを長期保存するという観点から用途を検討する
・コンテンツ配信 ・ログ、バッチの保管場所 ・バックアップ / ディザスタリカバリ ・webの静的ホスティング ・データレイク
S3外部接続
AWS Storage Gateway
標準的なストレージプロトコルを利用して外部システム環境とAWSのストレージサービスとを接続するサービス
利点
AWSが有する機能や性能を活用できることが大きな利点 ・標準的なストレージプロトコルを活用したシームレスな統合 ・キャッシュを活用した低レイテンシなアクセスが可能 ・AWSストレージサービスの堅牢性、低コスト、拡張性 ・効率的なデータ転送 ・AWSのモニタリング、管理、セキュリティとの統合
用途
データ移転や保存などAWSストレージを利用したい場合に用いる ・ビックデータ処理 / クラウドバースティング / システム移行のためにデータをAWSストレージに移動させたいケース ・バックアップ、アーカイブ、災害対策としてAWSにデータを保持 ・オンプレミス環境で容易にAWAストレージを活用
Storage Gatewayのタイプ
利用するデータタイプに応じて3つのゲートウェイを利用する
・ファイルゲートウェイ Amazon S3オブジェクトにStorage Gatewayを経由してファイルデータを格納
・ボリュームゲートウェイ AmazonS3およびEBSsnapshotsをバックエンドとしたブロックストレージ
・テープゲートウェイ Amazon S3とGlacierにデータを保管する仮想テープストレージとVTL管理
ファイルゲートウェイ
オンプレミスのファイルデータをAWS Storage Gateway経由でAmazon S3上のオブジェクトとして格納
・仮想アプライアンスでNFS v3 / V4.1のインターフェースを提供 ・更新データは非同期でAWSに転送 ・ファイルとオブジェクトのマッピングは1対1 ・S3のライフサイクルポリシー / バージョニング / クロスリージョンレプリケーションなどが利用可能
ボリュームゲートウェイ
オンプレミス環境のディスクデータをAWS Storage Gateway経由でSnapshotとしてAmazon S3上に取得し、AWS環境のDisaster Recoveryを実現
・iSCSIでブロックストレージとしてインターフェースを提供 ・オンプレミスのローカルディスクのバックアップを自動的にAWS側で実施 ・更新データは非同期でAWSに転送 ・オンプレミス側のStorage Gatewayへリストア ・AWS上でEBSディスクへのリストアも可能
テープゲートウェイ
Storage Gatewayを仮想テープライブラリとして利用することで堅牢性の高い外部保管バックアップストレージを実現
・VTL(Virtual Tape Library)対応バックアップソフトウェアを利用し、Storage Gatewayを経由してバックアップデータをS3およびGlacierに格納
・オンプレミスおよびAWSのEC2環境で利用可能
・バックアップソフトウェアによりテープ取り出しオペレーションを行うことで安価なアーカイブストレージ(S3 / Glacier)を利用
・主要なバックアップソフトウェアをサポート
S3 Transfer Acceleration
クライアントとS3バケット間で長距離に渡るファイル転送を高速、簡単、安全に実行
・中央のバケットに対して世界中のお客様からアップロードが行われる
・大陸間で定期的にギガバイトからテラバイト単位のデータを転送する
・AmazonS3へのアップロード時にインターネット経由で利用可能な帯域幅を十分に活用できない
Amazon S3 Glacierの概要
バックアップなど中長期保存用のS3よりも安価なストレージ
・S3と同じ耐久性で値段が安い ・データ取得などの迅速性がない
Glacierの特徴
バックアップなど中長期保存用のS3よりも安価なストレージ ・Amazon S3 Glacierではデータはアーカイブに保存される ・1つのアーカイブの最大サイズは40TB ・保存可能なアーカイブ数とデータ量に制限なし ・各アーカイブには作成時に一意のアーカイブIDが割り当てられ、作成後はアーカイブを更新できない ・アーカイブを保存するためのコンテナとしてボールドを使用(1つのAWSアカウントでは最大1,000個のボールドを使用) ・Advanced Encryption Standard(AES)256ビット対象鍵を使用してデフォルトで自動的に暗号化 ・S3と違って直接データをアップロード、取得という処理ができないため、S3ライフライクル管理からか、プログラム処理によるアップロード / ダウンロードsが必要 ・Glacierの最低保持期間は90日
Glacierの仕組み
◾️ボールド ・ボールドはアーカイブを格納するコンテナ ・ボールドはリージョンに作成
◾️アーカイブ ・アーカイブは写真、動画、ドキュメントなどの任意のデータでS3 Glacierでのストレージの基本単位 ・各アーカイブは一意のアドレスを持つ
◾️ジョブ ・アーカイブにSELECTクエリを実行したりアーカイブを取得したり、ボールドのイベントリを取得したりする実行単位
◾️通知設定 ジョブの完了には時間がかかるため、ジョブの完了時にSNSと連携した通知設定が可能
Glacierの仕組み
アーカイブに一時的にデータをアーカイブ処理して、ボールドに長期保存するという仕組み
Glacierのデータ取り出しタイプ
◾️迅速 ・迅速取り出しでは、アーカイブのサブセットが迅速に必要になった場合に、データに素早くアクセスするモード 通常1〜5分以内で使用可能になる
◾️プロビジョニングキャパシティ ・プロビジョンドキャパシティは、迅速取り出しの取得容量を必要な時に利用できることを保証する仕組み ◾️標準 ・標準取り出しでは、数時間以内に全てのアーカイブにアクセスできるデフォルト設定 通常、標準取り出しには3〜5時間で完了
◾️大容量 大容量取り出しは、最も安価な取り出しオプションであり、大量のデータ(ペラバイトのデータを含む)を1日以内に低コストで取得できる 通常、大容量取り出しは5〜12時間で完了
アクセス管理
◾️IAMポリシー ・IAMユーザーやリソースに対してS3サービスへのアクセス権限を設定する ・一元的にリソースへのアクセス権限を管理
◾️ボールドポリシー ・ボールドで直接アクセスポリシーを定義して、組織内のユーザーや社外ユーザーに対してもボールドへのアクセス権限を設定する
◾️データ取り出しポリシー ・データ取り出しに関する制限を定義 ・無料利用枠のみに制限 または無料利用枠を超える量を取り出したい場合は、最大取得率を指定すると、取り出し速度を制限して取り出しコストの上限を設定
◾️ボールトロックポリシー ・ロックによって変更を禁止することによりコンプライアンス管理を強力に実施することが可能
◾️著名 ・認証保護のために全リクエストに著名が必要
Amazon Glacier
バックアップなど中長期保存用のS3よりも安価なストレージ ◾️容量あたりの料金 ・GB / 月あたり0.005USD(0.5円ほど) S3は標準で0.025USD / One zoneで0.0152USD / GB
◾️データ取り出し料金 ・迅速:0.033USD / GB ・標準:0.011USD / GB ・大容量:0.00275USD / GB
◾️データ取り出しリクエスト料金 ・迅速:11.00USD / リクエスト1,000件 ・標準:0.0571USD / リクエスト1,000件 ・大容量:0.0275USD / リクエスト1,000件
◾️プロビジョニングされた迅速取り出し 110.00USD / プロビジョンド容量単位
◾️データ転送料金 ・データ転送(イン)は無料 ・インターネットへのデータ転送(アウト)は1GB / 月まで無料 それ以上は有料
Glacier Deep Archive
Glacierよりも値段が安くデータ保存が可能だが、データ取得はさらに遅くなる中長期保存用ストレージタイプ ・Glacierよりさらに値段がやすい ・Glacierよりさらにデータ取得が遅い
・基本的なデータモデル、管理はGlacierと同じ ・1GBあたりの月額料金0.00099USDから利用可能でAWSの最低価格 ・データは3つ以上のAWSアベイラビリティゾーンにまたがって保存され、S3と同様に99.999999999%の耐久性を実現 ・標準取り出しでデータは12時間以内に取り出すことが可能 ・大量取り出しで48時間以内にデータを取り出す大容量取り出しをすることで取得コスト低減出来る
VPCについて
VPCの概要
Virtual Private Cloud(VPC) VPCはAWSクラウド内に論理的に分離されたセクションを作り、ユーザーが定義した仮想ネットワークを構築するサービス
・任意のIPアドレス範囲の選択して仮想ネットワークを構築 ・サブネットの作成、ルートテーブルやネットワークゲートウェイの設定など仮想ネットワーキング環境を完全に制御可能 ・必要に応じてクラウド内外のネットワーク同士を接続することも可能 ・複数の接続オプションが利用可能 →インターネット経由 →VPN / 専用線(Direct Connect)
VPNとのDirect Connect
VPNの方が安く素早く利用できるが、信頼性や品質は専用線が勝る
◾️コスト ・VPN 安価なベストエフォート回線が利用可能
・専用線 キャリアの専用線サービス契約が必要となりVPNより割高
◾️リードタイム ・VPN クラウド上での接続設定で可能なため即時
・専用線 物理対応が必要なため数週間
・専用線 ポートあたり1G / 10Gbps
◾️品質 ・VPN インターネット経由のためネットワーク状態の影響を受ける
・専用線 キャリアにより高い品質が保証される
◾️障害切り分け ・VPN インターネットベースのため自社で保持している範囲以外の確認は難しい
・専用線 物理的に経路が確保されているため比較的容易
VPCエンドポイント
VPCエンドポイントはグローバルIPをもつAWSサービスに対して、VPC内から直接アクセスするための出口
Gateway型はサブネットに特殊なルーティングを設定し、VPC内部から直接外のサービスと通信する ◾️特徴 ・アクセス制御:エンドポイントポリシーを設定 ・料金:無料 ・冗長性:AWS側が対応
PrivateLink型はサブネットにエンドポイント用のプライベートIPアドレスを生成し、DNSが名前解決でルーティングする
◾️特徴 ・アクセス制御:セキュリティグループを設定 ・料金:有料 ・冗長性:マルチAZ設計
VPC Flow logs
VPC Flow Logsはネットワークトラフィックを取得しCloudWatchでモニタリングできるようにする機能
・ネットワークインターフェイスを送信元 / 送信先とするトラフィックが対象
・セキュリティグループとネットワークACLのルールでaccepted / rejectされたトラフィックログを取得
・キャプチャウインドウと言われる時間枠(約10分間)で収集、プロセッシング、保存する
・RDS、Redshift、ElasticCache、WorkSpacesのネットワークインタフェーストラフィックも取得可能
・追加料金はなし
VPCの設定上限
VPCの各種設定においては上限数があるため、大規模に利用する場合は考慮する必要がある
・リージョンあたりのVPCの上限数 5 ・VPCあたりのサブネットの上限数 200 ・AWSアカウントあたりの1リージョン内のElasticIP数 5 ・ルートテーブルあたりのルート上限数 100 ・VPCあたりのセキュリティグループの上限数 500 ・セキュリティグループあたりのルールの上限数 50
VPCを分割するケース
アプリサービスや組織構成などの用途に応じてVPCを分割する
・アプリケーションによる分割 ・監査のスコープによる分割 ・リスクレベルによる分割 ・本番、検証、開発フェーズによる分割 ・部署による分割、共通サービスの切り出し
VPC Peering
VPC Peeringにより2つのVPC間でのトラフィックルーティングが可能
・異なるAWSアカウント間のVPC間をピア接続可能 ・一部のリージョン間の異なるVPC間のピア接続も可能 ・単一障害点や帯域幅のボトルネックは存在しない
EC2について
EC2の概要
EC2とは
数分で利用可能となる従量課金で利用可能な仮想サーバー
・起動、ノード追加、削除、マシンスペック変更が数分で可能
・管理者権限で利用可能
・OSまでは提供されているタイプを選択することで自動設定され、OSより上のレイヤーを自由に利用可能
・独自のAmazon Machine ImageにOS設定を作成し、保存して再利用が可能
リザーブドインスタンス
利用期間を長期指定して利用する形式で、オンデマンドに比較して最大75%割安になる
◾️利用期間 ・スタンダード 1年(40%割引) 3年(60%割引)
・コンバーティブル 1年(31%割引) 3年(54%割引)
◾️AZ / インスタンスサイズ / ネットワークタイプ変更可否 ・スタンダード 有
・コンバーティブル 有
◾️インスタンスファミリー / テナンシー / 支払オプションの変更可否 ・スタンダード なし
・コンバーティブル 有
◾️リザーブドインスタンスマーケットプレイスでの販売可否 ・スタンダード 可能
・コンバーティブル 今度可能となる予定
◾️ユースケース ・一定した状態または使用量が予測可能なワークロード ・災害対策などキャパシティ予約が可能なアプリケーション
スポットインスタンス
予備のコンピューティング容量を、オンデマンドインスタンスに比べて割引(最大90%引き)で利用できるEC2インスタンス
・予備用を入札式で利用するためとても安い(最大90%引き)
・起動に通常よりも少し時間がかかる
・予備用のため途中で削除される可能性がある →一時的な拡張などの用途で利用
Saving Plan
1〜3年の期間に一定の使用量を守ることによりAmazon EC2コストを削減する ・リザーブドインスタンスと同様に、1年または3年の期間に特定の量の処理能力(USD / 時間で測定)を使用する契約を結ぶことで適用される割引契約
・AWSコンピューティング使用料金を最大72%節約できる
・Amazon EC2、AWS Fargate、AWS Lamdbaに適用可能
キャパシティの予約
特定のアベイラビリティーゾーンのEC2インスタンスに対して任意の期間キャパシティを予約する
◾️期間 ・キャパシティーの予約 コミットメントは不要で必要に応じて作成及びキャンセル可能
・リザーブドインスタンス 固定の1年または3年のコミットメントが必要
・Saving Plan 固定の1年または3年のコミットメントが必要
◾️キャパシティの利点 ・キャパシティーの予約 特定のAZで予約されるキャパシティー
・リザーブドインスタンス 特定のリージョンで予約されるキャパシティー
・Saving Plan なし
◾️請求割引 ・キャパシティーの予約 なし
・Saving Plan 有
◾️インスタンスの制約 ・キャパシティーの予約 リージョンごとのオンデマンドインスタンス制限に制限
・リザーブドインスタンス AZまたはリージョンあたり20の制限 制限引き上げ申請可
・Saving Plan なし
物理対応可能なインスタンス
物理サーバーにインスタンスを起動して制御が可能なタイプのインスタンス
◾️ハードウェア専有インスタンス ・専有HWのVPCで実行されるEC2インスタンス ・ホストHWのレベルで、他のAWSアカウントに属するインスタンスから物理的に分離する ・同じAWSアカウントのインスタンスとはHWを共有する可能性がある
◾️Dedicated Host ・EC2インスタンス容量を完全にお客様専用として利用できる物理サーバー ・サーバーにバインドされた既存のソフトウェアライセンスを利用可能
◾️Bare Metal ・アプリケーションが基盤となるサーバーのプロセッサーとメモリーに直接アクセス可能なインスタンス ・AWSの各種サービスとの連携が可能でOSが直接下層のハードウェアにアクセス可能
ストレージ
EC2で直接利用するストレージは不可分なインスタンスストアと自分で設定するEBSの2つ
◾️インスタンスストア ・ホストコンピューターに内蔵されたディスクでEC2と不可分のブロックレベルの物理ストレージ ・EC2の一時的なデータが保持され、EC2の停止・終了と共にクリアされる ・無料
◾️Elastic Block Store(EBS) ・ネットワークで接続されたブロックレベルのストレージでEC2とは独立して管理される ・EC2をTerminateしてもEBSは保持可能でSnapshotをS3に保持可能 ・別途EBS料金が必要
EC2のバックアップ
EC2インスタンスは定期的にバックアップすることが重要
・定期的にバックアップをとる ・定期的にリカバリプロセスを確認する ・複数のAZに重要なアプリケーションをデプロイすること ・フェイルオーバー対応を準備すること ・イベントをモニタリングして対応できるようにすること ・インスタンス起動時に動的IPアドレス処理の設定を行うこと
EBS
EC2にアタッチされるブロックレベルのストレージサービス
◾️基本 ・OSやアプリケーション、データの置き場所など様々な用途で利用される ・実態はネットワーク接続型ストレージ ・99.999%の可用性 ・サイズは1GB〜16TB ・サイズと利用期間で課金
◾️特徴 ・ボリュームデータはAZ内で複数のHWにデフォルトでレプリケートされており、冗長化不要 ・セキュリティグループによる通信制御対象外で有り、全ポートを閉じてもEBSは利用可能 ・データは永続的に保存 ・EC2インスタンスは他のAZ内のEBSにはアクセスできない ・EC2インスタンスに複数のEBSを接続することはできるが、EBSを複数のインスタンスで共有することはできない ・他のインスタンスに付け替えできる
Snapshot
EBSはスナップショットを利用してバックアップを取得する
◾️特徴 ・Snapshotでバックアップ ・SnapshotからのEBSを復元する際は別AZにも可能 ・SnapshotはS3に保存される ・Snapshotの2世代目以降は増分データを保存する増分バックアップとなる(1世代目を削除しても復元は可能) ・Snapshot作成時にブロックレベルで圧縮して保管するため、圧縮後の容量に対して課金が行われる
Snapshot作成時はデータ整合性を保つため静止点の設定を推奨 ◾️Snapshot作成時はデータ整合性を保つため静止点の設定を推奨 ・ソフトウェアの機能を利用 ・ファイルシステムの機能を利用 ・バックアップソフトウェアの機能を利用 ・アプリケーションの停止 ・ファイルシステムのアンマウントなど
◾️保存期間や世代数は無制限 ◾️世代管理が必要な場合はAWSCLIやAPI等で自動化する
スナップショットとAMI
Amazon Machine ImageはOS設定のイメージで有り、Snapshotはストレージのバックアップとなる
◾️AMI ・EC2インスタンスのOS設定などをイメージとして保持して、新規インスタンス設定に転用するもの
◾️Snapshot ・ストレージ / EBSのその時点の断面のバックアップとして保持するもの ・ストレージの復元や複製に利用
EBSのボリュームタイプ
ユースケースに応じて性能やコストが異なる5種類のボリュームタイプから選択
◾️SSD ・汎用SSD →仮想ディスクトップ →低レイテンシーを要求するアプリ →小〜中規模のデータベース →開発環境
・プロビジョンドIOPS →高いI/O性能に依存するNoSQLやアプリ →10,000IOPSや160MB/s超のワークロード →大規模DB
◾️HDD ・スループット最適化HDD →ビックデータ処理 →DWH →大規模なETL処理やログ分析
・コールドHDD →ログデータなどアクセス頻度が低いデータ →バックアップやアーカイブ
◾️マグネティック →旧世代のボリュームで基本利用しない →データへのアクセス頻度が低いワークロード
IAMについて
IAM
IAMの概要
責任共有モデル
セキュリティに対してAWSとユーザーとで責任分界して対応する責任共有モデルとなっている。
ユーザー側の責任範囲
・IAMによるアカウント管理 ・セキュリティグループの設定 ・アプリケーションのロールベースのアクセス設定 ・ネットワーク / インスタンスオペレーションシステム(バッチ)などの設定 ・OS / ホストベースのファイアーウォール設置
IAMとは
AWS Identity and Access Management(IAM)は安全にAWS操作を実施するための認証・許可の仕組み
・AWS利用者認証の実施 ・アクセスポリシーの設定 ・ユーザー個人またはグループ毎に設定
ルートユーザー
最初に作成されるのがルートユーザーであり通常の管理には利用しないアカウント ・AWSアカウント作成時に作られるIDアカウント ・全てのAWSサービスとリソースを使用できる権限を有するユーザー ・日常的なタスクはルートユーザーを使用しないことが強く推奨される
IAMユーザー
・1アカウントで5000ユーザーまで作成可能 ・所属グループは10まで設定可能
IAMグループ
・1アカウントで300グループまで作成可能
IAMポリシー
ユーザーなどへのアクセス権限を付与
◾️管理ポリシー ・AWS管理ポリシー AWSが作成及び管理する管理ポリシー
・カスタマー管理ポリシー AWSアカウントで作成、管理する管理ポリシー 同じポリシーを複数のIAMエンティティにアタッチできる
◾️インラインポリシー ・自身で作成及び管理するポリシー 1つのプリンシパルエンティティ(ユーザー、グループ、またはロール)に埋め込まれた固有ポリシーで、プリンシパルエンティティにアタッチすることができる
IAMポリシーはJSON形式で設定
・Effect Allow→許可 Deny→拒否
・Action 対象のAWSサービス 例:"s3:Get"
・Resource 対象のAWSリソース ARNで記述
・Condition アクセス制御が有効となる条件
ユーザーのアクティビティの記録
・Access AdvisorのService Last Accessed Data IAMエンティティ(ユーザー、グループ、ロール)が最後にAWSサービスにアクセスした日付と時刻を表示する機能
・Credential Report 利用日時などが記録されたIAM認証情報に係るレポートファイル
・AWS Config IAMのUser、Group、Role、Policyに関して変更履歴、構成変更を管理、確認することができる機能
・AWS Cloud Trail AWSインフラストラクチャ全体でアカウントアクティビティをログに記録し、継続的に監視し、保持することができる機能
アクセス権限の一時付与
・AWS Security Token Service(STS) 動的にIAMユーザーを作り、一時的に利用するトークンを発行するサービス
・Temporary Security Credentials AWSに対して一時的な認証情報を作成する仕組み
IAMの設計
IAM設計のベストプラクティス
1、アカウント設定などの必要な場合を除いて、ルートユーザーを利用しない
2、ルートアカウントなどの特権ユーザーに対して、MFAを有効化する
3、利用者ごとにIAMユーザーを作成する
4、組織利用の場合は、役割ごとのIAMグループを作成してグループで管理するのを基本とする
5、最小限の権限設定と不要な認証情報は削除を心がける
6、ユーザーのために強度の高いパスワードポリシーを設定する
7、EC2インスタンスで作動するアプリケーションなどプログラムから利用する場合はなるべくロールを使用する
8、モバイルやアプリケーションを含め、一時利用にはSTSなどで最小限の利用許可を与える
9、AWSアカウントのアクティビティを常に監視する
AWS 0rganizations
IAMのアクセス管理を大きな組織でも楽に実施できるようにするマネージド型サービス ・複数アカウントの一元管理 AWSアカウントをグループ化してポリシーを定期ようして一元的に管理する
・新規アカウント作成の自動化 コンソール / SDK / CLIでAWSアカウントを新規作成して、作成内容をログ管理できる
・一括請求 複数AWSアカウントの請求を一括化する
機能セットの選択
支払一括代行とアカウントの全体管理の2つの方式を選択する
・Consolidated Biling Only 支払一括代行のみを実施する場合に選択
・All Feature 支払一括代行も含めて、企業内の複数アカウントを統制したい場合に選択
メモ ・パワーユーザー 管理者権限以外の全ての権限を有している
・IAMエンティティ ユーザー、グループ、ロール
S3
S3の概要
AWSは3つの形式のストレージサービスを提供
◾️ブロックストレージ ・EC2にアタッチして活用するディスクサービス ・ブロック形式でデータを保存 ・高速、広帯域幅 ・例:EBS、インスタンスストア
◾️オブジェクトストレージ ・安価かつ高い耐久性を持つオンラインストレージ ・オブジェクト形式でデータを保存 ・例:S3、Glacier
◾️ファイルストレージ ・複数のEC2インスタンスから同時にアタッチ可能な共有ストレージサービス ・ファイル形式でデータを保存 ・例:EFS
Simple Storage Service(S3)
ユーザーがデータを容量制限なく保存可能なマネージド型で提供されるオブジェクト型ストレージ
【特徴】 ・高い耐久性 99.999999999%
・安価なストレージ 容量単価:月額1GB / 約3円
・スケーラブルで安定した性能 データは冗長化されて保存されデータ容量に依存しない性能がAWS側で保証される
・暗号化 転送中や保存時にデータを暗号化可能
【データ保存形式】 ・バケット オブジェクトの保存場所 名前はグローバルでユニークな必要あり
・オブジェクト S3に格納されるファイルでURLが付与される バケット内オブジェクト数は無制限
・データサイズ データサイズは0KBから5TBまで保存可能
S3のオブジェクト構成
・Key オブジェクトの名前であり、バケット内のオブジェクトは一意に識別する
・Value データそのものであり、バイト値で構成される
・バージョンID バージョン管理に用いるID
・メタデータ オブジェクトに付随する属性の情報
・サブリソース バケット構成情報を保存および管理するためのサポートを提供 例:アクセス制御リスト(ACL)
S3 Inteligent-Tiering
低頻度アクセスのオブジェクトを自動的に低頻度アクセス層に移動することでコストを削減する
S3の値段
保存データ容量、データ取得リクエストおよびデータ転送アウトに応じて課金される
◾️容量当たりの料金 ・最初の50TB / 月 0.025USD / GB ・次の450TB / 月 0.024USD / GB ・500TB / 月以上 0.023USD / GB
◾️データ取り出しリクエスト料金 PUT、COPY、POST、LISTリクエスト(1,000リクエスト当たり):0.0047USD GET、SELECT、他の全てのリクエスト(1,000リクエスト当たり):0.00037USD
◾️データ転送料金 データ転送(イン)は無料 インターネットへのデータ転送(アウト)は以下の通り 1GBまで / 月 0.00USD / GB 次の9.999TB / 月 0.114USD / GB 次の40TB / 月 0.089USD / GB 次の100TB / 月 0.086USD / GB 150TB / 月より大きい 0.084USD / GB
S3の整合性モデル
S3は高い可用性を実現するため、データ更新・削除には結果整合性モデルを採用 同時書き込みはタイムスタンプ処理を実施
◾️新規登録 ・Consistency Read ・登録時即時にデータが反映される
◾️更新 ・Eventual Consistency Read ・更新直後はデータ反映に時間がかかる
◾️削除 ・Eventual Consistency Read ・削除直後はデータ反映に時間がかかる
S3のアクセス管理
◾️IAMポリシー ・IAMユーザー / サービスに対してS3サービスへのアクセス権限を設定することができる ・一元的にユーザへのアクセス権限を管理
◾️バケットポリシー ・バケットへのアクセス権をJSONで設定 ・他アカウントへの許可も可能 ・バケット単位の高度なアクセス管理向け
◾️ACL ・バケットと個々のオブジェクトへのアクセス権限をXMLで設定する ・他アカウントへの許可も可能 ・簡易的にアクセス管理向け
◾️著名付きURL ・AWS SDKで生成した著名付きURLでS3のオブジェクトへの一定時間アクセスを許可
S3の暗号化
◾️SSE-S3 ・S3の標準暗号化方式で簡易に利用可能 ・暗号化キーの作成、管理をS3側で自動で実施 ・ブロック暗号の1つである256ビットのAdvanced Encryption Standard(AES-256)を使用してデータを暗号化
◾️SSE-KMS ・AWS KMSに設定した暗号化キーを利用した暗号化を実施 ・ユーザ側でAWS KMSを利用して暗号化キーを作成、管理することが可能 ・クライアント独自の暗号キーを利用可能
◾️SSE-C ・ユーザーが指定したキーによるサーバー側の暗号化(SSE-C)を使用することが可能 ・利用設定や管理が煩雑になるのがデメリット
◾️クライアントサイド暗号化(CSE) ・クライアント側の暗号化では、AmazonS3に送信する前にデータを暗号化する方式 ・AWS KMSなどを利用して暗号化キーを作成、実施 ・アプリケーション内に保存したマスターキーを使用
VPC
VPCの概要
Virtual Private Cloud(VPC) VPCはAWSクラウド内に論理的に分離されたセクションを作り、ユーザーが定義した仮想ネットワークを構築するサービス
・任意のIPアドレス範囲の選択して仮想ネットワークを構築 ・サブネット作成、ルートテーブルやネットワークゲートウェイの設定など仮想ネットワーキング環境を完全に制御可能 ・必要に応じてクラウド内外のネットワーク同士を接続することも可能 ・複数の接続オプションが利用可能
VPCとの接続
Direct Conect
お客様のデータセンターやオフィスを専用線などを介してAWSへプライベートに接続するサービス
◾️メリット ・安価なアウトバウンドトラフィック料金 ・ネットワーク信頼性の向上 ・ネットワーク帯域幅の向上
Direct Connectロケーションに物理的に自社オンプレ環境を接続することでAWS環境との専用線接続を実現する
Direct Connect gateway
同一アカウントに所属する複数リージョンの複数AZから複数リージョンの複数VPCに接続
VPNとDirect Connect
VPNの方が安く素早く利用できるが、信頼性や品質は専用線が勝る
VPCエンドポイント
グローバルIPをもつAWSサービスに対して、VPCないから直接アクセスするための出口
Gateway型
サブネットに特殊なルーティングを設定し、VPC内部から直接外のサービスと通信する ◾️特徴 ・アクセス制御:エンドポリシーを設定 ・料金:無料 ・冗長性:AWS側が対応
PrivateLink型
サブネットにエンドポイント用のプライベートIPアドレスを生成し、DNSが名前解決でルーティングする ◾️特徴 ・アクセス制御:セキュリティグループを設定 ・料金:有料 ・冗長性:マルチAZ設計
NATゲートウェイ
プライベートサブネットのリソースがインターネットまたはAWSクラウドと通信が可能になる ◾️特徴 ・AWSによるマネージドNATサービス ・EIPの割り当て可能 ・最大10Gbpsの高パフォーマンス ・ビルトインで冗長化されている高可用性 ・アベイラビリティーゾーン毎に設置する
VPC Flow logs
ネットワークトラフィックを取得しCloudWatchでモニタリングできるようにする機能 ・ネットワークインターフェースを送信元 / 送信先とするトラフィックが対象 ・セキュリティグループとネットワークACLのルールでaccepted / rejectされたトラフィックログを取得 ・キャプチャウィンドウと言われる時間枠(約10分間)で収集、プロセッシング、保存する ・RDS、Redshift、ElasticCache、WorkSpacesのネットワークインタフェーストラフィックも取得可能 ・追加料金はなし
VPCの設定上限
・リージョンあたりのVPCの上限数 5 ・VPC当たりのサブネットの上限数 200 ・AWSアカウント当たりの1リージョン内のElasticIP数 5 ・ルートテーブル当たりのルート上限数 100 ・VPC当たりのセキュリティグループの上限数 500 ・セキュリティグループ当たりのルールの上限数 50
VPCを分割するケース
・アプリケーションによる分割 ・監査のスコープによる分割 ・リスクレベルによる分割 ・本番/ 検証 / 開発フェーズによる分割 ・部署による分割 共通サービスの切り出し
VPC Peering
・異なるAWSアカウント間のVPC間をピア接続可能 ・一部リージョン間の異なるVPC間のピア接続も可能 ・単一障害点や帯域幅のボトルネックは存在しない
EC2
EC2の概要
数分で利用可能となる従量課金で利用可能な仮想サーバー
・起動、ノード追加、削除、マシンスペック変更が数分で可能 ・汎用的なIntelアーキテクチャを採用 ・管理者権限で利用可能 ・WindowsやLinuxなどのほとんどのOSをサポート ・OSまでは提供されているタイプを選択することで自動設定され、OSより上のレイヤーを自由に利用可能 ・独自のAmazon Machine ImageにOS設定を作成し、保存して再利用が可能
EC2とは
利用する単位をインスタンスと呼び、任意のAZにインスタンスを立ち上げてサーバーとして利用する
①利用するAMIイメージ(OSセッティング)を選択 ②インスタンスタイプを選択 ③ストレージを選択 ④セキュリティグループを選択 ⑤SSHキーペアを設定
AMIイメージ
OSセッティング方式を選択すること
リサーブドインスタンス
利用期間を長期指定して利用する形式で、オンデマンドに比較して最大75%割安になる
スポットインスタンス
予備のコンピューティング容量を、オンデマンドインスタンスに比べて割引(最大90%引き)で利用できるEC2インスタンス
・予備用を入札式で利用するためとても安い(最大90%引き) ・起動に通常よりも少し時間がかかる ・予備用のため途中で削除される可能性がある →一時的な拡張などの用途で利用
Saving Plan
1〜3年の期間に一定の使用量を守ることによりAmazon EC2コストを削減する
・リザーブドインスタンスと同様に、1年または3年の期間に特定の量の処理能力(USD/時間で測定)を使用する契約を結ぶことで適用される割引契約 ・AWSコンピューティング使用料金を最大72%節約できる ・Amazon EC2、AWS Fargate、AWS Lambdaに適用可能
キャパシティーの予約
特定のアベイラビリティーゾーンのEC2インスタンスに対して任意の期間キャパシティーを予約する
物理対応可能なインスタンス
物理サーバーにインスタンスを起動して制御が可能なタイプのインスタンス
・ハードウェア専有インスタンス 専用HWのVPCで実行されるEC2インスタンス ホストHWにレベルで、他のAWSアカウントに属するインスタンスから物理的に分離する 同じAWSアカウントのインスタンスとはHWを共有する可能性がある
・Dedicated Host EC2インスタンス容量を完全に利用できる物理サーバー
・Bare Metal アプリケーションが基盤となるサーバーのプロセッサーとメモリーに直接アクセス可能なインスタンス AWSの各種サービスとの連携が可能でOSが直接下層のハードウェアにアクセス権限
ストレージ
EC2で直接利用するストレージは不可分なインスタンスストアと自分で設定するEBSの2つ
インスタンスストア ・ホストコンピュータに内蔵されたディスクでEC2と不可分のブロックレベルの物理ストレージ ・EC2の一時的なデータが保持され、EC2の停止、終了と共にクリアされる
Elastic Block Store(EBS) ・ネットワークで接続されたブロックレベルのストレージでEC2とは独立して管理される ・EC2をTerminateしてもEBSは保持可能で、SnapshotをS3に保持可能 ・別途EBS料金が必要
セキュリティグループ
インスタンスへのトラフィックのアクセス可否を設定するファイアーウォール機能を提供
キーペア
キーペアを利用して自身がダウンロードした秘密鍵とマッチした公開鍵を有するインスタンスにアクセスする
EC2のバックアップ
EC2インスタンスは定期的にバックアップすることが重要
・定期的にバックアップを取る ・定期的にリカバリプロセスを確認する ・複数のAZに重要なアプリケーションをデプロイすること ・ファイルオーバー対応を準備すること ・イベントをモニタリングして対応できるようにすること ・インスタンス起動時に動的IPアドレス処理の設定を行うこと
EBSの概要
EC2にアタッチされるブロックレベルのストレージサービス
◾️基本 ・OSやアプリケーション、データの置き場所など様々な用途で利用される ・実態はネットワーク接続型ストレージ ・99.999%の可用性 ・サイズは1GB〜16TB ・サイズと利用期間で課金
◾️特徴 ・ボリュームデータはAZ内で複数のHWにデフォルトでレプリケートされており、冗長化不要 ・セキュリティグループによる通信制御対象外であり、全ポートを閉じてもEBSは利用可能 ・データは永続的に保存 ・EC2インスタンスは他のAZ内のEBSにはアクセスできない ・EC2インスタンスに複数のEBSを接続することはできるが、EBSを複数のインスタンスで共有することはできない ・同じAZ内のインスタンスに付け替えできる
Snapshot
EBSはスナップショットを利用してバックアップを取得する
◾️特徴 ・Snapshotでバックアップ ・SnapshotからのEBSを復元する際は別AZにも可能 ・SnapshotはS3に保存される ・Snapshotの2世代目以降は増分データを保存する増分バックアップとなる(1世代目を削除しても復元は可能) ・Snapshot作成時にブロックレベルで圧縮して保管するため、圧縮後の容量に対して課金が行われる
スナップショットはリージョン間をまたいで利用可能 Snapshot作成時はデータ整合性を保つため静止点の設定を推奨
◾️Snapshot作成時はデータ整合性を保つため静止点の設定を推奨 ・ソフトウェアの機能を利用 ・ファイルシステムの機能を利用 ・バックアップソフトウェアの機能を利用 ・アプリケーションの停止 ・ファイルシステムのアンマウントなど
◾️保存期間や世代数は無制限 ◾️世代管理が必要な場合はAWS CLIやAPI等で自動化する
スナップショットとAMI Amazon Machine ImageはOS設定のイメージであり、Snapshotはストレージのバックアップとなる
◾️AMI ・ECインスタンスのOS設定などをイメージとして保持して新規インスタンス設定に転用するもの
◾️Snapshot ・ストレージ / EBSのその時点の断面のバックアップとして保持するもの ・ストレージの復元や複製に利用
EBSのボリュームタイプ
ユースケースに応じて性能やコストが異なる5種類のボリュームタイプから選択
◾️SSD ・汎用SSD →仮想デスクトップ →低レイテンシーを要求するアプリ →小〜中規模のデータベース →開発環境
・プロビジョンドIOPS →高いI/O性能に依存するNoSQLやアプリ →10,000IOPSや160MB / s超のワークロード →大規模DB
◾️HDD ・スループット最適化HDD →ビックデータ処理 →DWH →大規模なETL処理やログ分析
・コールドHDD →ログデータなどアクセス頻度が低いデータ →バックアップやアーカイブ
◾️マグネティック(Magnetic) →旧世代のボリュームで基本利用しない →データへのアクセス頻度が低いロークロード
インスタンスストア
EC2が利用するのはインスタンスストアとEBSの2タイプのストレージ
◾️インスタンスストア ・ホストコンピュータに内蔵されたディスクでEC2と不可分のブロックレベルの物理ストレージ ・EC2の一時的なデータが保持され、EC2の停止、終了とともにデータがクリアされる ・無料
◾️Elastic Block Store(EBS) ・ネットワークで接続されたブロックレベルのストレージでEC2とは独立管理 ・EC2で終了してもEBSデータは保持可能 ・SnapshotをS3に保持可能 ・別途EBS料金が必要