1

にアクセスしている間、私は次のエラーを取得しています:ここで「ユーザーが見つからない例外」のAWS APIゲートウェイへのアクセス中のAWS APIゲートウェイ

com.amazonaws.mobileconnectors.apigateway.ApiClientException: {"errorMessage":"[NotFoundException]:'User not found: us-east-1:fb********6a'"} (Service: MyClient; Status Code: 500; Error Code: null; Request ID: 20*****e97) 
01-30 16:21:59.367 24265-24598/com.myaws.android W/System.err:  at com.amazonaws.mobileconnectors.apigateway.ApiClientHandler.handleResponse(ApiClientHandler.java:267) 
01-30 16:21:59.367 24265-24598/com.myaws.android W/System.err:  at com.amazonaws.mobileconnectors.apigateway.ApiClientHandler.invoke(ApiClientHandler.java:94) 
01-30 16:21:59.367 24265-24598/com.myaws.android W/System.err:  at java.lang.reflect.Proxy.invoke(Proxy.java:393) 
01-30 16:21:59.367 24265-24598/com.myaws.android W/System.err:  at $Proxy1.apiTeamRolesGet() 
01-30 16:21:59.367 24265-24598/com.myaws.android W/System.err:  at com.myaws.android.MainActivity.performAws(MainActivity.java:323) 
01-30 16:21:59.367 24265-24598/com.myaws.android W/System.err:  at com.myaws.android.MainActivity.access$000(MainActivity.java:55) 
01-30 16:21:59.368 24265-24598/com.myaws.android W/System.err:  at com.myaws.android.MainActivity$1.run(MainActivity.java:213) 


は、どのように私はそれらをアクセスしていますが、私のコードです。ここで

private void performAws() { 
    try { 
     AccountManager am = AccountManager.get(MainActivity.this); 
     Account[] accounts = am.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); 

     String clientId = GOOGLE_CLIENT_ID; 
     String scope = "audience:server:client_id:" + clientId; 

     //Retrieve the google token 
     String token = GoogleAuthUtil.getToken(getApplicationContext(), accounts[0].name, scope); 

     //Set the google token in map 
     Map<String, String> logins = new HashMap<>(); 
     logins.put("accounts.google.com", token); 

     //Initialize amazon cognito credentials provider 
     CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
       MainActivity.this, // Context 
       IDENTITY_POOL_ID, 
       Regions.US_EAST_1 // Region 
     ); 

     //Set the google credentials 
     credentialsProvider.setLogins(logins); 

     //retrieve amazon cognito id 
     String cognitoId = credentialsProvider.getIdentityId(); 
     Log.d("MainActivity", "cognitoId = " + cognitoId); 

     ApiClientFactory factory = new ApiClientFactory() 
       .credentialsProvider(credentialsProvider) 
       .region("us-east-1") 
       .apiKey(cognitoId); 


     final MyClient myClient = factory.build((MyClient .class)); 
     myClient .apiTeamRolesGet(); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
} 

は私MyClientクラスファイルです:

@com.amazonaws.mobileconnectors.apigateway.annotation.Service(endpoint = "https://abc.xyz.com") 
public interface MyClient{ 
    /** 
    * @return void 
    */ 
    @com.amazonaws.mobileconnectors.apigateway.annotation.Operation(path = "/api/teamRoles", method = "GET") 
     void apiTeamRolesGet(); 

} 
+0

は、あなたのAPIでログをオンにしようとしたことがありますか?基本的な機能を保証するためにテスト呼び出し関数を使用しましたか? –

+0

APIのロギング機能をチェックする方法は? – pratik03

+0

ロールポリシーに 'execute:invoke'機能はありません。それは問題を作り出していますか? – pratik03

答えて

0

あなたは、テストの呼び出しを使用することができます

onClick()機能以下はメソッドが呼び出される

@Override 
public void onClick(View v) { 
    new Thread() { 
     @Override 
     public void run() { 
      try { 
       performAws(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }.start(); 
} 

performAws()方法であり、クライアントコードとは独立してAPIをテストする機能:

http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-test-method.html

http://docs.aws.amazon.com/cli/latest/reference/apigateway/test-invoke-method.html

また、障害に関する詳細情報を取得するためにログを有効にすることができます。

https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-cloudwatch-logs/