在Elastic Beanstalk中包含Boto库

时间:2013-04-30 21:05:16

标签: python amazon-web-services boto elastic-beanstalk

我正在寻找如何在Elastic Beanstalk实例中包含Boto库。我的印象是我必须在.ebextensions中指定它。不幸的是,这似乎不起作用(见下文)。

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 个答案:

答案 0 :(得分:2)

boto的包名实际上是小写的,所以调整它可能已经解决了你的问题。

或者,您可能希望通过典型的requirements.txt文件和pip尝试使用明显推荐的Customizing and Configuring a Python Container方式,请参阅2):

  

创建 requirements.txt 文件并将其放在顶级目录中   您的源包。一个典型的python应用程序将有   依赖于其他第三方Python包。在Python中,pip是   安装包的标准方法。 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中也可以这样说明。

答案 1 :(得分: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');"