Tag: AWS

如何在iOS中为URLRequest签名并从S3下载文件。

让我们讨论一下在iOS移动应用程序中从AWS S3下载文件。 AWS提供了可与我们的移动应用程序一起使用的一批服务。 所有这些都可以在开发人员控制台中通过单独的Mobile Hub进行控制。 而且,它具有iOS SDK,使开发人员的生活更加轻松。 实际上有时不是,但这是另一回事了。 通常,就可以直接使用它来获得结果,并拥有Apps中最流行和最常见的解决方案。 因此,如果您想以常规方式与S3通信并下载/上传文件,我强烈建议使用iOS的官方AWS开发工具包。 但是,如果我们有一些限制,又不想将AWSS3添加到我们的项目中,而只是下载一个文件一次,或者我们需要URLRequest并随其一起下载一些东西。 在这种情况下,我们有一些选择。 最简单的方法是在存储桶中公开所需文件。 对于所有具有正确链接的人,该文件都是可见的。 但这并不安全,而且这种方法非常取决于我们的需求和内容类型。 是的,我们仍然可以拥有一个独特且丑陋的链接,因此没有人会猜到它。 但是最好使用所有可能的解决方案来确保内容安全并让我们的用户感到安全,尤其是当我们可以从AWS盒子中直接获取内容时。 让我们创建签名的请求,以从我们的S3存储桶中获取非公开图像。 AWS使用Signature V4,因此我们将使用它。 但是,根据官方文档显示,如果旧区域在2014年1月10日之前创建,则仍然可以支持Signature V2。 首先,我们需要S3。 我建议在没有移动中心方面的帮助的情况下创建它。 如果您熟悉AWS和此过程,请跳过本节。 我假设您已经有AWS开发人员帐户。 或者您可以创建一个进行测试。 AWS有免费层,足以试验各种想法,学习甚至MVP。 我们需要从服务列表中选择S3服务。 现在,我们可以创建一个新的存储桶以进行测试。 我们将其称为downloadimagetestbucket 。 目前,我们可以保留所有默认设置。 我们有存储空间,所以我们上传测试图像。 保留所有默认设置,以确保它不是公开的。 我们需要AWS凭证来生成请求签名。 我们可以使用为我们的根帐户生成的访问密钥ID和密码。 但这不是一个好主意,特别是如果您是所有者。 这样的凭据将拥有对所有内容的完全访问权限。 我们可以将它们用于快速实验,但不能用于现实生活中的Apps。 我们将仅创建具有访问我们测试桶权限的IAM用户。 与以前一样,从具有所有服务列表的AWS控制台中选择IAM。 在“用户”标签中,我们可以添加一个新用户。 一个名叫downloadimagetestuser且具有程序访问权限的神话人物。 然后是下一个…下一个…下一个并创建。 不要忘记保存ID和机密。 我们的用户没有任何权限,他在我们的AWS中无能为力。 绝对没用的人。 让我们教他一些技巧。 我们需要添加访问S3的权限。 为此,我们将从“策略”选项卡中创建单独的策略。 我们可以使用可视化编辑器,但有时使用JSON,可以更快。 但是在这种情况下,我们应该知道我们在做什么; 否则它将无法正常工作甚至无法通过验证。 我们将仅授予来自S3的读取对象。 […]

Dyno版本:AWS,Swifter

