

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

# ウェブサービスとしての Trusted Advisor の使用
<a name="trustedadvisor"></a>

AWS サポート サービスを使用すると、[AWS Trusted Advisor](https://aws.amazon.com/premiumsupport/trustedadvisor/) と交信するアプリケーションを作成できます。このトピックでは、Trusted Advisor チェックのリストを取得し、その 1 つを更新してから、チェックの結果詳細を取得する方法を説明します。これには、Java を使用します。他の言語のサポートに関する情報については、[Amazon Web Services のツール](https://aws.amazon.com/tools/)を参照してください。

**Topics**
+ [提供されている Trusted Advisor チェックのリストを取得する](#Get_TA_Checks)
+ [提供されている Trusted Advisor チェックのリストを更新する](#Request_TA_Data)
+ [Trusted Advisor をポーリングして、ステータス変更をチェックする](#getcheckstatus)
+ [Trusted Advisor チェック結果のリクエスト](#requestcheck)
+ [Trusted Advisor チェックの詳細を表示する](#printdetails)

## 提供されている Trusted Advisor チェックのリストを取得する
<a name="Get_TA_Checks"></a>

次の Java コードスニペットでは、すべての Trusted Advisor API オペレーションを呼び出すために使用できる サポート クライアントのインスタンスを作成します。次に、[DescribeTrustedAdvisorChecks](https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorChecks.html) 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 チェックのリストを更新する
<a name="Request_TA_Data"></a>

次の Java コードスニペットでは、すべての サポート データを更新するために使用できる 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 をポーリングして、ステータス変更をチェックする
<a name="getcheckstatus"></a>

Trusted Advisor チェックを実行して最新のステータスデータを生成するリクエストを送信したら、 [DescribeTrustedAdvisorCheckRefreshStatuses](https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorCheckRefreshStatuses.html) API オペレーションを使用して、チェック実行の進行状況、およびいつ新しいデータでチェックの準備ができるかをリクエストします。

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

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

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

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

1. 最後に、コードは、チェックによって生成された情報をトラバースするために使用できる、`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 チェック結果のリクエスト
<a name="requestcheck"></a>

目的の詳細結果のチェックを選択したら、[DescribeTrustedAdvisorCheckResult](https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorCheckResult.html) API オペレーションを使ってリクエストを送信します。

**ヒント**  
Trusted Advisor チェックの名前と説明は変更されることがあります。チェックを一意に識別するために、コードでチェック ID を指定することをお勧めします。チェック ID を取得するには、[DescribeTrustedAdvisorChecks](https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorChecks.html) 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 チェックの詳細を表示する
<a name="printdetails"></a>

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

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