[AWS] Lambdaを使って・・・(JAVA)

先日、Lambdaを使ったほげほげを作成したのですが、

いまいち自分で理解できてないところもあり、

不完全燃焼的な感じではありました。
細かいことはココ

で、やっと時間ができたので、「ランバダ」じゃなくて、「Lambda」を少々。

slide from innovation egg 20150704

この赤枠で囲ったところを。

ローカルからLambdaを呼び出すんですが、

引数を渡して、値を返すところまでをもっかい作ってみました。

まずは、LambdaにUPLOADする側のコード

public class LambdaFunction001Handler implements RequestHandler<Integer, Integer> {@Override
public Integer handleRequest(Integer input, Context context) {
context.getLogger().log(“Input: ” + input);// TODO: implement your handler
int bound = input.intValue();
Random random = new Random();
int randomIntValue = random.nextInt(bound);
return Integer.valueOf(randomIntValue);
}}

 

コードとしては、かなりシンプルです。
引数で受け取った[input]を乱数の範囲として使うって感じで、
その結果の乱数を返却するというもの。

引数でいろいろ渡したい場合は、JSONで渡して、
関数内でパースして、値を使う感じです。

また、値を複数返したい場合も同じく、JSONにして、
その文字列を返却するみたいな感じで。

public class LambdaClient {public static void main(String args[]) {
//
try {
AWSLambdaClient client = new AWSLambdaClient(new ClasspathPropertiesFileCredentialsProvider());
client.setEndpoint(“lambda.ap-northeast-1.amazonaws.com”);
InvokeRequest request = new InvokeRequest();
request.setFunctionName(“LambdaDemo001”);
request.setInvocationType(InvocationType.RequestResponse);
request.setPayload(“2”);
InvokeResult result = client.invoke(request);
ByteBuffer bb = result.getPayload();
System.out.println(new String(bb.array(), “UTF-8”));
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}

なんか見にくいですが、
ランバダクライアントを作成して、エンドポイントを設定します。
#ちなみに、2015/07/04までは、「Regions.AP_NORTHEAST_1」を
setEndpointに設定してて問題なかったのですが、API Gatewayのおかげかもです。

で、「LambdaDemo001」というfunction nameでアップロードしたので、これ。
setPayload関数に設定した値が乱数の範囲になる値を渡して、呼び出し実行。

InvokeResult.getPayloadで返ってきた値をbyte配列にして文字で出力してみました。

ここまで出来たので、本来なら、返ってきた値を基に、次のLambdaで、DynamoDBからURLを取得し、

その取得したURLデータがURLとして正しいものかをチェックするLambdaを通過し、

ブラウザを起動するって作りにしてたのですが、いろいろ時間的制約とかで

断念していました(徹夜で作った挙句、できなかったという残念な結果でした・・・)。

そろそろ、LambdaとAPI Gatewayの連携とかもやってみます。

他も考えてみよ。

広告