開発者認証 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 に関しては何も見つかりませんでしたが、