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"。
取代答案 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)
答案 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