Согласно справочнику CLI AWS Kinesis Analytics, https://docs.aws.amazon.com/cli/latest/reference/kinesisanalytics/create-application.html, синтаксис для --inputs
с KinesisStreamsInput
должен выглядеть как пример для KinesisStreamsOutput
:
Name=string,KinesisStreamsOutput={ResourceARN=string,RoleARN=string},...
Это будет означать удаление кавычек вокруг ваших sourcearn
и rolearn
. Тем не менее, в документации не ясно, что это относится к синтаксису CLI во всех случаях.
Если это не сработает, согласно этой AWS странице руководства по использованию CLI, https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-quoting-strings.html, он определяет добавление кавычек и экранирование соответствующих, в зависимости от вашей ОС ...
"Linux или macOS
Используйте одинарные кавычки (' '), чтобы заключить структуру данных JSON, как в следующем примере. Вам не нужно делать ничего особенного со встроенными двойными кавычками, встроенными в строку JSON.
aws ec2 run-instances --image-id ami-12345678 --block-device-mappings '[{"DeviceName":"/dev/sdb","Ebs":{"VolumeSize":20,"DeleteOnTermination":false,"VolumeType":"standard"}}]'
PowerShell
Для PowerShell требуются одинарные кавычки (''), чтобы заключить структуру данных JSON. Кроме того, поскольку двойные кавычки имеют особое значение для PowerShell, вы должны использовать обратную косую черту sh () для экранирования каждого из них. двойная кавычка (") в структуре JSON, как в следующем примере.
PS C:\> aws ec2 run-instances --image-id ami-12345678 --block-device-mappings '[{\"DeviceName\":\"/dev/sdb\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false,\"VolumeType\":\"standard\"}}]'
Windows Командная строка
Для командной строки Windows требуются двойные кавычки ( «») e JSON структура данных. Кроме того, чтобы не допустить неправильного толкования процессором команд двойных кавычек, встроенных в JSON, необходимо также экранировать (перед символом обратного слэса sh [\]) каждую двойную кавычку (") в данных JSON сама структура, как в следующем примере.
C:\> aws ec2 run-instances --image-id ami-12345678 --block-device-mappings "[{\"DeviceName\":\"/dev/sdb\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false,\"VolumeType\":\"standard\"}}]"
Только крайние двойные кавычки не экранированы. "
Эта ссылка также указывает на необходимость экранирования кавычек в Windows и использует команду kinesisanalytics
: https://github.com/aws/aws-cli/issues/3103
"Rishi74744 прокомментировал 6 февраля 2018
Я заставил его работать как -
aws kinesisanalytics add-application-reference-data-source --endpoint https://kinesisanalytics.us-east-1.amazonaws.com --region us-east-1 --application-name alerts --reference-data-source "{\"TableName\":\"DeviceData\",\"S3ReferenceDataSource\":{\"BucketARN\":\"arn: aws: s3: : : bucket-name\",\"FileKey\":\"device.csv\",\"ReferenceRoleARN\":\"arn: aws: iam: : account-id: role/role-name\"},\"ReferenceSchema\":{\"RecordFormat\":{\"RecordFormatType\":\"CSV\",\"MappingParameters\":{\"CSVMappingParameters\":{\"RecordRowDelimiter\":\"\n\",\"RecordColumnDelimiter\":\", \"}}},\"RecordEncoding\":\"UTF-8\",\"RecordColumns\":[{\"Name\":\"key1\",\"SqlType\":\"VARCHAR(64)\"},{\"Name\":\"key2\",\"SqlType\":\"VARCHAR(64)\"}]}}" --current-application-version-id 2
Но об этом следует упомянуть в документации. "