0

我正在使用python模塊對流層來創建我的雲形成模板。大部分是完整的,但我似乎對如何使用RecordSets方法/函數爲負載均衡器創建DNS條目感到困惑。這個部分的輸出應該是這樣的:如何使用對流層將一組RecordSets添加到Cloud Formation中?

"devdevopsdemoELBDNSARecord0": { 
    "Type": "AWS::Route53::RecordSetGroup", 
    "Properties": { 
     "HostedZoneName": "FOO.net.", 
     "Comment": "Alias targeted to devdevopsdemoELB ELB.", 
     "RecordSets": [ 
      { 
      "Name": "devopsdemo.dev.FOO.net.", 
      "Type": "A", 
      "AliasTarget": { 
      "HostedZoneId": { 
       "Fn::GetAtt": [ 
        "devdevopsdemoELB", 
        "CanonicalHostedZoneNameID" 
       ] 
      }, 
      "DNSName": { 
       "Fn::GetAtt": [ 
       "devdevopsdemoELB", 
       "CanonicalHostedZoneName" 
       ] 
      } 
     } 
    }, 
    { 
     "Name": "devopsdemo-dev.FOO.net.", 
     "Type": "A", 
     "AliasTarget": { 
      "HostedZoneId": { 
      "Fn::GetAtt": [ 
       "devdevopsdemoELB", 
       "CanonicalHostedZoneNameID" 
      ] 
     }, 
     "DNSName": { 
      "Fn::GetAtt": [ 
      "devdevopsdemoELB", 
      "CanonicalHostedZoneName" 
      ] 
     } 
    } 
} 

我已經開始與:

hostedzone = "FOO.net" 
myRecordSet = RecordSetType("devdevopsdemoELBDNSARecord0") 
myRecordSet.HostedZoneName=Join("", hostedzone, "."]) 
myRecordSet.Comment="Alias targeted to devdevopsdemoELB ELB." 

但後來我不是應該如何進入的記錄值清楚。

我認爲我可以只使用直

myRecordSet.RecordSets = 

,只是把json的到位,但似乎有點像擺在首位使用對流層的目的濫用。

更新:在JSON結果把這個錯誤

AttributeError的:AWS :: Route53 :: RecordSet對象不支持屬性的記錄

myRecordSet.RecordSets = [ 
         { 
          "Name": "devopsdemo.dev.FOO.net.", 
          "Type": "A", 
          "AliasTarget": { 
           "HostedZoneId": { 
            "Fn::GetAtt": [ 
             "devdevopsdemoELB", 
             "CanonicalHostedZoneNameID" 
            ] 
           }, 
           "DNSName": { 
            "Fn::GetAtt": [ 
             "devdevopsdemoELB", 
             "CanonicalHostedZoneName" 
             ] 
            } 
           } 
         }, 
         { 
          "Name": "devopsdemo-dev.FOO.net.", 
          "Type": "A", 
          "AliasTarget": { 
           "HostedZoneId": { 
            "Fn::GetAtt": [ 
             "devdevopsdemoELB", 
             "CanonicalHostedZoneNameID" 
             ] 
            }, 
           "DNSName": { 
            "Fn::GetAtt": [ 
             "devdevopsdemoELB", 
             "CanonicalHostedZoneName" 
             ] 
            } 
           } 
          } 
         ] 

然後我嘗試這樣的:

myDNSRecord = t.add_resource(RecordSetGroup(
     "devdevopsdemoELBDNSARecord0", 
     HostedZoneName=Join("", ["inpwrd.net", "."]), 
     Comment="DNS Entry to point to the ELB for devopsdemo", 
     RecordSets=[ 
      RecordSet(
       Name="devopsdemo.dev.inpwrd.net.", 
       Type="A", 
       AliasTarget=[HostedZoneId(GetAtt("devdevopsdemoELB", "CanonicalHostedZoneNameID")), 
          DNSName(GetAtt("devdevopsdemoELB", "CanonicalHostedZoneName"))], 
       ), 
      RecordSet(
       Name="devopsdemo-dev.inpwrd.net.", 
       Type="A", 
       AliasTarget=[HostedZoneId(GetAtt("devdevopsdemoELB", "CanonicalHostedZoneNameID")), 
          DNSName(GetAtt("devdevopsdemoELB", "CanonicalHostedZoneName"))], 
       ), 
      ], 
    ) 
) 

HostedZoneId找不到

回答

2

AliasTarget take所以你想這樣做:

from troposphere import GetAtt, Join, Template 
from troposphere.route53 import AliasTarget, RecordSetType, RecordSetGroup, RecordSet 

t = Template() 

myDNSRecord = t.add_resource(RecordSetGroup(
     "devdevopsdemoELBDNSARecord0", 
     HostedZoneName=Join("", ["example.net", "."]), 
     Comment="DNS Entry to point to the ELB for devopsdemo", 
     RecordSets=[ 
      RecordSet(
       Name="devopsdemo.dev.example.net.", 
       Type="A", 
       AliasTarget=AliasTarget(
        GetAtt("devdevopsdemoELB", "CanonicalHostedZoneNameID"), 
        GetAtt("devdevopsdemoELB", "CanonicalHostedZoneName"), 
       ), 
      ), 
      RecordSet(
       Name="devopsdemo-dev.example.net.", 
       Type="A", 
       AliasTarget=AliasTarget(
        GetAtt("devdevopsdemoELB", "CanonicalHostedZoneNameID"), 
        GetAtt("devdevopsdemoELB", "CanonicalHostedZoneName"), 
       ), 
      ), 
     ], 
    ) 
) 

print t.to_json() 
+0

這很好用。謝謝。 – efreedom

相關問題