【事前知識】

  • エッジロケーション
    リージョン、AZとは異なるデータセンター。
    キャッシュデータなどを利用する際の更に小さなエンドポイントとなる拠点。
    ・DDoS攻撃からアプリケーションインフラストラクチャを保護する。
    ・Route 53、CloudFront、AWS WAF、Lambdaエッジ などが配置されている。
  • 責任共有モデル
    提供されるサービスの管理責任を線引きした考え方。
    詳細は「本公式ページ」にて。
  • Docker
    【オープンプラットフォーム】
    コンテナサービスのこと。サーバごとに「必要なコンテナを用意して」「実行する」動きをする
    リポジトリ
    【イメージ】
    ECRのイメージリポジトリには、DockerイメージOCIイメージなどが含まれる。
    ●リポジトリポリシー
    (コンテナ)イメージへのアクセス権を制御できる。
    ●(コンテナ)イメージ
    ECSやEKSで使用することが出来るコンテナイメージをpush、pullする。
    利用可能な Docker イメージを実行する場合、docker pull コマンドを使用してローカル環境にプルする。
    ●認証トークン
    イメージをpush、pullするにはECRレジストリに対して認証が必要。

VPC(Virtual Private Cloud)

作成ごとに論理的に各ユーザにプライベートネットワークが構築される。
1リージョンにVPCは5つまで
※仮想プライベートゲートウェイは一つまで

  • ENI(Elastic Network Interface)
    VPC内のNWインターフェース。

〇オプション

  • enable DNS Hostnames 属性
    有効化しないと、サブネットで起動されたインスタンスDNS名を取得できない
  • enable DNS Support 属性
    VPCがAmazon提供のDNSサーバーを介したDNS解決策をサポートするか決定する設定値。デフォルトでは有効化。
  • DHCPオプション
    (DHCP:Dynamic Host Configuration Protocol)
    TCP/IPネットワークのホストに設定情報を渡すための規格。
    サブネット内のアプリケーションは、必要に応じてDHCP サーバーと通信してIPアドレス、または他のネットワーク構成情報 (DNS サーバーの IP アドレスや VPC 内のルーターの IP アドレスなど) を取得できる

    ※TCP/IP ネットワーク上のすべてのデバイスには、ネットワークを介して通信するための IP アドレスが必要。

    ※DHCPは変更できないため、新しく作成して割り当てる必要がある
    ※以前は、ネットワーク内の各デバイスに IP アドレスを手動で割り当てる必要があった

〇VPCエンドポイント

グローバルIPを持つ他のAWSサービスに対しVPC内から直接プライベートに接続できるAWSのサービス。
インターフェース型とゲートウェイ型の2種類がある。


ゲートウェイ型
・ S3 / DynamoDBのみ対象
・コスト無料
・接続方式:ルートテーブル(Private Linkは使用しない)
・セキュリティー:VPCエンドポリシー
・VPC内でのアクセスしか使えない。アプリケーションはインターネットを経由せずにAmazonネットワーク経由でDynamoDBにアクセスできる
インターフェイス型・S3とDynamoDB を含む幅広いサービスを対象
・データの転送とサービス利用時間に応じて課金。
・接続方式:エントリポイントとなるプライベート IP アドレスを持つENI。
・セキュリティ:セキュリティグループ(細かい制御可能)
・VPC外からのアクセスも対応

コンテナオーケストレーションサービス

EKS(Elastic Kubernetes Service)
【Kubernetes】

Kubernetesでコンテナ化されたアプリケーションデプロイ、管理、スケールを管理し、Kubernetesをマネージドで使えるサービス。
※ECSは親和性

  • Kubernetes
    【オープンソース】
    コンテナ管理を自動化するための「コンテナオーケストレーションツール」。
    より細かく、高度な運用ができることが特長。(その分、運用が難しい)
    たとえば、
    ・どのコンテナイメージを何台実行するかを指定すると自動で配置してくれる
    ・リソース不足などの際に自動でスケールする……など

    kubeconfig ファイル
    kubernetes を扱うための kubectl コマンドの接続先クラスターを管理する設定ファイル。
    このファイルがないとEKSクラスターに接続できない

