0
我指的是下面的資源來創建一個應用程序,用於使用已經使用Amazon ML訓練過的模型進行實時預測。亞馬遜ML應用程序中的AmazonClientException
我已經替換爲模型的名稱的價值,我已經在我的AWS控制檯ML創建的端點。但是,當我執行的主要功能,我得到以下異常:
Exception in thread "main" com.amazonaws.AmazonClientException: Unable to load AWS credentials from any provider in the chain
at com.amazonaws.auth.AWSCredentialsProviderChain.getCredentials(AWSCredentialsProviderChain.java:117)
at com.amazonaws.services.machinelearning.AmazonMachineLearningClient.invoke(AmazonMachineLearningClient.java:1983)
at com.amazonaws.services.machinelearning.AmazonMachineLearningClient.getMLModel(AmazonMachineLearningClient.java:1585)
at ML.RealtimePredict.lookupEndpoint(RealtimePredict.java:58)
at ML.RealtimePredict.predict(RealtimePredict.java:45)
at ML.RealtimePredict.main(RealtimePredict.java:21)
這是我使用的程序(JAVA):
package ML;
import java.util.HashMap;
import java.util.Map;
import com.amazonaws.services.machinelearning.AmazonMachineLearningClient;
import com.amazonaws.services.machinelearning.model.*;
public class RealtimePredict {
public static void main(String[] args) {
String mlModelId = "ModelID--I provided this";
RealtimePredict rtp = new RealtimePredict(mlModelId);
// Example meta-data and data
String metaData = "X1,X2";
String data = "20,25";
Map<String, String> record = rtp.parseArgs(
metaData.trim().split(","), data.trim().split(","));
PredictResult response = rtp.predict(record);
System.out.println(response);
}
private AmazonMachineLearningClient client;
private String mlModelId;
private String predictEndpoint;
public RealtimePredict(String mlModelId) {
client = new AmazonMachineLearningClient();
this.mlModelId = mlModelId;
}
private Map<String, String> parseArgs(String[] metaData, String[] data) {
Map<String, String> record = new HashMap<>();
for (int i = 0; i < (
metaData.length < data.length ? metaData.length : data.length); i++) {
record.put(metaData[i].trim(), data[i].trim());
}
return record;
}
private PredictResult predict(Map<String, String> record) {
lookupEndpoint();
PredictRequest request = new PredictRequest()
.withMLModelId(mlModelId)
.withPredictEndpoint(predictEndpoint)
.withRecord(record);
return client.predict(request);
}
/**
* finds the realtime endpoint for this ML Model
*/
private void lookupEndpoint() {
GetMLModelRequest request = new GetMLModelRequest().withMLModelId(mlModelId);
GetMLModelResult model = client.getMLModel(request);
predictEndpoint = model.getEndpointInfo().getEndpointUrl();
}
}
有人可以幫我解決這個問題。我認爲我需要提供訪問密鑰和安全密鑰。但我怎麼能做到這一點,我找不到什麼幫助。謝謝。