【问题标题】:AWS SAM template can't reference Security Group resource (created earlier outside the cloudfromation template)AWS SAM 模板无法引用安全组资源(之前在 cloudformation 模板之外创建)
【发布时间】:2020-01-02 20:50:05
【问题描述】:


我正在编写一个 SAM 模板,我试图在 lambda 函数的 VpcConfig 部分中引用安全组 ID,如下所示:

      VpcConfig:
        SecurityGroupIds:
          - !GetAtt aurora-mysql.GroupId
        SubnetIds:
          - subnet-1234abcd
          - subnet-abcd1234

其中aurora-mysql较早创建的安全组的名称,如下所示: 当我尝试部署堆栈时,它会给出以下错误消息:

Failed to create the changeset: Waiter ChangeSetCreateComplete failed: Waiter encountered a terminal failure state Status: FAILED. Reason: Template error: instance of Fn::GetAtt references undefined resource aurora-mysql

它看不到aurora-mysqlsecurity 组。
此安全组已存在,并且之前是在 cloudformation 模板之外创建的。
请问有什么解决办法吗?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-sam


    【解决方案1】:

    如果您在同一个模板中创建了证券,您可以使用“Ref”内置函数来获取资源 ID。

    如果您想引用现有的安全组,那么上述方法将不起作用。您可以将安全组 ID 作为参数传递给模板,并使用内置的“Ref”在需要的地方使用它。或者您可以使用云形成导出

    https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html

    【讨论】:

    • 但是我要引用的资源是什么,不是在另一个 cloudformation 堆栈中创建的。例如:我通过 AWS Web 控制台创建了安全组,我想使用名称引用它并通过 getAtt 函数获取其 ID
    • 如前所述,唯一的方法是通过参数将其传递给云形成,或者创建函数资源以获取ID,这使得它变得更加复杂
    • 忽略我对回复的最后编辑,因为它意味着另一个问题的答案
    • 好了,“创建函数资源”是什么意思?
    • 可以创建自定义的lambda资源,调用lambda函数并返回数据aws.amazon.com/blogs/infrastructure-and-automation/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    相关资源
    最近更新 更多