【问题标题】:how to Put json data using Amazon API gateway to Kinesis stream如何使用 Amazon API 网关将 json 数据放入 Kinesis 流
【发布时间】:2016-04-26 10:29:20
【问题描述】:

我使用 amazon api gateway 设置了一个 API,并希望将数据放入 kinesis 流中。 Amazon api gateway 内置了对它的支持。但是当我尝试输入 json 数据时,它会给出“序列化异常”。

var data = {"ua_platform":"iPhone","ua_browsercodename":"Mozilla","ua_browserlanguage":"en-us","ua_header":"Mozilla\/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit\/601.1.46 (KHTML, like Gecko) Version\/9.0 Mobile\/13B143 Safari\/601.1","ua_browsername":"Netscape","key":"livestream_hindi",,"datetime_ut":"1458711871","datetime_dt":"2016-03-23","value":"15","source":"0","browser":"Mobile Safari-9.0.","os":"iOS-9.1.","device_detail":"iPhone Apple iPhone"};
    var json = JSON.stringify(data);    
var params = { 'ContentType' : 'application/json','Access-Control-Allow-Headers' : 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'};
    var body =  {"Data":json,
    "StreamName":"XXXXXX",
    "PartitionKey":"XXXX"
    };

在此之后我提出了一个放置请求

apigClient.functionPut(params, body, additionalParams)
    .then(function(result){
        //This is where you would put a success callback
        console.log("success");
    }).catch( function(result){
        //This is where you would put an error callback
        console.log("catch");
    });

API 给出 ​​200 ok 以及序列化异常。在 put request 中声明 body 变量中的“Data”键将只接受“blob”类型。现在我也尝试将 JSON 数据转换为 BLOB,但完全没有运气。

我无法弄清楚我做错了什么。请帮忙。

【问题讨论】:

    标签: amazon-web-services aws-api-gateway amazon-kinesis


    【解决方案1】:

    您必须在集成请求模板上使用 $utils 变量转换为 base64,这是我的集成请求模板:

    #set($msgBody = $util.parseJson($input.body))
    #set($msgId = $msgBody.messageId)
    {
        "Data": "$util.base64Encode($input.body)",
        "PartitionKey": "$msgId",
        "StreamName": "arena-hub-dev-ks"
    }
    

    查看我正在使用 $util.base64Encode 的“数据”行。在这种情况下,我的 APIGW 端点接受 text/plain

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 感谢您的帮助。但是我纠正了这个问题。我需要将字符串化数据转换为 base64 编码数据,以便将其推送到流中。我使用了 JAVASCRIPT:btoa() 函数,它按预期工作。
      猜你喜欢
      • 2020-10-27
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多