Intégration des locataires dans l'architecture SaaS pour le modèle de silo utilisant C# et AWS CDK - 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.

Intégration des locataires dans l'architecture SaaS pour le modèle de silo utilisant C# et AWS CDK

Créé par Tabby Ward (AWS), Susmitha Reddy Gankidi () et Vijai Anand AWS Ramalingam () AWS

Dépôt de code : Tennat Onboarding Silo

Environnement : PoC ou pilote

Technologies : modernisation ; DevOps

Charge de travail : Open source

AWSservices : Amazon DynamoDB AWS CloudFormation ; Amazon DynamoDB Streams ; Lambda ; Amazon Gateway AWS API

Récapitulatif

Les applications SaaS (Software as a Service) peuvent être créées à l'aide de différents modèles architecturaux. Le modèle de silo fait référence à une architecture dans laquelle les locataires disposent de ressources dédiées.

Les applications SaaS s'appuient sur un modèle fluide pour introduire de nouveaux locataires dans leur environnement. Cela nécessite souvent l'orchestration d'un certain nombre de composants pour approvisionner et configurer correctement tous les éléments nécessaires à la création d'un nouveau locataire. Ce processus, dans l'architecture SaaS, est appelé intégration des locataires. L'intégration doit être entièrement automatisée pour chaque environnement SaaS en utilisant l'infrastructure sous forme de code dans votre processus d'intégration.

Ce modèle vous guide à travers un exemple de création d'un locataire et de mise en service d'une infrastructure de base pour le locataire sur Amazon Web Services (AWS). Le modèle utilise C# et le AWS Cloud Development Kit (AWSCDK).

Étant donné que ce modèle crée une alarme de facturation, nous vous recommandons de déployer la pile dans la région USA Est (Virginie du Nord), ou us-east-1. AWS Pour plus d'informations, consultez la AWSdocumentation.

Conditions préalables et limitations

Prérequis

Limites

  • AWSCDKutilisations AWS CloudFormation, de sorte que AWS CDK les applications sont soumises à des quotas CloudFormation de service. Pour plus d'informations, consultez la section AWS CloudFormation Quotas

  • La CloudFormation pile de locataires est créée avec un rôle de CloudFormation service infra-cloudformation-role avec des caractères génériques sur les actions (sns* etsqs*) mais avec des ressources limitées au tenant-cluster préfixe. Pour un cas d'utilisation en production, évaluez ce paramètre et fournissez uniquement l'accès requis à ce rôle de service. La fonction InfrastructureProvision Lambda utilise également un caractère générique (cloudformation*) pour approvisionner la CloudFormation pile, mais les ressources sont limitées au préfixe. tenant-cluster

  • La version docker de cet exemple de code est utilisée --platform=linux/amd64 pour forcer les imageslinux/amd64. Cela permet de garantir que les artefacts d'image finaux seront adaptés à Lambda, qui utilise par défaut l'architecture x86-64. Si vous devez modifier l'architecture Lambda cible, veillez à modifier à la fois les Dockerfiles et les codes. AWS CDK Pour plus d'informations, consultez le billet de blog Migration des fonctions AWS Lambda vers les processeurs Graviton2 basés sur AWS ARM.

  • Le processus de suppression de la pile ne nettoie pas CloudWatch les journaux (groupes de journaux et journaux) générés par la pile. Vous devez nettoyer manuellement les journaux via la console AWS de gestion Amazon CloudWatch ou via leAPI.

