2016-11-03 4 views
0

Est-ce que quelqu'un sait comment convertir un modèle de fils de formation cloud AWS en objet C# ou en classe personnalisée. J'ai désérialisé json en utilisant un contrat de données avant, mais j'ai des problèmes avec le modèle de formation au cloud car chaque ressource commence par un nom unique, donc je ne sais pas comment le gérer. Mon but est de comparer un modèle avec ce qui existe déjà dans AWS en mettant les données de l'API et les données du modèle dans une classe et en les comparant. S'il y a un meilleur moyen, n'hésitez pas à me tirer dessus. Voici un exemple de modèle de formation au cloud.AWS Cloudformation Modèle JSON vers objet C#

{ 
    "AWSTemplateFormatVersion" : "2010-09-09", 

    "Description" : "AWS CloudFormation Sample.", 

    "Parameters" : { 
    "KeyName": { 
     "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance", 
     "Type": "AWS::EC2::KeyPair::KeyName", 
     "ConstraintDescription" : "must be the name of an existing EC2 KeyPair." 
    }, 
    "Resources" : { 
    "SecurityGroup1" : { 
     "Type" : "AWS::EC2::SecurityGroup", 
     "Properties" : { 
     "GroupDescription" : "Enable SSH access via port 22", 
     "SecurityGroupIngress" : [ { 
      "IpProtocol" : "tcp", 
      "FromPort" : "22", 
      "ToPort" : "22", 
      "CidrIp" : { "Ref" : "SSHLocation"} 
     } ] 
     } 
    }, 
    "SecurityGroup2" : { 
     "Type" : "AWS::EC2::SecurityGroup", 
     "Properties" : { 
     "GroupDescription" : "Enable SSH access via port 22", 
     "SecurityGroupIngress" : [ { 
      "IpProtocol" : "tcp", 
      "FromPort" : "22", 
      "ToPort" : "22", 
      "CidrIp" : { "Ref" : "SSHLocation"} 
     } ] 
     } 
    } 
    }, 
    "Outputs" : {  
    } 
    } 
} 

Répondre

0

La façon simple serait de traiter la Resources partie du modèle comme un dictionnaire où le nom de la ressource est la clé et ses propriétés est la valeur:

class ResourceProperties 
{ 
    public string GroupDescription { get; set; } 
} 

class Resource 
{ 
    public string Type { get; set; } 
    public ResourceProperties Properties { get; set; } 
} 

class Parameters 
{ 
    public Dictionary<string, Resource> Resources { get; set; } 
} 

class Template 
{ 
    public Parameters Parameters { get; set; } 
} 

(Le reste des champs est évident)

Et puis en utilisant

var template = JsonConvert.DeserializeObject<Template>(json);