3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS Service Catalogを試してみた

Posted at

はじめに

ソリューションアーキテクトプロフェッショナルの勉強をしていて、たびたび出てくるService Catalogが気になったので、公式のチュートリアルをなぞってみました。

参考

仕組み

自分の理解を図示すると、以下のようになります。
image.png

  • ポートフォリオ
    • 製品集
    • 利用の権限を、ユーザに付与する
  • 製品
    • 作成するリソース
    • CloudFormationなどで設定する

料金

以前はポートフォリオに固定料金がかかっていたようですが、現在はコール数だけでの料金になったようです。

やってみた

以下の公式をなぞっていきます。

ステップ 1: AWS CloudFormation テンプレートのダウンロード

多分しなくてよいです。後ほど、S3バケットのURLを直接指定しています。

ステップ 2: キーペアを作成する

今回はEC2を作る製品になりますので、キーペアを作成します。EC2のコンソールからつくりました。
image.png
.pemで作りました。
image.png
ダウンロードされるので、覚えておきましょう。
image.png

ステップ 3: Service Catalog ポートフォリオを作成する

コンソールから作成します。
image.png
公式のステップの通りに入力して作成しました。
image.png

ステップ 4: Service Catalog 製品の作成

作成されたポートフォリオの画面から製品を作成できます。
image.png

公式の説明の通りの文字列を入力します。
image.png
ここでCloudFormationのファイルをURLから指定します。そのため、最初のダウンロードは不要でした。
image.png

サポートも入れておきましたけれども、オプションだから不要だったかもしれません。
最後に 製品を作成、をクリックします。
image.png

ポートフォリオの製品タブを更新すると、出てきました。
image.png

ステップ 5: テンプレート制約を追加してインスタンスサイズを制限する

「指定できるインスタンスタイプを"t2.micro", "t2.small"にする」という制約を追加します。
公式の通りにすれば問題ありません。
image.png
制約にはいろいろな種類がありますが、今回はテンプレートの指定になります。
image.png
制約の定義も、公式の操作をなぞります。
image.png
説明も張り付けて、作成をクリックします。制約のタブに追加されました。
image.png

ステップ 6: IAM ロールを割り当てる起動制約を追加する & ユーザも作成

ここで以下を作成します。

  • IAMロール
    • Service Catalogが、製品を起動するときに使う
      付与するポリシーは公式のを使っています。

また同じCloudFormation内で以下も作成しています。

  • IAMユーザ
    • この製品を使うためのユーザ
    • Service Catalogのコンソールを使うため、AWSServiceCatalogEndUserFullAccessを付与
    • 製品に使うCFnテンプレートをS3から落とすため、S3へのGetObjectを付与
    • 上記のロールは紐づけていない
createIAMUser.yaml
AWSTemplateFormatVersion: 2010-09-09

Parameters:
  MyPassword:
    Type: String
    NoEcho: true

Resources:
  AWSRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - "servicecatalog.amazonaws.com"
            Action:
              - sts:AssumeRole
      Policies:
        - PolicyName: toExecutionProduct
          PolicyDocument:
            Version: 2012-10-17
            Statement:
              - Effect: Allow
                Action:
                  - access-analyzer:ValidatePolicy
                  - cloudformation:CreateStack
                  - cloudformation:DeleteStack
                  - cloudformation:DescribeStackEvents
                  - cloudformation:DescribeStacks
                  - cloudformation:GetTemplateSummary
                  - cloudformation:SetStackPolicy
                  - cloudformation:ValidateTemplate
                  - cloudformation:UpdateStack
                  - ec2:*
                  - iam:CreatePolicy
                  - iam:attachRolePolicy
                  - s3:GetObject
                  - servicecatalog:*
                  - sns:*
                Resource: '*'        

  AWSUser:
    Type: AWS::IAM::User
    Properties:
      LoginProfile:
        Password: !Ref MyPassword
        PasswordResetRequired: false
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AWSServiceCatalogEndUserFullAccess
      Policies:
        - PolicyName: getS3
          PolicyDocument:
            Version: 2012-10-17
            Statement:
              - Effect: Allow
                Action:
                  - s3:GetObject
                Resource: '*'

作成できたら、二つ目の制約を作成します。
image.png
今度は起動を選択します。
image.png
CFnで作成したIAMロールを指定して、作成をクリック。
image.png
先ほど作成したテンプレートの制約と合わせて、二つできました。
image.png

ステップ 7: ポートフォリオへのアクセス権限のエンドユーザーへの付与

公式とはちょっと説明が異なります。対象のタブを選んで「アクセス権の付与」をクリックします。
image.png
今回追加するのはユーザーなので、ユーザータブから指定します。
image.png
タブを更新して、追加されたことを確認します。
image.png

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

製品の起動

作成したユーザーでサインインすると、コンソールから以下のように見れました。
image.png
製品を起動、をクリックします。
image.png
公式通りに名前を入力します。
image.png
パラメータは、先ほど作ったキーを指定して、IPは自分のもの(0.0.0.0/0)でもOK
image.png
起動を開始しました。
image.png
うまく起動できました。
image.png
ユーザにEC2の起動権限を付与していませんが、起動制約に指定したIAMロールが起動してくれたようです。

CloudFormationのスタックで作られています。
image.png

製品で作られたEC2につなぐ

WindowsのPowerShellから、繋いでみます。コマンドはssh -i "[作成したキーファイル].pem" ec2-user@[インスタンスのPublicDNSName]になります。
EC2のコンソールから見れるのであれば、対象のインスタンスの接続の情報から見れます。
image.png

今回はWindowsからSSHでつなぎます。最初のほうで作成したキーファイルの権限を制限する必要があります。
Windowsの場合はキーファイルの権限を変更するより、ユーザフォルダで動かした方が楽ですので、以下を参考に、そこにファイルを移動して、そこから起動します。

image.png

シフトキーと右クリックでPowerShellを起動します。
image.png

先ほどのSSHコマンドを実行して、無事繋ぐことができました
image.png

製品の終了(削除)

起動したユーザで、製品を終了させます。
プロビジョニングされた製品、の一覧に、作成したものが出てきます。
image.png

選択して[アクション]-[終了]をクリックします。
image.png

”終了”といれて、プロビジョニングされた製品を終了させます。
image.png

終了中になりました。
image.png
スタックの方で削除処理が流れました。
image.png

削除が完了すると、ユーザー側からは製品がなくなりました。
image.png

スタックも削除完了しています。
image.png

片付け

  • 先に製品から削除します。

    • 製品リストから選択します。
      image.png
    • アクションから 製品の削除 を選択します。
      image.png
      image.png
  • 次にポートフォリオを削除します。

    • 作ったポートフォリオからアクセス権を削除します。
      image.png
    • 関連付けされたリソースがなくなった後、ポートフォリオ自身を削除します。
      image.png
      image.png
  • CFnで作成したユーザーとロールは、対象のスタックを削除します。

おわりに

今回はService Catalogを触ってみました。
色々な立場の人がAWSを使う場合、それぞれの方にさせたいことをポートフォリオを使って指定する、などに使う機能と感じました。
この記事がどなたかのお役に立てれば幸いです。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?