Команда aws регистрирует ошибку создания-экспорта-задачи (InvalidParameterException) в logGroupName - PullRequest
1 голос
/ 26 мая 2020

У меня есть сценарий bash, который я пытаюсь выполнить с помощью команды

 aws logs create-export-task 

. Команда создает задачу в корзине s3 и отбрасывает журналы облачных наблюдений в пределах интервала отметки времени.

В моем сценарии также есть некоторые переменные, такие как имя группы журналов, которое необходимо в качестве параметра параметра в команда

logGroup='/aws/lambda/lambda-name'

Затем я передаю ее в команде:

createTaskLogs="aws logs create-export-task 
--log-group-name \"$logGroup\"  \
...

echo ${createTaskLogs}
eval ${createTaskLogs}

Плюс с некоторыми другими обязательными параметрами.

Я получаю следующую ошибку:

 An error occurred (InvalidParameterException) when calling the CreateExportTask operation: 1 
validation error detected: Value 'C:/Program Files/Git/aws/lambda/lambda-name' at 'logGroupName' failed 
to satisfy constraint: Member must satisfy regular expression pattern: [\.\-_/#A-Za-z0-9]+

Насколько я понимаю, bash интерполирует значение "/ aws / lambda / lambda-name" как путь и преобразует первый sla sh в локальный путь C: //. Есть ли способ избежать этого на языке bash или это ошибка в команде aws logs?

Спасибо за помощь в будущем.

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Проблема заключается в том, что вы используете Git Bash для запуска команды. Mingw преобразует пути POSIX, которые используются в качестве аргументов, в пути Win32. См. здесь .

Сначала добавляется префикс пути с помощью двойного прямого слэша sh, а затем обратный слэш в двойных кавычках ("// aws \ lambda \ lambda-name") должен предотвратить это, или вы можете установить MSYS_NO_PATHCONV=1, как описано здесь .

Другое решение - использовать другую оболочку, например Windows Subsystem for Linux или Mobaxterm .

0 голосов
/ 26 мая 2020

Одно из решений - использовать backsla sh без кавычек:

logGroup='\/aws/lambda/lambda-name'
createTaskLogs="aws logs create-export-task 
--log-group-name $logGroup  \
...

Backsla sh не позволит bash интерполировать значение "/ aws / lambda / lambda-name" как путь и преобразовать первый sla sh в локальный путь C: //

Обновить

Можете ли вы попробовать это?

aws2(){ MSYS_NO_PATHCONV=1 python C:/Users/user/AppData/Local/Programs/Python/Python37/Scripts/aws "$@"; }
aws2 logs create-export-task ...
...