Amazon ECS の概要

クラスタのコスト配賦および使用率をレポートするために、VMware Aria Cost powered by CloudHealth によって CloudWatch ECS のイベントが要約されます。

- オーケストレーション ソリューションとして Kubernetes を使用している場合は、「VMware Aria Cost での Kubernetes の使用開始」を参照してください。

ECS では、ECS の状態の変化によって CloudWatch イベントを生成します。VMware Aria Cost では、クラスタのコスト配賦と使用率をレポートするため、これらのイベントを要約します。

- VMware Aria Cost は現在、Fargate クラスタ メトリックをサポートしていません。

VMware Aria Cost ECS モジュールは、CloudWatch を使用して ECS イベントを収集し、作成した S3 バケットに格納します。割り当てられた VMware Aria Cost ロールを指定する IAM ポリシーは S3 バケットに関連付けられており、VMware Aria Cost でバケットからイベントを取得できるようにします。

前提条件

  • Amazon ECS オーケストレーション ソリューションを使用してコンテナを管理している。
  • AWS コンソールで IAM ロールと S3 バケットを作成する権限がある。
  • AWS アカウントで CloudFormation スタックを作成する権限がある。

手順 1:AWS アカウントで ECS モジュールを有効にする

ECS モジュールを有効にする必要があるアカウントはどれでしょうか。VMware Aria Cost プラットフォームと、VMware Aria Cost を使用して分析する独自の ECS インフラストラクチャで構成されているすべての AWS アカウント。

  1. VMware Aria Cost プラットフォームにログインします。メニューから セットアップ > AWS アカウント の順に選択し、ECS モジュールを有効にする各アカウントを編集します。
  2. アカウント設定フォームの オプション セクションを展開し、ECS オプションに切り替えます。ECS バケット名ECS バケット プリフィックス を入力します(カスタム プリフィックスを構成した場合)。アカウントごとに VMware Aria Cost が生成するデフォルト値を入力できます。バケットに別の名前を使用する場合は、その名前をテキスト ファイルにコピーして、後続の手順で後から取得できるようにします。
  3. アカウントを保存 をクリックします。

手順 2:AWS アカウントで CloudFormation スタックを作成する

- この手順は、VMware Aria Cost を使用して分析する ECS インフラストラクチャが属する AWS アカウントごとに繰り返します。

CloudFormation テンプレートは、この場所からダウンロードし、ecs-event-pipeline-generic-template.json としてローカルに保存します。

テンプレートにより、AWS アカウントで次の操作が実行されます。

  • AWS CloudWatch ルールの作成
  • AWS Kinesis Firehose の作成
  • AWS S3 バケットの作成
  • AWS S3 バケット ポリシーの作成
    • オブジェクトを取得して一覧表示する VMware Aria Cost ロール
  • 次の AWS IAM ロールの作成:
    • CloudWatch イベント プリンシパルとしての役割を担う CloudWatch
    • Kinesis サービス プリンシパルとしての役割を担う Kinesis Firehose
  • 次の AWS IAM ポリシーの作成:
    • ECS イベントの Kinesis Firehose への配置
    • ECS イベントの S3 バケットへの配置

VMware Aria Cost では、どのようなデータを収集しますか。VMware Aria Cost では、次の 2 つのカテゴリのデータを収集します。(a) メモリ、CPU、ディスクの観点から、どのノードレベルのハードウェア リソースが利用可能か。(b) クラスタ内で実行されているワークロードとそのリソース割り当てを、メモリ、CPU、ディスクの観点から測定したもの。

オプション 1:AWS CLI で CloudFormation スタックを作成する

このコマンドは、AWS アカウントごとに実行します。

コマンドのプレースホルダーに、AWS アカウント ID、S3 バケット名、および S3 バケット プリフィックスを入力します。

export ACCOUNT_ID=[place ACCOUNT ID here]
export BUCKET_NAME=[place BUCKET NAME here]
export BUCKET_PREFIX=[place BUCKET PREFIX here]
aws cloudformation create-stack
  --stack-name cht-ecs-event-stream-bucket-stack-${ACCOUNT_ID} \
  --parameters ParameterKey=S3Bucket,ParameterValue=${BUCKET_NAME} ParameterKey=S3BucketPrefix,ParameterValue=${BUCKET_PREFIX} \
  --template-body file://./ecs-event-pipeline-generic-template.json \
  --capabilities CAPABILITY_NAMED_IAM

オプション 2:AWS コンソールで CloudFormation スタックを作成する

  1. 新しい CloudFormation スタックを、ローカル マシンからダウンロードしたテンプレートを選択して作成します。
  2. [スタック名] などの詳細を指定します。
  3. 追加オプションがあれば([スタック] のタグなど)指定します。
  4. 構成を確認し、AWS CloudFormation で IAM リソースをカスタム名によって作成することを承認する チェック ボックスをオンにします。

手順 3:読み取り専用 IAM ポリシーを更新する

