AWS如何知道从iOS api连接到哪个DynamoDB数据库?

问题描述 投票:2回答:1

我有两个独立的AWS账户,一个用于生产,一个用于开发。我使用DynamoDB,S3和Elastic Beanstalk。我使用AWS网站上的ID和密码,Elastic Beanstalk servlet上的不同AWS_ACCESS_KEY_ID / AWS_SECRET_KEY和我的iOS应用程序中的Cognito身份在两个帐户之间切换。直到最近我尝试将iOS应用程序设置为使用开发AWS账户时,这一直工作正常。这在过去运行良好,唯一的区别是以下代码中的CognitoIdentityPoolId。

    AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:CognitoRegionType identityPoolId:CognitoIdentityPoolId];
    AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:DefaultServiceRegionType credentialsProvider:credentialsProvider];
    AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;

但是,我的iOS应用程序继续访问Production帐户中的DynamoDB,即使它具有Development帐户的CognitoIdentitytPoolID。我已经从iPhone中删除了应用程序及其数据(并在模拟器上尝试过相同)并清理了项目。我已经仔细检查过CognitoIdentitytPoolID已经改为Development 1。

我看到现在可以设置角色以允许用户访问不同帐户中的资源,但我没有做任何复杂的事情 - 我甚至没有在任何一个帐户上设置IAM用户(atm安全性不是问题)。我只是拥有访问DynamoDB和S3所需的策略的IAM角色(CognitoXXXUnauthRole)。这些策略没有针对DynamoDB的完整arn,因此似乎不是为什么帐户不会更改为ios应用程序。

所以我的问题归结为'AWS如何知道从iOS api连接到哪个DynamoDB数据库?

ios amazon-web-services
1个回答
0
投票

原因很简单 - 我的硬编码CognitoIdentityPoolId被忽略了。 Info.plist中有一个可以替代使用。我现在有两个Info.plist文件,根据我是否处于调试模式而交换。不太特别方便,因为沙盒/生产不是Debug / Release的同义词,但会另外解决这个问题......

© www.soinside.com 2019 - 2024. All rights reserved.