【仕組み(構造)】

  • コントロールプレーン(マスターノード)
    クラスタ内のワーカーノードやコンテナ情報を管理、Kubernetesオブジェクトの状態を保持する。クライアントからのコマンドや設定ファイルを受け取り、APIアクションを呼び出してコンテナのデプロイや更新を行う。
    また、スケジューラがコントロールプレーン側で動作すると、ワーカーノード上のKubelet(エージェント)が動作する。Kubeletは、コントロールプレーンからの指示を受けてコンテナを起動する。
  • データプレーン
    伸縮自在であり、Kubernetes はアプリケーションを自動的にスケーリングして修復できる。回復力のあるデータプレーンは、2 つ以上のワーカーノードで構成され、ワークロードに合わせて増減し、障害から自動的に回復できる。
    ●ワーカーノード
    コントロールプレーンからの指示を受けてノード上にコンテナを起動する。起動タイプとして、EC2またはFargateを選択できる。

【EKSをOutposts にデプロイ】

  • 拡張クラスター
    Outpost の AWS リージョンとノードで Kubernetes コントロールプレーンを実行する。
  • ローカルクラスター
    Outpost で Kubernetes コントロールプレーンとノードを実行する。

ECS(Elastic Container Service)
【非Kubernetes】

稼働させるDockerをAmazon ECSが管理し、コンテナ化されたアプリケーションを実行するか、マイクロサービスを構築する。Kubernetesを知らなくても、Dockerコンテナを簡単に実行、停止、管理することができる。Dockerコンテナをサポートする拡張性とパフォーマンスに優れたコンテナオーケストレーションサービス。

Task:コンテナ
Cluster:EC2インスタンス
Task Definication:Cluster上のタスクを定義する

【一例】「6つのEC2インスタンスに対して、コンテナを実行する。コンテナは3つのAZに分散させて、同時に10個実行して、ロードバランサ―につなぐ」という指示


〇Pod

一つ以上のコンテナをグループ化し、共有の実行環境を提供するKubernetesの最小単位。

  • Topology Spread Constraints
    Podを複数のアベイラリティゾーンに均等に分散させる。これにより単一障害をなくす。Podの均等な分散はリソースの最適利用を可能にし、スケーラビリティとワークロードのバランスを保つ。
  • Kubernetes Cluster Autoscaler
    予測不可能な数のステートレスPodに対応するためのスケーリングを提供。

※レプリカセット(ReplicaSet)
Kubernetes(クラスター)内でアプリケーションのPod(コンテナを含むアプリケーションの最小デプロイ単位)を一定数維持する機能。

〇デプロイ設定

  • Canary
    【増分割合分割】
    トラフィックは 2 つの増分で移行される。
    事前定義された複数の Canary オプションから選択する。
    更新済み Lambda 関数または ECS タスクセットで、最初の増分および間隔でトラフィックの、移行する割合 (%) を分単位で指定できる。
  • Linear
    【等分分割】
    トラフィックは等しい増分で移行され、増分間の間隔 (分) も同じ。増分ごとに移行するトラフィックの割合 (%) と、増分間の間隔 (分) を指定する。
    事前定義済み線形オプションから選択できる。
  • All-at-once
    【直接】
    全てのトラフィックを元の Lambda 関数または ECS タスクセットから更新済み関数またはタスクセットに同時に移行する。

〇起動タイプ

