AWS CLI Update_Stack не может передать значение параметра, содержащее / - PullRequest
0 голосов
/ 01 июня 2018

Я все утро ломал голову над попыткой создать скрипт powershell, который в конечном итоге обновит стек AWS.Все отлично, вплоть до того момента, когда я должен передать параметры в шаблон облачной информации.

Одно из значений параметра (ParameterKey = ZipFilePath) содержит /.Но скрипт не может жаловаться, что ожидал =, но нашел /.Я попытался избежать косой черты, но затем API жалуется, что он нашел обратную косую черту вместо равных.Где я иду не так?

... <snip creating a zip file> ...

 $filename = ("TotalCommApi-" + $DateTime + ".zip")

aws s3 cp $filename ("s3://S3BucketName/TotalCommApi/" + $filename)

aws cloudformation update-stack --stack-name TotalCommApi-Dev --template-url https://s3-region.amazonaws.com/S3bucketName/TotalCommApi/TotalCommApiCFTemplate.json --parameters ParameterKey=S3BucketName,ParameterValue=S3BucketNameValue,UsePreviousValue=false ParameterKey=ZipFilePath,ParameterValue=("TotalCommApi/" + $filename) ,UsePreviousValue=false

cd C:\Projects\TotalCommApi\TotalComm_API

А вот соответствующий раздел из шаблона CloudFormation:

    "Description": "An AWS Serverless Application that uses the ASP.NET Core framework running in Amazon Lambda.",
"Parameters": {
        "ZipFilePath": {
            "Type": "String",
            "Description": "Path to the zip file containing the Lambda Functions code to be published."
        },
        "S3BucketName": {
            "Type": "String",
            "Description": "Name of the S3 bucket where the ZipFile resides." 
        } 
},
"AWSTemplateFormatVersion": "2010-09-09",
"Outputs": {},
"Conditions": {},
"Resources": {
    "ProxyFunction": {
        "Type": "AWS::Lambda::Function",
        "Properties": {
            "Code": {
                "S3Bucket": {"Ref": "S3BucketName" },
                "S3Key": { "Ref": "ZipFilePath" }
            },

И это сообщение об ошибке, сгенерированное PowerShell ISE

[изображение удалено]

Обновление: я использую Windows 7, которая поставляется с Powershell 2. Я обновился до Powershell 4. Затем мой скрипт выдал эту ошибку:

AWS CLI Error

По рекомендации консалтинговой фирмы я удалил CLI, который установил через msi, затем обновил Python до 3.6.2, а затем переустановил CLI через pip.Я все еще получаю ту же ошибку.Я "эхом" выполнил команду на экране, и вот что я вижу:

upload: .\TotalCommApi-201806110722.zip to s3://S3bucketName/TotalCommApi/TotalCommApi-201806110722.zip
aws
cloudformation
update-stack
--stack-name
TotalCommApi-Dev
--template-url
https://s3-us-west-2.amazonaws.com/s3BucketName/TotalCommApi/TotalCommApiCFTemplate.json
--parameters
ParameterKey=S3BucketName
UsePreviousValue=true
ParameterKey=ZipFilePath
ParameterValue=TotalCommApi/TotalCommApi-201806110722.zip

1 Ответ

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

Извините за задержку с возвращением к вам по этому вопросу - хорошая новость в том, что у меня может быть подсказка о том, в чем ваша проблема.

ParameterKey=ZipFilePath,ParameterValue=("TotalCommApi/" + $filename) ,UsePreviousValue=false

Я сводил с ума, пытаясь воспроизвести эту проблему.Зачем?Потому что я предположил, что пробел после ("TotalCommApi/" + $filename) был артефактом от копирования, а не фактическим значением, которое вы использовали.Когда я добавил пробел в:

aws cloudformation update-stack --stack-name test --template-url https://s3.amazonaws.com/test-bucket-06-09/test.template --parameters ParameterKey=S3BucketName,ParameterValue=$bucketname,UsePreviousValue=false ParameterKey=ZipFilePath,ParameterValue=testfolder/$filename ,UsePreviousValue=false
Error parsing parameter '--parameters': Expected: '=', received: ','

Это не совсем ваше сообщение об ошибке (вместо /), но я думаю, что это, вероятно, аналогичная проблема в вашем случае - проверьте, чтобы убедиться, что значения, которыеиспользуются в вашей команде, где-то нет лишних пробелов.

...