如何在 Amazone 的 EC2 实例中运行代码?

Posted

技术标签:

【中文标题】如何在 Amazone 的 EC2 实例中运行代码?【英文标题】:How to run a code in an Amazone's EC2 instance? 【发布时间】:2011-08-27 04:06:34 【问题描述】:

我对 EC2 的功能几乎一无所知。我创建了一个 Amazon Web Service (AWS) 帐户。然后我启动了一个 EC2 实例。

现在我想在这个实例中执行一个 Python 代码,但我不知道如何继续。是否有必要在实例的某处加载代码?或者在 Amazon 的 S3 中并将其链接到实例?

哪里有解释可能的实例用法的指南?我感觉自己就像一个没有用户指南的飞碟仪表盘前的人。

【问题讨论】:

@Sentinel 安装在哪里?它已经安装在我的电脑上。如果我必须在实例中安装它,那正是我不知道该怎么做。 【参考方案1】:

这是一个非常简单的过程,可将您的 Python 脚本从本地移动到 EC2 实例并运行它。

> 1. scp -i <filepath to Pem> <filepath to Py File> ec2-user@<Public DNS>.compute-1.amazonaws.com:<filepath in EC2 instance where you want
> your file to be>
> 2. Cd to to the directory in EC2 containing the file. Type Python <Filename.py> There it executed.

这里有一个具体的例子,适合那些喜欢逐步展示的东西:

    在您的本地目录中,使用以下代码创建一个 python 脚本:print("Hello AWS") 假设您已经设置了 AWS,并且您想在 EC2 中运行此脚本,您需要将您的文件通过 SCP(安全复制协议)复制到 EC2 中的目录中。下面是一个例子:
- 我的 pem 文件路径是 ~/Desktop/random.pem。 - 我的 py 文件路径是 ~/Desktop/hello_aws.py - 我的公共 DNS 是 ec22-34-12-888 - 我希望脚本所在的 ec2 目录位于 /home/ec2-user - 所以我在本地终端运行的完整命令是:

scp -i ~/Desktop/random.pem ~/Desktop/hello_aws.py ec2-user@ec2-34-201-49-170.compute-1.amazonaws.com:/home/ec2-user

    现在 ssh 到您的 ec2 实例,cd 到 /home/ec2-user(或您放置文件的任何位置)和 Python hello_aws.py

【讨论】:

【参考方案2】:

您有多种选择。您可以浏览大量 AMI here。

你可以导入一个vm,指令是here。

这是一篇关于AWS and python的普通文章。

而在这篇文章中,作者带你穿越a more advanced system with a combination of datastores in python using the highly recommend django framework。

【讨论】:

非常感谢。我看到所有这些东西都很重。我想事情会更简单。但是亚马逊声称使用 EC2 很容易是一个谎言。它需要阅读一页又一页,又一页又一页地阅读文档,这是一个无止境的过程。我只是想在某个地方放一个 Python 代码,一个简单的 Python 代码,然后运行,仅此而已,而不是花时间学习 Web 应用程序的世界。谢谢您的帮助。在理解所有这些巨大的东西之前,我将在两三个月内研究这个主题。 我不能赞成你的答案,我没有所需的 15 分。当我有他们的时候我会这样做 没问题,乐于助人。我认为“简单”是一个相对术语,EC2 是我尝试过(并且我曾与多家云提供商合作过)解决 EC2 所针对的各种问题的最简单的解决方案。 @humalayi:我不认为我听到有人说 EC2 很简单。你真的需要 Linux 系统管理员技能才能让它有效地工作(这是我很难学到的)他们为你提供了一个简单的服务器,就是这样。 对 linux 技术感兴趣的开发人员应该尝试将 linux 作为他们的主要操作系统。当您进入 EC2 时,对工具和社区有一个基本的了解会有很大帮助。【参考方案3】:

    通过 Amazon 的管理控制台启动您的实例 -> 实例操作 -> 连接 (入门指南中的更多详细信息)

    启动基于 Java 的 SSH 客户端

    插件-> SCFTP 文件传输

    上传您的文件

    在后台运行您的文件(以“&”结尾或使用 nohup)

请务必选择包含 python 的 AMI,您可以通过在 shell 中键入“python”来检查。 如果您的应用需要任何非正统的软件包,您必须安装它们。

【讨论】:

我卡在第 4 步。我使用了 winSCP,它连接到实例没有任何问题。但是在上传 python 文件时,它会显示“权限被拒绝”。我该如何解决这个问题?谢谢!【参考方案4】:

在 Linux ec2 实例上运行脚本


我不得不在 Amazon ec2 上运行一个脚本并学会了如何去做。尽管这个问题是几年前提出的,但我想我会分享今天它是多么容易。

设置 EC2 和 ssh-ing 到 ec2 主机

使用默认设置注册并启动一个 ec2 实例(不要忘记保存启动 ec2 时将生成的证书文件)。 ec2 启动并运行后,为证书文件chmod 400 /path/my-key-pair.pem(或 .cer 文件)提供所需的权限 运行命令:ssh -i /path/my-key-pair.pem(.cer) USER@Public DNS(USER 数据会根据您启动的操作系统而变化,详情请参阅以下段落 && 公共 DNS 可以在 ec2 实例页面上获取)

使用 ssh 命令连接到实例。您指定私钥 (.pem) 文件和 user_name@public_dns_name。对于 Amazon Linux,用户名为 ec2-user。对于 RHEL,用户名为 ec2-user 或 root。对于 Ubuntu,用户名是 ubuntu 或 root。对于 Centos,用户名为 centos。对于 Fedora,用户名为 ec2-user。对于 SUSE,用户名为 ec2-user 或 root。否则,如果 ec2-user 和 root 不起作用,请咨询您的 AMI 提供商。

将脚本克隆到 EC2

为了在 ec2 上运行脚本,我更喜欢将代码作为 repo 或 gist 存储在 Github 上(如果您需要保持代码私有)并克隆到 ec2 中。

上面提到的很简单,不容易出错。

运行 python 脚本

我使用过 RHEL Linux 实例,并且已经安装了 python。所以,我可以在 ssh-ing 直接托管后运行 python 脚本。这取决于您选择的操作系统。如果尚未安装,请参阅 aws 手册。

参考:AWS Doc

【讨论】:

以上是关于如何在 Amazone 的 EC2 实例中运行代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何跨各种 Amazon EC2 实例运行我的应用程序代码 (PHP)?

如何在 ec2 实例的用户数据中运行我自己的 shell 脚本

sh Amazone实例管理

如何在 ec2 实例上运行元数据库(没有弹性 beantalk)

如何在一个 EC2 实例上运行多个应用程序

如何触发 EC2 实例并在每个实例上上传/运行启动脚本?