Docker環境のJavaアプリからcustom visionのSDKで予測エンドポイントをテストすると404エラーが発生します。

sa 0 評価のポイント
2024-12-04T07:43:23.1966667+00:00

環境

OS

エディション Windows 11 Home

バージョン 24H2

OS ビルド 26120.2415

エクスペリエンス Windows 機能エクスペリエンス パック 1000.26100.36.0

docker desktop

Current version: 4.27.2 (137060)

Java

openjdk:17

Azure custom vision

Pricing Tier:  F0

SDKライブラリ

implementation 'com.azure:azure-cognitiveservices-customvision-training:1.1.0-preview.2'    implementation 'com.azure:azure-cognitiveservices-customvision-prediction:1.1.0-preview.2'

前提

Azure custom visionのGUIにて下記を完了済です。

Windows 11 Homeのdocker desktop環境でJavaアプリを動かしてます。

プログラムはMicrosoft Learn Challenge「クイックスタート: Custom Vision クライアント ライブラリまたは REST API を使って画像分類プロジェクトを作成する」の通り作成してます。

String projectId = /* プロジェクトIDをセットする */;
String predictionKey = /* predictionのキーをセットする */;
String predictionEndPoint = /* predictionのendPointをセットする */;
String publishedName = /* 公開名をセットする */;

// 
CustomVisionPredictionClient predictor = CustomVisionPredictionManager
        .authenticate(predictionEndPoint, predictionKey)
        .withEndpoint(predictionEndPoint);

byte[] testImage = GetImage("/gazou", "test_image.jpg");
        
// predict
// ここで404が発生する{"error":{"code":"404","message": "Resource not found"}}
ImagePrediction results = predictor.predictions().classifyImage().withProjectId(UUID.fromString(projectId))
                .withPublishedName(publishedName).withImageData(testImage).execute();

for (Prediction prediction : results.predictions()) {
	System.out.println(String.format("\t%s: %.2f%%", prediction.tagName(), prediction.probability() * 100.0f));
}

上記のJava変数に設定する値

projectIdに①をセットするprojectid predictionKeyに②をセットする

predictionEndPointに③をセットする

(「https://customvision20241121-prediction.cognitiveservices.azure.com/」までの文字列をセット)

prediction publishedNameに④をセットする

published Dockerfile

# ベースイメージの指定
FROM openjdk:17
# ワーキングディレクトリの設定
WORKDIR /mock
# 
RUN pwd
RUN ls -l
# アプリケーションのJARファイルをコンテナにコピー
# build/はローカル環境のみ、pushすると.gitignoreで存在しない
COPY build/libs/*.jar mock.jar
#COPY --from=builder mock.jar
# PostgreSQL JDBCドライバのコピー
COPY lib/postgresql-*.jar lib/
# ポートの公開
EXPOSE 8080
# アプリケーションの実行コマンド
ENTRYPOINT ["java", "-jar", "mock.jar"]

build.gradle

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.3.0'
    id 'io.spring.dependency-management' version '1.1.5'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
    sourceCompatibility = '17'
}
configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}
repositories {
    mavenCentral()
}
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.webjars:jquery:3.5.0'
    implementation 'org.webjars:bootstrap:4.5.2'
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    developmentOnly 'org.springframework.boot:spring-boot-docker-compose'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'org.postgresql:postgresql:42.7.4'
    implementation 'com.microsoft.azure.cognitiveservices:azure-cognitiveservices-computervision:1.0.9-beta'
    implementation 'com.google.code.gson:gson:2.10.1'
    implementation 'com.azure:azure-cognitiveservices-customvision-training:1.1.0-preview.2'
    implementation 'com.azure:azure-cognitiveservices-customvision-prediction:1.1.0-preview.2'
    implementation 'org.apache.httpcomponents:httpclient:4.5.13'
    implementation 'org.json:json:20231013'
}
tasks.named('test') {
    useJUnitPlatform()
}

エラー現象

このJavaアプリからAzure custom visionのSDKを使って予測エンドポイントをテストすると下記の404エラーが発生してしまいます。

2024-12-04T05:20:56.992Z ERROR 1 --- [mock] [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: com.microsoft.azure.cognitiveservices.vision.customvision.prediction.models.CustomVisionErrorException: Status code 404, {"error":{"code":"404","message": "Resource not found"}}] with root cause

上記のエラーを解消して、Javaアプリからcustom visionの予測エンドポイントをテストをするためには、どうすればよいでしょうか? よろしくお願いいたします。

Azure
Azure
Microsoft が管理する世界のデータ センター ネットワークを介してアプリケーションとサービスを構築、配置、および管理するインフラストラクチャおよびクラウド コンピューティング プラットフォーム。
511 件の質問
{count} 件の投票

お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。