

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Trusted Advisor를 웹 서비스로 사용
<a name="trustedadvisor"></a>

AWS Support 서비스를 통해 [AWS Trusted Advisor](https://aws.amazon.com/premiumsupport/trustedadvisor/)와 상호 작용하는 애플리케이션을 구성할 수 있습니다. 이 주제에서는 Trusted Advisor 검사 목록을 가져와서 그 중 하나를 새로 고침하고 검사 항목에서 자세한 결과를 확인하는 방법을 보여 줍니다. 이러한 작업은 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. `DescribeTrustedAdvisorCheckRefreshStatusesResult` 인스턴스에 포함된 객체를 통과하여 `getMillisUntilNextRefreshable`을 호출할 수 있습니다. 반환된 값을 사용하여 코드로 점검 항목을 새로 고칠 것인지 여부를 테스트할 수 있습니다.

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를 지정하는 것이 좋습니다. [DescribeTrustedAdvisorChecks](https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorChecks.html) API 작업을 사용하여 확인 ID를 가져올 수 있습니다.

다음 Java 코드 조각은 이전의 코드 조각에서 얻은 `result` 변수가 참조하는 `DescribeTrustedAdvisorChecksResult` 인스턴스를 사용합니다. 사용자 인터페이스를 통해 대화식으로 검사 항목을 정의하는 대신 해당 조각의 실행 요청을 제출한 후 각 `result.getChecks().get(0)` 호출에서 인덱스 값 0을 지정하여 실행할 목록의 첫 번째 검사 요청을 제출합니다. 그 다음, 해당 코드는 `checkResult`라는 `DescribeTrustedAdvisorCheckResultResult` 인스턴스로 전달되는 `DescribeTrustedAdvisorCheckResultRequest` 인스턴스를 정의합니다. 이 데이터 유형의 멤버 구조를 사용하여 검사 결과를 볼 수 있습니다.

```
// 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());
}
```