getModelManifest 搭配 AWS SDK 使用 - AWS SDK 程式碼範例

文件 AWS 開發套件範例 GitHub 儲存庫中有更多可用的 AWS SDK 範例

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

getModelManifest 搭配 AWS SDK 使用

下列程式碼範例示範如何使用 getModelManifest

Java
SDK for Java 2.x
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

/** * Waits for the specified model manifest to become active. * * @param manifestName the name of the model manifest to wait for */ public CompletableFuture<Void> waitForModelManifestActiveAsync(String manifestName) { CompletableFuture<Void> result = new CompletableFuture<>(); ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); AtomicInteger secondsElapsed = new AtomicInteger(0); AtomicReference<ManifestStatus> lastStatus = new AtomicReference<>(ManifestStatus.DRAFT); logger.info("Elapsed: 0s | Status: DRAFT"); final Runnable pollTask = new Runnable() { @Override public void run() { int elapsed = secondsElapsed.incrementAndGet(); // Only check status every 5 seconds if (elapsed % 5 == 0) { GetModelManifestRequest request = GetModelManifestRequest.builder() .name(manifestName) .build(); getAsyncClient().getModelManifest(request) .whenComplete((response, exception) -> { if (exception != null) { Throwable cause = exception instanceof CompletionException ? exception.getCause() : exception; scheduler.shutdown(); if (cause instanceof ResourceNotFoundException) { result.completeExceptionally(new RuntimeException("Model manifest not found: " + cause.getMessage(), cause)); } else { result.completeExceptionally(new RuntimeException("Error while polling model manifest status: " + exception.getMessage(), exception)); } return; } ManifestStatus status = response.status(); lastStatus.set(status); if (status == ManifestStatus.ACTIVE) { logger.info("\rElapsed: {}s | Status: ACTIVE", elapsed); scheduler.shutdown(); result.complete(null); } else if (status == ManifestStatus.INVALID) { logger.info("\rElapsed: {}s | Status: INVALID", elapsed); scheduler.shutdown(); result.completeExceptionally(new RuntimeException("Model manifest became INVALID. Cannot proceed.")); } else { logger.info("\rElapsed: {}s | Status: {}", elapsed, status); } }); } else { logger.info("\rElapsed: {}s | Status: {}", elapsed, lastStatus.get()); } } }; // Start the task with an initial delay of 1 second, and repeat every second scheduler.scheduleAtFixedRate(pollTask, 1, 1, TimeUnit.SECONDS); return result; }
  • 如需 API 詳細資訊,請參閱AWS SDK for Java 2.x 《 API 參考》中的 getModelManifest

Kotlin
SDK for Kotlin
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

/** * Waits for the specified model manifest to become active. * * @param manifestName the name of the model manifest to wait for */ suspend fun waitForModelManifestActive(manifestNameVal: String) { var elapsedSeconds = 0 var lastStatus: ManifestStatus = ManifestStatus.Draft print("⏳ Elapsed: 0s | Status: DRAFT") IotFleetWiseClient { region = "us-east-1" }.use { fleetwiseClient -> while (true) { delay(1000) elapsedSeconds++ if (elapsedSeconds % 5 == 0) { val request = GetModelManifestRequest { name = manifestNameVal } val response = fleetwiseClient.getModelManifest(request) lastStatus = response.status ?: ManifestStatus.Draft when (lastStatus) { ManifestStatus.Active -> { print("\r Elapsed: ${elapsedSeconds}s | Status: ACTIVE ✅\n") return } ManifestStatus.Invalid -> { print("\r Elapsed: ${elapsedSeconds}s | Status: INVALID ❌\n") throw RuntimeException("Model manifest became INVALID. Cannot proceed.") } else -> { print("\r Elapsed: ${elapsedSeconds}s | Status: $lastStatus") } } } else { print("\r Elapsed: ${elapsedSeconds}s | Status: $lastStatus") } } } }
  • 如需 API 詳細資訊,請參閱《適用於 AWS Kotlin 的 SDK API 參考》中的 getModelManifest