3

我正在AWS Elastic Beanstalk上運行需要特定文件可供其運行的Django Web應用程序(實際上是一個nltk停用詞語集)。由於實例來來去去,我將需要的文件夾複製到由我的彈性beanstalk創建的S3存儲桶中,並計劃將使用awscli的複製命令添加到我的彈性beanstalk配置文件中。但我無法讓它工作。如何在創建實例時將文件夾從S3複製到彈性beanstalk實例

我的beanstalk啓動的實例應該具有對S3存儲桶的讀取權限,因爲這是由beanstalk自動創建的存儲桶。所以,豆杆還創建了一個IAM角色aws-elasticbeanstalk-ec2-role,它是一個實例配置文件,附加到它啓動的每個實例。此角色包括AWSElasticBeanstalkWebTier政策,這似乎授予讀寫訪問S3鬥:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "BucketAccess", 
     "Action": [ 
     "s3:Get*", 
     "s3:List*", 
     "s3:PutObject" 
     ], 
     "Effect": "Allow", 
     "Resource": [ 
     "arn:aws:s3:::elasticbeanstalk-*", 
     "arn:aws:s3:::elasticbeanstalk-*/*" 
     ] 
    } 
    ] 
} 

我嘗試添加下面的命令來.ebextensions/my_app.config

commands: 
    01_copy_nltk_data: 
    command: aws s3 cp s3://<my_bucket>/nltk_data /usr/local/share/ 

,但我得到以下錯誤,當儘管我可以看到S3控制檯中的文件夾,但我仍嘗試部署

Command failed on instance. Return code: 1 Output: An error occurred (404) when calling the HeadObject operation: Key "nltk_data" does not exist 

任何想法?

謝謝!

回答

1

AWS Support有回答:我的nltk_data文件夾內有子文件夾和文件,所以aws s3 cp命令需要--recursive選項。

相關問題