当前位置: 首页 > 科技观察

AWS合集:如何在AmazonEC2上部署API?_0

时间:2023-03-11 20:19:22 科技观察

【精选翻译】我们觉得亚马逊是运行API(应用程序编程接口)的绝佳平台,因为您可以完全控制应用程序堆栈。对于刚刚接触AWS(AmazonWebServices)的人来说,学习是相当困难的。所以我们为读者整理了一些最佳实践,做了这个简短的教程。除了AmazonEC2(ElasticComputeCloud),我们还使用了RubyGrape这样的微框架来构建API接口,并使用Nginx代理系统来处理访问控制。最重要的是,本教程中提到的所有内容都是完全免费的!对于本教程,您需要一个运行中的基于Ruby的API和瘦服务器。如果没有这样的API,您可以简单地克隆示例存储库,如下所述(请参阅“部署应用程序”部分)。现在,我们将开始构建和配置AmazonEC2实例。如果您已经有一个EC2实例(无论是否为微实例),您可以直接跳到下一步:准备部署实例。要构建和配置EC2实例,您可能希望首先注册AmazonElasticComputeCloud(AmazonEC2)。就我们的需求而言,http://aws.amazon.com/free/这个免费服务就足够了,它满足了所有的基本需求。设置帐户后,转到AWS管理控制台下的EC2仪表板,然后单击“启动实例”按钮。这将带您进入一个弹出窗口,您可以在其中继续下一步:?选择经典向导。?选择AMI(UbuntuServer12.04.1LTS32-bitandmicroinstance),InstanceDetails(实例详情)的其他设置都不需要更改,保持默认值即可。?创建密钥对,并下载密钥对——这将是您用来与服务器建立SSH连接的密钥对,密钥对非常重要!?为防火墙添加入站规则,源地址始终为0.0.0.0/0(HTTP、HTTPS、ALLICMP和RubyThin服务器使用的TCP端口3000)。实例准备部署现在我们已经启动并运行了实例,我们可以直接通过控制台连接(Windows用户可以通过PuTTY连接)。右键单击实例,连接实例,选择ConnectwithastandaloneSSHClient(使用独立的SSH客户端连接)。逐步执行以下步骤,在给定示例中将用户名更改为ubuntu(而不是root)。完成此步骤后,您将连接到实例。我们还需要安装新包。有些软件包需要root登录数据(凭据),因此您需要设置一个新的root密码:sudopasswdroot。然后以root用户登录:suroot。现在已经有了root登录信息,执行:sudoapt-getupdate使用exit命令切换回普通用户,并安装所有必要的软件包:?安装rvm、ruby和git需要的一些库:sudoapt-getinstallbuild-essentialgitzlib1g-devlibssl-devlibreadline-gplv2-devimagemagicklibxml2-devlibxslt1-devopensslzlib1glibyaml-devlibxslt-devautoconflibc6-devncurses-devautomakelibtoolbisonlibpq-readsugetlibdevlibpq5libstdolinelibreadline6-dev安装git(在Linux上,不是源代码):http://www.git-scm.com/book/en/Getting-Started-Installing-Git安装rvm:https://rvm.io/rvm/install/?安装ruby?rvminstall1.9.3?rvmuse1.9.3--defaultdeployapplication我们的示例SentimentAPI在Github上。尝试克隆存储库:gitclonegit@github.com:jerzyn/api-demo.git您可以在此处再次查看有关构建和部署应用程序的代码和教程:http://www.3scale.net/2012/06/the-10-minute-api-up-running-3scale-grape-heroku-api-10-minutes/和这里:http://www.3scale.net/2012/07/how-to-out-of-the-box-api-analytics/请注意更改(我们只使用v1,因为代理系统需要完成身份验证)。现在您可以部署应用程序,只需运行命令:bundleinstall。现在您可以启动瘦服务器:thinstart。想要直接访问API(即没有任何安全或访问控制):your-public-dns:3000/v1/words/awesome.json(您可以在实例详细信息窗口的AWSEC2仪表板>实例中找到您的公共DNS).如果您仍想使用Nginx,则需要创建一个弹性IP地址。在AWSEC2Dashboard中,创建一个与实例同区域的弹性IP,并将该IP与其关联起来(弹性IP一分钱都不用,只要关联到你实例所在的区域即可)同一地区)。选项:如果您想要为您的亚马逊实例分配自定义域,请执行以下操作:?将A记录添加到您域的DNS记录中,以便该域对应于您之前创建的弹性IP地址。您的域提供商应该为您提供一些设置A记录(IPv4地址)的方法,或者它会为您提供一种编辑域名称服务器的方法。如果您的提供商不允许您直接设置A记录,请找到DNS管理服务,将您的域注册为一个区域,该服务将为您提供您需要在域提供商的管理面板中输入的名称服务器。然后,您可以为域添加A记录。一些可能的DNS管理服务包括ZoneEdit(基本版本是免费的)和Amazonroute53等。此时,您的API已向全世界开放。这既是好事也是坏事-好是因为你可以与人共享API,坏是因为没有速率限制,一些应用程序会耗尽你的服务器资源,而且你不知道谁在使用你的API以及如何使用它正在被使用。解决方案是向您的API添加一些管理功能。使用3scale启用API管理我们将利用易于使用的3scaleAPI管理服务,而不是重新发明轮子并从头开始实施速率限制、访问控制和分析。注册一个免费的3scale帐户(http://www.3scale.net/),通过提供的几个链接激活并登录到您的新实例。当您第一次登录时,您可以选择这个选项:创建一些示例数据,以便您有一些API密钥供以后使用。接下来,您可能想查看系统功能(可选)并开始实施它们。为了立即获得一些结果,我们将从开发过程中使用的沙盒代理系统开始。然后,我们还将配置Nginx代理系统,该系统可扩展以适应标准生产部署。API代理系统的配置有一些文档,详见:https://support.3scale.net/howtos/api-configuration/nginx-proxy。有关更多高级配置选项,请参阅:https://support.3scale.net/howtos/api-configuration/nginx-proxy-advanced。进入您的3scale帐户后,在主仪表板屏幕上启动您的API,或转到API->选择服务“API”->侧边栏中的集成->代理。设置API后端部分的地址——必须是ElasticIP地址,除非已经设置了自定义域,包括http协议和3000端口。现在可以保存并启动沙盒代理系统来测试API通过访问沙盒端点(在创建一些应用程序登录后):http://sandbox-endpoint/v1/words/awesome.json?app_id=APP_ID&app_key=APP_KEY。其中,APP_ID和APP_KEY是您登录3scale账户后创建的其中一个示例应用的ID和key(如果您错过了创建账户的步骤,只需创建一个开发者账户和该账户中的应用即可)。在没有应用程序登录的情况下尝试,然后使用错误的登录尝试;然后一旦通过身份验证,在您定义的任何速率限制之内和之外重试。Nginx的配置文件只有在性能令你满意的情况下才需要下载。注意:一旦报错,检查是否可以直接访问API:your-public-dns:3000/v1/words/awesome.json。如果API不可用,那么您必须检查AWS实例是否正在运行以及瘦服务器是否正在实例上运行。部署Nginx代理系统进行访问控制为了简化这一步,我们建议您安装优秀的OpenRestyWeb应用程序,它基本上捆绑了标准的Nginx核心以及几乎所有必需的第三方Nginx内置模块。安装依赖:sudoapt-getinstalllibreadline-devlibncurses5-devlibpcre3-devperl编译安装Nginx:cd~sudowgethttp://agentzh.org/misc/nginx/ngx_openresty-1.2.3.8.tar。gzsudotar-zxvfngx_openresty-1.2.3.8.tar.gzcdngx_openresty-1.2.3.8/?./configure--prefix=/opt/openresty--with-luajit--with-http_iconv_module-j2?make?sudomake安装现在,您可以从3scale代理页面下载Nginx配置文件;在配置文件中,做如下修改:编辑从nginx下载的配置文件?在第28行(上一行是更改服务器名称的信息),输入正确的域(您的弹性IP或自定义域名)?在第78行,将路径更改为指向与配置文件一起下载的.lua文件。我们快完成了!最后一步是启动NGINX代理系统并让一些流量通过它。如果它还没有运行(记住:首先启动瘦服务器),请务必转到EC2实例终端(您之前通过SSH连接到的终端)并立即启动它:sudo/opt/openresty/nginx/sbin/nginx-p/opt/openresty/nginx/-c/opt/openresty/nginx/conf/YOUR-CONFIG-FILE.conf最后一步是验证流量是否正常通过并通过了适当的验证。为此,请访问:http://your-public-dns/v1/words/awesome.json?app_id=APP_ID&app_key=APP_KEY其中APP_ID和APP_KEY是您要通过API调用访问的应用程序的密钥和ID。验证一切正常后,您需要在端口3000上阻止对API后端部分的公共访问,这会绕过任何访问控制机制。如果您在Nginx配置方面遇到问题,或者需要更详细的指南,我鼓励您阅读这篇关于配置Nginx代理系统的指南文章:https://support.3scale.net/howtos/api-configuration/nginx-proxy.您可以完全自定义您的API网关。如果您想深入了解3scale的系统配置(例如API流量的使用和监控),欢迎浏览“快速入门”指南(https://support.3scale.net/get-started/fast-track-integration)和实用指南(https://support.3scale.net/howtos/basics#manage-admins)。英文:http://www.3scale.net/2013/02/quickstart-tutorial-on-how-to-deploy-an-api-on-amazon-ec2-for-amazon-web-services-aws-rookies/?utm_source=Outbrain&utm_campaign=AWS-Q3