ウェブサービスとしての Trusted Advisor の使用 - AWS Support

ウェブサービスとしての Trusted Advisor の使用

AWS Support サービスを使用すると、AWS Trusted Advisor と交信するアプリケーションを作成できます。このトピックでは、Trusted Advisor チェックのリストを取得し、その 1 つを更新してから、チェックの結果詳細を取得する方法を説明します。これには、Java を使用します。他の言語のサポートに関する情報については、アマゾン ウェブ サービスのツールを参照してください。

提供されている Trusted Advisor チェックのリストを取得する

次の Java コードスニペットでは、すべての Trusted Advisor API オペレーションを呼び出すために使用できる AWS Support クライアントのインスタンスを作成します。次に、DescribeTrustedAdvisorChecks API オペレーションを呼び出すことによって、Trusted Advisor チェックのリストおよび対応する CheckId の値が取得されます。この情報を使って、チェックを実行するか更新するかをユーザーが選択できるユーザーインターフェイスを構築できます。

private static AWSSupport createClient() { return AWSSupportClientBuilder.defaultClient(); } // Get the List of Available Trusted Advisor Checks public static void getTAChecks() { // Possible language parameters: "en" (English), "ja" (Japanese), "fr" (French), "zh" (Chinese) DescribeTrustedAdvisorChecksRequest request = new DescribeTrustedAdvisorChecksRequest().withLanguage("en"); DescribeTrustedAdvisorChecksResult result = createClient().describeTrustedAdvisorChecks(request); for (TrustedAdvisorCheckDescription description : result.getChecks()) { // Do something with check description. System.out.println(description.getId()); System.out.println(description.getName()); } }

提供されている Trusted Advisor チェックのリストを更新する

次の Java コードスニペットでは、すべての AWS Support データを更新するために使用できる Trusted Advisor クライアントのインスタンスを作成します。

// Refresh a Trusted Advisor Check // Note: Some checks are refreshed automatically, and they cannot be refreshed by using this operation. // Specifying the check ID of a check that is automatically refreshed causes an InvalidParameterValue error. public static void refreshTACheck(final String checkId) { RefreshTrustedAdvisorCheckRequest request = new RefreshTrustedAdvisorCheckRequest().withCheckId(checkId); RefreshTrustedAdvisorCheckResult result = createClient().refreshTrustedAdvisorCheck(request); System.out.println("CheckId: " + result.getStatus().getCheckId()); System.out.println("Milliseconds until refreshable: " + result.getStatus().getMillisUntilNextRefreshable()); System.out.println("Refresh Status: " + result.getStatus().getStatus()); }

Trusted Advisor をポーリングして、ステータス変更をチェックする

Trusted Advisor チェックを実行して最新のステータスデータを生成するリクエストを送信したら、 DescribeTrustedAdvisorCheckRefreshStatuses API オペレーションを使用して、チェック実行の進行状況、およびいつ新しいデータでチェックの準備ができるかをリクエストします。

次の Java コードスニペットは、CheckId 変数内の対応する値を使用して、次のセクションで要求したチェックのステータスを取得します。また、コードは、Trusted Advisor サービスの他の使用方法を示します。

  1. getMillisUntilNextRefreshable の呼び出しは、DescribeTrustedAdvisorCheckRefreshStatusesResult インスタンス内に含まれるオブジェクトをトラバースすることによって実行できます。返された値を使用して、チェックの更新を続けるのにコードが必要かどうかをテストできます。

  2. timeUntilRefreshable が 0 の場合、チェックの更新を要求できます。

  3. 返されたステータスを使って、ステータスの変更のポーリングを続けることができます。このコードスニペットは、ポーリング間隔を推奨値の 10 秒に設定しています。ステータスが enqueued または in_progress のいずれかの場合、ループは回帰し、他のステータスを要求します。呼び出しによって successful が返ってきた場合は、ループは終了します。

  4. 最後に、コードは、チェックによって生成された情報をトラバースするために使用できる、DescribeTrustedAdvisorCheckResultResult データ型のインスタンスを返します。

注: リクエストのステータスをポーリングする前に、単一の更新リクエストを使用します。

