我正在尝试使用 Objective C 中的AWSCognito
对 Amazon SimpleDB 数据库进行身份验证。我使用我的 Amazon 账户中提供的身份池 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]];
我做错了什么吗?
您是否混合了适用于 iOS 的 AWS 移动开发工具包版本 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。