Amazon ECS インフラストラクチャと、ECS イベントを格納する S3 バケットへの読み取り専用アクセス権を VMware Aria Cost に付与します。

  1. VMware Aria Cost プラットフォームに切り替えます。セットアップ > AWS アカウント で、今 ECS モジュールを有効にした AWS アカウントを編集します。[アカウント編集] ページの一番下までスクロールし、ポリシーの生成 をクリックします。ポリシーが更新されていない場合、VMware Aria Cost は、ECS インフラストラクチャと S3 バケットに格納されている ECS イベントにアクセスできなくなります。
  2. [IAM アクセス ポリシー] ダイアログ ボックスで、すべてを選択 をクリックし、コンテンツをクリップボードにコピーします。更新されたポリシーには、読み取り専用権限が 2 セット含まれています。このセットは、AWS アカウント内の ECS インフラストラクチャへの読み取り専用アクセス権を VMware Aria Cost に付与します。"ecs:List*", "ecs:Describe*"

    このセットは、ECS イベントを格納する S3 バケットへの読み取り専用アクセス権を VMware Aria Cost に付与します。

    {
     "Effect": "Allow",
     "Action": [
       "s3:Get*",
       "s3:List*"
     ],
     "Resource": [
       "arn:aws:s3:::cht-ecs-event-stream-bucket-<AWS-Account-Number>",
       "arn:aws:s3:::cht-ecs-event-stream-bucket-<AWS-Account-Number>/*"
     ]
    },
    
  3. AWS コンソールに切り替え、サービス > IAM の順に移動します。左側のメニューで ポリシー を選択し、VMware Aria Cost プラットフォームに使用している IAM アクセス ポリシー を見つけます。
  4. [権限] タブで JSON をクリックし、VMware Aria Cost プラットフォームからコピーしたポリシーをエディタに貼り付けます。次に 保存 をクリックします。

VMware Aria Cost プラットフォームで ECS クラスタが検出されて一覧表示されるまでの時間はどれくらいですか。VMware Aria Cost は、IAM ポリシーに対する変更を 15 分ごとにポーリングします。ポリシーで入力した 2 つの行により、VMware Aria Cost には、AWS アカウントのすべての ECS クラスタのリストを取得することが許可されます。ポリシーに対する変更のタイミングによるポーリングが最後に発生した時刻によっては、ECS クラスタが VMware Aria Cost プラットフォームに表示されるまで、少なくとも 15 分間待機する必要があります。

手順 4:VMware Aria Cost で ECS クラスタを表示する

VMware Aria Cost プラットフォームで左側のメニューから セットアップ > コンテナ > クラスタ の順に選択します。ECS クラスタが検出されると、ページに表示されます。

このページにクラスタが表示されない場合はどうなりますか。

このページにクラスタが表示されていない場合でも、VMware Aria Cost は ECS インフラストラクチャの読み取りを処理しています。リストが入力されているかどうかを確認するには、後でこのページに戻ります。

以前 AWS アカウントに展開した CloudFormation スタックにより、VMware Aria Cost はすぐに Orchestrator からメタデータの収集を開始できます。VMware Aria Cost でデータの受信を開始すると、クラスタの ステータス正常 へ切り替わります。

履歴情報がバックフィルされていません。

VMware Aria Cost プラットフォームで意味のある可視化がなされるのは、スタックが展開され、データのプッシュが開始されてから約 24 時間後です。

クラスタのステータスの意味

セットアップ > コンテナ > クラスタ ページには、クラスタの次の 3 つの状態が表示されます。

  • 不明:コレクタは VMware Aria Cost に正常に接続できませんでした。
  • 正常:コレクタはコンテナ クラスタに正常に展開され、過去 1 時間に少なくとも 1 回、VMware Aria Cost プラットフォームにデータをプッシュしました。
  • 異常:コレクタは過去に VMware Aria Cost に接続していますが、過去 1 時間は接続していません。

VMware Aria Cost は現在、Fargate クラスタ メトリックをサポートしていません。

次の手順:クラスタ レポートの構成

VMware Aria Cost での Amazon ECS のセットアップの自動化

手順 1:Kinesis Firehose 配信ストリームの作成と構成

Kinesis Firehose を構成して、ECS 関連の CloudWatch イベントを S3 バケットにストリーミングします。

ECS の使用量が発生している各リージョンでこれらの手順を繰り返し、構成するすべてのリージョンに対して同じ S3 バケットと IAM ロールを使用していることを確認します。

  1. AWS コンソールで、サービス > Kinesis Firehose を選択します。左側のメニューで Data Firehose を選択し、配信ストリームを作成 をクリックします。
  2. 名前とソース ページで、配信ストリームの名前を入力し、ソース として Direct PUT またはその他のソース を指定します。
  3. 次へ をクリックします。
  4. レコードの処理 ページで、デフォルトの選択を保持します。
    • レコードの変換:無効
    • レコード形式の変換:無効 次へ をクリックします。
  5. 宛先の選択 ページで 宛先Amazon S3 に設定し、S3 バケットを指定または作成して、S3 プリフィックスを ecs-event-stream/<account_id>/ に指定します。
  6. 構成設定 ページで、次の値を設定します。
    • バッファ サイズ:16 MB
    • バッファ間隔:60 秒
    • S3 圧縮:GZIP
    • S3 暗号化:無効
    • エラーのログ:有効
    • IAM ロール:Kinesis Firehose の配信のための IAM ロールを作成または指定します。次へ をクリックします。
  7. 配信の指定内容を確認して、配信ストリームを作成 をクリックします。

