🦔

AWS CloudFormationのRef関数を勉強してみた。

2023/08/20に公開

AWS CloudFormationのRef関数:

CloudFormationの中心とも言えるRef関数の使い方について勉強しました。

1. CloudFormationの概要

CloudFormationは、AWSリソースのスタックの定義、デプロイメント、管理を行うためのサービスです。テンプレートと呼ばれる設定ファイルを使用して、一連のリソースを一度に作成したり、変更したりすることができます。

2. Ref関数とは

Ref関数は、CloudFormationテンプレート内の他のセクションに存在するオブジェクトへの参照を可能にします。特に以下の2つの主要な用途があります:

  • パラメータの参照: テンプレートの使用者からの入力を取得するためのパラメータ。

  • リソースの物理的IDの参照: これは、リソースが作成された後に割り当てられる一意の識別子です。

3. パラメータへの使用例

テンプレート内でRef関数を使用してパラメータを参照する場合、その関数はそのパラメータの値を返します。

Parameters:
  InstanceType:
    Description: EC2 instance type
    Type: String
    Default: t2.micro

Resources:
  MyEC2Instance:
    Type: "AWS::EC2::Instance"
    Properties:
      InstanceType: !Ref InstanceType
      ...

4. リソースの物理的IDへの使用例

CloudFormationがリソースを作成すると、そのリソースには物理的IDが割り当てられます。このIDは、そのリソースを一意に識別するためのものです。以下は、新しく作成されたS3バケットの名前を取得する例です。

Resources:
  MyS3Bucket:
    Type: "AWS::S3::Bucket"

Outputs:
  BucketName:
    Description: Name of the S3 bucket
    Value: !Ref MyS3Bucket

この例では、Ref関数は新しく作成されたS3バケットの名前を返します。

5. 組み合わせの使用

下記の関数とリソースを組み合わせて使用することができます。例えば、新しいEC2インスタンスを作成し、そのインスタンスに関連するセキュリティグループを同時に作成することができます。

Parameters:
  InstanceType:
    Description: EC2 instance type
    Type: String
    Default: t2.micro

Resources:
  MyEC2Instance:
    Type: "AWS::EC2::Instance"
    Properties:
      InstanceType: !Ref InstanceType
      SecurityGroups:
        - !Ref MySecurityGroup

  MySecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupDescription: Enable SSH access
      ...

この例では、Ref関数を使用して、新しく作成されたセキュリティグループをEC2インスタンスに関連付けています。

6. まとめ

AWS CloudFormationのRef関数は、テンプレート内のパラメータやリソースを動的に参照する非常に強力なツールです。この関数を理解し、適切に使用することで、CloudFormationテンプレートの柔軟性と再利用性を向上させることができます。


参考

What is AWS CloudFormation? - AWS CloudFormation

Ref - AWS CloudFormation

【CloudFormation】!Subと!Refの使い分け - Tycoh’s blog

CloudFormation の参照周りで意識すべきポイント・Tips | DevelopersIO

【AWS初学者向け・図解】CloudFormationの組み込み関数を現役エンジニアがわかりやすく解説① – エンジニア女子の自習室

Discussion