【AWS】WorkSpaces Cost Optimizerマスターに向けて(応用編)

皆さん、お疲れ様です!秋葉です。

前回の基礎編では、Amazon WorkSpaces Cost Optimizerの概要と主要な設定パラメータについて解説しました。

「さっそく導入だ!」といきたいところですが、実際の現場、特にセキュリティ要件が厳しい案件など「インターネット接続が許可されない閉域環境(プライベートサブネットのみ)」では、標準のテンプレートから構築するだけでは動作しません…。

そこで今回は、そんな厳しい制約下でもコスト最適化を諦めない、「インターネット非接続環境」向けの実装手順を解説します!

事前準備

コンテナイメージを操作するため、インターネットに接続可能な作業用端末に Docker Desktop をインストールしておいてください。
Docker: コンテナー アプリケーション開発の加速

実装手順

本手順は、以下AWSブログを参考に記載しています。
https://aws.amazon.com/jp/blogs/desktop-and-application-streaming/deploy-the-cost-optimizer-for-amazon-workspaces-in-a-highly-regulated-environment/

手順① プライベートECRリポジトリを作成する

AWSマネジメントコンソールで、このソリューション専用のリポジトリを作成します。

手順② コンテナイメージをプッシュする

2-1 公式イメージを取得する(Pull)

作業用端末で、AWSが公開している最新のCost Optimizerイメージを手元にダウンロードします。

docker pull public.ecr.aws/aws-solutions/workspaces-cost-optimizer:v2.8_stable

2-2 DockerクライアントでECRにログイン(認証)

作業用端末から自社のECRへプッシュできる権限を認証します。

aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin <アカウントID>.dkr.ecr.ap-northeast-1.amazonaws.com

 

2-3 Dockerイメージをプッシュする

取得した公式イメージにタグを付け直し、手順①で作った自社リポジトリへプッシュします。

docker tag <イメージID> 528900497898.dkr.ecr.ap-northeast-1.amazonaws.com/costoptimizer-akiba/private-ecs-akiba:Test
docker push <アカウントID>.dkr.ecr.ap-northeast-1.amazonaws.com/costoptimizer-akiba/private-ecs-akiba:Test

手順③ VPCエンドポイントの作成

以下のサービスに対し、VPCエンドポイントを作成します。

エンドポイント名 使用用途
com.amazonaws.ap-northeast-1.ecr.api FargateがECRからコンテナイメージの情報を取得し、認証を行うために使用
com.amazonaws.ap-northeast-1.ecr-dkr 実際にコンテナイメージをプルするために使用
com.amazonaws.ap-northeast-1.ecs-agent Fargate上のエージェントが、コンテナの起動・停止などの指示をECSコントロールプレーンから受け取るために使用
com.amazonaws.ap-northeast-1.ecs-telemetry Fargateの状態やメトリクスをECSサービス側に送信するために使用
com.amazonaws.ap-northeast-1.logs Fargateの標準出力(awslogs)をCloudWatch Logsへ転送するために使用
com.amazonaws.ap-northeast-1.monitoring CloudWatch Metricsから、各WorkSpacesの UserConnected(ユーザー接続履歴)や Available メトリクスを取得し、変更判断を行うために使用
com.amazonaws.ap-northeast-1.workspaces ・稼働中のWorkSpaces一覧を取得する (DescribeWorkspaces)
・課金モード(AutoStop/AlwaysOn)を変更する
com.amazonaws.ap-northeast-1.sts IAMロールの一時認証に使用
com.amazonaws.ap-northeast-1.s3(Gateway型) ECRの実体データ(レイヤー)はS3に保存されているため、ECRからイメージをプルする裏側でS3へのアクセスが発生
com.amazonaws.ap-northeast-1.dynamodb(Gateway型:なくても動作は可能) Spokeアカウントを使用する際に使用
com.amazonaws.ap-northeast-1.secretsmanager(なくても動作は可能)

手順④ IAMロールの更新

ECSタスク実行ロールなどが、新しく作成したECRリポジトリやVPCエンドポイントを経由してリソースを操作できるよう、以下ポリシーを追記するように編集します。

{
   "Effect": "Allow",
   "Action": [
       "ecr:GetAuthorizationToken",
       "ecr:BatchCheckLayerAvailability",
       "ecr:GetDownloadUrlForLayer",
       "ecr:GetRepositoryPolicy",
       "ecr:DescribeRepositories",
       "ecr:ListImages",
       "ecr:DescribeImages",
       "ecr:BatchGetImage",
       "ecr:GetLifecyclePolicy",
       "ecr:GetLifecyclePolicyPreview",
       "ecr:ListTagsForResource",
       "ecr:DescribeImageScanFindings"
    ],
    "Resource": ["*"]
},
{
    "Effect": "Allow",
    "Action": [
       "s3:GetObject"
     ],
    "Resource": ["arn:aws:s3:::prod--starport-layer-bucket/*"]
} 

手順⑤ セキュリティグループの更新

ECSタスクから各VPCエンドポイントへのHTTPS(ポート443)通信を許可します。

手順⑥ ECSタスクの更新

タスク定義を更新し、コンテナイメージの参照先を「2-3」でプッシュした自社ECRのURIに変更します。環境変数にて以下画像のように修正します。

手順⑦ EventBridgeルールの更新

手順⑥で更新したリビジョンを実行するように修正します。

 

まとめ

本構成の実装により、厳格なセキュリティポリシーを遵守しつつ、インターネットから完全に隔離された環境での自動コスト最適化が可能となります。今回ドヤ顔で解説していますが、実は構築中、画面の前で「なんで動かないの!?」と何度も頭を抱えました…。

基礎編とあわせて全2回にわたってお届けした「WorkSpaces Cost Optimizer」特集

本記事で紹介したポイントを軸に、ぜひ自身のプロジェクトや業務の中でWorkSpaces Cost Optimizerを活用してみてください。
これからAWSを使うみなさんの挑戦や成長の一助になれば幸いです。

ぜひ一緒に、“WorkSpaces Cost Optimizerマスター”を目指して頑張りましょう!

著者について

かけだしのエンジニア。

秋葉倭翔をフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(AWS)は、企業価値の向上につながるAWS 導入を全面支援するオールインワンサービスです。AWS最上位パートナーとして、多種多様な業界のシステム構築実績を持つSCSKが、お客様のDX推進を強力にサポートします。

AWS
シェアする
×
タイトルとURLをコピーしました