Comment AWS Proton approvisionne l'infrastructure - AWS Proton

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.

Comment AWS Proton approvisionne l'infrastructure

AWS Protonpeut fournir une infrastructure de plusieurs manières :

  • AWS-provisionnement géré : AWS Proton appelle le moteur de provisionnement en votre nom. Cette méthode ne prend en charge que les ensembles AWS CloudFormation de modèles. Pour plus d'informations, veuillez consulter AWS CloudFormation fichiers IaC.

  • CodeBuildprovisionnement : permet AWS Proton AWS CodeBuild d'exécuter les commandes shell que vous fournissez. Vos commandes peuvent lire les entrées qui AWS Proton fournissent et sont responsables du provisionnement ou du déprovisionnement de l'infrastructure et de la génération de valeurs de sortie. Un ensemble de modèles pour cette méthode inclut vos commandes dans un fichier manifeste et tous les programmes, scripts ou autres fichiers dont ces commandes peuvent avoir besoin.

    À titre d'exemple d'utilisation du CodeBuild provisionnement, vous pouvez inclure du code qui utilise le AWS Cloud Development Kit (AWS CDK) pour provisionner AWS des ressources, ainsi qu'un manifeste qui installe le CDK et exécute votre code CDK.

    Pour plus d'informations, veuillez consulter CodeBuild ensemble de modèles de provisionnement.

    Note

    Vous pouvez utiliser le CodeBuild provisionnement avec des environnements et des services. Pour le moment, vous ne pouvez pas provisionner des composants de cette manière.

  • Provisionnement autogéré : AWS Proton émet une pull request (PR) vers un référentiel que vous fournissez, dans lequel votre propre système de déploiement d'infrastructure exécute le processus de provisionnement. Cette méthode ne prend en charge que les bundles de modèles Terraform. Pour plus d'informations, veuillez consulter Fichiers Terraform iAC.

AWS Protondétermine et définit la méthode de provisionnement pour chaque environnement et service séparément. Lorsque vous créez ou mettez à jour un environnement ou un service, AWS Proton examine le bundle de modèles que vous fournissez et détermine la méthode de provisionnement indiquée par le bundle de modèles. Au niveau de l'environnement, vous fournissez les paramètres dont l'environnement et ses services potentiels peuvent avoir besoin pour leurs méthodes de provisionnement : rôles AWS Identity and Access Management (IAM), connexion à un compte d'environnement ou référentiel d'infrastructure.

Les développeurs qui fournissent AWS Proton un service bénéficient de la même expérience, quelle que soit la méthode de provisionnement utilisée. Les développeurs n'ont pas besoin de connaître la méthode de provisionnement et n'ont pas besoin de modifier quoi que ce soit dans le processus de provisionnement des services. Le modèle de service définit la méthode de provisionnement et chaque environnement dans lequel un développeur déploie le service fournit les paramètres nécessaires au provisionnement des instances de service.

Le schéma suivant résume certaines caractéristiques principales des différentes méthodes de provisionnement. Les sections qui suivent le tableau fournissent des détails sur chaque méthode.

Méthode d'approvisionnement Modèles Approvisionnement État suivi

AWS-géré

manifeste, schéma, fichier IaC (CloudFormation)

AWS Proton(à traversCloudFormation)

AWS Proton(à traversCloudFormation)

CodeBuild

manifeste (avec commandes), schéma, dépendances de commandes (par exemple, AWS CDK code)

AWS Proton(à traversCodeBuild)