手順 2:AWS CloudWatch ルールの作成

ECS CloudWatch ルールを構成し、Kinesis Firehose を CloudWatch ルールに接続します。

ECS の使用量が発生している各リージョンでこれらの手順を繰り返し、構成するすべてのリージョンに対して同じ IAM ロールを使用していることを確認します。

  1. AWS コンソールで、サービス > CloudWatch を選択します。左側のメニューで ルール を選択し、ルールの作成 をクリックします。次の値を設定します。
    • イベント パターン を選択します。
    • Elastic Container Service (ECS) を指定します。
    • イベント タイプ状態変更 に設定します。
    • 特定の詳細タイプ を選択します:[ECS コンテナ インスタンスの状態変更] または [ECS タスクの状態変更]
  2. 右側のセクションから ターゲットの追加 をクリックして、次の値を指定します。
    • ドロップダウンから、Firehose 配信ストリーム を選択します。
    • 手順 1 で作成した配信ストリームを選択します。
    • Kinesis Firehose の IAM ロールを作成して ECS CloudWatch イベントにアクセスするには、残りのデフォルト値を保持します。次に 詳細の設定 をクリックします。
  3. ルールの詳細の設定 ページで、次の設定を指定します。
    • 名前: cht-ecs-event-stream-ecs-to-firehose-rule-<insert-region-name>
    • 説明: CloudWatch Events Rule configured to deliver all ECS events to Kinesis Firehose
    • ステータス: 有効

手順 3:VMware Aria Cost での AWS アカウント設定の更新

Kinesis Firehose ストリームを格納する S3 バケットへのアクセス権を、VMware Aria Cost プラットフォームに関連付けられた IAM ロールを提供するポリシーを生成します。

  1. VMware Aria Cost プラットフォームで、左側のメニューから セットアップ > AWS アカウント を選択し、ECS モジュールのコンテナを有効にする各アカウントを編集します。
  2. アカウントの構成ページの オプション セクションを展開し、ECS を有効にします。
  3. ECS バケット名ECS バケット プリフィックス を入力します(カスタム プリフィックスを構成した場合)。
  4. ページの一番下までスクロールし、ポリシーの生成 をクリックします。IAM アクセス ポリシー ダイアログ ボックスの内容をクリップボードにコピーします。ポリシーには、次の定義を含める必要があります。

    "ecs:List*",
    "ecs:Describe*",
    {
       "Effect": "Allow",
       "Action": [
           "s3:Get*",
            "s3:List*"
        ],
        "Resource": [
            "arn:aws:s3:::&lt;yourbucketname&gt;",
            "arn:aws:s3:::&lt;yourbucketname&gt;/*"
        ]
    }
    
  5. IAM アクセス ポリシー ダイアログ ボックスを閉じて、アカウントの保存 をクリックします。

手順 4:VMware Aria Cost での AWS アカウント設定の更新

VMware Aria Cost プラットフォームに関連付けられている IAM ロールのポリシーを更新します。

  1. IAM ロールを編集する権限があるユーザーとして、ターゲット アカウントの AWS コンソールにログインします。
  2. サービス > IAM の順に移動します。左側のメニューで ポリシー を選択します。VMware Aria Cost プラットフォームに関連付けられている IAM ロールのポリシーを検索して特定します。ポリシーの編集 をクリックします。
  3. 手順 3 でコピーしたポリシー定義を貼り付けます。ポリシーを保存します。

手順 5:S3 バケット ポリシーの更新

適切な S3 バケット ポリシーを追加して、VMware Aria Cost がバケットからデータを取得できるようにします。

  1. AWS コンソールで、サービス > S3 の順に選択します。手順 1 で作成した S3 バケットを検索します。
  2. 権限 タブを選択し、バケット ポリシー をクリックします。
  3. 次のポリシー ドキュメントをコピーして、バケット ポリシー エディタに貼り付けます。次に 保存 をクリックします。

    {
    "Version": "2012-10-17",
    "Id": "cht-ecs-bucket-policy",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::146708650527:role/CloudHealth-IAM-Role"
            },
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": "arn:aws:s3:::<insert bucket name>"
            }
        ]
    }
    
  4. VMware Aria Cost プラットフォームで左側のメニューから セットアップ > コンテナ > クラスタ の順に選択します。構成したすべてのアカウントとリージョンの組み合わせのクラスタがこのページに表示され、健全なステータスを示している必要があります。

check-circle-line exclamation-circle-line close-line
Scroll to top icon