AWS CloudFormationのRef関数を勉強してみた。
Ref
関数:
AWS CloudFormationのCloudFormationの中心とも言えるRef
関数の使い方について勉強しました。
1. CloudFormationの概要
CloudFormationは、AWSリソースのスタックの定義、デプロイメント、管理を行うためのサービスです。テンプレートと呼ばれる設定ファイルを使用して、一連のリソースを一度に作成したり、変更したりすることができます。
Ref
関数とは
2. 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
【CloudFormation】!Subと!Refの使い分け - Tycoh’s blog
CloudFormation の参照周りで意識すべきポイント・Tips | DevelopersIO
【AWS初学者向け・図解】CloudFormationの組み込み関数を現役エンジニアがわかりやすく解説① – エンジニア女子の自習室
Discussion