AWS Elastic Containerサービス
AWS ECS (Fargate)サービスでKeeperオートメーターを使う

概要
本ページでは、依存関係を最小限に抑え、Amazon ECS (Fargate) でKeeperオートメーターを起動する最も簡単な手順を取り扱います。
要件
AWSで管理するSSL証明書
1. オートメーター構成キーの作成
オペレーティングシステムに応じて、以下のいずれかの方法でURLエンコード形式の256ビットAESキーを生成します。
Mac/Linux
Windows
生成した値は、タスク定義の環境変数に設定します。
2. VPCの作成
VPCがない場合は、複数サブネット、ルートテーブル、インターネットゲートウェイを備えた基本VPCを構成します。本例では、以下のリソースマップのとおり、インターネットゲートウェイ付きVPCに3つのサブネットがあります。

3. CloudWatchロググループの作成
ログを取得する場合 (推奨) は、[CloudWatch] > [Create log group] を開きます。
ロググループ名を automator-logs に設定します。

4. タスク実行IAMロールの作成
[IAM] > [Create role] を開きます。
[AWS service] を選択します。
次に、Elastic Container Service を検索して選択します。
[Elastic Container Service Task] を選び、[Next] をクリックします。

[AmazonECSTaskExecution] ポリシーを追加し、[Next] をクリックします。

ロール名をECSTaskWritetoLogsに設定して作成します。

以下の手順で使用するため、このロールのARNをメモしておきます。
本例では arn:aws:iam::373699066757:role/ECSTaskWritetoLogs です。

5. ECSのセキュリティグループを作成
Keeperオートメーターサービスは、インバウンドトラフィックの送信元をKeeperのインフラストラクチャのみに限定するため、インバウンドファイアウォールルールを設定して導入する必要があります。
[EC2] > [セキュリティ グループ] に移動し、[セキュリティグループの作成] をクリックします。
Keeperテナントのリージョンに応じて、KeeperクラウドからのHTTPSポート443を許可するインバウンドルールを作成します。テナント所在地ごとのIP一覧は後述しますが、以下の例は米国データセンターです。
名前をMyAutomatorServiceなどに設定し、[Create] をクリックします。

地域別のIPは、以下をご参照ください。
6. セキュリティグループをインバウンドルールのリストに追加
セキュリティグループ保存後、インバウンドルールを再度編集し、以下を追加します。
ソースをセキュリティグループに設定した HTTP ポート 8089 を追加します。ALBからコンテナへのトラフィックとヘルスチェックに必要です。

7. Elastic Container Serviceクラスターの作成
Amazon Elastic Container Serviceへ進みます。
[Create cluster] を選び、クラスター名とVPCを設定します。本例ではデフォルトの [AWS Fargate (serverless)] を使用します。
[Default namespace] は
automatorで問題ありません[Infrastructure] を [AWS Fargate (serverless)] に設定します
[Create] をクリックします
8. ECSタスク定義の作成
任意のテキストエディタで、以下のJSONタスク定義ファイルをコピーして保存します。
重要: JSONファイルに以下の変更を加えます。
24行目の
XXX (REPLACE THIS) XXXを上記の手順1で作成した秘密キーに変更します。37行~39行を手順3のロググループの名前と場所に置き換えます。
44行目の
XXXをAWSロールに固有のロールIDに変更します (手順4の373699066757)。
次に、[Elastic Container Service] > [タスク定義] > [JSONからタスクを作成] に移動します。

既存JSONを削除し、編集したJSONを貼り付けて [Create] をクリックします。
このタスク定義は、インスタンスのCPU/メモリ要件に応じて変更できます。
9. SSL証明書をAWS Certificate Managerにアップロード
AWSのアプリケーションロードバランサーがオートメーターのリクエストを処理するには、SSL証明書が AWS Certificate Managerによって管理されている必要があります。AWSが管理する証明書をインポートするか作成します。
AWSコンソールで [Certificate Manager] を開きます。
[Request] をクリックします。
パブリック証明書をリクエストし、[Next] をクリックします。
automator.lurey.comなど、オートメーターサービスのドメイン名を入力します。
任意の検証方式とキーアルゴリズムを選択します。
[Request] をクリックします。
証明書の一覧から証明書リクエストをクリックします。
Route53を使用してドメインを管理している場合は証明書をクリックし、**[Route53でレコードを作成]**を選択するとドメインが即座に検証され証明書が作成されます。別のDNSプロバイダーを使用する場合は、画面に見られるようにCNAMEレコードを作成する必要があります。
CNAMEレコードを作成すると、ドメインは数分以内に有効となります。
この証明書は、手順11でアプリケーションロードバランサーを作成する際に参照されます。
10. ターゲットグループの作成
[EC2] > [Target Groups] を開き、[Create target group] をクリックします。
[Target type] で [IP Addresses] を選択します
ターゲットグループ名に automatortargetgroup または任意の名前を入力します
ポート 8089 の [HTTP] プロトコルを選択します
ECSクラスターを含むVPCを選択します
[HTTP1] を選択します
[Health checks] で、[Health check protocol] を [HTTP] に設定します
[Health check path] に
/healthを入力します[Advanced health check settings] を展開します
[Override] を選び、ポート 8089 を入力します
[Next] をクリックします
まだターゲットを選択せずに [ターゲットグループの作成] をクリックします
11. アプリケーションロードバランサー (ALB) の作成
[EC2] > [ロードバランサー] > [ロードバランサーの作成] に移動します。
[Application Load Balancer] > [作成] を選択します。
automatoralbなどの任意の名前を割り当てます
スキームは [Internet-facing] となります
[IP address type]: [IPv4]
[ネットワークマッピング] の箇所で、ECSサービスをホストするVPCとサブネットを選択します
[Security groups] で、手順5で作成したMyAutomatorServiceを選択します
[リスナーとルーティング] の箇所でHTTPSポート443を選択し、ターゲットグループで前の手順で作成したターゲットグループ (automatortargetgroup) を選択します
[セキュアリスナー設定] で、手順9でAWS Certificate ManagerにアップロードしたACMからのSSL証明書を選択します
[ロードバランサーの作成] をクリックします
12. ECSサービスの作成
[Elastic Container Service] > [Task definitions] から手順8のタスクを選択します。
タスク定義画面で [Deploy] > [Create Service] をクリックします。