上一次,我们做了很多设置以开始使用Amazon Web Services的DynamoDB ,包括使用Swift-Python桥,以便我们可以使用官方的AWS接口boto3与DynamoDB进行通信。 但是boto3除了基于Python并因此没有Swift类型安全性之外,还具有一些局限性:它很复杂,难以使用—并且存在同步的主要问题。 要查看该问题,请运行上次到达的代码: …现在,请尝试关闭计算机的WiFi ,然后重新运行。 怎么了? table.scan()行仅挂起那里30秒钟,直到出现令人讨厌的异常并且程序崩溃(带有不可恢复的致命错误)。 实际上,这不是我们希望库调用或可能具有间歇性网络连接的应用程序(例如移动应用程序¹)所期望的行为。 本文-更好的boto Dyno库旨在做得更好。在本文中,我们将介绍如何做! 和以前一样,尽管这个想法是产生一个有用的库,但我也希望展示可以在自己的代码中使用的技术。 我们将使boto3调用异步。 这将演示信号量,工作队列和工作项的使用 Dyno将利用新的Swift 5 Result类型发布一个Observable结果流。 在这里,我们将演示带有复杂数据流的Observable和Reactive编程 我们将添加一些有用的,类型安全的方法来从DynamoDb(原生于Swift)读取和写入数据。 这说明了 我们数据类型上的 一些出色的功能构造,例如 zip 和 flatMap 在本文的最后,我们将直接从Swift将Dinosaurs(当然是🦕和))写到DynamoDB数据库中,然后以异步方式读回它们,并适当考虑网络延迟。 这将成为我们Dyno库的开始。 和以前一样,该库正在公开开发中,因此您可以在github( swiftify分支)上查看源代码。 有很多事情要做,让我们开始吧! 可观察的流 正如我在上一篇文章中提到的,可观察对象是表示数据流的一种方式。 我们可以将它们连接到Reactive组件,以便能够以功能强大和声明性的方式处理数据流。 这是表示数据操作的一种非常强大的方法-我们将在以后的文章中介绍,但是现在我们将看看如何将DynamoDB交互表示为Observable。 建模数据交互的关键是要注意它们都看起来像这样: 要求DynamoDB做某事(扫描表,更新行等) 等待结果(返回200行,更新成功)… 或出现错误,例如 超时或数据完整性错误。 我们使用DynoActivity数据类型的可观察流对这些阶段进行DynoActivity : 它就像一串可观察的事物(橙色和红色的大理石代表可观察的事件)看起来像这样: 现在,我们要做的一件事是假设即使一次大型查询(例如,返回了数百行),我们也一次性获得了所有数据:我们不对输出进行“分页”。 我们将来可能会改变它²。 您可能还会注意到,我们希望我们的可观察流以多线程的方式异步工作:我们可以让多个流同时运行,有的读取数据,有的写入。 为什么我们不将Future用于这种类型的异步数据请求/响应? 使用Observable流可以非常轻松地处理诸如“显示等待图标,直到返回数据或显示错误”之类的交互模式。 对于实际应用而言,这是非常基本的。 现实检查 在创建高级Observable之前,我们需要处理以下事实:通过不可靠的连接与远程数据库进行同步接口,并使用Python接口进行引导。 具体来说,我们需要确保Dyno正在控制AWS连接上的活动,而不是将其留给Boto3的30秒同步,程序终止超时。 那么,如何在不自行控制Boto3代码的情况下使Boto3异步和多线程呢? 我们将使用DispatchSemaphores […]

将AWS AppSync与React-Native-Navigation集成

如果您使用的是来自Wix的React-Native-Navigation库,请使用分步方法将AWS AppSync与React-Native App连接。 本教程可以用作设置React-native iOS应用程序的指南,该应用程序使用React-Native-Navigation库进行导航,并使用AWS AppSync处理基于云的数据。 首先,设置存储库。 在本教程中,我将使用gitHub,您将在本文结尾处找到该仓库的链接。 react-native初始化yourAppName 请访问官方文档以遵循此安装步骤。 容易跟随截图! https://wix.github.io/react-native-navigation/#/installation-ios 返回官方文档并按照使用步骤进行操作:https://wix.github.io/react-native-navigation/#/usage。 您需要根据wix的上述说明创建一些屏幕; 我坚持使用名字FirstTabScreen,SecondTabScreen和PushedScreen与文档中的示例代码保持一致。 现在,每个屏幕都可以具有基本结构(请参见下文),同时我们确保react-native-navigation正常运行。 在应用程序根目录下的index.js文件中,您会注意到Navigation.startTabBasedApp函数的tabs:数组中每个对象的icon:和selectedIcon:属性; 您可以在此处提供应用程序导航选项卡中显示的所有图标图像的路径。 就本教程而言,我将注释掉这些属性,以免在启动应用程序时出现任何错误。 从’react’导入React,{Component} 从’react-native’导入{Text,View} Class FirstTabScreen扩展了Component { render(){ 返回( 这是您的第一个选项卡屏幕 ) } } 导出默认的FirstTabScreen 按照wix的上述说明并为每个屏幕创建三个简单的组件之后,我们可以转到终端并首次启动我们的应用程序: 反应本机运行iOS 成功! 现在,我们可以进行本机导航! 首次启动控制台时,您会看到一个橙色的“创建API”按钮, 如果这是您第一次使用GraphQL(对我而言),那么“入门”窗口中提供的“架构参考”将为您提供丰富的信息,并且易于遵循。 为了全面了解GraphQL,没有像官方文档这样的地方:http://graphql.org/learn/。 有关AppSync团队创建的其他GraphQL和AppSync资源,请参阅本文结尾。 就本教程而言,我们将使用在模式编辑器中注释掉的示例模式,并对查询类型进行一些修改。 使用左侧的导航菜单,然后单击“架构”以进入编辑器。 执行以下操作以完成您的架构的设置: 成功保存架构后,将在右侧“数据类型”窗口上方启用白色的“创建资源”按钮。 单击它以自动为Schema中的数据类型置备AWS DynamoDB表。 在这种情况下,我们只有一种名为“ Post”的数据类型: AppSync完成设置资源后,现在将在“查询”和“突变”的解析器字段中填充表名称。 您会注意到,尚未自动为“ putPost”突变和“ allPost”查询分配解析器。 我将逐步介绍如何手动设置解析器,首先我们从“ putPost”开始: 接下来,我们将为allPost设置解析器: 简单! […]

