

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

# AWS Service Catalog サービスアクション
<a name="using-service-actions"></a>

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

AWS Service Catalog を使用すると、コンプライアンスとセキュリティ対策を遵守しながら、管理メンテナンスとエンドユーザートレーニングを減らすことができます。サービスアクションを使用すると、管理者は、 AWS Service Catalogでの運用タスクの実行、問題のトラブルシューティング、承認されたコマンドの実行、アクセス許可のリクエストをエンドユーザーに許可できます。[AWS Systems Manager ドキュメント](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html)を使用して、サービスアクションを定義します。[AWS Systems Manager ドキュメント](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html)は、Amazon EC2 の停止や再起動などの AWS ベストプラクティスを実装する事前定義されたアクションへのアクセスを提供し、カスタムアクションを定義することもできます。

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

## 前提条件
<a name="service-actions-prerequisites"></a>

このチュートリアルでは、完全な AWS 管理者権限があり、すでに に精通しており AWS Service Catalog、製品、ポートフォリオ、およびユーザーのベースセットが既にあることを前提としています。このチュートリアルを使用する前に AWS Service Catalog、[セットアップ](setup.md)タスクと [開始方法](getstarted.md)タスクを完了してください。

**Topics**
+ [前提条件](#service-actions-prerequisites)
+ [ステップ 1: エンドユーザーのアクセス許可を設定する](#service-actions-configure-end-user-permissions)
+ [ステップ 2: サービスアクションを作成する](#service-actions-create-new-service-action)
+ [ステップ 3: サービスアクションを製品バージョンに関連付ける](#service-actions-associate-with-product-version)
+ [ステップ 4: エンドユーザーのエクスペリエンスをテストする](#service-actions-test-end-user-experience)
+ [ステップ 5: でサービスアクションを管理する AWS CloudFormation](#service-actions-cloudformation)
+ [ステップ 6: トラブルシューティング](#service-actions-troubleshooting)

## ステップ 1: エンドユーザーのアクセス許可を設定する
<a name="service-actions-configure-end-user-permissions"></a>

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

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

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

1. メニューからユーザーグループを見つけます。

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

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

1. [**ポリシー**] ページで、[**ポリシーの編集**] を選択して必要なアクセス許可を追加します。ビジュアルエディタまたは JSON エディタを使用してポリシーを編集できます。この例では、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": "*"
   		}
   	]
   }
   ```

------

1. ポリシーを編集した後、ポリシーの変更を確認して承認します。これで、エンドユーザーグループのユーザーに、 AWS Service Catalogで Amazon EC2 の再起動アクションを実行するアクセス許可が付与されました。

## ステップ 2: サービスアクションを作成する
<a name="service-actions-create-new-service-action"></a>

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

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

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

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

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

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

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

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

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

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

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

## ステップ 3: サービスアクションを製品バージョンに関連付ける
<a name="service-actions-associate-with-product-version"></a>

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

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

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

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

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

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

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

## ステップ 4: エンドユーザーのエクスペリエンスをテストする
<a name="service-actions-test-end-user-experience"></a>

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

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

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

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

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

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

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

## ステップ 5: でサービスアクションを管理する AWS CloudFormation
<a name="service-actions-cloudformation"></a>

 サービスアクションとその AWS CloudFormation リソースとの関連付けを作成できます。詳細については、AWS CloudFormation ユーザーガイドで次を参照してください。
+  [AWS::ServiceCatalog::CloudFormationProduct ProvisioningArtifactProperties](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html) 
+  [AWS::ServiceCatalog::ServiceActionAssociation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-serviceactionassociation.html) 

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

## ステップ 6: トラブルシューティング
<a name="service-actions-troubleshooting"></a>

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

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

 **内部エラー**

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

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

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

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

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

 **[StartAutomationExecution オペレーションの呼び出し時にエラーが発生しました (AccessDeniedException): ユーザーはリソースに対する ssm:StartAutomationExecution の実行を承認されていません**]

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

 **プロビジョニング済み製品で {{TargetType}} タイプのリソースが見つかりません**

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

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

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

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

AWS Service Catalog は、指定されたドキュメントを記述しようとしたときに SSM から不明な例外を検出しました。

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

AWS Service Catalog は、指定されたロールを引き受けるときに不明なエラーが発生しました。

 **パラメータには {{{validValue1}, {validValue2}}} に無い「{{InvalidValue}}」の値があります**

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

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

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

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

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

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

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

 **パラメーターの {{InvalidResourceId}} の値は、プロビジョニング済み製品にはないため、許可されません。**

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

 **SSM ドキュメントドキュメントに TargetType が定義されていません**

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