既存のクラスターautomatorを選択します
サービス名にautomatorserviceまたは任意の名前を割り当てます
[Desired tasks] はとりあえず 1 に設定します。設定完了後に実行したいタスクの数を増やせます
[Networking] でVPCとサブネットを選択し、セキュリティグループを手順5の MyAutomatorService に置き換えます
[パブリックIP] を [ON] にします
[Load balancing] で [Load balancer type] を [Application Load Balancer] に設定します
[Existing] のロードバランサーから手順11のautomatoralbを選択します
[Existing] のリスナーを使用し、443:HTTPSリスナーを選択します
[Existing] のターゲットグループを使用し、手順10のターゲットグループを選択します
[Health check path] を
/healthに設定します[Health check protocol] を [HTTP] に設定します
[Create] をクリックします
数分後にサービスが起動します。
13. DNSの更新
DNS名がRoute53によってホストおよび管理されていると仮定します。
[Route53] > レコードの [作成] または編集に移動します。
Aレコードを作成します
[エイリアス] として設定します
[Route traffic to] で [Alias to Application and Classic Load Balancer] を選択します
AWS地域を選択します
automatoralb Application Load Balancerを選択します
[Simple Routing] を選択します
[Save] をクリックします
以下の手順では、タスクを1件だけ実行した状態でKeeperコマンダーを使用してオートメーターを設定します。
14. Keeperコマンダーのインストール
この時点ではサービスは実行されていますが、まだKeeperと通信できない状態です。
ワークステーション、サーバー、または任意のコンピュータにKeeperコマンダーCLIをインストールします (初期設定のみ)。手順は Keeperコマンダーのインストール をご参照ください。
コマンダーをインストールした後、keeper shellと入力してセッションを開いてからloginコマンドを使用してログインします。オートメーターをセットアップするには、Keeper管理者またはSSOノードを管理する権限を持つ管理者としてログインする必要があります。
15. コマンダーでの初期設定
Keeperコマンダーにログインし、automator createで始まる一連のコマンドを使用してオートメーターを有効にします。
ノード名 (この場合はAzure Cloud) は、以下のように管理コンソールUIから取得します。

コマンドの出力には、IDプロバイダからのメタデータを含むオートメーター設定が表示されます。
以下のようにautomator editコマンドを実行します。これによりURLとスキルが設定されます (team、 team_for_user、device)。
次にキーを交換します。オートメーター公開キーで暗号化されたエンタープライズ秘密キーがオートメーターに提供されます。
新しい設定でオートメーターを初期化します。
サービスを有効にします。
この時点で設定は完了となります。
自動ヘルスチェックには、以下のURLを使用できます。
https://<server>/health
以下はcurlコマンドを使用した例です。
本セットアップ例では、ロードバランサーはHTTP ポート8089経由でターゲットインスタンスにヘルスチェックを転送します。
16. ユーザー体験のテスト
Keeperオートメーターが1件のタスクを実行した状態でデプロイされましたので、エンドユーザー体験のテストが可能となります。ユーザーがSSO IDプロバイダで認証した後は、承認を求めるプロンプトは必要なくなります。
最も簡単な方法は、ブラウザのシークレットモードでKeeperウェブボルトを開き、クラウドSSOコネクトでログインすることです。デバイス承認のプロンプトは表示されません。




承認が機能しましたので、実行するタスクの数を増やせます。
17. タスク定義の更新 (任意)
Keeperオートメーターサービスは、処理するリクエストの数が少ないため単一のコンテナ上で問題なく快適に実行できます。ただし、複数のコンテナを実行したい場合は以下の手順に従ってください。
ECSサービス画面で [automatorservice] をクリックします
[Update service] をクリックします
[Force new deployment] にチェックを入れます
最新のタスクリビジョンが選択されていることを確認します
[Desired tasks] を実行したいコンテナ数に設定します
[Update] をクリックします
数分後、新しいコンテナがデプロイされます。すべてのコンテナがアクティブになるまで待ちます
Keeperコマンダーを起動します (あるいはまだ開いたままである可能性があります)
各コンテナごとに、オートメーターの setup、init、enable を実行する必要があります。
以下は3つのコンテナが実行されている場合となります。
ログと監視
オートメーターログは、ECSサービスの [Logs] タブまたはCloudWatchで確認できます。

最終更新

