AWS CLI V2 "AWS firehose put-record" complaining about Invalid base64:

Viewed 2826

I have used to be able to send a record to firehose without any problem like this

aws firehose put-record --delivery-stream-name my-stream --record='Data="{\"foor\":\"bar\"}"'

But since I have updated my cli to version 2 I am getting this error:

Invalid base64: "{"foor":"bar"}"

I have tried to convert {"foor":"bar"} to based64 but then I got InvalidArgumentException

aws firehose put-record --delivery-stream-name my-stream --record='Data=e1wiYXNkZlwiOlwidGVzdGFtXCJ9Ig=='


An error occurred (InvalidArgumentException) when calling the PutRecord operation: This operation is not permitted on KinesisStreamAsSource delivery stream type.
4 Answers

In My case, I was using Kinesis via Windows Powershell CLI.

aws kinesis put-record --stream-name First-Kinesis --data "Sign In" --partition-key user222 --cli-binary-format raw-in-base64-out

Adding below cofiguration resolved my issue.

--cli-binary-format raw-in-base64-out

I hope this helps your purpose.

If you're using v2 of the AWS CLI, use this command to invoke a putRecord call to Firehose:

aws firehose put-record --delivery-stream-name STREAM-NAME --cli-binary-format raw-in-base64-out --record="{\"Data\":\"1\"}"

I received the same error message:

An error occurred (InvalidArgumentException) when calling the PutRecord operation: This operation is not permitted on KinesisStreamAsSource delivery stream type.

... and none of the above solutions helped.

There is another cause of this error message: it happens when your delivery stream is configured to use a Kinesis stream as a source.

When you create your stream, there is a choice of the stream source. It can be either:

  • "Amazon Kinesis Data Streams" - choosing this will give you the error,

or

  • "Direct PUT" - choosing this option will let you write to your stream with the CLI.
Related