AWS Cloudformation !Ref SecurityGroup 返回无效 ID

问题描述 投票:0回答:2

我想通过 cloudformation 部署具有 SecurityGroup 入口规则的 SecurityGroup。

我目前在 yaml 文件中使用它:

Security
  Type: AWS::EC2::SecurityGroup
  Properties:
    GroupDescription: Securitygroup with access to itself
SecurityIngress:
  Type: AWS::EC2::SecurityGroupIngress
  Properties:
    GroupId: !Ref Security
    SourceSecurityGroupId: !Ref Security
    IpProtocol: tcp
    FromPort: -1

这会给我一个错误,指出 SucurityGroupId 格式错误。创建 SecurityIngress 时会发生该错误。请注意,我已将堆栈名称更改为“Stackname”。

无效 ID:“Stackname-Security-N12M8127812”(预期为“sg-”)

所以我猜 !Ref 不会返回 SecurityGroup 的 ID,而是返回名称。 有办法获取id吗?

amazon-web-services aws-cloudformation aws-security-group
2个回答
15
投票

使用

!Ref
将返回资源名称。这在文档中明确提到。您需要使用
!GetAtt
来获取资源属性之一,包括安全组 id。

SourceSecurityGroupId: !GetAtt Security.GroupId

0
投票

这是因为您没有在属性中指定 VPC ID,在这种情况下 !Ref 传递了名称,您必须使用 !GetAtt 来代替,如果您在属性中包含 VPC ID,则可以使用 !Ref 获取 SG ID :

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-securitygroup.html

© www.soinside.com 2019 - 2024. All rights reserved.