Параметры Cloudformation CLI с помощью команды Deploy

#amazon-web-services #amazon-s3 #amazon-cloudformation

#amazon-web-services #amazon-s3 #aws-cloudformation

Вопрос:

У меня возникла проблема с использованием параметров cli cloudformation deploy . Я пытаюсь передать имя для корзины S3, которую я хочу создать, и cli жалуется, когда я использую --parameters для этого:

 aws cloudformation deploy --template-file ../infrastructure.yml --stack-name stripe-python --parameters ParameterKey=S3BucketNameParameter,ParameterValue=lambda-artifacts-948d01bc80800b36
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help
aws: error: argument subcommand: Invalid choice, valid choices are:

push                                     | register                                
deregister                               | install      

 
  

Очевидно, что пропуск параметра также не работает:

 aws cloudformation deploy --template-file ../infrastructure.yml --stack-name stripe-python 

An error occurred (ValidationError) when calling the CreateChangeSet operation: Parameters: [S3BucketNameParameter] must have values
  

Когда я смотрю на документацию cloudformation deploy , кажется, что она не поддерживает --parameters , но вместо --parameter-overrides этого я также безуспешно пытался:

 aws cloudformation deploy --template-file ../infrastructure.yml --stack-name stripe-python --parameter-overrides S3BucketNameParameter=lambda-artifacts-948d01bc80800b36

An error occurred (ValidationError) when calling the CreateChangeSet operation: Parameters: [S3BucketNameParameter] must have values
  

Итак, я здесь в тупике. Вот содержимое файла шаблона:

 cat ../infrastructure.yml 
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: An AWS Lambda application that calls the Stripe API to tokenize and charge credit cards
Parameters: 
  S3BucketNameParameter: 
    Type: String
    Description: Bucket name for deployment artifacts
Resources:
  S3Bucket:
    Type: AWS::S3::Bucket
    DeletionPolicy: Retain
    Properties:
      BucketName: !Ref S3BucketNameParameter
  

Есть предложения по правильному подходу здесь?

Ответ №1:

Это работает для меня:

 aws cloudformation deploy --template-file infrastructure.yml --stack-name stripe-python --parameter-overrides S3BucketNameParameter=lambda-artifacts-948d01bc80800b36
  

Это может зависеть от версии awscli (т. Е. Проверьте версию, которую вы используете, и документ для этого)

 aws --version
aws-cli/2.0.44 Python/3.8.5 Darwin/18.7.0 source/x86_64