2011-06-30 232 views
3

我有很多數據文件(我們稱之爲input_files)存儲在Amazon S3亞馬遜EC2 - 從S3讀取數據?

我想開始約15個獨立的Amazon EC2 Linux實例。這些實例應加載input_files(存儲在S3中)並獨立處理它們。

我想所有的15個獨立的Amazon EC2 linux實例寫入相同的輸出文件

完成後,此輸出文件將被保存在S3

兩個問題:

(1)是否有可能爲Amazon EC2 Linux實例連接到S3並從中讀取數據?

(2)如何安排所有15個獨立的Amazon EC2 linux實例將寫入相同的輸出文件?我可以在S3有這個文件,所有實例都會寫入嗎?

回答

4

(1)是的。您可以使用S3公共API從互聯網上的任何位置訪問S3。(012)您正在描述一個看起來似乎是數據庫。 S3只是一個文件存儲,不會寫入S3上的文件 - 您將文件保存到S3。

也許你應該看看某種類型的數據庫。

0

我建議你去看看這個: http://docs.aws.amazon.com/IAM/latest/UserGuide/role-usecase-ec2app.html

試想一下,你是誰管理您的組織的AWS資源的管理員。您組織中的開發人員在Amazon EC2實例上運行的應用程序有 。這些應用程序 需要訪問其他AWS資源 - 例如,更新 Amazon 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的實例簡介

進口博託

c = boto.connect_iam()

instance_profile = c.create_instance_profile(「myinstanceprofile」)

一旦你的實例配置文件,您需要創建角色,添加 作用,以實例輪廓和與策略相關聯 作用。

角色= 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,...亞馬遜網站的教程。你可以參考第一個網址來查看其他教程。