Я использую aws-serverless-java-container , чтобы обернуть сервис Джерси в AWS Lambda.Я решил использовать псевдоним функции, чтобы иметь этапы «test» и «prod», которые в конечном итоге указывают на разные версии лямбда-функции.
Мне нужно выбрать некоторые свойства в файле .properties на основе этого псевдонима,в основном потому, что мне нужно поговорить с «тестовой» или «продвинутой» БД или использовать другую конечную точку для вызова внешнего веб-сервиса.
Для этой цели мне нужно вызвать метод getInvokedFunctionArn объекта контекста .К сожалению, ресурс Джерси по умолчанию не знает о таком контексте.
Ниже примера ресурса:
@Path("/pet")
public class PetResource {
@POST
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.WILDCARD)
public Response createPet() {
// how to call getInvokedFunctionArn from Lambda context object?
return Response.status(200).entity("{'result': 'success'}").build();
}
}
Как я могу разрешить ресурсу Джерси иметь вызываемый ARN?Могу ли я ввести его?
Лямбда-обработчик определяется как:
public class PetLambdaHandler implements RequestStreamHandler {
private static final ResourceConfig jerseyApplication = new ResourceConfig().register(PetResource.class)
.register(JacksonFeature.class);
private static final JerseyLambdaContainerHandler<AwsProxyRequest, AwsProxyResponse> handler = JerseyLambdaContainerHandler
.getAwsProxyHandler(jerseyApplication);
@Override
public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
handler.proxyStream(inputStream, outputStream, context);
}
}