開発者認証 IDセットアップで AWS MobileHub SDK を使用しています。
モバイル ハブ SDK にはセッションを処理するAWSIdentityManagerがあり、こちらのガイドに従ってID プロバイダーにログインしました。
ID プロバイダーは正常に動作し、ログインは成功しますが、cloudlogic 呼び出し (ラムダ関数の呼び出し) を実行しようとすると、次のように失敗します。
AWSiOSSDKv2 [エラー] AWSCloudLogic.m line:47 | __67-[AWSCloudLogic invokeFunction:withParameters:withCompletionBlock:]_block_invoke | invokeFunction: エラー: 操作を完了できませんでした。アクセス拒否例外
これは、ラムダ関数が呼び出されているときに、MobileHub が正しい AIM ロールを使用しておらず、Lambda がアクセスを拒否していることを示しています。AIM のセットアップは問題なくチェックされているので、どこに問題があるのかわかりません。
AWSIdentityManager では、この関数のみを変更しました:
- (AWSTask *)initializeClients:(NSDictionary *)logins {
NSLog(@"initializing clients...");
[AWSLogger defaultLogger].logLevel = AWSLogLevelError; //AWSLogLevelVerbose;
[AWSServiceConfiguration addGlobalUserAgentProductToken:AWS_MOBILEHUB_USER_AGENT];
NSString *email = [JNKeychain loadValueForKey:@"email"]; 
NSDictionary *logins = [NSDictionary dictionaryWithObject:email forKey:developerProvider];
    id<AWSCognitoIdentityProvider> identityProvider = [[CBDeveloperAuthenticatedIdentityProvider alloc]
                                                       initWithRegionType:AMAZON_COGNITO_REGION
                                                       identityId:nil
                                                       identityPoolId:AMAZON_COGNITO_IDENTITY_POOL_ID
                                                       logins:logins
                                                       providerName:developerProvider];
    self.credentialsProvider = [[AWSCognitoCredentialsProvider alloc]
                                initWithRegionType:AMAZON_COGNITO_REGION
                                identityProvider:identityProvider
                                unauthRoleArn:nil
                                authRoleArn:nil];
   //I have AWS_COGNITO_UNAUTH_ROLE and AWS_COGNITO_AUTH_ROLE but the docs don't seem to use them... and when I do there is no change
   //http://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AMAZON_COGNITO_REGION
                                                                     credentialsProvider:self.credentialsProvider];
[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;
return [self.credentialsProvider getIdentityId];
}
Amazon には多くの情報が散らばっていますが、モバイル ハブの開発者認証 ID に関しては何も見つかりませんでしたが、