- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个云形成模板 (mainVPC),它在 VPC 中创建几个子网并导出名称为“PrivateSubnetA”、“PrivateSubnetB”的子网...我有一个不同的云形成模板来创建 DBSubnetGroup。如果用户不提供数据,我想使用“PrivateSubnetA”、“PrivateSubnetB”作为默认值。 CloundFormation 不支持在参数中导入值。所以我设置了一些默认值(XXXX)并有一个条件部分来查看用户是否提供了一些输入
Conditions:
userNotProvidedSubnetA: !Equals
- !Ref PrivateSubnetA
- XXXX
userNotProvidedSubnetB: !Equals
- !Ref PrivateSubnetB
- XXXX
这有助于我确定用户是否提供了数据。现在我想使用默认值,如果用户没有提供值,则使用用户提供的值。下面是代码
DBSubnetGroup:
Type: 'AWS::RDS::DBSubnetGroup'
Properties:
DBSubnetGroupDescription: RDS Aurora Cluster Subnet Group
SubnetIds:
- !If
- userNotProvidedSubnetA
- Fn::ImportValue:
!Sub '${fmMainVpc}-PrivateSubnetA'
- !Ref PrivateSubnetA
- !If
- userNotProvidedSubnetB
- Fn::ImportValue:
!Sub '${fmMainVpc}-PrivateSubnetB'
- !Ref PrivateSubnetB
此操作失败,并显示错误“模板错误:Fn::ImportValue 中的属性不得依赖于任何资源、导入的值或 Fn::GetAZs”。ImportValue 未在模板中的其他任何地方使用。
有没有一种方法可以使用导出的值作为默认值(默认值不能被硬编码,它们作为来自另一个堆栈的运行的导出值),同时为用户提供一个选项来提供自己的值(以创建资源)。
谢谢。
最佳答案
这也可能是由于 Fn::ImportValue
内对参数命名错误的引用造成的。例如,如果我定义了以下参数 NetworkStackName
,并且在 Fn::ImportValue
语句中错误引用了它(如 NetworkName
),我会收到这个错误。我需要更改 NetworkName
以匹配参数中的值,NetworkStackName
来修复错误。
Parameters:
NetworkStackName:
Type: String
Default: happy-network-topology
Resources:
MySQLDatabase:
Type: AWS::RDS::DBInstance
Properties:
Engine: MySQL
DBSubnetGroupName:
Fn::ImportValue:
!Sub "${NetworkName}-DBSubnetGroup"
关于aws-cloudformation - AWS CloudFormation 函数调用失败:Fn::ImportValue 不得依赖于任何资源、导入的值或 Fn::GetAZs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52240515/
我尝试从 CloudFormation 中创建的堆栈导出 DynamoDb StreamArn,然后使用 serverless.yml 中的 !ImportValue 引用导出。 但我收到此错误消息:
我确信我在这里遗漏了一些非常明显的东西,但是使用 GetAtt 和 ImportValue 在堆栈的父模板中获取输出值有什么区别>?是否有时间和地点只能使用其中之一?是否有一些地方它们可以互换,但由于
我在使用 CloudFormation 中的导出和导入功能时遇到问题。当我尝试导入实际上是列表(数组)的值时,我收到以下错误消息“与类型 {Array} 不匹配”。 vpc.yaml(片段) Priv
我有两个使用 CloudFormation 部署的项目(后台和前台)。 在前台,我从后台堆栈导入一些 DynamoDB 表名称作为 Lambda 的环境变量。 为了运行一些验收测试,我有时需要部署前台
我正在尝试使用 cloudformation yaml 文件在 aws 云中创建堆栈。 以下是我的第一个堆栈文件的片段。在“输出”部分中,我使用 Lambda 函数 Arn 的值创建导出变量。 Res
我有一个 SAM 模板,用于创建导出 API 端点的 API 网关 API: AWSTemplateFormatVersion : '2010-09-09' Transform: AWS::Serve
好的,事情就这样了。我在 CloudFormation 模板中遇到了困难。 我的模板,我有这样的东西: Parameters: SecurityGroupIds: Type: List Res
问题:我在自定义资源中的 cloudformation 内部函数中遇到了奇怪的问题。当我使用 !ImportValue 时,我的模板成功通过并部署,但如果我切换到使用 Fn::ImportValue
我在cloudformation中看到了一个关于云形成导入值函数的非常奇怪的问题。我正在尝试创建一个 cloudformation beanstalk 环境。在配置模板部分我有: configura
我们有一个巨大的 VPC CF 模板,用于定义我们的开发、暂存和生产环境。这些资源之一是通用 S3 存储桶,用于与特定客户不直接相关的任务。此存储桶有一个名为 VPCCommonBucket 的导出,
我正在尝试在 Cloudformation 中设置仪表板,并希望使用导出值使其动态:但它失败了: 仪表板正文无效,有 1 个验证错误:[ { "message": "无效的指标字段类型,仅允许\"St
我想在 CloudFormation YAML 中组合 3 个函数,但未能成功。 我有一个导出参数,我想访问foo-exportedParam然后我想导入它,但考虑到前缀 foo 是动态的并且来自模板
使用 YAML 作为资源定义在 JSON 策略 blob 中导入堆栈导出的正确方法是什么?: 我有以下输出/导出: Outputs: oParameterStoreAccessRoleArn:
我有一个堆栈,它依赖于在不同堆栈中导出的值(值为supertest) 我尝试按如下方式使用它 OriginAccessIdentity: !Join [ "", [ "origin-access-id
我有一个用于配置 VPC 的 cloudformation 脚本,并在“输出”部分中导出一些值 - 其中一个是区域 B AZ: Parameters: PublicAvailabilityZone
我尝试同时使用 join、sub 和 import value,但是当我尝试时,出现格式错误的模板错误。 这是我的代码部分: EventSourceMapping: Type: AWS::Lambd
问题:我有一个 cloudformation 模板,应该检索在 CodeCommit 中找到的代码并将其推送到 Lambda。 CodeCommit 中的代码还包含一个带有一些参数的 SAM 模板。
我有一个cloudformation模板,需要根据传入的参数导入一个值。下面是代码。但我无法将 !ImportValue 和 !Ref 结合起来。如何在 ImportValue 函数中使用 Envir
我的 CloudFormation 模板中有以下资源正在尝试创建监听器规则。我的想法是,根据传入的 EnvironmentType 和 AWS 区域,我想从导出监听器 ARN 的相应 CloudFor
我正在开发一个项目来解析 AWS Cloudformation Yaml 文件,以从 YAML 模板中提取所有 !ImportValue。 我正在尝试使用 ruamel.yaml 来解析它(我是新的)
我是一名优秀的程序员,十分优秀!