à l'aide de CloudFormation avec un compartiment S3 existant

27

À l'aide de CloudFormation, je souhaite définir certaines des propriétés dans AWS :: S3 :: Bucket sur un compartiment existant . En d'autres termes, je ne veux pas créer le compartiment, je veux simplement appliquer certains paramètres. Voici un exemple de mon JSON cloudformation:

"websitePreviewBucket": {
  "Type": "AWS::S3::Bucket",
  "Properties": {
    "AccessControl": "PublicRead",
    "VersioningConfiguration": {
      "Status": "Suspended"
    },
    "BucketName": "preview.website.com",
    "WebsiteConfiguration": {
      "IndexDocument": "index.html",
      "ErrorDocument": "error.html"
    }
  }
},

Sans surprise, cela échoue dans la console cloudformation:

The following resource(s) failed to create: [websitePreviewBucket].
preview.website.com already exists

J'ai créé le bucket preview.website.com. Je veux dire, ce compte "possède" ce seau. Comment puis-je définir des choses comme AccessControlet WebsiteConfigurationsur un compartiment existant avec CloudFormation?

J'ai vu une autre question demandant quelque chose de similaire , mais elle n'a pas de réponse appropriée.

tedder42
la source

Réponses:

7

Je pense que vous vous trompez en utilisant CloudFormation pour modifier votre infrastructure AWS. L'objectif de CloudFormation est de créer une infrastructure AWS sur un modèle. Il a été étendu pour permettre une certaine gestion des ressources qu'il crée, mais la gestion des infrastructures existantes n'est pas son objectif. Depuis la page d'accueil :

AWS CloudFormation vous permet de créer et de provisionner des déploiements d'infrastructure AWS de manière prévisible et répétée.

Je crois que le plus proche que vous pourrez obtenir est de définir une stratégie de compartiment sur un compartiment existant à l'aide d' AWS :: S3 :: BucketPolicy . Au-delà de cela, vous pouvez utiliser l' API AWS CLI S3 pour modifier votre compartiment:

dialt0ne
la source
17
Il peut provenir d'une direction différente, mais le fait que lorsque vous supprimez une pile, si la stratégie de suppression pour un compartiment S3 est "conserver" et que vous allez ensuite provisionner à nouveau la même pile, vous aurez cette erreur. Très ennuyeux pour dire le moins. Au moins avec les volumes que vous pouvez créer des instantanés et restaurer, il n'y a absolument rien que vous puissiez faire avec S3.
Sleeper Smith du
2
Encore une autre direction consiste à renommer votre pile. J'ai rétrogradé car cette réponse suppose que l'OP souhaite modifier l'infrastructure AWS. Cela n'est souvent vrai qu'à cause d'autres limites des FC, donc il n'y a rien de mal à vouloir le faire.
user239558