8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-01-13

#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

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?