pra*_* kp 2 java aws-sdk aws-lambda
我是AWS lambda的新手我已经使用handler创建了一个lambda函数
example.Orders::orderHandler
Run Code Online (Sandbox Code Playgroud)
这是自定义处理程序,现在我想从我的Java程序中调用它,我该怎么做呢.
这个课程中的2个方法应该能够帮到你.一个用于是否需要传入有效负载,另一个用于有效负载为空.
但是,您需要记住一件事:函数名称可能与处理程序不同(后者在这里example.Orders::orderHandler).调用其函数时不使用处理程序名称.
所以,如果你有一个函数名为 'myFunction' 的函数,在幕后调用你的example.Orders::orderHandler 处理程序,那么这就是你将传递给下面的run方法.
import com.amazonaws.regions.Regions;
import com.amazonaws.services.lambda.AWSLambdaAsyncClient;
import com.amazonaws.services.lambda.model.InvokeRequest;
import com.amazonaws.services.lambda.model.InvokeResult;
class LambdaInvoker {
public void runWithoutPayload(String region, String functionName) {
runWithPayload(region, functionName, null);
}
public void runWithPayload(String region, String functionName, String payload) {
AWSLambdaAsyncClient client = new AWSLambdaAsyncClient();
client.withRegion(Regions.fromName(region));
InvokeRequest request = new InvokeRequest();
request.withFunctionName(functionName).withPayload(payload);
InvokeResult invoke = client.invoke(request);
System.out.println("Result invoking " + functionName + ": " + invoke);
}
}
Run Code Online (Sandbox Code Playgroud)
使用此最新代码同步调用 Lambda 函数:
final String AWS_ACCESS_KEY_ID = "xx";
final String AWS_SECRET_ACCESS_KEY = "xx";
AWSCredentials credentials = new BasicAWSCredentials(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY);
// ARN
String functionName = "XXXX";
//This will convert object to JSON String
String inputJSON = new Gson().toJson(userActivity);
InvokeRequest lmbRequest = new InvokeRequest()
.withFunctionName(functionName)
.withPayload(inputJSON);
lmbRequest.setInvocationType(InvocationType.RequestResponse);
AWSLambda lambda = AWSLambdaClientBuilder.standard()
.withRegion(Regions.US_EAST_1)
.withCredentials(new AWSStaticCredentialsProvider(credentials)).build();
InvokeResult lmbResult = lambda.invoke(lmbRequest);
String resultJSON = new String(lmbResult.getPayload().array(), Charset.forName("UTF-8"));
System.out.println(resultJSON);
Run Code Online (Sandbox Code Playgroud)
使用这些依赖项可以避免任何错误:
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>2.6.1</version>
</dependency>
//Required by BeanstalkDeploy.groovy at runtime
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-lambda</artifactId>
<version>1.11.207</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)