为AWS SNS创建推送通知平台

脚步: 在开发人员帐户中添加iOS证书 获取应用程序私钥(.p12文件) 在SNS仪表板中创建推送通知平台 首先,我们必须创建iOS证书(生产/开发) 转到https://developer.apple.com/ 为了发展 证书>开发 点击+号(右上角) 在“开发”部分下>选择“ Apple Push Notification服务” SSL(沙盒) 选择AppId(iOS应用程序的构建标识符) 创建一个CSR文件。 (按照说明进行操作) 上传CSR文件。 下载证书文件 用于生产 证书>生产 点击+号(右上角) 在“生产”部分下>选择“ Apple Push Notification服务” SSL(沙盒和生产) 选择AppId(iOS应用程序的构建标识符) 创建一个CSR文件。 (按照说明进行操作) 上传CSR文件。 下载证书文件 双击从上一步下载的.cer文件 打开“钥匙串访问”,选择“ 密钥” ,然后突出显示您的应用程序私钥。 单击文件 ,单击导出项目… ,然后在另存为:字段中输入名称。 接受默认的.p12文件格式,然后单击保存 。 转到https://console.aws.amazon.com/sns/ 在“应用程序”>“创建平台应用程序”下 为应用命名 推送通知平台> Apple生产 (用于生产) 推送通知平台> Apple生产 (用于开发) 推送证书类型> iOS推送证书(默认) 选择下载的.p12文件 输入密码(您在上一步中保存的密码) 单击>加载凭据表单文件 […]

如何在Amazon AWS上部署Swift后端

在本指南的最后,您将拥有应用程序的基本后端。 为了实现此目标,我们将使用服务器端Web框架Kitura,该框架允许我们使用Swift构建用于API端点的服务器,Postgres(一种开放源代码关系数据库)来存储数据,并使用Docker来管理资源。 现在可能您是WAT ?! 什么是API端点? 我会帮你! API是一种编程接口,由一个或多个向定义好的请求-响应消息系统公开暴露的端点组成,这些端点通常以JSON表示,并通过HTTPS协议公开。 在本指南中,我们将使用HTTP而不是HTTPS,因为最后,为了支持看似无关的字母,将有许多艰巨而漫长的步骤。 最后,我们将有三个API端点。 我们将能够查询这些端点以获得JSON响应。 该数据库是由三个表组成的数据库,这些表描述了旅行应用程序的结构。 行动! 我们到了。 首先,需要一些先决条件。 对于Kitura,如果您使用的是macOS,则需要安装Xcode 9或更高版本,并在终端上运行xcode-select –install 。 如果您使用的是Linux,请遵循本指南。 要继续,您将需要在计算机上安装其他软件包。 我建议您安装Homebrew,这是一种数据包管理器,使用以前的混乱安装可以简化您的生活。 现在已经完成所有设置,通过Homebew安装Kitura: $ brew tap ibm-swift/kitura $ brew install kitura 现在是时候安装Docker,这是一个功能强大的工具,可以帮助您管理可扩展的后端并轻松进行部署。 下载Docker并按照应用内步骤进行安装。 慢慢来,安装完成后,请登录并返回此处。 恭喜,您已经安装了所需的一切! 现在我们需要一个项目文件夹。 我们的层次结构由一个名为“ MyFirstBackend”的主文件夹组成。 在其中,我们将创建另外两个文件夹:“ 后端 ”,“ 证书 ”和“ 数据库 ”。我们将使用这些文件夹存储docker容器映像的规则。 稍后,在数据库文件夹中,我们将使用规则来创建……猜测:数据库。 相反,在后端文件夹中,我们将实例化Kitura项目。 看起来很有趣,对不对? 让我们深入研究吧! Postgres,该您了! 如前所述,Docker是执行操作系统虚拟化的功能强大的程序。 我们正在使用它,因为我们会将后端部署在云上。 这样,您将不必担心内存,空间以及普通虚拟主机的所有限制。 这要归功于云及其可扩展性。 让我们现在建立数据库! 在“ […]

