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

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

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

注記

AWS Service Catalog は、Terraform Open Source または Terraform Cloud 製品のサービスアクションはサポートしていません。

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

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

  5. [ポリシー] ページで、[ポリシーの編集] を選択して必要なアクセス許可を追加します。ビジュアルエディタまたは 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/s3/) を開きます。

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

  3. [サービスアクション] ページで、[アクションの作成] を選択します。

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

  5. AWS-RestartEC2Instance アクションを検索して選択します。

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

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

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

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

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

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

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

  1. [サービスアクション] ページで、[AWS-RestartEC2instance]を選択して、[アソシエイトアクション] の順に選択します。

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

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

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

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

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

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

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

エンドユーザーとしてサービスアクションにアクセスするには
  1. エンドユーザーとして AWS Service Catalog コンソールにログインします。

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

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

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

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

ステップ 5: AWS CloudFormation によるサービスアクションの管理

サービスアクションと AWS CloudFormation リソースとの関連付けを作成できます。詳細については、AWS CloudFormationユーザーガイドで次を参照してください。

注記

サービスアクションと AWS CloudFormation リソースとの関連付けを管理する場合は、AWS Command Line Interface または AWS Management Console を使用してサービスアクションを追加したり削除したりしないでください。スタックの更新を実行すると、AWS CloudFormation の外部で行われたサービスアクションへの変更はすべて置き換えられます。

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

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

注記

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

内部エラー

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

StartAutomationExecution オペレーションの呼び出し時にエラー (ThrottlingException) が発生しました

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

ロールの引き受け中にアクセスが拒否されました

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

StartAutomationExecution オペレーションを呼び出すときにエラー (AccessDeniedException) が発生しました: ユーザーには、リソースStartAutomationExecution に対して ssm: を実行する権限がありません。

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

プロビジョニング済み製品TargetTypeでタイプ のリソースが見つからない

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

その名前のドキュメントは存在しません

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

SSM オートメーションドキュメントの定義の取得に失敗しました

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

ロールの認証情報の取得に失敗しました

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

パラメータの値InvalidValue「」が {ValidValue1}、{ValidValue2} にありません

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

パラメータのタイプに誤りがあります。に指定された値は有効な文字列ParameterNameではありません。

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

パラメータがサービスアクション定義で定義されていません

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

アクションの実行中またはキャンセル中にステップが失敗します。Error message. 診断の詳細については、「オートメーションサービストラブルシューティングガイド」を参照してください。

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

パラメータの次の値は、プロビジョニング済み製品に含まれていないため、使用できません。 InvalidResourceId

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

TargetType SSM オートメーションドキュメントに対して定義されていません

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