1
クエリ文字列としてnull値を取得し、私のこのAWSラムダは、私が定義されている
GetOrdersMethod:
Type: "AWS::ApiGateway::Method"
Properties:
ApiKeyRequired: true
AuthorizationType: "AWS_IAM"
HttpMethod: "GET"
RequestParameters:
method.request.querystring.orderId: false
ResourceId:
Ref: "GetOrdersPathResource"
RestApiId:
Ref: "GetOrders"
Integration:
Type: "AWS_PROXY"
IntegrationHttpMethod: "POST"
RequestTemplates:
application/json: !Join ["", ["{","\"orderId\": \"$input.params('orderId')\"","}"]]
Uri: !Join ["", ["arn:aws:apigateway:", !Ref "AWS::Region", ":lambda:path/2015-03-31/functions/",!GetAtt GetProgramsLambdaFunction.Arn, "/invocations"]]
私のハンドラは、この
public class ProgramHandler implements RequestHandler<Request, String>{
private LambdaLogger logger;
@Override
public String handleRequest(Request request, Context context) {
logger = context.getLogger();
logger.log("FROM LOGGER: ======= LAMBDA INVOKED ======");
logger.log("Input value: " +request.getOrderId());
System.out.println("======= LAMBDA INVOKED ======");
System.out.println("Input value: " +request.getMarketplaceId());
return "Lambda Invoked successfully";
}
}
のように定義されており、リクエストがorderId
などと単純なJava POJOであるようAWS::ApiGateway::Method
必要なフィールドと設定項目
私がAPIゲートウェイをテストしたとき、私は私のラムダログでは、注文IDがnullであることがわかりました。私は私のhandler
にorderId
ヌル取得していますなぜしかし、私はここでそれが
Tue Apr 25 21:57:31 UTC 2017 : Endpoint request body after transformations: {"resource":"/xxxx","path":"/xxxx","httpMethod":"GET","headers":null,"queryStringParameters":{"orderId":"32"},"pathParameters":null,"stageVariables":null,"requestContext":{"accountId":"xxxxxxx","resourceId":"xxxxx","stage":"test-invoke-stage", ... }
です...それは、ログ上でクエリ文字列として渡されていると思いますか?
Javaベースのラムダでどうやって得ることができますか? –
ああ、私はこれらの入力ストリームを読み込まなければならないと思う。それを試してみましょう –