2017-01-30 1 views
0

Je rencontre des problèmes lors de la création d'une requête qui créera la fonction AWS lambda à partir de la machine locale. Ceci est le contenu que je suis en train d'envoyer:Comment créer une fonction AWS lambda à partir d'une machine locale à l'aide d'AWS Ruby SDK

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) 

Emplacement zip_file est ok sur le système de fichiers. Je veux télécharger le contenu lambda à partir du système de fichiers local sans utiliser S3 (j'ai vu qu'il y a un moyen de le faire à partir de S3 aussi).

L'erreur que je reçois est:

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) 

Toute aide serait grande.

Merci, Bakir

Répondre

1

Je suppose que vous avez déjà trouvé, mais juste pour le plaisir de répondre à la question ici est ce que vous devriez avoir fait:

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) 

Selon à Aws::Lambda::Client docs, l'option :code est un type Types::FunctionCode, où zip_file est un String. The contents of your zip file containing your deployment package.