我有许多存储在input_files
的数据文件(我们称之为Amazon S3
)。
我想开始大约15个独立的Amazon EC2
linux实例。这些实例应加载input_files
(存储在S3
中)并单独处理。
我希望所有15个独立的Amazon EC2
linux实例都写入相同的输出文件。
完成后,此输出文件将保存在S3
。
两个问题:
(1) Amazon EC2
linux实例是否可以连接到S3
并从中读取数据?
(2)如何安排所有15个独立的Amazon EC2
linux实例写入同一个输出文件?我可以在S3
中拥有此文件,并且所有实例都会写入该文件吗?
答案 0 :(得分:4)
(1)是的。您可以使用S3公共API
从互联网上的任何位置访问S3(2)您正在描述一个数据库。 S3只是一个文件存储,你不会写入S3上的文件 - 你将文件保存到S3。
也许你应该考虑某种类型的数据库。
答案 1 :(得分:0)
我建议你看看这个: http://docs.aws.amazon.com/IAM/latest/UserGuide/role-usecase-ec2app.html
想象一下,您是管理组织的AWS资源的管理员。您组织中的开发人员拥有 在Amazon EC2实例上运行的应用程序。这些应用 需要访问其他AWS资源 - 例如,进行更新 亚马逊S3桶。
在Amazon EC2实例上运行的应用程序必须在其AWS上签名 使用AWS凭据的API请求。一种方法是做到这一点 开发人员将他们的AWS凭证传递给Amazon EC2实例, 允许应用程序使用凭据对请求进行签名。
但是,当AWS凭据轮换时,开发人员必须更新 每个使用其凭据的Amazon EC2实例。
并了解如何使用python执行此操作: https://groups.google.com/forum/?fromgroups=#!topic/boto-users/RPoFskVw1gc
基本程序如下:
首先,您必须创建一个代表内容的JSON策略文档 IAM角色应该有权访问的服务和资源。对于 例如,此策略为存储桶“my_bucket”授予所有S3操作。 您可以使用适合您的应用程序的任何策略。 BUCKET_POLICY =“”“{
“声明”:[{
"Effect":"Allow", "Action":["s3:*"], "Resource":["arn:aws:s3:::my_bucket"]}]}"""
接下来,您需要在IAM中创建实例配置文件。
导入boto
c = boto.connect_iam()
instance_profile = c.create_instance_profile('myinstanceprofile')
获得实例配置文件后,您需要创建角色add 实例配置文件的角色并将策略与策略关联 作用。
role = c.create_role('myrole')
c.add_role_to_instance_profile('myinstanceprofile','myrole')
c.put_role_policy('myrole','mypolicy',BUCKET_POLICY)
现在,您可以在启动实例时使用该实例配置文件:
ec2 = boto.connect_ec2() ec2.run_instances('ami-xxxxxxx',...,instance_profile_name ='myinstanceprofile')
新实例应具有适当的角色和凭据 一旦启动就与之相关联。
有相同的Java,Ruby,...亚马逊网站教程。你可以参考第一个网址看其他教程。