2014-02-08 57 views
3

我試圖在Elastic Beanstalk中配置我的EC2實例與來自私有S3存儲桶的某些ssh密鑰。這裏是我的.ebextensions /的.config的一個片段:Grant S3訪問Elastic Beanstalk實例

files: 
    "/root/.ssh/id_rsa" : 
    mode: "000400" 
    ownder: root 
    group: root 
    source: https://s3-us-west-2.amazonaws.com/<bucket>/<app>_id_rsa 

不幸的是,我碰到一個S3 403響應。有沒有辦法使用安全組授予對EC2實例的訪問權限?我無法單獨授予每個實例的訪問權限,因爲在縮放之前我不知道它們的IP。有沒有其他方法可以授予此Elastic Beanstalk應用程序訪問權限?我無法提供良好的S3存儲桶策略...

+0

您是否嘗試在S3中添加'aws-elasticbeanbean-ec2-role'? – kukido

+0

這爲我工作:http://stackoverflow.com/questions/26394673/permission-denied-while-elastic-beanstalk-is-retrieving-s3-file –

回答

4

您可以爲S3訪問設置IAM角色並將IAM角色分配給EC2。

IAM Roles for Amazon EC2

+1

只是爲了增加一些額外的清晰度:應該有一個IAM角色已經對於'aws-elasticbeanstalk-ec2-role',您可以在IAM Role Web控制檯中爲您的s3存儲桶訪問附加新策略。這就是說,我發現爲不同環境創建新角色更加謹慎。 – chaseadamsio

+1

我被這個問題的其他幾個貢獻誤導了,也就是試圖用「桶策略」來解決這個問題。事實證明,您必須將'AmazonS3FullAccess'策略添加到'aws-elasticbeanbean-ec2-role' – tom

0

據亞馬遜的文檔,你需要使用一個資源鍵,以便從S3存儲下載的私人文件添加認證。下面是從他們的網站的例子:

Resources: 
     AWSEBAutoScalingGroup: 
     Metadata: 
      AWS::CloudFormation::Authentication: 
      **S3Auth:** 
       type: "s3" 
       buckets: ["**elasticbeanstalk-us-west-2-123456789012**"] 
       roleName: 
       "Fn::GetOptionSetting": 
        Namespace: "aws:autoscaling:launchconfiguration" 
        OptionName: "IamInstanceProfile" 
        DefaultValue: "***aws-elasticbeanstalk-ec2-role***" 

files: 
    "**/tmp/data.json**" : 
    mode: "000755" 
    owner: root 
    group: root 
    authentication: "**S3Auth**" 
    source: **https://s3-us-west-2.amazonaws.com/elasticbeanstalk-us-west-2-123456789012/data.json** 

所有粗體文字,需要用獨特的您自己的環境自定義內容,除了更換AWS-elasticbeanstalk-EC2角色這是IAM角色默認情況下創建的環境,您可以將其替換爲另一個IAM角色。一旦資源被識別出來,您就可以在儘可能多的文件上重複使用。您可以在這裏獲得更多信息http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#linux-files

相關問題