更新:本系列的第二篇文章 现已发布 ! Dyno是一个正在构建的新Swift库,用于: 为Amazon AWS DynamoDB数据库提供功能性,反应性,安全且易于使用的界面。 不必担心这是否有意义-或者说有意义但对您没有帮助-因为除了实用的步骤之外,我还将讨论一些想法和技术,希望它们可以在其他地方使用。 在此过程中,它将: 将官方的AWS Python boto3库与Swift集成 添加强大的异步处理 通过反应性可观察流输出数据 提供macOS和iOS的RxSwift扩展,以简单,声明性的方式将结果集成到您的应用中。 我还将介绍添加一些其他功能: 离线数据存储和同步 DynamoDB某些高级功能的扩展。 附带的目的是说明我在以前的文章中一直看过的功能强大的工具如何能够带来巨大的实际收益。 我还计划在编写这些文章时开发此库。 Dyno源代码可在github上获得 (我将继续对其进行调整,将代码分支以匹配这些文章:本文位于Introduction分支下)因此,即使您仅对其中一些主题感兴趣,继续—并发表评论,并根据需要评论PR和明星😀! Linux /非Apple /服务器端人员,我没有忘记您:即使其中的一些细节有所变化,此处的许多内容还是很有希望的。 本文 在本文中,我们将对这些概念进行一些基本介绍。 然后使用AWS DynamoDB进行设置。 这将是很多初始配置,但是我们完成了:我们将看到如何使用PythonKit从Swift中访问我们的新数据库。 我等不及要开始了! 🦕 认识人物 DynamoDB DynamoDB是来自Amazon Web Services的高可用性和弹性云托管的NoSQL数据库。 它可以极大地扩展,但是对于小用例也是免费的,因此非常适合上手。 Boto3 Boto3是用于与DynamoDB通信的官方Amazon SDK。 它使用Python:其他语言(如Java和Go)可用,但没有Swift。 在Dyno中我们将利用Google Tensorflow团队开发的半官方 Python互操作性(它本身依赖于Swift 5的功能,因此这些文章仅是Swift5。我们将在短期内讨论如何处理该问题)。 )。 我还应该指出, AppSync平台具有对AWS和DynamoDB的AWS支持,该平台是一个复杂的交互库,对于某些应用程序将是一个不错的选择。 但是:它仅适用于iOS; 它非常重且复杂; 而且它不使用反应式编程技术-因此,我正在寻找更具兼容性,重量更轻且功能更多的产品。 观测和反应式编程 响应式编程以一种功能性的方式描述了数据流(“可观察对象”:可能是UI中的按钮单击,网络上的数据包或从云数据存储中检索到的结果),从而使我们能够使用运算符进行操作 。 […]
我们有一个使用Amazon Web Services的应用程序。 我们devise了图像和video(S3)发送到East1地区,而图像和video的元数据(DynamoDB)发送到West2地区。 但是我们无法从使用east1切换到west2。 当我们初始化我们的AWS时,我们有这样的: self.provider = [AWSCognitoCredentialsProvider credentialsWithRegionType:AWSRegionUSEast1 accountId:AWS_ACCOUNT_ID identityPoolId:COGNITO_POOL_ID unauthRoleArn:COGNITO_ROLE_UNAUTH authRoleArn:COGNITO_ROLE_AUTH]; self.east1Configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1 credentialsProvider:self.provider]; [AWSServiceManager defaultServiceManager].defaultServiceConfiguration = self.east1Configuration; self.west2Configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSWest2 credentialsProvider:self.provider]; 现在,当我们想发送video和图像元数据时,我们也尝试将serviceConfiguration设置为西: [AWSServiceManager defaultServiceManager].defaultServiceConfiguration = self.west2Configuration; 但它不工作。 它不会切换到west2。 我希望我有道理,谢谢。
我需要帮助查询DynamoDB表来获取行数。 考虑一下,我有一个表“用户”有三个字段,“用户名”,“密码”和“用户types”。 UserType可以是“Admin”,“Employee”或@“Guest”。 现在我想要得到表中“Admin”的数量。 在SQL中,我们写这样的查询, SELECT COUNT(*) FROM Users WHERE UserType='Admin' 现在我需要使用DynamoDB iOS SDK来做同样的事情。 现在,我正在这样做。 – (int)adminUsersCount { DynamoDBScanRequest *request = [[[DynamoDBScanRequest alloc] initWithTableName:@"Users"] autorelease]; DynamoDBCondition *condition = [[[DynamoDBCondition alloc] init] autorelease]; NSMutableArray *attrList = [NSMutableArray arrayWithObject:[[[DynamoDBAttributeValue alloc] initWithS:@"Admin"]] autorelease]]; condition.attributeValueList = attrList; condition.comparisonOperator = @"EQ"; [request setScanFilterValue:condition forKey:@"UserType"]; DynamoDBScanResponse *response = [[AmazonClientManager ddb] scan:request]; […]
我正在努力增加已经保存在我的DynamoDB表中的项目的数字属性值我的代码目前是: AWSDynamoDBUpdateItemInput *updateItemInput = [AWSDynamoDBUpdateItemInput new]; updateItemInput.tableName = @"Table"; updateItemInput.key= @{ @"KeyPropertyName":@"KeyValue" }; updateItemInput.updateExpression = @"SET(counter = counter + :val)"; updateItemInput.expressionAttributeValues =@{ @":val":@1 }; AWSDynamoDB *dynamoDB = [AWSDynamoDB defaultDynamoDB]; [[dynamoDB updateItem:updateItemInput] continueWithBlock:^id(AWSTask *task) { if (task.error) { NSLog(@"The request failed. Error: [%@]", task.error); } if (task.exception) { NSLog(@"The request failed. Exception: [%@]", task.exception); } if […]
是否有可能在AWS版本2中使用非键属性过滤DynamoDB查询? 亚马逊说,他们可以做到这一点: http : //amzn.to/1FVgQ9B 。 但他们是否也给API? 我发现AWSDynamoDBQueryExpression,但我认为它只允许过滤范围键(没有足够的文档)。 我在iOS和AWS版本2中寻找适当的API。谢谢!