1

J'essaie de créer un script CloudFormation qui activera CloudTrail et donnera à l'utilisateur une option pour créer un nouveau compartiment S3 et l'utiliser, ou utiliser un existant S3 Seau. Je suis nouveau à AWS, donc je suis un peu perdu. Voici un code que j'ai pris et modifié, jusqu'à présent sans ajout de conditions et autres.AWS: le script Cloudformation crée un compartiment S3 pour CloudTrail basé sur des conditions

{ 
"AWSTemplateFormatVersion" : "2010-09-09", 
"Description" : "CloudTrail", 
"Parameters" : { 
    "UseExisitingBucket" : { 
     "Description" : "Yes/No", 
     "Default" : "Yes", 
     "Type" : "String", 
     "AllowedValues" : [ "yes", "no"] 
    }, 
    "BucketName" : { 
     "Description" : "Name of the S3 bucket.", 
     "Type" : "String" 
    }, 
    "TopicName" : { 
     "Description" : "Name of the SNS topic.", 
     "Type" : "String", 
     "Default" : "" 
    }, 
    "IncludeGlobalServiceEvents" : { 
     "Description" : "Indicates whether the trail is publishing events from global services, such as IAM, to the log files.", 
     "Type" : "String", 
     "Default" : "false", 
     "AllowedValues" : [ 
      "true", 
      "false" 
     ] 
    } 
}, 
"Conditions" : { 
    "UseSNSTopic" : { 
     "Fn::Not" : [ 
      { 
       "Fn::Equals" : [ 
        { 
         "Ref" : "TopicName" 
        }, 
        "" 
       ] 
      } 
     ] 
    } 
}, 
"Resources" : { 
    "Trail" : { 
     "Type" : "AWS::CloudTrail::Trail", 
     "Properties" : { 
      "IncludeGlobalServiceEvents" : { 
       "Ref" : "IncludeGlobalServiceEvents" 
      }, 
      "S3BucketName" : { 
       "Ref" : "BucketName" 
      }, 
      "SnsTopicName" : { 
       "Fn::If" : [ 
        "UseSNSTopic", 
        { 
         "Ref" : "TopicName" 
        }, 
        { 
         "Ref" : "AWS::NoValue" 
        } 
       ] 
      }, 
      "IsLogging" : true 
     } 
    } 
} 

}

Répondre

0

Vous êtes très proche, je suggère, supprimer le paramètre UseExisitingBucket. Ensuite, ajoutez Default à BucketName il ressemblerait à quelque chose comme ceci:

"ExistingBucketName" : { 
    "Description" : "Name of the S3 bucket.", 
    "Type" : "String", 
    "Default": "None" 
}, 

conditions couple Ajouter pour vérifier si un seau a été fourni ou si vous devez en créer un nouveau:

"Conditions": { 
    "CreateNewBucket": { 
     "Fn::Equals": [ 
      { 
       "Ref": "ExistingBucketName" 
      }, 
      "None" 
     ] 
    }, 
    "UseExistingBucket": { 
     "Fn::Not": [ 
      { 
       "Fn::Equals": [ 
        { 
         "Ref": "ExistingBucketName" 
        }, 
        "None" 
       ]     
      } 
     ] 
    } 
} 

Ensuite, créez S3 ressources Bucket à la condition ci-dessus, quelque chose comme:

"S3Bucket": { 
    "Condition": "CreateNewBucket", 
    ... 
    ... 

} 

Ajouter 2 ressources cloudtrail une avec "CreateNewBucket" état et passer "S3Bucket" ressource et l'autre avec "UseExistingBucket" et passer "ExistingBucketName"

+0

Merci, cela aide beaucoup! – flyingcars34