1

I am trying to use AWSCognito in Objective C to authenticate to an Amazon SimpleDB database. I initalize an AWSCognitoCredentialsProvider with the identity pool id provided in my Amazon account. The problem is that when I try to get the access key and secret key from the AWSCognitoCredentialsProvider object, they are nil.

I initalize the credentials provider likes this:

 AWSCognitoCredentialsProvider *credentialsProvider = [AWSCognitoCredentialsProvider credentialsWithRegionType:AWSRegionUSEast1 accountId:ACCOUNT_ID identityPoolId:IDENTITY_POOL_ID unauthRoleArn:UNAUTH_ROLE authRoleArn:AUTH_ROLE];

 AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider];

[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;

After that, I am trying to initialize a SimpleDB client likes this:

sdbClient = [[AmazonSimpleDBClient alloc] initWithAccessKey:[credentialsProvider accessKey] withSecretKey:[credentialsProvider secretKey]]; 

Am I doing something wrong?

Mohd Prophet
  • 1,511
  • 10
  • 17

1 Answers1

1

Are you mixing version 1 and 2 of the AWS Mobile SDK for iOS? They are not designed to be used together, and you should consider migrating to the version 2 entirely.

The v2 SDK automatically calls - refresh on credentials providers when appropriate. Because you are not using AWSSimpleDB, - refresh has never been called, and that is why accessKey and secretKey return nil.

AWSCognitoCredentialsProvider generates AWS temporary credentials consisting of accessKey, secretKey, and sessionKey. - initWithAccessKey:withSecretKey: does not take temporary credentials, and even if you manually call - refresh on the credentials provider, AmazonSimpleDBClient does not function.

I recommend rewriting the app using AWSSimpleDB instead of AmazonSimpleDBClient in order to use Amazon Cognito Identity.

Yosuke
  • 3,759
  • 1
  • 11
  • 21