【问题标题】:AWS CDK Number Parameter as IntegerAWS CDK 编号参数为整数
【发布时间】:2022-08-14 09:49:39
【问题描述】:

我正在使用 AWS CDK,但我正在为 number 参数而苦苦挣扎。文档说数字可以是整数或浮点数。下面是如何在代码中设置数字参数:

number_parameter = CfnParameter(self, \"number_parameter\", type=\"Number\",
                   description=\"Number Parameter\")

这是我访问该值的方式:

number_parameter.value_as_number

我遇到的问题是,每当我使用 cdk 合成器时,它都假设这个参数是一个浮点数。我知道这一点是因为我试图在只接受整数而不是浮点数的函数中使用参数,这会导致错误。我也无法使用 int() 运算符将其转换为整数,因为我收到一个错误,即它太大而无法转换为整数。

如何指定此参数只需要整数而不是浮点数?或者是否有其他方法可以将其转换为整数,即使我无法控制 CDK 如何初始化该值?

  • 也许可以使用带有字符串输入的正则表达式?像[0-9]+ 什么的?
  • 我不确定您是否可以使用正则表达式作为参数类型。这也是问题的一部分,文档只显示了一个简单的字符串示例。
  • 原来你可以使用正则表达式,但我仍然无法将字符串转换为 int。真的没有办法指定它是一个int吗?如果不能指定它是 int 还是 float,你应该如何使用这个 number 参数?
  • 这可能有点迂回,老实说有点远,但你有没有考虑过使用Fn::Transform?我的想法是您可以将其与Fn::FindInMap 之类的东西配对,以获取字符串格式的数字的数值。
  • 我尝试了使用 String 类型参数的正则表达式解决方案,但它不喜欢我尝试将其转换为 int。我不认为这实际上是一个问题,我在尝试运行 cdk 合成器时遇到了这个问题。我发现参数不能通过 cdk 合成器正常工作,所以我认为当我使用 cdk deploy 时这将作为数字参数工作得很好,但我必须回复你。

标签: python amazon-web-services floating-point integer aws-cdk


【解决方案1】:

事实证明,这个问题只是我误解了 AWS CDK 的实际工作原理。我试图以不受支持的方式使用 CDK 参数。我试图做的有两个问题:

  1. 参数只能在运行时解析。我试图使用 cdk 合成器来设置它们。在实际部署我的解决方案时,我能够很好地输入一个整数参数。
  2. 参数不能在 CDK 代码中使用。因此,您不能将参数设置为 1,然后在代码中的函数或语句中使用它。您只能使用它在生成的 CloudFormation 模板中设置值。

【讨论】:

    猜你喜欢
    • 2020-02-08
    • 2022-11-29
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2021-12-14
    相关资源
    最近更新 更多