Amazon ECSまたはEKSを利用する際は、EC2起動タイプかFargate起動タイプを選択する。

  • EC2起動タイプ
    【通常のEC2利用】
    管理しているEC2 インスタンスのクラスターで、コンテナ化されたアプリケーションを実行できる。EC2の設定が必要となる起動タイプ。
    通常のEC2インスタンスを利用するための設定が必要。使用されたEC2とEBSボリュームに基づいて課金される。
    インスタンスの選択やオペレーティングシステムの管理などが必要。故に自身で制御することが可能。
  • Fargate
    【ECS / EKS】
    EC2を使わずにコンテナを実行する環境運用を自動化するサーバーレスコンピューティングエンジン。コンテナを実行するために仮想マシンのクラスターをプロビジョニング、設定、スケールを実施する。
    (サーバーのプロビジョンとCluster管理は不要)。

    ※ECSは、コンテナ化されたアプリケーションが要求するvCPUメモリリソースに基づいて課金される

[画像引用元]

〇レジストリ

  • ECR(Elastic Container Registry)
    【レジストリ】
    ECSやEKSにも統合されている、完全マネージド型の Docker コンテナレジストリS3に保存)。Dockerコンテナイメージを保存・管理(暗号化)でき、デプロイが素早く簡単に起動できる。

    AWS CLIでECRにログインする時はget-loginではなくget-login-passwordを使うこと

    【コンテナイメージ】
    ECSを利用する際はコンテナイメージを ECRに配置することが必要
    コンテナイメージはHTTPS経由で転送され、保管時には自動的に暗号化される。

    パブリックレジストリ
    高可用性でスケーラブルなアーキテクチャ。コンテナイメージをホストし、アプリケーションにコンテナを確実にデプロイする
    Docker イメージと Open Container Initiative (OCI) イメージで構成されるパブリック イメージ リポジトリを管理できる。

    プライベートレジストリ
    高可用性でスケーラブルなアーキテクチャでコンテナイメージをホストする。
    Docker イメージ、Open Container Initiative (OCI) イメージ、アーティファクトで構成されるプライベートイメージリポジトリを管理。

【ポリシー】

  • リポジトリポリシー
    個別の Amazon ECR リポジトリへのアクセスを制御することを目的として特に使用される IAM ポリシーのサブセット。
  • ライフサイクルポリシー
    プライベートリポジトリごとに設定が可能。適用されたリポジトリ内で、指定した有効期限の基準を満たしたイメージを自動的に削除する。

【代表的なコマンド】

  • Pull コマンド
    【イメージをローカルに】
    Amazon ECR で利用可能な Docker イメージを実行する場合、docker pull コマンドを使用してローカル環境にプルする。
    これはデフォルトのレジストリまたは他の AWS アカウントに関連付けられたレジストリから行うことができる。

Cloud Front

(静的・動的)コンテンツを配信する、スケーラブルで可用性の高いコンテンツ配信サービス。

・コンテンツを保持するためのバックエンドサーバ(ELB , EC2 , S3の静的ホスティングを利用できる)。

・ディストリビューションはドメインを指定する(IP不可)。静的なIPアドレスを持たない

・ディストリビューションを使用する方法はDNS名の提供を前提とする。

  • ダウンロード方法
    HTTP,HTTPSを使ってHTMLやCSS、画像などのデータを配信する。

  • ストリーミング
    RTMP(Real Time Messaging Protocol)を使って動画のストリーミング配信をする。

    動画のストリーミング
    プログレッシブオプションに設定されたダウンロードオプションを利用する。
  • ディストリビューション
    【配布形態】
    (1つのオリジンに対して)
    コンテンツデリバリーの設定や構成を意味する。
    CloudFrontディストリビューションではフェールオーバーオプションが提供される。
    プライベートIPアドレスはもっていない。

    セキュリティソフトウェアのパッチ静的ファイルであるため、本機能を利用してキャッシュできる。

    地理的ディストリビューション
    【制限 機能】
    ある国(地域)からのアクセスに対して 403 (アクセス拒否) のレスポンスを返すことが可能。
  • プリンシパル
    AWS リソースに対するアクションをリクエストできる、 IAM ユーザ、ロール、フェデレーションユーザ、またはアプリケーション。
  • ビューワーリクエスト
    CloudFrontを参照するリクエスト。
  • キャッシュミス
    リクエストされたオブジェクトがエッジロケーションでキャッシュされないこと。
  • アクセスログ(標準ログ)
    ウェブサイトのコンテンツに流れるトラフィックに対してログファイルを作成できる。格納先をS3に指定することができる。

