Help us understand the problem. What is going on with this article?

CFnの戻り値(Ref,Fn::GetAtt属性)が少しわかったので共有

CFnの戻り値(Ref,Fn::GetAtt属性)の説明

戻り値とは、指定されると何かしらの値を返してくれる値と言うイメージです。

自動販売機でボタン押すと指定したものに準じて、飲み物を提供してくれる的な感じ?いい例が浮かびません(笑)

GetAttはリソースごとに決められている物理ID(*)を引っ張ってくる感じです

なのでリファレンスを見に行かないとわかりません。
Fn::GetAtt属性リファレンスです。

パラメータ
logicalNameOfResource
必要な属性を含むリソースの論理名 (論理 ID とも呼ばれます)。

attributeName
必要としている値のある、リソース固有の属性の名前です。各リソースタイプで使用できる属性の詳細については、リソースの参照ページに説明されています。

CFnのテンプレートの中で決めたリソース名のことを論理名と言います。
attributeNameはリソース固有の属性名で、指定されると物理IDとして返してくれます
(※)物理IDとはリソースが作られたときにAWSによって割り振られたIDのこと。下記画像で言うとこのネットワークインターフェイスID
スクリーンショット 2020-01-14 0.35.28.png

!RefはCFnのテンプレートの中で決めたリソース名の物理IDを返します。

Ref属性リファレンスです。

組み込み関数 Ref は、指定したパラメータまたはリソースの値を返します。

パラメータの論理名を指定すると、それはパラメータの値を返します。

リソースの論理名を指定すると、それはそのリソースを参照するために通常使用できる値を返します (物理 ID)。

以上を踏まえてEIPをを関連付けするときの方法を見ていきます。
下記は”AWS::EC2::EIP”リファレンスの引用です。
ここに表示されているものが戻り値(参照値)になります。
リソース(例 AWS::EC2::EIP)ごとに決まっています。他のリソースで!GetAttで指定されると参照されます。

戻り値

Refは
Elastic IP アドレスを このリソースの論理 ID を組み込みの Ref 関数に渡すと、Ref は次を返します: 。

For more information about using the Ref function, see Ref.

Fn::GetAtt
Fn::GetAtt 組み込み関数は、このタイプの指定された属性の値を返します。以下には、利用可能な属性とサンプル戻り値のリストが示されます。

Fn::GetAtt 組み込み関数の使用方法の詳細については、「Fn::GetAtt」を参照してください。

AllocationId
Amazon VPC で使用するアドレスの割り当てを表すために AWS によって割り当てられた ID。この値は、VPC の Elastic IP アドレスに対してのみ返されます。たとえば、eipalloc-5723d13e と指定します。

例)

Resources:
  ControlPortAddress:
    Type: AWS::EC2::EIP
    Properties:
      Domain: vpc      
  AssociateControlPort:
    Type: AWS::EC2::EIPAssociation
    Properties:
      AllocationId: !GetAtt ControlPortAddress.AllocationId (読み:論理IDのAllocationIdという戻り値を参照)
      NetworkInterfaceId: !Ref controlXface(読み:論理名(controlXface)で作成された物理ID(※)を値として利用する)

controlXface:(これが作られたときに物流IDが付与される)
    Type: AWS::EC2::NetworkInterface
    Properties:
      SubnetId: !Ref SubnetId
      Description: Interface for controlling traffic such as SSH
      GroupSet: 
      - !Ref SSHSecurityGroup
      SourceDestCheck: true
      Tags:
      - Key: Network
        Value: Control

参考
AWS::EC2::EIPAssociation
AWS::EC2::EIP
Ref
Fn::GetAtt

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした