You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CloudFormation中是否可引用现有资源 类似Terraform的datasource功能?

CloudFormation引用已有资源的实现方案

CloudFormation支持多种方式获取已有资源的属性值,等效于Terraform的datasource能力,针对你需要查询跨账号统一安全组ID的场景,常用实现方案如下:

  • SSM Parameter Store取值方案(最适配你的跨账号场景)
    你可以提前在每个目标账号的AWS Systems Manager Parameter Store中,将对应安全组的ID存入相同路径的字符串参数(比如路径统一为/shared/security-groups/common-sg),在CloudFormation模板中直接通过SSM参数类型取值即可,无需额外开发:

    # 模板参数部分定义
    Parameters:
      CommonSecurityGroupId:
        Type: AWS::SSM::Parameter::Value<String>
        Default: /shared/security-groups/common-sg
    # 后续资源中引用时直接用 !Ref CommonSecurityGroupId 即可
    

    这个方案维护成本极低,只要保证跨账号的参数路径统一,模板不需要做账号适配即可通用。

  • 跨栈导出导入方案
    如果你的安全组本身是通过CloudFormation栈部署的,可以在安全组所属的栈输出(Outputs)中导出SG ID,其他栈直接用Fn::ImportValue(即!ImportValue)函数引用导出值即可,适合同账号或同组织内栈资源共享场景。

  • 自定义资源动态检索方案(完全等效Terraform datasource能力)
    如果你需要通过标签、资源名称等条件动态检索资源属性,可以通过CloudFormation自定义资源实现:编写一个Lambda函数,调用AWS EC2的describe_security_groups接口按你指定的过滤条件(名称、标签、所属VPC等)查询匹配的安全组ID,将结果返回给CloudFormation栈。跨账号场景下只要给Lambda配置对应账号的IAM访问权限即可实现跨账号检索,灵活性最高。

注意:CloudFormation原生的「现有资源导入」功能是将已存在的资源纳入当前栈的生命周期管理,不适用于仅需要获取资源ID引用的场景,不要和上述查询能力混淆。

内容的提问来源于stack exchange,提问作者jlo-gmail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:45:03