【配信処理について】

ユーザがウェブページ・コンテンツをリクエストすると、コンテンツ処理に最適なエッジロケーションを決定して配信する。
リクエストしたファイルのコピーがエッジロケーションにない時は、オリジンサーバから取得する。

【コンテンツファイルの取り扱い】

同じファイルが更新された場合、キャッシュの有効期限が切れない限り最新のファイルを提供しないエッジキャッシュからファイルを無効にすることで最新ファイルの入手ができる。

【キャッシュ保持期間制御】

  • Cache-Control:max-age
    オリジンのオブジェクトに追加することで、キャッシュに保持される期間を制御できる。
    これによって個々のページに対するTTLを設定できる。

〇オリジン

  • オリジンサーバ
    コンテンツを配信する元となるサーバー。エッジロケーションに保存
  • オリジンリクエスト
    CloudFrontがオブジェクトを取得するためのリクエストをオリジンに送信する。
  • オリジンフェイルオーバー
    【ディストリビューションの冗長化】
    プライマリオリジンが使用できない場合、または障害を示す特定の HTTP レスポンスステータスコードを返す場合、CloudFront は自動的にセカンダリオリジンに切り替わる。

    ・開始するには、プライマリとセカンダリの 2 つのオリジンを持つオリジングループを作成する。

    ・少なくとも 2 つのオリジンを持つディストリビューションが必要。
  • カスタムヘッダー
    オリジンに送信するリクエストにカスタムヘッダーを追加できる。
    CloudFront がカスタムオリジンからファイルを取得するには、標準の HTTP (または HTTPS) リクエストを使用してCloudFront からファイルにアクセスできる必要がある。しかし、カスタムヘッダーを使用することで、コンテンツへのアクセスをさらに制限して、CloudFront を経由しないアクセスを防げる

    以下の設定を変更する。

    ビューワープロトコルポリシー
    【HTTPS】
    (CloudFront経由で)CloudFront エッジロケーションのコンテンツへのアクセスに使用するビューワーのプロトコルポリシー。
    ビューワーから CloudFront へのアクセス時に HTTPS の使用が求められるようにディストリビューションを設定。

    HTTP and HTTPS
    HTTPとHTTPS。ビューワーは両方のプロトコルを使用可能。

    Redirect HTTP to HTTPS
    HTTP を HTTPS にリダイレクト。ビューワーは両方のプロトコルを使用できるが、HTTP リクエストは自動的に HTTPS リクエストにリダイレクトされる。

    HTTPS Only
    HTTPSのみ。ビューワーは HTTPS を使用している場合にのみコンテンツにアクセス可能。

    オリジンプロトコルポリシー
    【プロトコル】
    CloudFront がリクエストをオリジンに転送する際にビューワーと同じプロトコルの使用が求められるように、ディストリビューションを設定。

    HTTPS Only
    HTTPSのみ。CloudFront は HTTPS のみを使ってカスタムオリジンと通信する。

    Match Viewer
    ビューワーに合わせる。ビューワーのリクエストのプロトコルに応じて HTTP または HTTPS を使用し、カスタムオリジンと通信する。

    [参考]
  • ホワイトリストヘッダー
    【認証】
    リクエストをオリジンに転送するときに、認証ヘッダーを含む一部のヘッダーを削除する。
    特定のキャッシュ動作のために常に認証ヘッダーを転送する場合は、必ずそのキャッシュ動作のヘッダーをホワイトリストに登録する。

  • User-Agent ヘッダー
    クライアント側のOS・ハードウェア・ブラウザ情報などが含まれたHTTPヘッダー。
    Webサーバ側は受け取ったUser-Agent ヘッダーの情報をもとに最適なレスポンスを返す。
  • Cache-Controlヘッダー
    HTTPヘッダーの一つ。
    ブラウザがオブジェクトをキャッシュするかどうか、またどのようにキャッシュするか制御する。
    「max-age=0」を指定するとブラウザは常に最新のオブジェクトを取得する。