介绍Dyno🦕

更新:本系列的第二篇文章 现已发布 ! 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中的按钮单击,网络上的数据包或从云数据存储中检索到的结果),从而使我们能够使用运算符进行操作 。 […]

完美助手2.0在这里

我们在今年3月发布了Perfect Assistant 1.0,有超过7,500个1.0的用户,我们得到了社区的好评。 反馈意见来自完美助手2.0的发布。 我们还有更多功能,但是“真正的艺术品”! 很难选择我个人最喜欢的PA 2.0的新功能,所以这里是重点,没有特别的顺序。 项目与部署视图 现在,项目和部署列表可以重新排序。 拖放,就这么简单。 除此之外,解决项目可能是我最持久的困扰的是对项目进行分组的能力! 我不了解您,但该列表中有100多个Perfect项目,现在将它们全部归类和分类。 没有更多的交际过载。 除了分组和排序,您现在还可以过滤项目。 对于像我这样的人有很多的天堂。 更多选择 好的,所以这个应用程序被称为“ Perfect Assistant”,但是我们坚信“开源”中的“开放”蕴含着强大的力量和爱心,因此2.0带给您的能力不仅是启动和使用Perfect项目,而且现在包括启动和管理Kitura,Vapor或Zewo项目的选项。 因此,如果您是蒸气用户,则现在可以使用PA 2来处理Perfect用户几个月来能够完成的所有工作,然后轻松地将其部署到AWS,Google App Engine等! 重新设计的项目窗口 接下来,我们将斧头移至项目窗口。 实际上,我们几乎又重新开始了。 我的一些个人亮点: 重新设计的项目窗口带有高度可定制的工具栏,只需单击一下即可放置所有可用命令,因此您可以按自己的方式组织它。 新的“可用项目依赖项”搜索过滤器使您轻松找到所需的依赖项; 新的“项目部署”列表使添加或删除部署选项变得容易。 项目“ Dev Ports”使在Mac上启动用于Linux测试的Docker容器变得容易。 新的Linux工具链选择器使您可以轻松地更改目标Swift版本。 “构建部署映像”为您的项目提供了一个随时可用的Docker映像,包括所有apt依赖项。 部署配置 在编写项目之后,要整理的最困难的事情之一就是将其部署到某个地方,以便团队和测试人员可以使用它。 毕竟,如果您不共享您的作品,那是没有实际用途的,对吗? 在“重新设计以消除障碍模式”的过程中,我们决定更改部署配置编辑器窗口,以提供更合理的配置部署方法。 现在,新的“关联项目”列表使您可以轻松查看正在部署的项目并直接跳转到它们。 您也可以更有效地执行诸如重命名实例之类的事情! 触控栏支持所有项目命令 凯尔很幸运,并获得了新的“ Touchbar” MacBook Pro之一。 他在2.0分支中添加的几乎第一件事就是对触摸栏的支持-因此,您很幸运能够拥有一种新的闪亮MBP,PA 2.0开箱即用地支持触摸栏。 未来… 即使具有所有这些新功能,Perfect Assistant 2.0的主要重点还是为一些尚待推出的出色新功能设置了平台。 我们已经在测试beta版本中了2.1。 请继续关注一些美味的新部署选项! 一位一直在使用1.0和2.0版本的高级开发人员表示,Perfect […]