Amazon EC2 - читать данные из S3? - PullRequest
3 голосов
/ 01 июля 2011

У меня есть много файлов данных (назовем их 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, и все экземпляры будут писать в него?

Ответы [ 2 ]

3 голосов
/ 01 июля 2011

(1) Да.Вы можете получить доступ к S3 из любого места в Интернете, используя общедоступный API S3

(2). Вы описываете базу данных, которая вам кажется.S3 - это просто хранилище файлов, вы не записываете файлы на S3 - вы сохраняете файлы на S3.

Возможно, вам следует обратиться к какой-либо базе данных.

0 голосов
/ 15 апреля 2013

Я предлагаю вам взглянуть на это: http://docs.aws.amazon.com/IAM/latest/UserGuide/role-usecase-ec2app.html

Представьте, что вы являетесь администратором, который управляет ресурсами AWS вашей организации.Разработчики в вашей организации имеют приложения, которые работают на экземплярах Amazon EC2.Этим приложениям требуется доступ к другим ресурсам AWS, например, для обновления корзин Amazon S3.

Приложения, работающие на экземпляре Amazon EC2, должны подписывать свои запросы API AWS с учетными данными AWS.Один из способов сделать так, чтобы разработчики передавали свои учетные данные AWS в экземпляр Amazon EC2, позволяя приложениям использовать эти учетные данные для подписи запросов.

Однако при вращении учетных данных AWS разработчики должны обновить каждый Amazon EC2.экземпляр, который использует свои учетные данные.

и чтобы узнать, как сделать это с python: https://groups.google.com/forum/?fromgroups=#!topic/boto-users/RPoFskVw1gc

Основная процедура выглядит следующим образом:

Во-первых, вы должны создать документ политики JSON, который представляет, к каким службам и ресурсам должна иметь доступ роль IAM.например, эта политика разрешает все действия S3 для группы «my_bucket».Вы можете использовать любую политику, подходящую для вашего приложения.BUCKET_POLICY = "" "{

" Выписка ": [{*

"Effect":"Allow",

"Action":["s3:*"],

"Resource":["arn:aws:s3:::my_bucket"]}]}"""

Далее необходимо создать профиль экземпляра в IAM.

import boto

c = boto.connect_iam ()

instance_profile = c.create_instance_profile ('myinstanceprofile')

Если у вас есть профиль экземпляра, вам нужно создать роль, добавить ее в профиль экземпляра и связать политику с ролью.

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, ... на сайте Amazon.Вы можете обратиться к первому URL, чтобы увидеть другие учебники.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...