2016-01-06 15 views
8

AWSラムダで実行されているJavaプログラムにパラメータを渡してテストすることは可能です。しかし、このプログラムがスケジュールイベントによって呼び出された場合、これらのパラメータを渡す方法はわかりません。AWSラムダ関数にパラメータを渡す方法

これが可能なら誰でも知っていますか?はいの場合、どうですか? 私はそれについて何も見つけることができませんでした。事前

答えて

3

パラメータを間接的に渡すことができます。たとえば、s3またはdynamo dbにパラメータを格納します。スケジュールされた各サイクルで、所定の場所から読み取り、プログラムに渡すことができます。通常、共有されたソースコードで複数のスケジュールされたラムダ関数を起動する必要がある場合、ソースコード自体にファイル(読み込み可能な形式)をバンドルし、実行中に読み込みます。 @garnaatが正しかったです。さらに、新しいラムダ関数を動的に起動することは現時点では不可能です。これは大きな不便です。

+0

これらのパラメータをS3に格納することは素晴らしい考えです。なぜそれが私の心に来ていないのか不思議です:-)ありがとう。 – sengbatz

0

おかげで現在、スケジュールされたラムダ関数を作成するための唯一の方法は、AWSコンソール経由で、それは、スケジューラがそれを呼び出すときにラムダ関数にパラメータを渡すためにどのような方法を提供していません。ラムダ関数がAWSのスケジューラによって呼び出されているので、パラメータの受け渡しがどのように機能するかはわかりません。

0

自動配置またはCIを使用している場合は、ビルド時に引数をMaven(または同様のもの)およびプロパティとともに挿入することもできます。 S3からファイルを読み込む必要がないので、もう少し最適化されていると思いますか?あなたは、それぞれの設定のようなロードのプロファイル作成のmavenでconfig/env1/app.propertiesconfig/env2/app.properties

持つことができる。例えば

:あなたのコードでは

... 
<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> 
... 

は通常のprops.load(ClassLoader.getSystemResourceAsStream("app.properties"));

のような小道具を読みますあなたの自動化では、mvn install -P en1をビルドしてJarをデプロイすることができます。

0

ラムダ設定の環境変数を利用できます。

System.getenv("VAR_NAME")