Что я пытаюсь сделать
Я пытаюсь использовать интерфейс командной строки AWS в Windows, чтобы извлечь сценарий PowerShell из репозитория GitHub и создать экземпляр AWS EC2,затем запустите этот скрипт на экземпляре.
Что я пробовал
Я знаю, что экранированные двойные кавычки (\ ") действительны, так как я пытался без них безрезультатно.также попытался поместить часть JSON, следующую за --parameters, в отдельный файл и загрузить этот файл в команду, но в этом случае он пожаловался на форматирование.
Я пробовал команду как в PowerShell, так и в CMD Windows(они различаются по синтаксису, а именно с двойными кавычками.) Я включил оба варианта ниже.
Используя консоль AWS EC2, я могу заставить все это работать с помощью графического интерфейса. Ключ теперьзаставить его работать также с помощью командной строки.
Вот команда для PowerShell:
aws ssm send-command --document-name "AWS-RunRemoteScript" --document-version "1" --targets "Key=instanceids,Values=<INSTANCE-ID>" --parameters '{\"sourceType\":[\"GitHub\"],\"sourceInfo\":{\"owner\":\"<USERNAME>\",\"repository\":\"Projects\",\"path\":\"test_script.ps1\"},\"commandLine\":[\".\\test_script.ps1\"],\"workingDirectory\":[""],\"executionTimeout\":[\"3600\"]}' --timeout-seconds 600 --max-concurrency "50" --max-errors "0" --region us-east-2
Проблема, похоже, исходит отпараметр --parameters и JSON, следующий за ним.
Вот команда для Git Bash (которая на самом деле работает):
aws ssm send-command --document-name "AWS-RunRemoteScript" --document-version "1" --targets "Key=instanceids,Values=<INSTANCE-ID>" --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\": \"<USERNAME>\", \"repository\": \"Projects\", \"path\": \"test_script.ps1\"}"],"commandLine":[".\\test_script.ps1"],"workingDirectory":[""],"executionTimeout":["3600"]}' --timeout-seconds 600 --max-concurrency "50" --max-errors "0" --region us-east-2
Вот полученная ошибка:
Parameter validation failed: Invalid type for parameter Parameters.sourceInfo, value: OrderedDict([('owner', '<USERNAME>'), ('repository', 'Projects'), ('path', 'test_script.ps1')]), type: <class 'collections.OrderedDict'>, valid types: <class 'list'>, <class 'tuple'>
Как указать эти параметры в соответствующем формате?