CLI将数据放入AWS Firehose

时间:2015-10-08 03:52:33

标签: amazon-web-services aws-cli amazon-kinesis-firehose

AWS Firehose今天发布。我正在玩它并试图弄清楚如何使用AWS CLI将数据放入流中。我有一个简单的JSON有效负载和相应的Redshift表,其中的列映射到JSON属性。我尝试了各种组合,但我似乎无法通过cli传递JSON有效负载。

我尝试过的事情:

aws firehose put-record --delivery-stream-name test-delivery-stream --record '{ "attribute": 1 }'

aws firehose put-record --delivery-stream-name test-delivery-stream --record { "attribute": 1 }

aws firehose put-record --delivery-stream-name test-delivery-stream --record Data='{ "attribute": 1 }'

aws firehose put-record --delivery-stream-name test-delivery-stream --record Data={ "attribute": 1 }

aws firehose put-record --delivery-stream-name test-delivery-stream --cli-input-json '{ "attribute": 1 }'

aws firehose put-record --delivery-stream-name test-delivery-stream --cli-input-json { "attribute": 1 }

我看过没有帮助的cli帮助。 This article今天发布了,但看起来他们使用的命令已经过时了作为参数" - firehose-name"已被" - delivery-stream-name"。

取代

5 个答案:

答案 0 :(得分:4)

转换blob内的键和值周围的双引号:

aws firehose put-record --delivery-stream-name test-delivery-stream --record '{"Data":"{\"attribute\":1}"}'

答案 1 :(得分:1)

我的凭据和区域存在问题,但这种语法至少让我解析了错误:

aws firehose put-record --cli-input-json '{"DeliveryStreamName":"testdata","Record":{"Data":"test data"}}'

答案 2 :(得分:0)

几件事:

  • 您是否创建了投放流?
  • 通过阅读文档,你似乎应该这样做--cli-input-json'{“Data”:“blob”}'或--record'Data = blob'
  • 尝试在cli上使用--generate-cli-skeleton进行put-record / firehose查看示例

答案 3 :(得分:0)

这应该有效。 使用您的信息流名称转义所有quotes.replace strem_name

aws firehose put-record --cli-input-json "{\"DeliveryStreamName\":\"strem_name\",\"Record\":{\"Data\":\"test data\"}}"

答案 4 :(得分:0)

这是我尝试过的,而且有效。

以下是使用单列和多列发送JSON记录的示例。

数据中的单一值:

示例:发送一个整数的列。

aws firehose put-record --delivery-stream-name test-delivery-stream --record='Data="{\"attribute\":1}"'

数据中的多个列值:

示例:通过Put-record

发送Integer和String值
aws firehose put-record --delivery-stream-name test-delivery-stream --record='Data="{\"attribute_0\":1,\"attribute_1\":\"Sample String Value\"}"'

示例:通过Put-record

发送Integer,String和float值
aws firehose put-record --delivery-stream-name test-delivery-stream --record='Data="{\"attribute_0\":1,\"attribute_1\":\"Sample String Value\",\"attribute_2\":\"14.9\"}"'

确认成功:

当记录成功发送时,kinesis会以记录ID识别它,类似于下面的记录ID。

{
"RecordId": "fFKN2aJfUh6O8FsvlrfkowDZCpu0sx+37JWKJBRmN++iKTYbm/yMKE4dQHdubMR4i+0lDP/NF3c+4y1pvY9gOBkqIn6cfp+1DrB9YG4a0jXmopvhjrXrqYpwo+s8I41kRDKTL013c65vRh5kse238PC7jQ2iOWIqf21wq4dPU9R5qUbicH76soa+bZLvyhGVPudNNu2zRyZwCCV0zP/goah54d/HN9trz"

}

这表示put-record命令已成功。

S3上的流式记录:

这是在kinesis将其处理成S3后记录在S3中的记录。

{"attribute":1}
{"attribute_0":1,"attribute_1":"Sample String Value"}
{"attribute_0":1,"attribute_1":"Sample String Value","attribute_2":"14.9"}

注意:在S3中,记录是在单个或多个文件中创建的,具体取决于我们发出put-record命令的速率。

如果有效,请尝试发表评论。

谢谢&问候, Srivignesh KN