Как создать лямбда-функцию AWS с локальной машины с помощью AWS Ruby SDK

У меня проблемы с созданием запроса, который создаст лямбда-функцию AWS с локальной машины. Это контент, который я пытаюсь отправить:

require 'aws-sdk'

client = Aws::Lambda::Client.new(region: 'us-east-1')

args = {}
args[:role] = role
args[:function_name] = function_name
args[:handler] = handler
args[:runtime] = 'python2.7'
code = {}
code[:zip_file] = '/root/main.zip'
args[:code] = code

client.create_function(args)

Расположение zip_file в файловой системе в порядке. Я хочу загрузить лямбда-контент из локальной файловой системы без использования S3 (я видел, что есть способ сделать это и с S3).

Я получаю ошибку:

lib/ruby/gems/2.0.0/gems/aws-sdk-core-2.5.11/lib/seahorse/client/plugins/raise_response_errors.rb:15:in `call': Could not unzip uploaded file. Please check your file, then try to upload again. (Aws::Lambda::Errors::InvalidParameterValueException)

Любая помощь будет отличной.

Спасибо бакир

1 ответ

Я полагаю, вы уже узнали об этом, но ради вопроса, на который нужно ответить, вот что вы должны были сделать:

require 'aws-sdk'

client = Aws::Lambda::Client.new(region: 'us-east-1')

args = {}
args[:role] = role
args[:function_name] = function_name
args[:handler] = handler
args[:runtime] = 'python2.7'
code = {}
code[:zip_file] = File.open('main.zip', 'rb').read
args[:code] = code

client.create_function(args)

Согласно Aws:: Lambda:: Client docs, опция :code является типом Types::FunctionCode, где zip_file это String. The contents of your zip file containing your deployment package.

Другие вопросы по тегам