2013-04-30 5 views
2

Я ищу, как включить библиотеку Boto в экземпляр Elastic Beanstalk. Мне показалось, что я должен был указать его в .ebextensions. К сожалению, это не работает (см. Ниже).Включая библиотеку 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 на самом деле является строчной буквой, поэтому настройка может решить вашу проблему.

В качестве альтернативы вы можете попробовать по-видимому, рекомендуемый способ для Customizing and Configuring a Python Container с помощью типичного requirements.txt файла и pip вместо см 2):

Создать requirements.txt файл и поместить его в Топ- вашего исходного пакета. Типичное приложение python будет иметь зависимости от других сторонних пакетов Python. В Python, pip является стандартным способом установки пакетов. Pip имеет функцию, которая позволяет указать все необходимые вам пакеты (а также их версии) в одном файле требований. Для получения дополнительной информации о файле требований перейдите по ссылке Requirements files. Ниже приведен пример файла требований requirements.txt для Django: .

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» установлена ​​по умолчанию в AMI beanstalk.

Если вы используете стандартную эластичную роль 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');"