〇トリガー

  • オリジン応答イベント
    オリジンからのレスポンスを CloudFront に返す前にトリガーされるイベント。
  • ビューワー応答イベント
    Cloud Front がキャッシュされたコンテンツをユーザーに返す目にトリガーされるイベント。

取得設定
(Allowed HTTP Methods)

CloudFront経由でコンテンツを操作する際HTTP メソッドを指定
許可するHTTPメソッド多くの場合は[GET,HEAD]を設定。WEBDAVなどデータをアップする際などは[GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE]CloudFront が処理してオリジンに転送する HTTP メソッドを指定する。

  • [GET, HEAD]
    CloudFront を使用して、オリジンからのオブジェクトの取得またはオブジェクトヘッダーの取得のみを行うことができます。
  • [GET, HEAD, OPTIONS]
    CloudFront を使用して、オリジンからのオブジェクトの取得、オブジェクトヘッダーの取得、またはオリジンサーバーがサポートするオプションのリスト取得のみを行うことができます。
  • [GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE]
    CloudFront を使用して、オブジェクトの取得、追加、更新、削除、およびオブジェクトヘッダーの取得を行うことができる。また、ウェブフォームからのデータの送信など、その他の POST 操作も実行できる。

    【暗号化設定】
    (Field Level Encryption)
    フィールドレベル暗号化を使用した機密データの保護を実施したい場合に設定。
    Allow HTTP Methodsを「GET,HEAD,OPTIONS,PUT,POST,PATCH,DELETE」を選択した場合に設定可能。

    フィールドレベルの暗号化
    【特定のデータ保護】
    セキュリティのレイヤーが追加され、システムの処理中に特定のデータに特定のアプリケーションのみがアクセスできるように、そのデータを保護できる。
    ユーザーは機密情報をWebサーバーに安全にアップロードできる。

〇その他機能

  • 署名付きURL
    一定時間だけアクセスを許可(※オブジェクトのアップロードに利用できる)
  • OAI
    (オリジンアクセスアイデンティティ)
    【オブジェクトのアクセス権】
    オブジェクトのアクセス権の許可を付与する。S3で機能する。
  • Lambda@Edge
    【地理的パフォーマンス向上】
    CloudFrontの機能の1つ。Lambdaの拡張機能(CloudFrontのエッジロケーション上でLambdaを実行するサービス)
    CloudFrontのエッジサーバでCroudFrontが配信するコンテンツをカスタマイズする関数を(Lambdaで定義した)コード実行できる。

    ・CloudFrontのイベントをトリガーとしてコードを実行する。

    ・リクエストに対して自動的にスケーリングできる。

    ・関数を使用してクエリパラメータの正規化や順序付けを行える。

    ・ユーザーに近い場所でコードが実行されることでアプリケーションのパフォーマンスが向上。

貸し出しサービス

Outposts
【オンプレミス機器のレンタル】

低レイテンシー、ローカルでのデータ処理・データ保存のためにオンプレミスで実行する必要のあるアプリケーションを可能にする。
※配送~設置をデータセンターに「インストール」と表現している?

・オンプレミスのインフラストラクチャの調達、管理、アップグレードのために必要な、差別化につながらない面倒な作業を取り除く。