Ce modèle est configuré à titre d'exemple. Pour une utilisation en production, évaluez les configurations suivantes et apportez des modifications en fonction des besoins de votre entreprise :

  • Dans cet exemple, la gestion des versions du bucket AWSSimple Storage Service (Amazon S3) n'est pas activée pour des raisons de simplicité. Évaluez et mettez à jour la configuration selon les besoins.

  • Cet exemple configure les REST API points de terminaison Amazon API Gateway sans authentification, autorisation ou limitation pour des raisons de simplicité. Pour une utilisation en production, nous recommandons d'intégrer le système à l'infrastructure de sécurité de l'entreprise. Évaluez ce paramètre et ajoutez les paramètres de sécurité requis selon les besoins.

  • Pour cet exemple d'infrastructure client, Amazon Simple Notification Service (AmazonSNS) et Amazon Simple Queue Service (AmazonSQS) n'ont que des configurations minimales. Le service de gestion des AWS clés (AWSKMS) de chaque locataire est ouvert à Amazon CloudWatch et SNS aux services Amazon du compte à utiliser conformément à la politique AWS KMS clé. La configuration n'est qu'un exemple d'espace réservé. Ajustez les configurations selon vos besoins en fonction de votre cas d'utilisation professionnel.

  • L'ensemble de la configuration, qui inclut, mais sans s'y limiter, le API provisionnement et la suppression des locataires du backend par l'utilisateur AWS CloudFormation, ne couvre que le cas de base du happy path. Évaluez et mettez à jour la configuration avec la logique de nouvelle tentative nécessaire, la logique de gestion des erreurs supplémentaire et la logique de sécurité en fonction des besoins de votre entreprise.

  • L'exemple de code est testé avec up-to-date cdk-nag pour vérifier les politiques au moment de la rédaction de cet article. De nouvelles politiques pourraient être appliquées à l'avenir. Ces nouvelles politiques peuvent vous obliger à modifier manuellement la pile en fonction des recommandations avant que la pile ne puisse être déployée. Passez en revue le code existant pour vous assurer qu'il correspond aux exigences de votre entreprise.

  • Le code s'appuie sur le AWS CDK pour générer un suffixe aléatoire au lieu de s'appuyer sur des noms physiques assignés de manière statique pour la plupart des ressources créées. Cette configuration permet de garantir que ces ressources sont uniques et n'entrent pas en conflit avec d'autres piles. Pour plus d'informations, consultez la AWSCDKdocumentation. Ajustez cela en fonction des besoins de votre entreprise.

  • Cet exemple de packages de code. NETLambda intègre des artefacts dans des images basées sur Docker et s'exécute avec le moteur d'exécution d'images Container fourni par Lambda. L'environnement d'exécution de l'image du conteneur présente des avantages pour les mécanismes de transfert et de stockage standard (registres de conteneurs) et pour les environnements de test locaux plus précis (via l'image du conteneur). Vous pouvez changer de projet pour utiliser Lambda fourni. NETdes environnements d'exécution pour réduire le temps de création des images Docker, mais vous devrez ensuite configurer les mécanismes de transfert et de stockage et vous assurer que la configuration locale correspond à la configuration Lambda. Ajustez le code pour l'aligner sur les exigences commerciales des utilisateurs.

Versions du produit

  • AWSCDKversion 2.45.0 ou ultérieure

  • Visual Studio 2022

Architecture

Pile technologique

  • APIPasserelle Amazon

  • AWS CloudFormation

  • Amazon CloudWatch

  • Amazon DynamoDB

  • AWSIdentity and Access Management (IAM)

  • AWS KMS

  • AWSLambda

  • Amazon S3

  • Amazon SNS

  • Amazon SQS

Architecture

Le schéma suivant montre le flux de création de la pile de locataires. Pour plus d'informations sur les piles technologiques du plan de contrôle et des locataires, consultez la section Informations supplémentaires.

Flux de travail pour créer un locataire et fournir une infrastructure de base pour le locataireAWS.

Flux de création d'une pile de locataires

  1. L'utilisateur envoie une POST API demande avec la nouvelle charge utile du locataire (nom du locataire, description du locataire) JSON à un REST API hébergeur Amazon API Gateway. La API passerelle traite la demande et la transmet à la fonction Lambda Tenant Onboarding du backend. Dans cet exemple, il n'y a aucune autorisation ni authentification. Dans une configuration de production, cela API doit être intégré au système de sécurité de l'infrastructure SaaS.

  2. La fonction d'intégration des locataires vérifie la demande. Il tente ensuite de stocker l'enregistrement du locataire, qui inclut le nom du locataire, l'identifiant unique universel du locataire généré (UUID) et la description du locataire, dans la table d'intégration des locataires Amazon DynamoDB. 

  3. Une fois que DynamoDB a enregistré l'enregistrement, un flux DynamoDB lance la fonction Lambda Tenant Infrastructure en aval.

  4. La fonction Lambda de l'infrastructure Tenant agit en fonction du flux DynamoDB reçu. Si le flux est destiné à l'INSERTévénement, la fonction utilise la NewImage section du flux (dernier enregistrement de mise à jour, champ Nom du locataire) pour appeler CloudFormation afin de créer une nouvelle infrastructure locataire à l'aide du modèle stocké dans le compartiment S3. Le CloudFormation modèle nécessite le paramètre Tenant Name. 

  5. AWS CloudFormation crée l'infrastructure du locataire en fonction du CloudFormation modèle et des paramètres d'entrée.

  6. Chaque configuration de l'infrastructure du locataire comporte une CloudWatch alarme, une alarme de facturation et un événement d'alarme.

  7. L'événement d'alarme devient un message envoyé à un SNS sujet, qui est crypté par la AWS KMS clé du locataire.

  8. Le SNS sujet transmet le message d'alarme reçu à la SQS file d'attente, qui est cryptée par la clé AWS KMS de chiffrement du locataire.

D'autres systèmes peuvent être intégrés SQS à Amazon pour effectuer des actions en fonction des messages en file d'attente. Dans cet exemple, pour que le code reste générique, les messages entrants restent en file d'attente et doivent être supprimés manuellement.

Flux de suppression de la pile de locataires

  1. L'utilisateur envoie une DELETE API demande contenant la nouvelle charge utile du locataire (nom du locataire, description du locataire) JSON à l'RESTAPIhébergeur Amazon API Gateway, qui traitera la demande et la transmettra à la fonction d'intégration des locataires. Dans cet exemple, il n'y a aucune autorisation ni authentification. Dans une configuration de production, cela API sera intégré au système de sécurité de l'infrastructure SaaS.

  2. La fonction d'intégration des locataires vérifiera la demande, puis tentera de supprimer le dossier du locataire (nom du locataire) de la table d'accueil des locataires. 

  3. Une fois que DynamoDB a correctement supprimé l'enregistrement (l'enregistrement existe dans la table et est supprimé), un flux DynamoDB lance la fonction Lambda Tenant Infrastructure en aval.

  4. La fonction Lambda de l'infrastructure Tenant agit en fonction de l'enregistrement de flux DynamoDB reçu. Si le flux est destiné à l'REMOVEévénement, la fonction utilise la OldImage section de l'enregistrement (informations sur l'enregistrement et champ Nom du locataire, avant la dernière modification, qui est la suppression) pour lancer la suppression d'une pile existante sur la base de ces informations d'enregistrement.

  5. AWS CloudFormation supprime la pile de locataires cible en fonction de l'entrée.

Outils

AWSservices

  • Amazon API Gateway vous aide à créer, publier, gérer, surveiller et sécuriser, et REST ceHTTP, WebSocket APIs à n'importe quelle échelle.

  • AWSCloud Development Kit (AWSCDK) est un framework de développement logiciel qui vous aide à définir et à provisionner une infrastructure AWS cloud sous forme de code.

  • AWSCDKToolkit est un kit de développement cloud en ligne de commande qui vous permet d'interagir avec votre application AWS Cloud Development Kit (AWSCDK).

  • AWSL'interface de ligne de commande (AWSCLI) est un outil open source qui vous permet d'interagir avec les AWS services par le biais de commandes dans votre interface de ligne de commande.

  • AWS CloudFormationvous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie, quels que soient les AWS comptes et les régions.

  • Amazon DynamoDB est un service SQL sans base de données entièrement géré qui fournit des performances rapides, prévisibles et évolutives.

  • AWSIdentity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.

  • AWSLe service de gestion des clés (AWSKMS) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.

  • AWSLambda est un service de calcul qui vous permet d'exécuter du code sans avoir à approvisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.

  • Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

  • Amazon Simple Notification Service (AmazonSNS) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.

  • Amazon Simple Queue Service (AmazonSQS) fournit une file d'attente hébergée sécurisée, durable et disponible qui vous aide à intégrer et à dissocier les systèmes et composants logiciels distribués.

  • AWSToolkit for Visual Studio est un plugin pour l'environnement de développement intégré Visual Studio (IDE). Le Toolkit for Visual Studio prend en charge le développement, le débogage et le déploiement. NETapplications qui utilisent AWS des services.

Autres outils

  • Visual Studio inclut des compilateurs, des outils de complétion de code, des concepteurs graphiques et d'autres fonctionnalités qui prennent en charge le développement de logiciels. IDE

Code

Le code de ce modèle se trouve dans le référentiel Tenant onboarding in SaaS Architecture for Silo Model APG Example.

Épopées

TâcheDescriptionCompétences requises

Vérifiez l'installation de Node.js.

Pour vérifier que Node.js est installé sur votre ordinateur local, exécutez la commande suivante.

node --version
AWSadministrateur, AWS DevOps

Installez le AWS CDK kit d'outils.

Pour installer AWS CDK Toolkit sur votre machine locale, exécutez la commande suivante.

npm install -g aws-cdk

Si npm n'est pas installé, vous pouvez l'installer depuis le site Node.js.

AWSadministrateur, AWS DevOps

Vérifiez la version du AWS CDK Toolkit.

Pour vérifier que la version du AWS CDK Toolkit est correctement installée sur votre machine, exécutez la commande suivante.  

cdk --version
AWSadministrateur, AWS DevOps
TâcheDescriptionCompétences requises

Pour cloner le référentiel.

Clonez le référentiel et naviguez jusqu'au \tenant-onboarding-in-saas-architecture-for-silo-model-apg-example dossier.

Dans Visual Studio 2022, ouvrez la \src\TenantOnboardingInfra.sln solution. Ouvrez le TenantOnboardingInfraStack.cs fichier et examinez le code.

Les ressources suivantes sont créées dans le cadre de cette pile :

  • Tableau DynamoDB

  • Compartiment S3 (chargez le CloudFormation modèle dans le compartiment S3.)

  • Rôle d'exécution Lambda

  • Fonction Lambda

  • APIPasserelle API

  • Source d'événement de la fonction Lambda

AWSadministrateur, AWS DevOps

Passez en revue le CloudFormation modèle.

Dans le \tenant-onboarding-in-saas-architecture-for-silo-model-apg-example\template dossierinfra.yaml, ouvrez et examinez le CloudFormation modèle. Ce modèle sera hydraté avec le nom du locataire extrait de la table DynamoDB d'accueil du locataire.

Le modèle fournit l'infrastructure spécifique au locataire. Dans cet exemple, il fournit la AWS KMS clé, Amazon SNSSQS, Amazon et l' CloudWatch alarme.

Développeur d'applications, AWS DevOps

Passez en revue la fonction d'intégration des locataires.

Ouvrez Function.cs et examinez le code de la fonction d'intégration des locataires, créée avec le projet Visual Studio AWS Lambda (. NETModèle Core- C#) avec le. NETPlan 6 (image du conteneur).

Ouvrez le Dockerfile et passez en revue le code. DockerfileIl s'agit d'un fichier texte contenant des instructions pour créer l'image du conteneur Lambda.

Notez que les NuGet packages suivants sont ajoutés en tant que dépendances au TenantOnboardingFunction projet :

  • Amazon.Lambda.APIGatewayEvents

  • AWSSDK.DynamoDBv2

  • Newtonsoft.Json

Développeur d'applications, AWS DevOps

Passez en revue la InfraProvisioning fonction Tenant.

Accédez à \tenant-onboarding-in-saas-architecture-for-silo-model-apg-example\src\InfraProvisioningFunction.

Ouvrez Function.cs et examinez le code de la fonction de provisionnement de l'infrastructure locataire, qui est créée avec le projet Visual Studio AWS Lambda (. NETModèle Core- C#) avec le. NETPlan 6 (image du conteneur).

Ouvrez le Dockerfile et passez en revue le code.

Notez que les NuGet packages suivants sont ajoutés en tant que dépendances au InfraProvisioningFunction projet :

  • Amazon.Lambda.DynamoDBEvents

  • AWSSDK.DynamoDBv2

  • AWSSDK.Cloudformation

Développeur d'applications, AWS DevOps
TâcheDescriptionCompétences requises

Créez la solution.

Pour créer la solution, effectuez les opérations suivantes :

  1. Dans Visual Studio 2022, ouvrez la \tenant-onboarding-in-saas-architecture-for-silo-model-apg-example\src\TenantOnboardingInfra.sln solution. 

  2. Ouvrez le menu contextuel (clic droit) de la solution, puis choisissez Créer une solution.

Remarque : Assurez-vous de mettre à jour le Amazon.CDK.Lib NuGet package avec la dernière version \tenant-onboarding-in-saas-architecture-for-silo-model-apg-example\src\TenantOnboardingInfra du projet avant de créer la solution.

Développeur d'applications

Démarrez l'AWSCDKenvironnement.

Ouvrez l'invite de commande Windows et accédez au dossier racine de AWS CDK l'application dans lequel le cdk.json fichier est disponible (\tenant-onboarding-in-saas-architecture-for-silo-model-apg-example). Exécutez la commande suivante pour le démarrage.

cdk bootstrap

Si vous avez créé un AWS profil pour les informations d'identification, utilisez la commande avec votre profil.

cdk bootstrap --profile <profile name>
AWSadministrateur, AWS DevOps

Listez les AWS CDK piles.

Pour répertorier toutes les piles à créer dans le cadre de ce projet, exécutez la commande suivante.

cdk ls cdk ls --profile <profile name>

Si vous avez créé un AWS profil pour les informations d'identification, utilisez la commande avec votre profil.

cdk ls --profile <profile name>
AWSadministrateur, AWS DevOps

Vérifiez quelles AWS ressources seront créées.

Pour passer en revue toutes les AWS ressources qui seront créées dans le cadre de ce projet, exécutez la commande suivante.

cdk diff

Si vous avez créé un AWS profil pour les informations d'identification, utilisez la commande avec votre profil.

cdk diff --profile <profile name>
AWSadministrateur, AWS DevOps

Déployez toutes les AWS ressources en utilisant AWSCDK.

Pour déployer toutes les AWS ressources, exécutez la commande suivante.

cdk deploy --all --require-approval never

Si vous avez créé un AWS profil pour les informations d'identification, utilisez la commande avec votre profil.

cdk deploy --all --require-approval never --profile <profile name>

Une fois le déploiement terminé, copiez la section API URL depuis les sorties dans l'invite de commande, comme illustré dans l'exemple suivant.

Outputs: TenantOnboardingInfraStack.TenantOnboardingAPIEndpoint42E526D7 = https://j2qmp8ds21i1i.execute-api.us-west-2.amazonaws.com/prod/
AWSadministrateur, AWS DevOps
TâcheDescriptionCompétences requises

Créez un nouveau locataire.

Pour créer le nouveau locataire, envoyez la demande curl suivante.

curl -X POST <TenantOnboardingAPIEndpoint* from CDK Output>tenant -d '{"Name":"Tenant123", "Description":"Stack for Tenant123"}'

Remplacez le paramètre <TenantOnboardingAPIEndpoint* from CDK Output> par la valeur réelle de AWSCDK, comme indiqué dans l'exemple suivant.

curl -X POST https://j2qmp8ds21i1i.execute-api.us-west-2.amazonaws.com/prod/tenant -d '{"Name":"Tenant123", "Description":"test12"}'

L'exemple suivant montre le résultat.

{"message": "A new tenant added - 5/4/2022 7:11:30 AM"}
Développeur d'applications, AWS administrateur, AWS DevOps

Vérifiez les informations du locataire nouvellement créé dans DynamoDB.

Pour vérifier les informations du locataire nouvellement créé dans DynamoDB, effectuez les étapes suivantes.

  1. Ouvrez AWS la console de gestion et accédez au service Amazon DynamoDB.

  2. Dans le menu de navigation de gauche, choisissez Explorer les éléments, puis choisissez le TenantOnboarding tableau.

    Remarque : Le nom du locataire sera précédé de. tenantcluster- Pour plus d'informations, consultez la section Informations supplémentaires.

  3. Vérifiez qu'un nouvel article est créé avec les informations du locataire.

Développeur d'applications, AWS administrateur, AWS DevOps

Vérifiez la création de la pile pour le nouveau locataire.

Vérifiez que la nouvelle pile a été créée avec succès et dotée d'une infrastructure pour le locataire nouvellement créé conformément au CloudFormation modèle.

  1. Ouvrez la CloudFormation console.

  2. Dans le volet de navigation de gauche, choisissez Stacks et vérifiez qu'une pile portant le nom du locataire a été créée avec succès.

  3. Choisissez la pile de locataires nouvellement créée, puis choisissez l'onglet Ressources. Notez la ressource d'alarme et la SQS ressource Amazon.

  4. Ouvrez un nouveau terminal avec les AWS informations d'identification configurées et pointez sur la région appropriée. Pour déclencher une alarme de test, entrez le code suivant, en le <alarm resource name> remplaçant par le nom de la ressource d'alarme indiqué à l'étape 3.

    aws cloudwatch set-alarm-state --alarm-name <alarm resource name> --state-value ALARM --state-reason 'Test setup'

    L'exemple suivant montre le code avec un nom de ressource d'alarme.

    aws cloudwatch set-alarm-state --alarm-name tenantcluster-tenant123-alarm --state-value ALARM --state-reason 'Test setup'
  5. Ouvrez la console et accédez à la SQS console Amazon. Choisissez le nom de la SQS ressource Amazon identifié à l'étape 3. Suivez les instructions de la AWS documentation pour recevoir et supprimer le message de test de l'alarme déclenchée à l'étape 4.

Développeur d'applications, AWS administrateur, AWS DevOps

Supprimez la pile de locataires.

Pour supprimer la pile de locataires, envoyez la demande curl suivante.

curl -X DELETE <TenantOnboardingAPIEndpoint* from CDK Output>tenant/<Tenant Name from previous step>

Remplacez l'espace <TenantOnboardingAPIEndpoint* from CDK Output> réservé par la valeur réelle <Tenant Name from previous step> à partir de AWS CDK et par la valeur réelle de l'étape précédente de création du locataire, comme indiqué dans l'exemple suivant.

curl -X DELETE https://j2qmp8ds21i1i.execute-api.us-west-2.amazonaws.com/prod/tenant/Tenant123

L'exemple suivant montre le résultat.

{"message": "Tenant destroyed - 5/4/2022 7:14:48 AM"}
Développeur d'applications AWS DevOps, AWS administrateur

Vérifiez la suppression de la pile pour le locataire existant.

Pour vérifier que la pile de locataires existante a été supprimée, effectuez les étapes suivantes :

  1. Ouvrez la console et naviguez jusqu'à la CloudFormation console.

  2. Dans le volet de navigation de gauche, vérifiez que la pile existante portant le nom du locataire n'est plus dans la CloudFormation console (si la console est configurée pour afficher uniquement les piles actives) ou qu'elle est en cours de suppression. Si la pile ne se trouve plus dans la CloudFormation console, utilisez la liste déroulante pour modifier le paramètre de la console de Actif à Supprimé afin de voir la pile supprimée et de vérifier qu'elle a bien été supprimée.

Développeur d'applications, AWS administrateur, AWS DevOps
TâcheDescriptionCompétences requises

Détruisez l'environnement.

Avant le nettoyage de la pile, assurez-vous de ce qui suit :

  • Tous les enregistrements de DynamoDB sont supprimés soit lors de l'opération de suppression du locataire précédente, soit via la console DynamoDB, soit. API Chaque suppression d'enregistrement de locataire initiera le nettoyage de son AWS CloudFormation homologue. 

  • Toutes les AWS CloudFormation piles basées sur les locataires sont nettoyées (au cas où la logique de nettoyage du déclencheur DynamoDB échouerait) sur la console. AWS CloudFormation

Une fois le test terminé, AWS CDK vous pouvez l'utiliser pour détruire toutes les piles et les ressources associées en exécutant la commande suivante.

cdk destroy --all;

Si vous avez créé un AWS profil pour les informations d'identification, utilisez-le.

Confirmez l'invite de suppression de la pile pour supprimer la pile.

AWSadministrateur, AWS DevOps

Nettoyez Amazon CloudWatch Logs.

Le processus de suppression de la pile ne nettoie pas CloudWatch les journaux (groupes de journaux et journaux) générés par la pile. Nettoyez manuellement les CloudWatch ressources à l'aide de la CloudWatch console ou duAPI.

Développeur d'applications AWS DevOps, AWS administrateur

Ressources connexes

Informations supplémentaires

Pile technologique de plan de contrôle

Le CDK code écrit dedans. NETest utilisé pour fournir l'infrastructure du plan de contrôle, qui comprend les ressources suivantes :

  1. APIPasserelle

    Sert de point REST API d'entrée pour la pile de plans de contrôle.

  2. Intégration des locataires à la fonction Lambda

    Cette fonction Lambda est initiée par API Gateway à l'aide de la méthode m.

    Une API demande de POST méthode entraîne l'insertion de (tenant name,tenant description) dans la table Tenant Onboarding DynamoDB.

    Dans cet exemple de code, le nom du tenant est également utilisé dans le cadre du nom de la pile de locataires et des noms des ressources de cette pile. Cela permet de faciliter l'identification de ces ressources. Ce nom de locataire doit être unique dans l'ensemble de la configuration pour éviter les conflits ou les erreurs. La configuration détaillée de la validation des entrées est expliquée dans la documentation IAMdes rôles et dans la section Limitations.

    Le processus de persistance de la table DynamoDB n'aboutira que si le nom du locataire n'est utilisé dans aucun autre enregistrement de la table.

    Dans ce cas, le nom du locataire est la clé de partition de cette table, car seule la clé de partition peut être utilisée comme expression de PutItem condition.

    Si le nom du locataire n'a jamais été enregistré auparavant, l'enregistrement sera correctement enregistré dans la table.

    Toutefois, si le nom du locataire est déjà utilisé par un enregistrement existant dans la table, l'opération échouera et déclenchera une exception ConditionalCheckFailedException DynamoDB. L'exception sera utilisée pour renvoyer un message d'échec (HTTP BadRequest) indiquant que le nom du locataire existe déjà.

    Une API demande de DELETE méthode supprimera l'enregistrement d'un nom de locataire spécifique de la table Tenant Onboardin g.

    Dans cet exemple, la suppression de l'enregistrement DynamoDB réussira même si l'enregistrement n'existe pas.

    Si l'enregistrement cible existe et est supprimé, il créera un enregistrement de flux DynamoDB. Dans le cas contraire, aucun enregistrement en aval ne sera créé.

  3. Intégration du locataire à DynamoDB, avec Amazon DynamoDB Streams activé

    Cela enregistre les informations de métadonnées du locataire, et toute sauvegarde ou suppression d'enregistrement enverra un flux en aval à la fonction Tenant Infrastructure Lambda. 

  4. Fonction Lambda de l'infrastructure locataire

    Cette fonction Lambda est initiée par l'enregistrement de flux DynamoDB de l'étape précédente. Si l'enregistrement concerne un INSERT événement, il invite AWS CloudFormation à créer une nouvelle infrastructure locataire avec le CloudFormation modèle stocké dans un compartiment S3. Si l'enregistrement est pourREMOVE, il initie la suppression d'une pile existante en fonction du Tenant Name champ de l'enregistrement du flux.

  5. Compartiment S3

    C'est pour stocker le CloudFormation modèle.

  6. IAMdes rôles pour chaque fonction Lambda et un rôle de service pour CloudFormation

    Chaque fonction Lambda a un IAM rôle unique avec des autorisations de moindre privilège pour accomplir sa tâche. Par exemple, la fonction Tenant On-boarding Lambda dispose d'un accès en lecture/écriture à DynamoDB, et la fonction Tenant Infrastructure Lambda ne peut lire que le flux DynamoDB.

    Un rôle CloudFormation de service personnalisé est créé pour le provisionnement de la pile des locataires. Ce rôle de service contient des autorisations supplémentaires pour le provisionnement des CloudFormation piles (par exemple, la AWS KMS clé). Cela permet de répartir les rôles entre Lambda et d' CloudFormation éviter toutes les autorisations sur un seul rôle (rôle Lambda d'infrastructure).

    Les autorisations qui autorisent des actions puissantes (telles que la création et la suppression de CloudFormation piles) sont verrouillées et autorisées uniquement sur les ressources commençant tenantcluster- par. L'exception est AWS KMS due à sa convention de dénomination des ressources. Le nom du locataire ingéré à partir du API sera ajouté au début, tenantcluster- ainsi que d'autres contrôles de validation (alphanumérique avec tiret uniquement, et limité à moins de 30 caractères pour s'adapter à la plupart AWS des noms de ressources). Cela garantit que le nom du locataire n'entraînera pas accidentellement une perturbation des infrastructures ou des ressources de base.

Pile technologique pour locataires

Un CloudFormation modèle est stocké dans le compartiment S3. Le modèle fournit la AWS KMS clé spécifique au locataire, une CloudWatch alarme, un SNS sujet, une SQS file d'attente et une SQS politique.

La AWS KMS clé est utilisée pour le chiffrement des données par Amazon SNS et Amazon SQS pour leurs messages. Les pratiques de sécurité pour AwsSolutionsSNS2et AwsSolutions vous SQS2 recommandent de configurer Amazon SNS et Amazon SQS avec le chiffrement. Toutefois, les CloudWatch alarmes ne fonctionnent pas avec Amazon SNS lorsque vous utilisez une clé AWS gérée. Dans ce cas, vous devez utiliser une clé gérée par le client. Pour plus d'informations, consultez le centre de AWS connaissances.

La SQS politique est utilisée dans la SQS file d'attente Amazon pour permettre au SNS sujet créé de transmettre le message à la file d'attente. Sans cette SQS politique, l'accès sera refusé. Pour plus d'informations, consultez la SNSdocumentation Amazon.