// Retrieves TA refresh statuses. Multiple checkId's can be submitted. public static List<TrustedAdvisorCheckRefreshStatus> getTARefreshStatus(final String... checkIds) { DescribeTrustedAdvisorCheckRefreshStatusesRequest request = new DescribeTrustedAdvisorCheckRefreshStatusesRequest().withCheckIds(checkIds); DescribeTrustedAdvisorCheckRefreshStatusesResult result = createClient().describeTrustedAdvisorCheckRefreshStatuses(request); return result.getStatuses(); } // Retrieves a TA check status, and checks to see if it has finished processing. public static boolean isTACheckStatusInTerminalState(final String checkId) { // Since we only submitted one checkId to getTARefreshStatus, just retrieve the only element in the list. TrustedAdvisorCheckRefreshStatus status = getTARefreshStatus(checkId).get(0); // Valid statuses are: // 1. "none", the check has never been refreshed before. // 2. "enqueued", the check is waiting to be processed. // 3. "processing", the check is in the midst of being processed. // 4. "success", the check has succeeded and finished processing - refresh data is available. // 5. "abandoned", the check has failed to process. return status.getStatus().equals("abandoned") || status.getStatus().equals("success"); } // Enqueues a Trusted Advisor check refresh. Periodically polls the check refresh status for completion. public static TrustedAdvisorCheckResult getFreshTACheckResult(final String checkId) throws InterruptedException { refreshTACheck(checkId); while(!isTACheckStatusInTerminalState(checkId)) { Thread.sleep(10000); } return getTACheckResult(checkId); } // Retrieves fresh TA check data whenever possible. // Note: Some checks are refreshed automatically, and they cannot be refreshed by using this operation. This method // is only functional for checks that can be refreshed using the RefreshTrustedAdvisorCheck operation. public static void pollForTACheckResultChanges(final String checkId) throws InterruptedException { String checkResultStatus = null; do { TrustedAdvisorCheckResult result = getFreshTACheckResult(checkId); if (checkResultStatus != null && !checkResultStatus.equals(result.getStatus())) { break; } checkResultStatus = result.getStatus(); // The rule refresh has completed, but due to throttling rules the checks may not be refreshed again // for a short period of time. // Since we only submitted one checkId to getTARefreshStatus, just retrieve the only element in the list. TrustedAdvisorCheckRefreshStatus refreshStatus = getTARefreshStatus(checkId).get(0); Thread.sleep(refreshStatus.getMillisUntilNextRefreshable()); } while(true); // Signal that a TA check has changed check result status here. }

Trusted Advisor チェック結果のリクエスト

目的の詳細結果のチェックを選択したら、DescribeTrustedAdvisorCheckResult API オペレーションを使ってリクエストを送信します。

ヒント

Trusted Advisor チェックの名前と説明は変更されることがあります。チェックを一意に識別するために、コードでチェック ID を指定することをお勧めします。チェック ID を取得するには、DescribeTrustedAdvisorChecks API オペレーションを使用します。

次の Java コードスニペットでは、前のコードスニペットで取得された DescribeTrustedAdvisorChecksResult 変数によって参照される、result インスタンスを使用します。ユーザーインターフェイスを通じてインタラクティブにチェックを定義する代わりに、このスニペットを実行する要求を送信した後で、result.getChecks().get(0) 呼び出しごとに 0 のインデックス値を指定することによってリスト内の最初のチェックを実行する要求を送信します。次に、コードでは、DescribeTrustedAdvisorCheckResultRequest と呼ばれる DescribeTrustedAdvisorCheckResultResult のインスタンスに渡す checkResult のインスタンスを定義します。チェックの結果を見るには、このデータ型のメンバー構造体を使用します。

// Request a Trusted Advisor Check Result public static TrustedAdvisorCheckResult getTACheckResult(final String checkId) { DescribeTrustedAdvisorCheckResultRequest request = new DescribeTrustedAdvisorCheckResultRequest() // Possible language parameters: "en" (English), "ja" (Japanese), "fr" (French), "zh" (Chinese) .withLanguage("en") .withCheckId(checkId); DescribeTrustedAdvisorCheckResultResult requestResult = createClient().describeTrustedAdvisorCheckResult(request); return requestResult.getResult(); }

注: チェック結果を要求しても、更新された Trusted Advisor 結果データは生成されません。

Trusted Advisor のチェック詳細を印刷する

次の Java コードスニペットは、DescribeTrustedAdvisorCheckResultResult チェックによってフラグが付けられたリソースのリストを取得するために前のセクションで返された Trusted Advisor インスタンス上を反復します。

// Print ResourceIds for flagged resources. for (TrustedAdvisorResourceDetail flaggedResource : result1.getResult().getFlaggedResources()) { System.out.println( "The resource for this ResourceID has been flagged: " + flaggedResource.getResourceId()); }