Service Catalogにアクションを追加する

記事タイトルとURLをコピーする

2020年5月8日のアップデートで、AWS Service Catalogのサービスアクションでパラメーターサポートが利用可能になりました。
Parameter support is now available with service actions in AWS Service Catalog

しかし、Service Catalogのサービスアクションってそもそも何でしょうか。
そんなところから試してみました。

AWS Service Catalogとは

AWS Service Catalog では、AWS での使用が承認された IT サービスのカタログを作成および管理できます。この IT サービスには、仮想マシンイメージ、サーバー、ソフトウェア、データベースから包括的な多層アプリケーションアーキテクチャまで、あらゆるものが含まれます。AWS Service Catalog では、一般的にデプロイされた IT サービスを集中管理でき、一貫性のあるガバナンスを実現し、コンプライアンス要件を満たすと同時に、ユーザーは必要な承認済みの IT サービスのみをすばやくデプロイできます。

引用元:AWS Service Catalog

以前にService Catalogの入門編の記事(AWS Service Catalogで制御された自由を)を書きましたので、全く知らない方はまずみていただければと思います。 今回の内容は前回からの続きになります。

サービスアクションとは

前回はService Catalogを通して、EC2インスタンスを起動しました。 起動後のインスタンスに対してできることは、SSHなどでログインし操作することを除けば、更新、所有者の変更、削除のみです。 薄々気づいていましたが、なかなかにストイックな感じです。

サービスアクションを定義すれば、作成した製品に対してできるアクションを追加できます。 どのようなアクションを追加できるかといえば、Systems Manager オートメーションで利用できるドキュメントとなります。

再起動のサービスアクションを定義してみる

公式ページ(AWS Service Catalog のサービスアクション)では、再起動の例が記載されているので、その通りにやってみます。

ステップ 1: エンドユーザーのアクセス許可を設定する

エンドユーザーの属しているIAMグループに、下記のポリシーを追加します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1536341175150",
            "Action": [
                "servicecatalog:ListServiceActionsForProvisioningArtifact",
                "servicecatalog:ExecuteprovisionedProductServiceAction",
                "ssm:DescribeDocument",
                "ssm:GetAutomationExecution",
                "ssm:StartAutomationExecution",
                "ssm:StopAutomationExecution",
                "cloudformation:ListStackResources",
                "ec2:DescribeInstanceStatus",
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

ステップ 2: サービスアクションを作成する

Service Catalog > サービスのアクション > アクションの作成

SSMドキュメントの選択

定義済みのSSMドキュメントがズラッと並ぶので、再起動用のAWS-RestartEC2Instanceを選択します。

アクション詳細の仕様

アクション名はデフォルトのままにしました。
ちなみに日本語入力不可でした。(^[a-zA-Z0-9_-.]*のパターンが許可)

パラメータとターゲットの設定

このパラメータが今回アップデートされたところと思われます。
SSMドキュメントの種類によって、パラメータが異なっていたり、数が多くあったりします。

ただ、今回はパラメータはデフォルトのままにします。
再起動のアクションに必要なパラメータは、対象のインスタンスIDだけで問題ないはずです。

アクセス許可

アクセス許可もそのままにします。

作成できました

ステップ 3: サービスアクションを製品バージョンに関連付ける

作成したサービスアクションを選択し、アクションの関連付けを行います。

前回の記事で作成した開発用Ubuntuという製品の全バージョンに関連付けをします。

私の環境ではなぜかエラー表示が出ましたが、画面を更新してみると、問題なく関連付けに成功していました。

ステップ 4: エンドユーザーのエクスペリエンスをテストする

前回記事の手順でEC2インスタンスは作成済みとします。 アクションで、定義したAWS-RestartEC2Instanceが選択できるようになっています。

アクションの実行を選択します。

アクションが実行され、状況がIn progressとなります。

しばらく待つと、成功となりました。

おまけ

Service Catalogで実行されたアクションはの実行ログは、Systems Manager Automationでも確認できます。

感想

Service CatalogでSystems Manager オートメーションを実行できるとわかりました。
Systems Manager オートメーションに詳しくなれば、便利そうな気がします。

私は少しまだわかってないのは、エンドユーザーのIAMグループに割り当てた権限です。 公式ドキュメントの通りにポリシー設定すると、どのインスタンスに対しても再起動できてしまう気がしました。 ただ、IAMユーザーにアクセスキーを割り当てなければ、問題ないかもしれません。 機会があれば、調べてみたいと思います。

渡辺 信秀(記事一覧)

2017年入社 / 地味な内容を丁寧に書きたい