【以下環境を提供】
・フルマネージド型AWS インフラストラクチャ
・ネイティブな AWS サービス
・API、ツール
・オンプレミス施設

  • Outpostsラック
    42U(42段分)のAWSラックを自社データセンターなどのオンプレミス環境に設置して利用するサービス。
    利用開始時には、完全に組み立てられたOutpostsラックが配送され、設置作業はAWS側で行うため、ユーザーは電源とネットワークに接続するだけで使用できる。通常のクラウドのAWSと全く同じスペックのラックであり、AWSサービス、APIなどAWS リージョンで利用可能な幅広いサービスに接続できる。Outpostsサーバーよりも電力を多く消費する。
    ※ラックのサイズ:高さ80インチ(203.2cm)・幅24インチ(60.96cm)・奥行き48インチ(121.92cm)
  • Outpostsサーバー
    1台のAWSサーバーをオンプレミス環境に設置して利用するサービス。1Uサーバーか2Uサーバー、どちらかを選んで利用できる。
    Outpostsサーバーが直接配送され、自社データセンターの現場担当者か、設置委託会社のいずれかの設置が必要になる。ネットワークに接続した時点で、AWSがコンピューティングリソースとストレージリソースが構築される。Outpostsラックよりも必要とする電力は小さい分、利用できるAWSサービスにも限りがある。

    ※1Uサーバー:幅19インチ(48.26cm)・奥行き24インチ(60.96cm)・高さ1U
     2Uサーバー:幅19インチ(48.26cm)・奥行き30インチ(76.2cm)・高さ2U

Amazon WorkSpaces
【KVM提供】

ユーザー向けの仮想クラウドベースのMicrosoft Windows、Amazon Linux、Ubuntu Linuxデスクトップを提供。

・ハードウェアの調達とデプロイ、または複雑なソフトウェアのインストールの必要性を排除。

・必要に応じてユーザーを素早く追加または削除できる。

  • IPアクセスコントロールグループ
    特定のIPアドレス範囲からのアクセスを許可または拒否する。

【セキュリティ性】
複数デバイスやWebブラウザから仮想デスクトップにアクセスでき、セキュリティ管理が容易。

・OSやソフトウェアの自動更新機能があり、常に最新の状態で仮想デスクトップ環境を維持。

  • WorkSpaces Personal
    デベロッパーやナレッジワーカー、それにアプリケーションをインストールしたり、ファイルやデータを保存したり、デスクトップに設定を保存したりする必要のあるその他のユーザー向けに、永続的な仮想デスクトップを提供して、パーソナライズされたデスクトップエクスペリエンスをもたらす。 ユーザーはサインインするたびに同じ仮想デスクトップにアクセスする。
  • WorkSpaces Pools
    デスクトップにファイル、データ、設定を保存する必要のないタスクワーカーやコンタクトセンターの従業員などのユーザー向けに、非永続的な仮想デスクトップを提供。ユーザーはサインインのたびに新しい仮想デスクトップにアクセスできる。
    管理者は、一部のユーザー設定、ブックマーク、ファイルを S3 や FSx などの中央ストレージリポジトリに保存して、ユーザーが新しいセッションを開始したときにアクセスできるようにすることができる。

App Stream(2.0)
【Appクラウド化】

完全マネージド型のアプリケーションストリーミングサービス。
特定のアプリケーションをクラウドで利用することができる。そのために最も厳しいセキュリティが要求される企業向けに設計されたデータセンターとネットワークアーキテクチャが用意される。
※各アプリケーションは、特定のユースケース向けに最適化されている仮想マシンで実行される

・ユーザーはサポートされているデバイスから、いつでもどこでも、必要なデータ、アプリケーション、およびデスクトップ・リソースに安全にアクセスできる。

・デスクトップアプリケーションを集中管理し、任意のコンピュータのブラウザへ安全に配信できる。

・各ストリーミングセッションはネットワーク状態に合わせて自動で調整される。

※ユーザープールでユーザーを作成および管理できる

  • Image Builder
    EC2 インスタンスをベースに構成されており、ストリーミングしたいアプリケーションと必要な設定を含むカスタムイメージを独自に作成できる。
    オリジナルアプリケーションの移行にも利用できる。

No responses yet

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

error: Content is protected !!