AWS Service Catalogを試してみた
先日、
AWS Service Catalogってなんだろ?
という記事を書いたので、今回は
ご利用開始にあたって - AWS Service Catalog
のチュートリアルを試してみました。
AWS Service Catalog のセットアップ - AWS Service Catalog
新たにユーザーを作るのが面倒だったので、以下のようにしました。
- 管理者
- 既存IAMユーザーを使用
-
AdministratorAccess
権限を持つ
- エンドユーザー
- スイッチロールを使用
-
AWSServiceCatalogEndUserFullAccess
権限のみ付与
AWS CloudFormation テンプレートのダウンロード
Linuxインスタンスを構築するテンプレートです。詳細はドキュメントをご覧下さい。
キーペアを作成する
今回は作成済みのキーペアを使用します。
新規に作成する場合はEC2コンソールで簡単にできます。こちらもドキュメントの手順をご覧下さい。
ポートフォリオを作成する
Service Catalogコンソールでポートフォリオを作成します。
製品を作成する
Linux デスクトップという製品を作成します。
テンプレート制約を追加する
テンプレート制約でインスタンスサイズを制限します。
ドキュメントにある以下の制約をコピペします。
{
"Rules": {
"Rule1": {
"Assertions": [
{
"Assert" : {"Fn::Contains": [["t2.micro", "t2.small"], {"Ref": "InstanceType"}]},
"AssertDescription": "Instance type should be t2.micro or t2.small"
}
]
}
}
}
起動制約を追加する
起動制約でエンドユーザーが製品を起動するときにIAMが引き受けるAWS Service Catalog ロールを指定します。
linuxDesktopPolicy
というポリシーを作成します。
ドキュメントでは以下のポリシーを指定しています。
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:GetObject"
],
"Resource":"*",
"Condition":{
"StringEquals":{
"s3:ExistingObjectTag/servicecatalog:provisioning":"true"
}
}
}
]
}
しかし、これだけでは起動時にエラーが発生しました。
エラー内容は
- CloudFormationのテンプレートの読み取り、実行権限がない
- テンプレート内のリソースを作成するEC2などの権限がない
というメッセージでした。
細かく指定するのが面倒だったので、今回は作成したlinuxDesktopLaunchRole
にAdministratorAccess
を付与し、このロールを起動制約で指定しました。
ポートフォリオへのアクセス権限のエンドユーザーへの付与
AWSServiceCatalogEndUserFullAccess
権限のみを付与したtest
というスイッチロール用のIAMロールを指定しました。
エンドユーザーで製品を起動
test
にスイッチロールして製品を起動します。
コンソールに表示されたパブリックIPにSSHでログインできることも確認できたので、CloudFormationによるEC2構築はうまくいったようです。
まとめ
AWS Service Catalogの公式チュートリアルを試してみました。
ドキュメントの翻訳が一部うまくいっていないようで、Service Catalogで指定するロールの権限に少しハマりました。
Service Catalogはリソース構築をCloudFormationで行いますが、CloudFormationでも対象のユーザーやロールに権限がないとエラーになるので、同じ考え方だと思います。
参考になれば幸いです。
Discussion