2016-08-31 14 views
0

でUnknownoperationExceptionを返します。Visual StudioとAWS .NET V 3.0を使用します。AWSマシンの学習RealTimePredictorは、C#

私はリアルタイムの予測操作を実行しようとしており、基本的なセットアップの動作を確認するために、まずGetMLModel()を実行してエンドポイントを返します(ドキュメントのどこかにその結果サービスのエンドポイントとして使用しますが、コンソールにリストされているものと同じです)。現在の状態は「READY」です。

「予測P = RTP.Predict(データ)」以下の行で例外が発生します。データには、すべての予測値を含む辞書が含まれています。

エラー:エラーコードUnknownOperationExceptionおよびHttpステータスコードBadRequestでエラーを要求しています。サービスによってエラー情報は返されませんでした。

public static APIResult GetRealTimePrediction(Dictionary<string, string> Data, string PayloadJSON = null) { 

     AmazonMachineLearningConfig MLConfig = new AmazonMachineLearningConfig(); 

     MLConfig.RegionEndpoint = Amazon.RegionEndpoint.USEast1; 
     MLConfig.Validate(); 

     AmazonMachineLearningClient MLClient = new AmazonMachineLearningClient("xxx", "xxx", MLConfig); 
     GetMLModelResponse MLMOdelResp = MLClient.GetMLModel("xxx"); // <-- WORKS 

     MLConfig.ServiceURL = MLMOdelResp.EndpointInfo.EndpointUrl; 
     Console.WriteLine(MLConfig.ServiceURL); 
     MLConfig.Validate(); 

     Amazon.MachineLearning.Util.RealtimePredictor RTP = new Amazon.MachineLearning.Util.RealtimePredictor(MLClient, "xxx"); 
     Prediction P = RTP.Predict(Data); // <----------------EXCEPTION HERE 

} 

は、(明らかに関連する値でxxxはを置き換える):)

答えて

1

それは、この行ことが判明:

MLConfig.ServiceURL = MLMOdelResp.EndpointInfo.EndpointUrl; 

例MLConfig.RegionEndpointをリセットします。ドキュメントではRegionEndpointがServiceURLから決定できることを示していますが(私はそれを読んでいると確信しています)、RegionEndpointはRTP.Predict(Data)コールの前に再度設定する必要があります。

これを理解したら、他の誰かが助けを必要とする場合に備えて、このコードを減らすことができました。あまりにも多くの情報をConfigurationに追加することは、AWSのように良いことではないと思います。 NETライブラリはこれをすべて自分自身で把握しているようだ。

public static APIResult GetRealTimePrediction(Dictionary<string, string> Data, string PayloadJSON = null) { 
     AmazonMachineLearningConfig MLConfig = new AmazonMachineLearningConfig(); 
     MLConfig.RegionEndpoint = Amazon.RegionEndpoint.USEast1; 
     MLConfig.Validate(); // Just in case, not really needed 

     AmazonMachineLearningClient MLClient = new AmazonMachineLearningClient("xxx", "xxx", MLConfig); 

     Amazon.MachineLearning.Util.RealtimePredictor RTP = new Amazon.MachineLearning.Util.RealtimePredictor(MLClient, "xxx"); 
     Prediction P = RTP.Predict(Data); 
} 
関連する問題