附录 G 使用亚马逊网络服务

如果开始为数据处理需求使用亚马逊和亚马逊云服务,你首先需要一个设置好以供使用的服务器。我们会学习如何让你的第一台服务器就绪并且运行。

在第 10 章,我们介绍了 AWS 之外的一些选择,包括 DigitalOcean、Heroku、GitHub Pages,以及使用一个托管服务提供商。根据你对不同部署与服务器环境的兴趣,建议使用多个选项,然后选择最适合你的选项。

AWS 作为第一个云平台而流行,但是它同样会带来许多困扰。我们想要包含一个教程来帮助你浏览整个过程。我们同样强烈建议使用 DigitalOcean 作为进入云的开始;它们的教程(https://www.digitalocean.com/help/getting-started/setting-up-your-server/)和指引(https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04)是非常有帮助的。

G.1 启动AWS服务器

为了启动一个服务器,在 AWS 控制台(https://console.aws.amazon.com)选择“Compute”下的“EC2”(你需要登录或创建一个账户来访问控制台)。这会带你来到 EC2 着陆页(https://console.aws.amazon.com/ec2/v2/home)。在这里,点击“Launch Instance”按钮。

这时,你会开始跟随一个教程来设置你的实例。你在这里选择的所有东西都是可编辑的,所以不知道选择什么也不必担心。这本书提供了以廉价又快速的方式设置并运行服务器的建议,但这不意味着这就是你需要的解决方案。如果你碰到了空间等问题,可能需要一个更大因而也更贵的配置 / 实例。

在下面的这一小节里,我们会带着你浏览一遍我们推荐的设置。

G.1.1 AWS步骤1:选择一个亚马逊机器镜像(AMI)

机器镜像基本上是一个操作系统镜像(或快照)。最普遍的操作系统是 Windows 和 OS X。然而,基于 Linux 的系统通常用作服务器。我们推荐最新的 Ubuntu 系统,在本书编写时的版本为“Ubuntu Server 14.04 LTS (HVM), SSD Volume Type - amid05e75b8”。

G.1.2 AWS步骤2:选择一个实例类型

实例类型是你启动的服务器的容量。选择“t2.micro (Free tier eligible)”。不要扩容,除非你明确需要,因为这样会浪费钱。为了学习更多关于实例的知识,查看 AWS 关于实例类型(https://aws.amazon.com/ec2/instance-types/)与价格(https://aws.amazon.com/ec2/pricing/)的文章。

选择“Review and Launch”,这将带你到第 7 步。

G.1.3 AWS步骤7:学习实例启动

在页面的顶部,你会注意到一条信息:“提高你的实例安全。你的安全组,launch-wizard-4,正对全世界开放。”对于真正的产品实例,或带有敏感信息的实例,强烈建议提高安全,同时采用其他的安全措施。查看 AWS 的文章“加强你的 EC2 实例安全的建议”(https://aws.amazon.com/articles/1233/)。

G.1.4 AWS额外问题:选择一个存在的键对或创建一个新的

一个键对类似于一个服务器的键集合,这样服务器知道谁有权利使用。选择“Create a new key pair”并且给它命名。我们已经命名我们的实例为 datawrangling-test,但是你可以给它取任何你可以识别的名字。当你完成时,下载键对到一个你可以在随后找到的地方。

最后,点击“Launch Instances”。启动实例后,你会在屏幕上得到一个实例 ID。

附录 G 使用亚马逊网络服务 - 图1 如果你担心服务器花销,在 AWS 首选项中创建一个账单报警(https://console.aws.amazon.com/billing/home?#/preferences)。

G.2 登录AWS服务器

为了登录到服务器上,你需要进入 AWS 控制台的实例来得到更多的信息。在控制台中,选择 EC2,之后选择“1 Running Instance”(如果你有不止一个实例,数字会增大)。你会看到你的服务器列表。除非你提供过名称,否则你的服务器不会拥有名称。通过点击列表上的空框,为你的实例命名。我们将其命名为 datawrangling-test,以便持久化。

为了登录到我们的服务器上,我们会跟随一篇关于连接到 Linux 实例的 AWS 文章(http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-connect-to-instance-linux)的指示。

G.2.1 得到实例的公共DNS名称

公共 DNS 名称是实例的 Web 地址。如果你有一个看起来像 Web 地址的值,继续阅读下一个小节。如果值为“—”,那么你需要跟随下面这些额外的步骤(来自 Stack Overflow ,http://stackoverflow.com/questions/20941704/ec2-instance-has-no-public-dns/26403671#26403671)。

(1) 访问 console.aws.amazon.com。

(2) 访问 Services(顶部导航)→ VPC(接近列表的末尾)。

(3) 打开你的 VPC(左侧栏目)。

(4) 选择连接到你的 EC2 的 VPC。

(5) 在“Actions”下拉菜单,选择“Edit DNS Hostnames”。

(6) 修改“Edit DNS Hostnames”为“Yes”。

如果你返回 EC2 实例,应该看到它现在有了一个公共 DNS 名称。

G.2.2 准备你的私钥

你的私钥是一个下载的 .pem 文件。将它移动到一个你了解并且能够记住的文件夹是好的想法。对于基于 Unix 的系统,你的密钥会保存在 home 目录下名为 .ssh 的文件夹。对于 Windows,默认的位置是 C:\Documents and Settings.ssh\ 或 C:\Users.ssh。你需要复制你的 .pem 文件到这些文件夹。

然后,你需要运行 chmod 命令来改变 .pem 文件的权限为 400。修改权限为 400 意味着,文件只能被所有者访问。这保证了在多账户计算机环境下文件的安全:

  1. chmod 400 .ssh/datawrangling-test.pem

G.2.3 登录你的服务器

现在,你已经有了所有登录服务器所需的一切。运行下面的命令,但是用你的键对替换 my-key-pair.pem,同时用你的公开 Web 地址替换 public_dns_name

  1. ssh -i ~/.ssh/my-key-pair.pem_ ubuntu@_public_dns_name

例如:

  1. ssh -i datawrangling-test.pem ubuntu@ec2-12-34-56-128.compute-1.amazonaws.com

当提示“Are you sure you want to continue connecting (yes/no)?”时,输入 yes

现在,你的提示会有一些轻微的改变,说明你正位于你创建的控制台中。你现在可以继续设置你的服务器,将代码部署到服务器上,设置在服务器上运行的自动化程序。在第 14 章你可以阅读更多关于部署代码到新服务器上的知识。

为了退出服务器,输入 Ctrl-C 或 Cmd-C。

G.3 小结

现在你已经有了第一个设置好并且运行起来的 AWS。使用在第 14 章学到的知识将代码部署到服务器,并且立即运行你的数据处理程序。