AWS Service Catalog のサービスアクション - AWS Service Catalog

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

AWS Service Catalog のサービスアクション

AWS Service Catalog により、コンプライアンスとセキュリティ対策に従いながら、管理メンテナンスとエンドユーザートレーニングを減らすことができます。サービスアクションを使用すると、管理者は、AWS Service Catalog での運用タスクの実行、問題のトラブルシューティング、承認されたコマンドの実行、アクセス許可のリクエストをエンドユーザーに許可できます。AWS Systems Manager ドキュメントを使用して、サービスアクションを定義します。AWS Systems Manager ドキュメントでは、AWS のベストプラクティスを実装する事前定義されたアクション (​Amazon EC2 の停止や再起動など) に対するアクセス許可を付与でき、カスタムアクションを定義することもできます。

このチュートリアルでは、Amazon EC2 インスタンスの再起動をエンドユーザーに許可します。必要なアクセス許可を追加し、サービスアクションを定義して製品に関連付けたら、プロビジョニングされた製品でそのアクションを使用して、エンドユーザーのエクスペリエンスをテストします。

前提条件

このチュートリアルでは、AWS のフル管理アクセス許可を持ち、すでに AWS Service Catalog の使用に慣れていて、製品、ポートフォリオ、ユーザーの基本セットを所有していることを前提とします。AWS Service Catalog の使用に慣れていない場合は、このチュートリアルを使用する前に「設定」と「開始方法」のタスクを完了してください。

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

エンドユーザーアカウントには、特定のサービスアクションを表示および実行するアクセス許可が必要です。この例では、AWS Service Catalog サービスアクション機能にアクセスして Amazon EC2 を再起動するアクセス許可がエンドユーザーに必要です。

アクセス許可を更新するには

  1. AWS Identity and Access Management (IAM) コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. メニューの [グループ] を選択します。

  3. [グループ] ページで、エンドユーザーによって AWS Service Catalog リソースへのアクセスに使用されるグループを選択します。この例では、エンドユーザーグループを選択します。独自の実装では、該当するエンドユーザーによって使用されるグループを選択します。

  4. グループの詳細ページの [Permissions (アクセス許可)] タブで、新しいポリシーを作成するか、既存のポリシーを編集します。この例では、グループの AWS Service Catalog プロビジョニングおよび終了アクセス許可用に作成されたカスタムポリシーを選択して、既存のポリシーにアクセス許可を追加します。

  5. [Policy (ポリシー)] ページで、[ポリシーの編集] を選択して必要なアクセス許可を追加します。ビジュアルエディタまたは JSON エディタを使用してポリシーを編集できます。この例では、JSON エディタを使用してアクセス許可を追加します。このチュートリアルでは、以下のアクセス許可をポリシーに追加します。

    { "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": "*" } ] }
  6. ポリシーを編集した後、ポリシーの変更を確認して承認します。これで、エンドユーザーグループのユーザーに、AWS Service Catalog で Amazon EC2 の再起動アクションを実行するアクセス許可が付与されました。

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

