我正在寻找如何在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
我在配置文件中遗漏了什么?还有其他我需要做的事情吗?
答案 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');"