2013-04-30 62 views
2

我正在尋找如何將Boto庫包含在Elastic Beanstalk實例中。我的印象是我不得不在.ebextensions中指定它。不幸的是,這似乎不起作用(見下文)。在Elastic Beanstalk中包含Boto庫

python.config:

packages: 
    python: 
     Flask: [] 
     Boto: [] 
option_settings: 
...AWS key redacted... 

代碼:

import boto 
from boto.s3.connection import S3Connection 
from boto.s3.key import Key 

錯誤消息: ImportError: No module named boto

我失去了在配置文件中什麼?我還需要做些什麼嗎?

回答

2

包名稱boto實際上是小寫字母,所以調整它可能已經解決了您的問題。

或者你可能想通過典型requirements.txt文件和pip嘗試顯然是推薦的方式進行,而不是Customizing and Configuring a Python Container,見2):

創建requirements.txt文件,並將其放置在頂您的源包的目錄級別目錄 。一個典型的python應用程序將對其他第三方Python軟件包有依賴關係 。在Python中,點是 安裝包的標準方式。 Pip有一項功能,允許您在單個需求文件中指定所需的所有軟件包(以及其版本) 。有關 需求文件的更多信息,請轉至Requirements files。以下是Django的 示例requirements.txt文件。

Django==1.4.1 
MySQL-python==1.2.3 

所以你的情況可能是目前:

Flask==0.9 
boto==2.9.2 

這也說明像這樣在Deploying a Python Application to AWS Elastic Beanstalk Using the Elastic Beanstalk Console

0

庫'boto'默認安裝在beanstalk的AMI上。

如果您使用的是默認的彈性beanstalk角色(IAM),那麼您無需在配置中添加密鑰等敏感信息。

像這樣的事情只是工作直接:

# .ebexetensions/boto-testing.config 
commands: 
    boto-testing: 
    command: python -c "import boto;boto.connect_s3().get_bucket('my-private-bucket').get_key('secretfolder/secretfile.txt').get_contents_to_filename('/path/to/save/it');"