我正在尝试使用Objective C中的AWSCognito
来验证Amazon SimpleDB数据库。
我使用我的亚马逊帐户中提供的身份池ID初始化AWSCognitoCredentialsProvider
。问题是,当我尝试从AWSCognitoCredentialsProvider
对象获取访问密钥和密钥时,它们是零。
我认为凭证提供者喜欢这样:
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;
之后,我正在尝试初始化SimpleDB客户端,如下所示:
sdbClient = [[AmazonSimpleDBClient alloc] initWithAccessKey:[credentialsProvider accessKey] withSecretKey:[credentialsProvider secretKey]];
我做错了吗?
答案 0 :(得分:1)
您是在混合适用于iOS的AWS Mobile SDK的第1版和第2版吗?它们不是一起使用的,您应该考虑完全迁移到版本2.
v2 SDK会在适当时自动调用凭据提供程序上的- refresh
。由于您未使用AWSSimpleDB
,因此- refresh
从未被调用过,这就是accessKey
和secretKey
返回nil
的原因。
AWSCognitoCredentialsProvider
生成由accessKey
,secretKey
和sessionKey
组成的AWS临时凭证。 - initWithAccessKey:withSecretKey:
不会获取临时凭据,即使您在凭据提供程序上手动调用- refresh
,AmazonSimpleDBClient
也无法正常运行。
我建议使用AWSSimpleDB
而不是AmazonSimpleDBClient
重写应用,以便使用Amazon Cognito Identity。