Вызов лямбда-функции AWS из Java
import com.amazonaws.regions.Regions;
import com.amazonaws.services.lambda.AWSLambda;
import com.amazonaws.services.lambda.AWSLambdaClientBuilder;
import com.amazonaws.services.lambda.model.InvokeRequest;
import com.amazonaws.services.lambda.model.InvokeResult;
// ...
// (1) Define the AWS Region in which the function is to be invoked
Regions region = Regions.fromName("us-east-1");
// (2) Instantiate AWSLambdaClientBuilder to build the Lambda client
AWSLambdaClientBuilder builder = AWSLambdaClientBuilder.standard()
.withRegion(region);
// (3) Build the client, which will ultimately invoke the function
AWSLambda client = builder.build();
// (4) Create an InvokeRequest with required parameters
InvokeRequest req = new InvokeRequest()
.withFunctionName("myFunctionName")
.withPayload("{ ... }"); // optional
// (5) Invoke the function and capture response
InvokeResult result = client.invoke(req);
// (6) Handle result
...
Выше приведен синхронный вызов лямбды;однако вы также можете вызывать асинхронно, используя Java Futures или обратные вызовы.
Вызов с ключом доступа и секретным ключом В приведенном выше примере будет использоваться DefaultAWSCredentialsProviderChain для использования переменных среды, профиля экземпляра EC2 и т. д.при вызове функции.Хотя это часто является наилучшей практикой, существуют также сценарии, когда вам может потребоваться предоставить доступ и секретные ключи.Для этого нам нужно всего лишь внести небольшое изменение в приведенный выше код:
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
// (1a) Instantiate credentials
BasicAWSCredentials credentials = new
BasicAWSCredentials("myAccessKey", "mySecretKey");
// (2) Modify to leverage credentials
AWSLambdaClientBuilder builder = AWSLambdaClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials));
.withRegion(region);