Amazon web services 如何将CloudFormation参数传递为Type:Number?

Amazon web services 如何将CloudFormation参数传递为Type:Number?,amazon-web-services,amazon-cloudformation,Amazon Web Services,Amazon Cloudformation,我正试图通过部署以下AWS CloudFormation模板(使用Azure DevOps)在AWS帐户中创建预算: 参数: 电子邮件收件人: 类型:字符串 描述:电子邮件收件人的名称 预算山: 类型:编号 默认值:500 说明:预算金额 金额阈值: 类型:编号 默认值:80 说明:预算阈值 资源: 预算样本: 类型:“AWS::Budgets::Budget” 特性: 预算: 预算限制: 金额:!Sub${BudgetAmount} 单位:美元 时间单位:每月 预算类型:成本 通知订阅方: -

我正试图通过部署以下AWS CloudFormation模板(使用Azure DevOps)在AWS帐户中创建预算:

参数:
电子邮件收件人:
类型:字符串
描述:电子邮件收件人的名称
预算山:
类型:编号
默认值:500
说明:预算金额
金额阈值:
类型:编号
默认值:80
说明:预算阈值
资源:
预算样本:
类型:“AWS::Budgets::Budget”
特性:
预算:
预算限制:
金额:!Sub${BudgetAmount}
单位:美元
时间单位:每月
预算类型:成本
通知订阅方:
-通知:
通知类型:实际
比较运算符:大于
门槛:!Sub${AmountThreshold}
订户:
-订阅类型:电子邮件
地址:!Sub${EmailRecipients}
但会出现以下错误:

##[error]MultipleValidationErrors: There were 2 validation errors:
* InvalidParameterType: Expected params.Parameters[1].ParameterValue to be a string
* InvalidParameterType: Expected params.Parameters[2].ParameterValue to be a string
我已尝试将
类型
数字
更改为
字符串
,但错误相同。 还尝试通过另一个内在函数
解析参数!Ref
运气不佳。 以下是我如何从azure-pipelines.yml文件中设置CloudFormation模板的参数:

变量:
电子邮件收件人:example@gmail.com"
预算金额:100
金额(上限):80
这是它们如何传递给模板的:

-任务:CloudFormationCreateOrUpdateStack@1
显示名称:预算
投入:
awsCredentials:${{parameters.aws_credentials}
regionName:${{parameters.aws_region}
stackName:${{parameters.stack_name}
templateSource:'文件'
templateFile:$(Pipeline.Workspace)/${{parameters.project_name}}-templates/budgets.yml
templateParametersSource:“内联”
模板参数:|
-参数键:EmailRecipients
ParameterValue:${{parameters.email_recipients}
-参数键:BudgetAmount
ParameterValue:${{parameters.budget\u amount}
-ParameterKey:AmountThreshold
ParameterValue:${{parameters.amount_threshold}
useChangeSet:true
changeSetName:“角色变更集”
captureStackOutputs:asVariables
captureAsSecuredVars:错误

编号

整数或浮点数。AWS CloudFormation将参数值验证为数字;但是,当您在模板中的其他位置使用参数时(例如,通过使用Ref内在函数),参数值将变为字符串

---
AWST模板格式版本:2010-09-09
说明:>-
将wallaby api实例部署到AWS组织。
参数:
电子邮件收件人:
类型:字符串
描述:电子邮件收件人的名称
预算山:
类型:编号
默认值:500
说明:预算金额
金额阈值:
类型:编号
默认值:80
说明:预算阈值
资源:
预算样本:
类型:“AWS::Budgets::Budget”
特性:
预算:
预算限制:
金额:!参考预算山
单位:美元
时间单位:每月
预算类型:成本
通知订阅方:
-通知:
通知类型:实际
比较运算符:大于
门槛:!参考数量阈值
订户:
-订阅类型:电子邮件
地址:!参考电子邮件收件人
检查

$cfn lint cfn.yml
$echo$?
0
更新:

原来的帖子被更新了。用户创建了另一个帖子

编号

整数或浮点数。AWS CloudFormation将参数值验证为数字;但是,当您在模板中的其他位置使用参数时(例如,通过使用Ref内在函数),参数值将变为字符串

---
AWST模板格式版本:2010-09-09
说明:>-
将wallaby api实例部署到AWS组织。
参数:
电子邮件收件人:
类型:字符串
描述:电子邮件收件人的名称
预算山:
类型:编号
默认值:500
说明:预算金额
金额阈值:
类型:编号
默认值:80
说明:预算阈值
资源:
预算样本:
类型:“AWS::Budgets::Budget”
特性:
预算:
预算限制:
金额:!参考预算山
单位:美元
时间单位:每月
预算类型:成本
通知订阅方:
-通知:
通知类型:实际
比较运算符:大于
门槛:!参考数量阈值
订户:
-订阅类型:电子邮件
地址:!参考电子邮件收件人
检查

$cfn lint cfn.yml
$echo$?
0
更新:


原来的帖子被更新了。用户创建了另一篇帖子

当您要部署模板时,如何设置参数?是否使用
!Ref
而不是
!Sub
按照给出的答案解决问题?我想是这样的:-(错误不是关于ReF或Sub.的,我认为它与如何将参数传递给模板有关。我不太熟悉Azure流水线,所以不能说明什么是原因。请看一下。它们在代码中使用<代码>模板参数< /代码>使用EngRE字符串块,在YAML中。ameters当您想要部署模板时?使用
!Ref
而不是
!Sub
是否解决了给定答案中的问题?我想是这样:-(错误与Ref或Sub无关。我认为这与参数如何传递给