AWS API Gateway генерирует ошибки запроса SDK - PullRequest
0 голосов
/ 29 мая 2018

Я создал API, используя AWS API Gateway.Все методы, используемые в API, требуют аутентификации IAM.

Я попытался локально протестировать API и получил следующее исключение:

myapi.model.MyAPIException: The request signature we   calculated does not match the signature you provided. Check your AWS Secret  Access Key and signing method. Consult the service documentation for details.
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1632)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1304)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1058)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
    at com.amazonaws.client.ClientHandlerImpl.doInvoke(ClientHandlerImpl.java:204)
    at com.amazonaws.client.ClientHandlerImpl.invoke(ClientHandlerImpl.java:185)
    at com.amazonaws.client.ClientHandlerImpl.execute(ClientHandlerImpl.java:93)
    at com.amazonaws.opensdk.protect.client.SdkClientHandler.execute(SdkClientHandler.java:42)
    at myapi.MyAPIClient.myMethod(MyAPIClient.java:101)
    ...

Для построения запроса я использовал следующий код:

public static void main(String[] args) {

    MyAPI client = MyAPI .builder()
                .apiKey(myApiKey)
                .iamCredentials(DefaultAWSCredentialsProviderChain.getInstance())
                .build();

    MyMethodRequest myMethodRequest = new MyMethodRequest().arg(methodArg);

    MyMethodResult result = client.myMethod(myMethodRequest);
}

Учетные данные, загруженные DefaultAWSCredentialsProviderChain, являются моими учетными данными, которые имеют доступ администратора ко всем моим службам AWS, поэтому я не уверен, что не так.

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Проблема закончилась введением неправильного apiKey для API.Когда я изменил его на действительный ключ API, сгенерированный API-шлюзом, все заработало.

Кроме того, необходимо убедиться, что ключ API связан с действительным планом использования, иначе он не будет работать

0 голосов
/ 29 мая 2018

Обычно класс больше похож на:

package ...;

public class ListingMusic implements 
RequestHandler<HashMap<String, Object>, String> {

    @Override
    public String handleRequest(HashMap<String, Object> input, Context context) {
        ...
    }

}

Может быть, ваша лямбда не может запуститься

...