本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
用 Trusted Advisor 作網絡服務
注意
Trusted Advisor 在 2024 年, AWS Trusted Advisor 支援 API 將不 Support 援作業。請使用新的 AWS Trusted Advisor API 以程式設計方式存取最佳實務檢查和建議。
此 AWS Support 服務可讓您撰寫與之互動的應用程式AWS Trusted Advisor
主題
取得可用 Trusted Advisor 檢查清單
下列 Java 程式碼片段會建立可用來呼叫所有 Trusted Advisor API 作業的用 AWS Support 戶端執行個體。接下來,程式碼會呼叫 DescribeTrustedAdvisorChecksAPI 作業,取得 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 程式碼片段會建立用來重新整理 Trusted Advisor 資料的用 AWS Support 戶端執行個體。
// 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 檢查以產生最新狀態資料之後,您可以使用 DescribeTrustedAdvisorCheckRefreshStatusesAPI 作業來請求檢查執行的進度,以及當新資料準備好進行檢查時。
以下 Java 程式碼片段會使用與 CheckId
變數對應的值,取得以下部分請求的檢查狀態。此外,該代碼演示了該 Trusted Advisor 服務的其他幾種用途:
-
您可以透過周遊包含在
DescribeTrustedAdvisorCheckRefreshStatusesResult
執行個體中的物件,以呼叫getMillisUntilNextRefreshable
。您可以使用傳回的值測試您是否希望您的程式碼進行重新整理檢查。 -
如果
timeUntilRefreshable
等於零,您可以請求重新整理檢查。 -
您可以使用傳回的狀態,持續輪詢狀態變更;程式碼片段會將輪詢間隔設定為建議的 10 秒。如果狀態為
enqueued
或in_progress
,迴圈將傳回並請求另一個狀態。如果呼叫傳回successful
,迴圈將會終止。 -
最後,程式碼會傳回
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 檢查結果
選取所需詳細結果的檢查後,您可以使用「DescribeTrustedAdvisorCheck結果 API」作業來提交請求。
提示
Trusted Advisor 檢查的名稱和描述可能會變更。建議您在程式碼中指定檢查 ID,以唯一識別某項檢查。您可以使用 DescribeTrustedAdvisorChecksAPI 作業取得檢查識別碼。
以下 Java 程式碼片段使用 (以上述程式碼片段取得的) result
變數參考的 DescribeTrustedAdvisorChecksResult
執行個體。在您提交請求執行該程式碼片段之後,其並非透過使用者界面以互動方式定義檢查,而是由每次 result.getChecks().get(0)
呼叫中指定索引值 0,以提交請求執行清單中的第一項檢查。接著,程式碼定義 DescribeTrustedAdvisorCheckResultRequest
執行個體,它會傳送到呼叫 checkResult
的 DescribeTrustedAdvisorCheckResultResult
執行個體。您可以使用此資料類型的成員結構,以檢視檢查的結果。
// 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
// Show ResourceIds for flagged resources. for (TrustedAdvisorResourceDetail flaggedResource : result1.getResult().getFlaggedResources()) { System.out.println( "The resource for this ResourceID has been flagged: " + flaggedResource.getResourceId()); }