Importation réussie d'un compartiment S3 en tant que CloudFormation stack AWS - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Importation réussie d'un compartiment S3 en tant que CloudFormation stack AWS

Créée par Ram Kandaswamy (AWS)

Récapitulatif

Si vous utilisez des ressources Amazon Web Services (AWS), telles que les compartiments Amazon Simple Storage Service (Amazon S3), et que vous souhaitez utiliser une approche d'infrastructure en tant que code (IaC), vous pouvez importer vos ressources dans CloudFormation AWS et les gérer sous forme de pile.

Ce modèle fournit les étapes à suivre pour importer avec succès un compartiment S3 en tant que CloudFormation pile AWS. En utilisant l'approche de ce modèle, vous pouvez éviter d'éventuelles erreurs susceptibles de se produire si vous importez votre compartiment S3 en une seule action.

Conditions préalables et limitations

Prérequis

Architecture

Flux de travail permettant d'utiliser un CloudFormation modèle pour créer une CloudFormation pile afin d'importer un compartiment S3.

Le schéma suivant illustre le flux de travail suivant :

  1. L'utilisateur crée un modèle AWS CloudFormation au format JSON ou YAML.

  2. Le modèle crée une CloudFormation pile AWS pour importer le compartiment S3.

  3. La CloudFormation pile AWS gère le compartiment S3 que vous avez spécifié dans le modèle.

Pile technologique

  • AWS CloudFormation

  • AWS Identity and Access Management (IAM)

  • AWS KMS

  • Amazon S3

Outils

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

  • AWS Identity and Access Management (IAM) — IAM est un service Web permettant de contrôler en toute sécurité l'accès aux services AWS.

  • AWS KMS — AWS Key Management Service (AWS KMS) est un service de chiffrement et de gestion des clés adapté au cloud.

  • Amazon S3 — Amazon Simple Storage Service (Amazon S3) est un service de stockage pour Internet.

Épopées

TâcheDescriptionCompétences requises

Créez un modèle pour importer le compartiment S3 et la clé KMS.

Sur votre ordinateur local, créez un modèle pour importer votre compartiment S3 et votre clé KMS à l'aide de l'exemple de modèle suivant :

AWSTemplateFormatVersion: 2010-09-09 Parameters: bucketName: Type: String Resources: S3Bucket: Type: 'AWS::S3::Bucket' DeletionPolicy: Retain Properties: BucketName: !Ref bucketName BucketEncryption: ServerSideEncryptionConfiguration: - ServerSideEncryptionByDefault: SSEAlgorithm: 'aws:kms' KMSMasterKeyID: !GetAtt - KMSS3Encryption - Arn KMSS3Encryption: Type: 'AWS::KMS::Key' DeletionPolicy: Retain Properties: Enabled: true KeyPolicy: !Sub |- { "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::${AWS::AccountId}:root"] }, "Action": "kms:*", "Resource": "*" } } ] } EnableKeyRotation: true
AWS DevOps

Créez la pile.

  1. Connectez-vous à l'AWS Management Console, ouvrez la CloudFormation console AWS, choisissez View stack, Create stack, puis With existing resources (import resources).

  2. Choisissez Télécharger un fichier modèle, puis chargez le fichier modèle que vous avez créé précédemment.

  3. Entrez un nom pour votre pile et configurez les options restantes en fonction de vos besoins.

  4. Choisissez Create stack et attendez que le statut de la pile passe àIMPORT_COMPLETE.

AWS DevOps

Créez l'alias de clé KMS.

  1. Sur la CloudFormation console AWS, choisissez Stacks, choisissez le nom de la pile que vous avez créée précédemment, choisissez le volet Modèle, puis choisissez Afficher dans Designer.

  2. Ajoutez l'extrait suivant à la Resource section de votre modèle, puis choisissez Create stack et complétez l'assistant :

KMSS3EncryptionAlias: Type: 'AWS::KMS::Alias' DeletionPolicy: Retain Properties: AliasName: alias/S3BucketKey TargetKeyId: !Ref KMSS3Encryption

Pour plus d'informations à ce sujet, consultez les mises à jour du CloudFormation stack AWS dans la CloudFormation documentation AWS. 

AWS DevOps

Mettez à jour la pile pour inclure la politique du compartiment S3.

  1. Sur la CloudFormation console AWS, choisissez Stacks, choisissez le nom de la pile que vous avez créée précédemment, choisissez le volet Modèle, puis choisissez Afficher dans Designer.

  2. Ajoutez l'extrait suivant à la Resource section du modèle, puis choisissez Create stack et complétez l'assistant :

S3BucketPolicy: Type: 'AWS::S3::BucketPolicy' Properties: Bucket: !Ref S3Bucket PolicyDocument: !Sub |- { "Version": "2008-10-17", "Id": "restricthttp", "Statement": [ { "Sid": "denyhttp", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": "s3:*", "Resource": ["arn:aws:s3:::${S3Bucket}","arn:aws:s3:::${S3Bucket}/*"], "Condition": { "Bool": { "aws:SecureTransport": "false" } } } ] }
Note

Cette politique de compartiment S3 comporte une déclaration de refus qui restreint les appels d'API non sécurisés. 

AWS DevOps

Mettez à jour la politique clé.

  1. Sur la CloudFormation console AWS, choisissez Stacks, choisissez le nom de la pile que vous avez créée précédemment, choisissez le volet Modèle, puis choisissez Afficher dans Designer.

  2. Modifiez la ressource KMS du modèle pour inclure la politique clé qui permet aux administrateurs d'administrer la clé KMS.

  3. Choisissez Create stack, puis Next, puis complétez l'assistant en fonction de vos besoins.

Pour plus d'informations, consultez la section Politiques clés AWS KMS de la documentation AWS KMS.

Administrateur AWS

Ajoutez des balises au niveau des ressources.

  1. Sur la CloudFormation console AWS, choisissez Stacks, choisissez le nom de la pile que vous avez créée précédemment, choisissez le volet Modèle, puis choisissez Afficher dans Designer.

  2. Ajoutez l'extrait suivant à la Properties section des ressources Amazon S3 du modèle, puis choisissez Create stack et complétez l'assistant :

Tags: - Key: createdBy Value: Cloudformation
AWS DevOps

Ressources connexes

Pièces jointes

Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip