从另一个没有输出的 CloudFormation 引用资源?

Ref resource from another CloudFormation without output?

是否可以引用另一个未输出的 CloudFormation 的资源?

例如,在file1.yaml

Resource:
  SG1:
    Type: AWS::EC2::SecurityGroup
    ....

而在 file2.yaml 中,我需要参考 SG1

  SGMSKClusterIgress6:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      SourceSecurityGroupId: SG1 # How to reference SG1 here
      GroupId: !ImportValue MySecurityGroup
      IpProtocol: tcp
      FromPort: 443
      ToPort: 443

我知道file1.yaml里面有没有Outputs,比如

Resource:
  SG1:
    Type: AWS::EC2::SecurityGroup
    ....
Outputs:
  SG1Output:
    Value: !Ref SG1
    Export:
      Name: File1SG1

我可以在 file2.yaml 中使用它,因为

      SourceSecurityGroupId: !ImportValue File1SG1 # SG1 output name

没有输出怎么办?我是否必须修改 file1.yaml 以添加 Outputs 部分并更新配置的产品?

是的,对于根据 CloudFormation 引用资源,您应该使用输出。 如果您无权访问 file1.yaml,您可以在 file2.yaml 中创建一个参数,在其中指定安全组 ID 并在资源创建时引用它