普段触らないサービスがだんだん気になってきている那須です。
AWS Service Catalog って皆さんご存知でしょうか? 超ざっくり言うと、CloudFormation を使って管理者が定義したリソースを一般ユーザがリソース作成に必要な権限を持たずに作成できる、そんなサービスです。 詳しくはクラスメソッドさんのブログをご参照ください。
Service Catalog でリソース作成するブログはそれなりにあるんですが、Service Catalog で作成したリソースに対するアクションについて書かれたブログがあんまりないなーと思ったので、その話を書いてみます。
何ができるのか?
ドキュメントがあります。
セルフサービスアクションを使うことで、Systems Manager ドキュメントを実行して作成したリソースに対してアクションを実行できるんですね。
AWS から標準で提供されているドキュメントは、EC2 と RDS の起動/停止/再起動の 6 種類のアクションだけです(2019/1/17現在)
ただ、カスタムアクションとして自分で作成した Systems Manager ドキュメントも利用できるので、Systems Manager でできるアクションならだいたいのことは Service Catalog で作成したリソースに対して実行できそうです(バックアップ取得とか
どうやってやるの?
まずはアクションの定義
Service Catalog コンソールでサービスのアクションをクリック。

新しいアクションを作成しましょう。

ここでは EC2 インスタンスを開始するドキュメントを選択しました。

アクション名とバージョンを指定します。

パラメータを指定します。対象のインスタンス ID を指定するのはどのパラメータか?をここで選びましょう。

アクション実行の権限を決めます。
起動制約は推奨しないと書かれているので、ドキュメントの AssumeRole か IAM ロールのどちらかを決めます。
最後にアクションの作成を押して完了です。

次に作成したアクションを製品に関連付けましょう。
作成したアクションを選択してアクションの関連付けを押します。

製品とバージョンを選択してアクションの関連付けを押します。これで OK です。

一応確認してみましょう。作成したアクションをクリックします。

製品バージョンのところで製品名とバージョンが表示されていれば OK ですよ。

アクションの実行
Service Catalog 製品で起動したインスタンスがあります。今は停止していますね。

プロビジョニングされた製品名から対象のインスタンスをクリックします。

アクションから実行したいアクション名をクリックします。

アクションの実行を押しましょう。

インスタンスが起動しました!

ログもバッチリ残ります。

どういう場面で使うの?
利用者視点だとこんな感じですかね。
- いちいちリソース作成やアクションするのに管理者に申請書ベースで依頼して数日待つとか無理
- 今すぐアクション実行したいのにパラメータとか知らねーよ!裏でいい感じにしてくれよ
- 自分に関係あるリソースだけ表示してくれるように画面作ってほしい。フィルタのかけ方なんで知らないよ
ということで、クラウドの良さのひとつであるセルフサービスを AWS アカウント管理者にではなく一般ユーザにも提供する、というのが Service Catalog セルフサービスアクションのポイントかなと思いました。
まとめ
忘れがちになりますが、AWS や他のクラウドサービスはセルフサービス型でサービス提供してくれるのがいいところなので、日本のような SI 業種の会社が多い環境であれば Service Catalog は案外必要とされるサービスなんじゃないかなーと思ってます。 どのようにサービスを提供するべきかはいろいろ案があるかと思いますが、本来のクラウドの思想を時々思い出して仕事しようと思いました。