2015-12-01 3 views
1

Я хочу, чтобы скрипт обновил код для моей AWS Lambda, используя задачу Fabric. Boto3 api ожидает байтовый массив zip-файла с кодировкой base-64.Python - создание пакета развертывания aws лямбда

Что было бы самым простым способом создать его, если у меня есть файлы исходного кода в качестве входных данных?

ответ

1

С текущим boto3, не разархивируйте его, не используйте base64. Вы можете сделать это с открытым и читать, как это:

import boto3 
c = boto3.client('lambda') 
c.create_function({ 
    'FunctionName': 'your_function', 
    'Handler': 'your_handler', 
    'Runtime': 'python3.6', 
    'Code': {'ZipFile': open('./deploy.zip', 'rb').read()} 
}) 

Я использую файл почтового индекса выше для начала быстро. Вы также можете загрузить deploy.zip в ведро S3 и передать команду bucket + как строки в «Code» dict как «S3Bucket» и «S3Key».

1

Собственно boto3 документация устаревает, вы должны передать байты непосредственно:

https://github.com/boto/boto3/issues/201

Как почтовый файл, это должно указывать вам в правильном направлении:

+0

Да, я посмотрел на них. Однако они не отвечают на мой вопрос. Как я уже говорил, я хотел бы использовать метод boto create_function, который принимает байтовый массив закодированного zip-файла с базой 64. – sumek

+1

на самом деле IIUC вы можете передать байты напрямую, вы пробовали это? Https: //github.com/boto/boto3/issues/201 – rsFF

+0

Thats полезно! Итак, оставшаяся часть - это как сделать zip-файл, а затем извлечь из него байты элегантным способом? В идеале я думал о том, чтобы делать все это в памяти без файлов-посредников. – sumek

Смежные вопросы