3

Я пытаюсь создать скрипт CLoudFormation, который запускает экземпляр и db в vpc одновременно. проблема в db требует двух AZ, поэтому я создаю вторую подсеть, и теперь мне просто нужно ссылаться на физические идентификаторы подсети в var 'MyDBSubnetGroup'. Я могу получить логические идентификаторы для созданных подсетей, но не знаю, как восстановить эти физические идентификаторы. Кто-нибудь знает? Благодаря!!как построить строку физических идентификаторов подсети для создания группы подсети db «на лету» в сценарии cloudformation?

Heres мой код:

"MyDBSubnetGroup" : { 
     "Type" : "AWS::RDS::DBSubnetGroup", 
     "Properties" : { 
     "DBSubnetGroupDescription" : "Subnets available for the RDS DB Instance", 
     "SubnetIds" : { "Fn::Join" : [ " ", [{"Ref" : "PublicSubnetAZ1"}, ", ", {"Ref" : "PublicSubnetAZ2"}, " " ]]} 
     } 
    }, 

ответ

4

я бегу в том же номере, после работы с поддержкой AWS я понял, что список строки не означает, что мы изначально думали. Кроме того, если вы хотите разместить БД внутри VPC, вы не должны использовать объекты AWS::RDS::DBSecurityGroup.

Вот полный пример, это мне потребовалось некоторое время, чтобы заставить его работать:

"dbSubnetGroup" : { 
     "Type" : "AWS::RDS::DBSubnetGroup", 
     "Properties" : { 
      "DBSubnetGroupDescription" : "Availability Zones for RDS DB", 
      "SubnetIds" : [ { "Ref" : "subnetPrivate1" }, 
          { "Ref" : "subnetPrivate2" } ] 
     } 
}, 
"dbInstance" : { 
     "Type" : "AWS::RDS::DBInstance", 
     "Properties" : { 
      "DBInstanceIdentifier" : { "Fn::Join" : [ "", 
                [ { "Ref" : "AWS::StackName" }, 
                 "DB" ] ] }, 
      "DBName" : "dbname", 
      "DBSubnetGroupName" : { "Ref" : "dbSubnetGroup" }, 
      "MultiAZ" : "true", 
      "AllocatedStorage" : "8", 
      "BackupRetentionPeriod" : "0", 
      "DBInstanceClass" : "db.m1.medium", 
      "Engine" : "postgres", 
      "MasterUserPassword" : "masteruserpassword", 
      "MasterUsername" : "masterusername", 
      "VPCSecurityGroups" : [ { "Ref" : "sgVpc" }, { "Ref" : "sgDB" } ] 
    } 
}, 
2

Если сопоставить идентификаторы подсетей вы можете получить доступ к их с чем-то вроде этого.

 "AWSRegionSubnet":{ 
     "us-east-1":{ 
      "RDSSubnets":[ 
       "subnet-aaaaaaaa", 
       "subnet-bbbbbbbb" 
      ] 

     }, 
     "us-west-2":{ 
      "RDSSubnets":[ 
       "subnet-cccccccc", 
       "subnet-dddddddd" 
      ] 
     } 
    } 

     "RDSSubnet":{ 
     "Type":"AWS::RDS::DBSubnetGroup", 
     "Properties":{ 
      "DBSubnetGroupDescription":"Some cool notes here", 
      "SubnetIds":{ 
       "Fn::FindInMap":[ 
        "AWSRegionSubnet", 
        { 
         "Ref":"AWS::Region" 
        }, 
        "RDSSubnets" 
       ] 
      } 
     } 
    } 
Смежные вопросы