次は、Amazon EC2 インスタンスを再起動するサービスアクションを作成します。

  1. AWS Service Catalog コンソール (https://console.aws.amazon.com/sc/) を開きます。

  2. メニューの [Service actions (サービスアクション)] を選択します。

  3. [service actions (サービスアクション)] ページで、[Create new action (新しいアクションの作成)] を選択します。

  4. [Create action] ページで、サービスアクションを定義する AWS Systems Manager ドキュメントを選択します。Amazon EC2 インスタンスの再起動アクションは AWS Systems Manager ドキュメントによって定義されているため、ドロップダウンメニューのデフォルトのオプションである [Amazon documents (Amazon ドキュメント)] をそのまま使用します。

  5. [AWS-RestartEC2Instance] アクションを選択します。

  6. お客様の環境とチームに合ったアクションの名前と説明を指定します。この説明はエンドユーザーに表示されるため、アクションの内容を理解するのに役立つものを選択してください。

  7. [Parameter and target configuration] で、アクションのターゲットとなる SSM ドキュメントパラメータ ([インスタンス ID] など) を選択し、パラメータのターゲットを選択します。パラメータを追加するには、[パラメータの追加] を選択します。

  8. [Permissions] で、ロールを選択します。この例では、デフォルトのアクセス許可を使用します。他のアクセス許可の設定も可能で、このページで定義します。

  9. 設定を確認したら、[Create action (アクションの作成)] を選択します。

  10. 次のページでは、アクションが作成されて使用可能になると確認メッセージが表示されます。

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

アクションを定義したら、そのアクションを製品に関連付ける必要があります。

  1. [Service actions] ページで、[AWS-RestartEC2instance]、[Associate action] の順に選択します。

  2. [Associate action (アクションの関連付け)] ページで、エンドユーザーによってサービスアクションが実行されるようにする製品を選択します。この例では、[Linux Desktop] を選択します。

  3. 製品バージョンを選択します。1 番上のチェックボックスを使用して、すべてのバージョンを選択できます。

  4. [Associate action (アクションの関連付け)] を選択します。

  5. 次のページで、確認メッセージが表示されます。

これで、AWS Service Catalog でサービスアクションが作成されました。このチュートリアルの次のステップは、エンドユーザーとしてサービスアクションを使用することです。

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

エンドユーザーはプロビジョニングされた製品に対してサービスアクションを実行できます。このチュートリアルの目的上、エンドユーザーには少なくとも 1 つのプロビジョニングされた製品が必要です。プロビジョニングされた製品は、前のステップでサービスアクションに関連付けた製品バージョンから起動する必要があります。

エンドユーザーとしてサービスアクションにアクセスするには

  1. エンドユーザーとして AWS Service Catalog コンソールにログインします。

  2. AWS Service Catalog ダッシュボードのナビゲーションペインで、[プロビジョニングされた製品のリスト] を選択します。このリストには、エンドユーザーのアカウント用にプロビジョンされた製品が表示されます。

  3. [プロビジョニングされた製品のリスト] ページで、プロビジョニングされたインスタンスを選択します。

  4. [プロビジョニングされた製品の詳細] ページで、右上の [Actions (アクション)] を選択してから、[AWS-RestartEC2instance] アクションを選択します。

  5. カスタムアクションを実行することを確認します。アクションが送信されたという確認メッセージが表示されます。

ステップ 5: トラブルシューティング

サービスアクションの実行が失敗した場合、[Provisioned product (プロビジョニングされた製品)] ページのサービスアクション実行イベントの [Outputs (出力)] セクションにエラーメッセージが表示されます。以下に、よくあるエラーメッセージの説明を示します。

注記

エラーメッセージの正確なテキストは変更される可能性があるため、いずれの種類の自動化プロセスでも使用しないでください。

内部エラー

AWS Service Catalog で内部エラーが発生しました。後でもう一度お試しください。問題が解決しない場合は、カスタマーサポートまでお問い合わせください。

[An error occurred (ThrottlingException) when calling the StartAutomationExecution operation (StartAutomationExecution オペレーションの呼び出し時にエラーが発生しました (ThrottlingException))]

サービスアクションの実行が SSM などのバックエンドサービスによって制限されました。

[Access denied while assuming the role (ロールの引き受け中にアクセスが拒否されました)]

AWS Service Catalog は、サービスアクション定義で指定されたロールを引き受けることができませんでした。servicecatalog.amazonaws.com プリンシパル、または servicecatalog.us-east-1.amazonaws.com などのリージョン別プリンシパルがロールの信頼ポリシーでホワイトリストに登録されていることを確認してください。

[An error occurred (AccessDeniedException) when calling the StartAutomationExecution operation: User is not authorized to perform: ssm:StartAutomationExecution on the resource. (StartAutomationExecution オペレーションの呼び出し時にエラーが発生しました (AccessDeniedException): ユーザーはリソースに対する ssm:StartAutomationExecution の実行を承認されていません)]

サービスアクション定義で指定されたロールに、ssm:StartAutomationExecution を呼び出すアクセス許可がありません。ロールに適切な SSM アクセス許可があることを確認してください。

[Cannot find any resources with type TargetType in provisioned product (プロビジョニングされた製品で TargetType タイプのリソースが見つかりません)]

プロビジョニングされた製品に、SSM ドキュメントで指定されたターゲットタイプと一致するリソース (AWS::EC2::Instance など) が含まれていません。プロビジョニングされた製品でこれらのリソースを確認するか、ドキュメントが正しいことを確認してください。

[Document with that name does not exist (その名前のドキュメントは存在しません)]

サービスアクション定義で指定されたドキュメントが存在しません。

[Failed to describe SSM Automation document (SSM 自動化ドキュメントの定義の取得に失敗しました)]

指定したドキュメントの定義を取得しようとしたときに、AWS Service Catalog が SSM からの不明な例外を検出しました。

[Failed to retrieve credentials for role (ロールの認証情報の取得に失敗しました)]

AWS Service Catalog は指定されたロールの引き受け中に不明なエラーを検出しました。

[Parameter has value "InvalidValue" not found in {ValidValue1}, {ValidValue2} (パラメータの値 InvalidValue{ValidValue1}、{ValidValue2} に見つかりません)]

SSM に渡されたパラメータ値がドキュメントの許容値のリストにありません。渡されたパラメータが有効であることを確認し、再試行してください。

[Parameter type error. The value supplied for ParameterName is not a valid string. (パラメータタイプエラー。ParameterName に指定された値が有効な文字列ではありません)]

SSM に渡されたパラメータの値がドキュメントのこのタイプでは無効です。

[Parameter is not defined in service action definition (パラメータがサービスアクション定義で定義されていません)]

サービスアクション定義で定義されていないパラメータが AWS Service Catalog に渡されました。使用できるのは、サービスアクション定義で定義されたパラメータのみです。

[Step fails when it is executing/canceling action.Error message. Please refer to Automation Service Troubleshooting Guide for more diagnosis details (アクションの実行中/キャンセル中にステップが失敗します。Error message。診断の詳細については、Automation サービストラブルシューティングガイドを参照してください)]

SSM 自動化ドキュメントのステップが失敗しました。さらにトラブルシューティングするには、メッセージ内のエラーを参照してください。

[The following values for the parameter are not allowed because they are not in the provisioned product: InvalidResourceId (次のパラメータの値がプロビジョニングされた製品にないため許可されません: InvalidResourceId)]

プロビジョニングされた製品にないリソースに対するアクションをユーザーがリクエストしました。

[TargetType not defined for SSM Automation document (SSM 自動化ドキュメントに TargetType が定義されていません)]

サービスアクションでは、SSM 自動化ドキュメントに TargetType を定義する必要があります。SSM 自動化ドキュメントを確認してください。