2016-06-20 2 views
3

Kinesis 스트림에 기록을 넣기 위해 Amazon’s tutorial에 설명 된대로 Kinesis 프록시로 API 게이트웨이를 구성했습니다. 통합 요청에 대한API 게이트웨이의 본문에 JSON 객체를 Kinesis 프록시에 추가 하시겠습니까?

HTTP 헤더는 다음과 같습니다

  • stream-name

    application/x-amz-json-1.1

바디 매핑 템플릿에 매핑되는 method.request.header.partition-key

  • Content-Type에 매핑되는 method.request.header.stream-name
  • partition-key에 매핑 콘텐츠 유형 application/json 모양 :

    { 
        "StreamName": "$input.params('stream-name')", 
        "PartitionKey": "$input.params('partition-key')", 
        "Data": "$util.base64Encode({"rows": "$input.json('$')", "uuid": "$input.params('uuid')"})" 
    } 
    

    데이터는 JSON 요청 페이로드로 제공됩니다.매개 변수를 JSON 객체 키로 Kinesis의 데이터 페이로드에 추가해야하지만 Kinesis로 전송되는 인코딩 된 데이터는 JSON 객체가 아닙니다.

    ksonis의 데이터 페이로드에 매개 변수 uuid을 json 개체 키로 추가해야합니다. 내가 직면 한 문제는 kinesis로 전송 된 인코딩 된 데이터가 JSON 객체가 아니라는 것입니다.

    { 
    rows=[{"id": 1, "name": "a"}, {"id": 2, "name": "b"}], 
    uuid=0001 
    } 
    

    가 어떻게 JSON 개체를 보낼 수 있습니다

    내가 JSON 개체 수 있어야 운동성에 전송 될 것으로 예상 데이터 : 같은 운동성에 전송

    { 
    "rows": [{"id": 1, "name": "a"}, {"id": 2, "name": "b"}], 
    "uuid": "0001" 
    } 
    

    그러나 실제 데이터 보인다 API 게이트웨이에서 Kinesis로? $util.parseJson으로 실험했지만이 시나리오에 대한 해결책을 찾지 못했습니다.

  • 답변

    4

    당신은 여기 API 게이트웨이를 통해 https://forums.aws.amazon.com/thread.jspa?threadID=233060

    +0

    감사 운동성 데이터를 전송하는 AWS 포럼에 비슷한 문제는 속도 템플릿

    #set($event = "{ ""rows"": ""$input.json('$')"", ""uuid"": ""$input.params('uuid')"", }") { "StreamName": "$input.params('stream-name')", "Data": "$util.base64Encode($event)", "PartitionKey": "$input.params('partition-key')" } 

    에 큰 따옴표를 이스케이프 할 필요가 나를 위해 문제를 해결했다. –

    관련 문제