我有两个独立的 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] initWithRegionefaultServiceRegionType credentialsProvider:credentialsProvider];
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
但是,我的 iOS 应用程序继续访问生产帐户中的 DynamoDB,即使它具有开发帐户的 CognitoIdentitytPoolID。我已经从 iPhone 中删除了应用程序及其数据(并在模拟器上尝试了相同的操作)并清理了项目。我仔细检查了 CognitoIdentitytPoolID 是否已更改为 Development 。
我看到现在可以设置角色以允许用户访问不同账户中的资源,但我没有做任何复杂的事情 - 我什至没有在任何一个账户上设置 IAM 用户(atm 安全不是问题)。我只是拥有 IAM 角色 (CognitoXXXUnauthRole) 以及访问 DynamoDB 和 S3 所需的策略。这些策略没有适用于 DynamoDB 的完整 arn,因此这似乎不是 ios 应用程序的帐户没有更改的原因。
所以我的问题归结为“AWS 如何知道从 iOS api 连接到哪个 DynamoDB 数据库?”
原因很简单——我的硬编码 CognitoIdentityPoolId 被忽略了。 Info.plist 中有一个被使用。我现在有两个 Info.plist 文件,这取决于我是否处于 Debug模式。不是特别方便,因为沙盒/生产不是调试/发布的同义词,但下次会解决...
关于ios - AWS 如何知道从 iOS api 连接到哪个 DynamoDB 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47764731/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) | Powered by Discuz! X3.4 |