2016-01-06 23 views
8

So che è possibile passare parametri a un programma Java in esecuzione su AWS Lambda per testarlo. Ma non so come passare quei parametri se questo programma viene chiamato da un evento di programmazione.Come passare i parametri alla funzione AWS Lambda

Qualcuno sa se questo è possibile? Se sì, come? Non sono riuscito a trovare nulla a riguardo.

Grazie in anticipo

risposta

3

È possibile passare i parametri indirettamente, ad esempio memorizzandoli su s3 o dynamo db. In ogni ciclo programmato, puoi leggere dalla posizione predeterminata e passarla al tuo programma. Normalmente, se ho bisogno di avviare più funzioni lambda pianificate con codice sorgente condiviso, impacchetta un file (qualsiasi formato leggibile) con il codice sorgente stesso e lo leggo durante la corsa. @garnaat ha ragione, inoltre è attualmente impossibile lanciare dinamicamente nuove funzioni lambda, il che è un grande inconveniente.

+0

Memorizzare questi parametri in S3 è un'idea geniale. Mi chiedo perché non mi è venuto in mente :-) Grazie. – sengbatz

0

Attualmente, l'unico modo per creare una funzione programmata Lambda sulla console AWS e non fornisce alcun modo per passare parametri alla funzione Lambda quando lo scheduler chiama. Poiché la funzione Lambda viene richiamata dallo scheduler in AWS, non è chiaro per me come funzionerebbe il passaggio dei parametri.

0

Un'altra opzione, se si dispone di distribuzioni automatizzate o CI, consiste nell'inserire gli argomenti in fase di compilazione con maven (o simili) e proprietà. Immagino che sia un po 'più ottimizzato in quanto non devi leggere un file da S3?

Per esempio si può avere config/env1/app.properties e config/env2/app.properties

L'con Maven di creare profili che caricano la rispettiva configurazione simile:

... 
<profiles> 
    <profile> 
     <id>env1</id> 
     <build> 
      <resources> 
       <resource> 
        <directory>config/env1</directory> 
        <filtering>true</filtering> 
       </resource> 
      </resources> 
     </build> 
    </profile> 
    <profile> 
     <id>env2</id> 
     <build> 
      <resources> 
       <resource> 
        <directory>config/env2</directory> 
        <filtering>true</filtering> 
       </resource> 
      </resources> 
     </build> 
    </profile> 
</profiles> 
... 

Nel codice di leggere gli oggetti di scena come al solito props.load(ClassLoader.getSystemResourceAsStream("app.properties"));

In la tua automazione puoi creare mvn install -P en1 per far distribuire il tuo Jar.

0

È possibile sfruttare le variabili di ambiente dalla configurazione lambda. Quindi li leggi sul tuo programma Java con:

System.getenv("VAR_NAME") 
Problemi correlati