облачность boto3 Проверка параметров не удалась - PullRequest
0 голосов
/ 03 мая 2020

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

pubSNSCFParameters = []
        pubSNSCFParameters.append("{'ParameterKey': 'Environment','ParameterValue':'" + Constants.Env + "'}")
        pubSNSCFParameters.append("{'ParameterKey':'pDisplayName','ParameterValue':'" + SNSStackName + "'}")
        pubSNSCFParameters.append("{'ParameterKey':'pTopicName','ParameterValue':'" + SNSStackName + "'}")

, который выдает примерно такой вывод:

["{'ParameterKey': 'Environment', 'ParameterValue': 'dev'}", u"{'ParameterKey': 'pDisplayName', 'ParameterValue': 'some-big-value'}", u"{'ParameterKey': 'pTopicName', 'ParameterValue': 'asome-big-value'}"]

сейчас, пока я запустить мой клиент boto3, чтобы создать стек для SNS. Я получаю botocore.exceptions.ParamValidationError: Ошибка проверки параметра:

Invalid type for parameter Parameters[0], value: {'ParameterKey': 'Environment', 'ParameterValue': 'dev'}, type: <type 'str'>, valid types: <type 'dict'>

фрагмент кода:

with open(templatelocation + 'CFT_SNS.json', 'r') as f:

client.create_stack(StackName=stackName,
              TemplateBody=f.read(),
              Parameters=pubSNSCFParameters ,
             Capabilities=['CAPABILITY_NAMED_IAM'],
             Tags=[
              {
            'Key': 'CreatorName',
           'Value': 'some@email.com'
            },
            ]
        )

я бы представил это как делать с типами данных параметра, так как я могу это исправить?

1 Ответ

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

Ваши параметры строковые:

"{'ParameterKey': 'Environment', 'ParameterValue': 'dev'}" <-- note quotations at the beginning and end.

Это потому, что вы добавляете строки к pubSNSCFParameters:

pubSNSCFParameters.append("{'ParameterKey': 'Environment','ParameterValue':'" + Constants.Env + "'}")

Это должен быть dict:

pubSNSCFParameters.append({'ParameterKey': 'Environment','ParameterValue': Constants.Env})

Предполагая, Constants.Env является строкой.

...