AWS Proton(vos commandes renvoient l'état viaCodeBuild)

autogéré

manifeste, schéma, fichiers IaC (Terraform)

Votre code (via des actions Git)

Votre code (transmis AWS via un appel d'API)

Comment fonctionne AWS le provisionnement géré

Lorsqu'un environnement ou un service utilise le provisionnement AWS géré, l'infrastructure est provisionnée comme suit :

  1. Un AWS Proton client (un administrateur ou un développeur) crée la AWS Proton ressource (un environnement ou un service). Le client sélectionne un modèle pour la ressource et fournit les paramètres requis. Pour plus d'informations, consultez la section suivanteConsidérations relatives au AWS provisionnement géré.

  2. AWS Protonaffiche un AWS CloudFormation modèle complet pour le provisionnement de la ressource.

  3. AWS Protonappels AWS CloudFormation pour démarrer le provisionnement à l'aide du modèle rendu.

  4. AWS Protonsurveille en permanence le AWS CloudFormation déploiement.

  5. Une fois le provisionnement terminé, AWS Proton signale les erreurs en cas d'échec et capture les résultats du provisionnement, tels que l'identifiant Amazon VPC, en cas de succès.

Le schéma suivant montre qu'il AWS Proton prend directement en charge la plupart de ces étapes.

Schéma illustrant le AWS provisionnement géré dans AWS Proton

Considérations relatives au AWS provisionnement géré

  • Rôle de provisionnement de l'infrastructure : lorsqu'un environnement ou l'une des instances de service qui s'y exécutent peut utiliser le provisionnement AWS géré, un administrateur doit configurer un rôle IAM (directement ou dans le cadre d'une connexion à un compte d'AWS Protonenvironnement). AWS Protonutilise ce rôle pour provisionner l'infrastructure de ces ressources AWS de provisionnement gérées. Le rôle doit disposer des autorisations nécessaires AWS CloudFormation pour créer toutes les ressources incluses dans les modèles de ces ressources.

    Pour plus d'informations, consultez Rôles IAM et AWS Proton Exemples de politiques relatives aux rôles de service IAM.

  • Provisionnement de services : lorsqu'un développeur déploie une instance de service qui utilise le AWS provisionnement géré dans l'environnement, AWS Proton utilise le rôle attribué à cet environnement pour provisionner l'infrastructure de l'instance de service. Les développeurs ne voient pas ce rôle et ne peuvent pas le modifier.

  • Service avec pipeline : un modèle de service qui utilise le provisionnement AWS géré peut inclure une définition de pipeline écrite dans le schéma AWS CloudFormation YAML. AWS Protoncrée également le pipeline en appelantAWS CloudFormation. Le rôle AWS Proton utilisé pour créer un pipeline est distinct de celui de chaque environnement individuel. Ce rôle est attribué AWS Proton séparément, une seule fois au niveau du AWS compte, et il est utilisé pour provisionner et gérer tous les AWS pipelines gérés. Ce rôle doit être autorisé à créer des pipelines et d'autres ressources dont vos pipelines ont besoin.

    Les procédures suivantes montrent comment attribuer le rôle de pipelineAWS Proton.

    AWS Proton console
    Pour fournir le rôle de pipeline
    1. Dans la AWS Protonconsole, dans le volet de navigation, choisissez Paramètres > Paramètres du compte, puis sélectionnez Configurer.

    2. Utilisez la section Rôle AWS géré par le pipeline pour configurer un rôle de pipeline nouveau ou existant pour le provisionnement AWS géré.

    AWS Proton API
    Pour fournir le rôle de pipeline
    1. Utilisez l'action UpdateAccountSettingsAPI.

    2. Saisissez l'Amazon Resource Name (ARN) de votre rôle de pipelineServiceRoleArn service.

    AWS CLI

    Pour fournir le rôle de pipeline

    Exécutez la commande suivante :

    $ aws proton update-account-settings \ --pipeline-service-role-arn \ "arn:aws:iam::123456789012:role/my-pipeline-role"

Comment fonctionne CodeBuild le provisionnement

Lorsqu'un environnement ou un service utilise le CodeBuild provisionnement, l'infrastructure est provisionnée comme suit :

  1. Un AWS Proton client (un administrateur ou un développeur) crée la AWS Proton ressource (un environnement ou un service). Le client sélectionne un modèle pour la ressource et fournit les paramètres requis. Pour plus d'informations, consultez la section suivanteConsidérations relatives au CodeBuild provisionnement.

  2. AWS Protonrestitue un fichier d'entrée avec les valeurs des paramètres d'entrée pour le provisionnement de la ressource.

  3. AWS Protonappels CodeBuild pour démarrer un travail. La CodeBuild tâche exécute les commandes du shell client spécifiées dans le modèle. Ces commandes fournissent l'infrastructure souhaitée, tout en lisant éventuellement les valeurs d'entrée.

  4. Une fois le provisionnement terminé, la commande finale du client renvoie l'état du provisionnement à CodeBuild et appelle l'action de l'NotifyResourceDeploymentStatusChangeAWS ProtonAPI pour fournir des résultats, tels que l'identifiant Amazon VPC, le cas échéant.

    Important

    Assurez-vous que vos commandes renvoient correctement l'état du provisionnement CodeBuild et fournissent les sorties. Si ce n'est pas le cas, ils ne AWS Proton peuvent pas suivre correctement l'état du provisionnement et ne peuvent pas fournir de résultats corrects aux instances de service.

Le schéma suivant illustre les étapes qui s'AWS Protonexécutent et celles que vos commandes exécutent dans le cadre d'une CodeBuild tâche.

Schéma illustrant le provisionnement CodeBuild basé dans AWS Proton

Considérations relatives au CodeBuild provisionnement

  • Rôle de provisionnement de l'infrastructure : lorsqu'un environnement ou l'une des instances de service qui s'y exécutent peut utiliser le provisionnement CodeBuild basé, un administrateur doit configurer un rôle IAM (directement ou dans le cadre d'une connexion à un compte d'AWS Protonenvironnement). AWS Protonutilise ce rôle pour provisionner l'infrastructure de ces ressources de CodeBuild provisionnement. Le rôle doit disposer des autorisations nécessaires CodeBuild pour créer toutes les ressources que vos commandes dans les modèles de ces ressources fournissent.

    Pour plus d'informations, consultez Rôles IAM et AWS Proton Exemples de politiques relatives aux rôles de service IAM.

  • Provisionnement de services : lorsqu'un développeur déploie une instance de service qui utilise le CodeBuild provisionnement dans l'environnement, AWS Proton utilise le rôle attribué à cet environnement pour fournir l'infrastructure de l'instance de service. Les développeurs ne voient pas ce rôle et ne peuvent pas le modifier.

  • Service avec pipeline : un modèle de service qui utilise le CodeBuild provisionnement peut inclure des commandes pour provisionner un pipeline. AWS Protoncrée également le pipeline en appelantCodeBuild. Le rôle AWS Proton utilisé pour créer un pipeline est distinct de celui de chaque environnement individuel. Ce rôle est attribué AWS Proton séparément, une seule fois au niveau du AWS compte, et il est utilisé pour provisionner et gérer tous les pipelines CodeBuild basés. Ce rôle doit être autorisé à créer des pipelines et d'autres ressources dont vos pipelines ont besoin.

    Les procédures suivantes montrent comment attribuer le rôle de pipelineAWS Proton.

    AWS Proton console
    Pour fournir le rôle de pipeline
    1. Dans la AWS Protonconsole, dans le volet de navigation, choisissez Paramètres > Paramètres du compte, puis sélectionnez Configurer.

    2. Utilisez la section Rôle de provisionnement du pipeline Codebuild pour configurer un rôle de pipeline nouveau ou existant pour CodeBuild le provisionnement.

    AWS Proton API
    Pour fournir le rôle de pipeline
    1. Utilisez l'action UpdateAccountSettingsAPI.

    2. Saisissez l'Amazon Resource Name (ARN) de votre rôle de pipelineCodebuildRoleArn service.

    AWS CLI

    Pour fournir le rôle de pipeline

    Exécutez la commande suivante :

    $ aws proton update-account-settings \ --pipeline-codebuild-role-arn \ "arn:aws:iam::123456789012:role/my-pipeline-role"

Comment fonctionne l'

Lorsqu'un environnement est configuré pour utiliser le provisionnement autogéré, l'infrastructure est provisionnée comme suit :

  1. Un AWS Proton client (un administrateur ou un développeur) crée la AWS Proton ressource (un environnement ou un service). Le client sélectionne un modèle pour la ressource et fournit les paramètres requis. Pour un environnement, le client fournit également un référentiel d'infrastructure lié. Pour plus d'informations, consultez la section suivanteConsidérations relatives à l'.

  2. AWS Protongénère un modèle Terraform complet. Il se compose d'un ou plusieurs fichiers Terraform, potentiellement dans plusieurs dossiers, et d'un fichier de .tfvars variables. AWS Protonécrit les valeurs des paramètres fournies lors de l'appel de création de ressources dans ce fichier de variables.

  3. AWS Protonsoumet un PR au référentiel d'infrastructure avec le modèle Terraform rendu.

  4. Lorsque le client (administrateur ou développeur) fusionne le PR, l'automatisation du client déclenche le moteur de provisionnement pour démarrer le provisionnement de l'infrastructure à l'aide du modèle fusionné.

    Note

    Si le client (administrateur ou développeur) ferme le PR, AWS Proton reconnaît le PR comme fermé et marque le déploiement comme annulé.

  5. Lorsque le provisionnement est terminé, l'automatisation du client appelle l'action de l'NotifyResourceDeploymentStatusChangeAWS ProtonAPI pour indiquer qu'il est terminé, fournir le statut (réussite ou échec) et fournir des résultats, tels que l'identifiant Amazon VPC, le cas échéant.

    Important

    Assurez-vous que votre code d'automatisation rappelle l'état et AWS Proton les sorties du provisionnement. Si ce n'est pas le cas, vous AWS Proton pouvez considérer que le provisionnement est en attente plus longtemps qu'il ne le devrait et continuer à afficher le statut En cours.

Le schéma suivant illustre les étapes à AWS Proton suivre et celles effectuées par votre propre système de provisionnement.

Schéma illustrant le provisionnement autogéré dans AWS Proton

Considérations relatives à l'

  • Référentiel d'infrastructure : lorsqu'un administrateur configure un environnement pour le provisionnement autogéré, il doit fournir un référentiel d'infrastructure lié. AWS Protonsoumet des PR à ce référentiel pour provisionner l'infrastructure de l'environnement et toutes les instances de service qui y sont déployées. L'action d'automatisation appartenant au client dans le référentiel doit assumer un rôle IAM doté des autorisations nécessaires pour créer toutes les ressources incluses dans vos modèles d'environnement et de service, ainsi qu'une identité qui reflète le compte de destination. AWS Pour un exemple d'GitHubaction qui assume un rôle, consultez la section Prise en charge d'un rôle dans la documentation relative à l'action « Configurer les informations d'AWSidentification » pour GitHub les actions.

  • Autorisations : votre code de provisionnement doit s'authentifier auprès d'un compte si nécessaire (par exemple, vous authentifier auprès d'un AWS compte) et fournir une autorisation de provisionnement des ressources (par exemple, fournir un rôle).

  • Provisionnement de service : lorsqu'un développeur déploie une instance de service qui utilise le provisionnement autogéré dans l'environnement, AWS Proton soumet un PR au référentiel associé à l'environnement afin de fournir l'infrastructure de l'instance de service. Les développeurs ne voient pas le référentiel et ne peuvent pas le modifier.

    Note

    Les développeurs qui créent des services utilisent le même processus, quelle que soit la méthode de provisionnement, et la différence n'est pas prise en compte. Toutefois, avec le provisionnement autogéré, les développeurs peuvent être confrontés à un temps de réponse plus lent, car ils doivent attendre que quelqu'un (qui n'est peut-être pas eux-mêmes) fusionne le PR dans le référentiel d'infrastructure avant que le provisionnement ne puisse commencer.

  • Service avec pipeline : un modèle de service pour un environnement doté d'un provisionnement autogéré peut inclure une définition de pipeline (par exemple, un AWS CodePipeline pipeline), écrite en Terraform HCL. Pour AWS Proton permettre le provisionnement de ces pipelines, un administrateur fournit un référentiel de pipelines lié àAWS Proton. Lors du provisionnement d'un pipeline, l'action d'automatisation appartenant au client dans le référentiel doit assumer un rôle IAM avec des autorisations pour approvisionner le pipeline et une identité qui reflète le compte de destination. AWS Le référentiel et le rôle du pipeline sont distincts de ceux utilisés pour chaque environnement individuel. Le référentiel lié est fourni AWS Proton séparément, une seule fois au niveau du AWS compte, et il est utilisé pour approvisionner et gérer tous les pipelines. Le rôle doit être autorisé à créer des pipelines et d'autres ressources dont vos pipelines ont besoin.

    Les procédures suivantes montrent comment fournir le rôle et le pipelineAWS Proton.

    AWS Proton console
    Pour fournir le rôle de pipeline
    1. Dans la AWS Protonconsole, dans le volet de navigation, choisissez Paramètres > Paramètres du compte, puis sélectionnez Configurer.

    2. Utilisez la section Référentiel du pipeline CI/CD pour configurer un lien de référentiel nouveau ou existant.

    AWS Proton API
    Pour fournir le rôle de pipeline
    1. Utilisez l'action UpdateAccountSettingsAPI.

    2. Indiquez le fournisseur, le nom et la branche de votre référentiel de pipeline dans le pipelineProvisioningRepository paramètre.

    AWS CLI

    Pour fournir le rôle de pipeline

    Exécutez la commande suivante :

    $ aws proton update-account-settings \ --pipeline-provisioning-repository \ "provider=GITHUB,name=my-pipeline-repo-name,branch=my-branch"
  • Suppression des ressources provisionnées autogérées — Les modules Terraform peuvent inclure des éléments de configuration nécessaires au fonctionnement de Terraform, en plus des définitions de ressources. Par conséquent, AWS Proton impossible de supprimer tous les fichiers Terraform d'un environnement ou d'une instance de service. AWS ProtonMarquez plutôt les fichiers à supprimer et mettez à jour un indicateur dans les métadonnées PR. Votre automatisation peut lire cet indicateur et l'utiliser pour déclencher une commande de destruction de terraform.