【AWS】CloudFormation ~ Outputs ~

■ はじめに

今回は、AWS CloudFormation の Outputs について扱う。
 
ここ1~3ヶ月間、CloudFormation(cfn)を使ってきたが
この Outputs で、ひとまず基本的なことは、大体わかったので良かった。

目次

【1】Outputsの書き方
【2】Outputs の参照 - !ImportValue
【3】サンプル
 例1:VPC

【1】Outputsの書き方

* まずは、以下の公式ドキュメントから、、、

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html

Outputs:
  HelloLogicalID: # ID
    Description: Info about the value # 説明文(Optional)
    Value: "Hello world!!" # 値(通常 「!Ref Xxx」みたいな感じで)
    Export:
      Name: demo-dev-output-value # 参照する時のKey値

【2】Outputs の参照 - !ImportValue

* Outputs の値を参照するには、
 Fn::ImportValue 組み込み関数(!ImportValue)を使う

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

より抜粋
~~~~~~~~~~~~
Fn::ImportValue 組み込み関数は、別のスタックによってエクスポートされた出力の値を返します。
この関数は通常、クロススタック参照を作成するために使用されます。
~~~~~~~~~~~~

# 参照例
!ImportValue demo-dev-output-value

# !Sub との併合
!ImportValue 
  !Sub 'demo-${ENV}-output-value'

【3】サンプル

例1:VPC

stack1.yml

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  DemoVpc:
    Properties:
      CidrBlock: 10.0.0.0/16
      EnableDnsSupport: 'true'
      EnableDnsHostnames: 'true'
      Tags:
       - Key: Env
         Value: dev
Outputs:
  DemoVpcId:
    Value: !Ref DemoVpc
    Export:
      Name: demo-vpc

stack2.yml

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  DemoSubnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !ImportValue demo-vpc
      CidrBlock: 10.0.0.0/16

参考文献

https://qiita.com/jonhyoku_imu/items/c4125c21143eb77d5612

関連記事

CloudFormation ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2024/02/10/231900
CloudFormation ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/10/26/224812
CloudFormation ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2021/12/01/170326
CloudFormation ~ VPC
https://dk521123.hatenablog.com/entry/2024/03/03/011149