Невозможно проанализировать строку json в aws cli, чтобы добавить конфигурацию уведомления в корзину s3 - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь добавить тему SNS в корзину s3 и использую команду aws cli, чтобы применить конфигурацию уведомления к s3bucket с именем 'test'

Я передаю конфигурацию темы SNS в виде строки jsonи когда я пытаюсь напечатать строку json, она печатает значение json правильно, но каким-то образом добавит запятые в строку json.

inputevent.sh:

#!/bin/bash
bucketName=test
jsonInput=file:///Users/ish/GitLabProject/validator-cf/inputevent.json
QueueArn="arn:aws:sns:us-east-1:255353535355:SNSTopic"
template='{ "TopicConfigurations": { "Event": "s3:ObjectCreated:*", "Queue": "%s" } }'


TopicConfiguration=$(printf "$template" "$QueueArn")

echo "$TopicConfiguration"

aws s3api put-bucket-notification-configuration --bucket $bucketName --notification-configuration $TopicConfiguration

Ошибка:

{ "TopicConfigurations": { "Event": "s3:ObjectCreated:*", "Queue": "arn:aws:sns:us-east-1:255353535355:SNSTopic" } }
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help

Unknown options: {, "Event":, "s3:ObjectCreated:*",, "Queue":, "arn:aws:sns:us-east-1:255353535355:SNSTopic", }, }, "TopicConfigurations":

1 Ответ

0 голосов
/ 06 июня 2018

Проверьте вашу переменную template.

На основе документов , TopicConfigurations в --notification-configuration должен быть массивом (поскольку вы можете иметь несколько уведомлений)

Попробуйте обновить template переменную в вашем bash-скрипте до чего-то вроде

template='{ "TopicConfigurations": [{ "Event": "s3:ObjectCreated:*", "Queue": "%s" }] }'

Можно проверить примеров , чтобы получить лучшую идею

...