Usar o Trusted Advisor como um web service
O serviço AWS Support permite que você crie aplicativos que interajam com o AWS Trusted Advisor
Tópicos
Obter a lista de verificações disponíveis do Trusted Advisor
O seguinte trecho de código Java cria uma instância de um cliente Suporte que é possível usar para chamar todas as operações de API do Trusted Advisor. Em seguida, o código obtém a lista de verificações do Trusted Advisor e seus valores CheckId correspondentes chamando a operação de API DescribeTrustedAdvisorChecks. Você pode usar essas informações para criar interfaces de usuário que permitem aos usuários selecionar a verificação que desejam executar ou atualizar.
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()); } }
Atualizar a lista de verificações disponíveis do Trusted Advisor
O seguinte trecho de código Java cria uma instância de um cliente Suporte que você pode usar para atualizar os dados do 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()); }
Sondar uma verificação de alterações de status do Trusted Advisor
Depois de enviar a solicitação para executar uma verificação do Trusted Advisor para gerar os dados de status mais recentes, você deverá usar a operação de APi DescribeTrustedAdvisorCheckRefreshStatuses para solicitar o progresso da execução da verificação e quando os novos dados estarão prontos para verificação.
O seguinte trecho de código Java é o status da verificação solicitada na seção a seguir, usando o valor correspondente na variável CheckId. Além disso, o código demonstra vários outros usos do serviço Trusted Advisor:
-
Você pode chamar
getMillisUntilNextRefreshablepercorrendo os objetos contidos na instânciaDescribeTrustedAdvisorCheckRefreshStatusesResult. Você pode usar o valor retornado para testar se você deseja que seu código prossiga com a renovação da verificação. -
Se
timeUntilRefreshableequivaler a zero, vocÊ poderá solicitar uma atualização da verificação. -
Usando o status retornado, você pode continuar a pesquisa de alterações de status; o trecho de código define o intervalo de pesquisa como o valor recomendado de dez segundos. Se o status for
enqueuedouin_progress, o loop retornará e solicitará outro status. Se a chamada retornarsuccessful, o loop será encerrado. -
Por fim, o código retorna uma instância de um tipo de dados
DescribeTrustedAdvisorCheckResultResultque você pode usar para percorrer as informações produzidas pela verificação.
Observação: use uma única solicitação de atualização antes da sondagem para o status da solicitação.
// 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. }
Solicitar um resultado de verificação do Trusted Advisor
Depois que selecionar a verificação para os resultados detalhados que deseja, você enviará uma solicitação usando a operação de API DescribeTrustedAdvisorCheckResult.
dica
Os nomes e descrições das verificações do Trusted Advisor estão sujeitos a alterações. Recomendamos que você especifique o ID de verificação do código para identificar exclusivamente um verificação. É possível usar a operação de API DescribeTrustedAdvisorChecks para obter o ID do verificação.
O seguinte trecho de código Java usa a instância DescribeTrustedAdvisorChecksResult referenciada pela variável result, que foi obtida no trecho de código anterior. Em vez de definir uma verificação interativamente por meio de uma interface de usuário, depois que enviar a solicitação para executar o trecho, envie uma solicitação para a primeira verificação na lista a ser executada especificando um valor de índice de 0 em cada chamada result.getChecks().get(0). Em seguida, o código define uma instância de DescribeTrustedAdvisorCheckResultRequest, e passa-a para uma instância de DescribeTrustedAdvisorCheckResultResult chamada checkResult. Você pode usar as estruturas de membro desse tipo de dados para visualizar os resultados da verificação.
// 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(); }
Observação: solicitar um resultado de verificação do Trusted Advisor não gerará dados de resultados atualizados.
Mostrar detalhes de uma verificação da Trusted Advisor
O seguinte trecho de código Java faz a iteração sobre a instância DescribeTrustedAdvisorCheckResultResult retornada na seção anterior para obter uma lista de recursos sinalizados pela verificação do 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()); }