

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.

# Tutoriel : Créez un pipeline qui publie votre application sans serveur sur AWS Serverless Application Repository
<a name="tutorials-serverlessrepo-auto-publish"></a>

Vous pouvez l'utiliser AWS CodePipeline pour fournir en continu votre application AWS SAM sans serveur au AWS Serverless Application Repository.

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé CodePipeline pour les artefacts. (Ceci est différent du compartiment utilisé pour une action source S3.) Si le compartiment d'artefacts S3 se trouve dans un compte différent de celui de votre pipeline, assurez-vous que le compartiment d'artefacts S3 appartient à cette personne sûre et Comptes AWS qu'elle sera fiable.

Ce didacticiel explique comment créer et configurer un pipeline pour créer votre application sans serveur hébergée GitHub et publiée AWS Serverless Application Repository automatiquement sur le. Le pipeline est utilisé GitHub comme fournisseur de source et CodeBuild comme fournisseur de build. Pour publier votre application sans serveur sur le AWS Serverless Application Repository, vous déployez une [application](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~aws-serverless-codepipeline-serverlessrepo-publish ) (à partir du AWS Serverless Application Repository) et associez la fonction Lambda créée par cette application en tant que fournisseur d'actions Invoke dans votre pipeline. Vous pouvez ensuite fournir des mises à jour d'applications en continu sur le AWS Serverless Application Repository, sans écrire de code.

**Important**  
La plupart des actions que vous ajoutez à votre pipeline dans le cadre de cette procédure impliquent AWS des ressources que vous devez créer avant de créer le pipeline. AWS les ressources pour vos actions source doivent toujours être créées dans la même AWS région que celle où vous créez votre pipeline. Par exemple, si vous créez votre pipeline dans la région USA Est (Ohio), votre CodeCommit référentiel doit se trouver dans la région USA Est (Ohio).   
Vous pouvez ajouter des actions interrégionales lorsque vous créez votre pipeline. AWS les ressources pour les actions interrégionales doivent se trouver dans la même AWS région que celle où vous prévoyez d'exécuter l'action. Pour de plus amples informations, veuillez consulter [Ajouter une action interrégionale dans CodePipeline](actions-create-cross-region.md).

## Avant de commencer
<a name="tutorials-serverlessrepo-auto-publish-prereq"></a>

Dans ce didacticiel, nous supposons ce qui suit : 
+ Vous connaissez [AWS Serverless Application Model (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/) et [AWS Serverless Application Repository](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/).
+ Vous avez une application sans serveur hébergée dans GitHub laquelle vous avez publié à l' AWS Serverless Application Repository aide de la AWS SAM CLI. Pour publier un exemple d'application sur le AWS Serverless Application Repository, voir [Démarrage rapide : publication d'applications](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-quick-start.html) dans le *guide du AWS Serverless Application Repository développeur*. Pour publier votre propre application sur le AWS Serverless Application Repository, consultez la section [Publication d'applications à l'aide de la AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-publishing-applications.html) dans le *guide du AWS Serverless Application Model développeur*.

## Étape 1 : Créer un fichier buildspec.yml
<a name="serverlessrepo-auto-publish-create-buildspec"></a>

Créez un `buildspec.yml` fichier avec le contenu suivant et ajoutez-le au GitHub référentiel de votre application sans serveur. *template.yml*Remplacez-le par le AWS SAM modèle de votre application et *bucketname* par le compartiment S3 dans lequel votre application packagée est stockée.

```
version: 0.2
phases:
  install:
    runtime-versions:
        python: 3.8
  build:
    commands:
      - sam package --template-file template.yml --s3-bucket bucketname --output-template-file packaged-template.yml
artifacts:
  files:
    - packaged-template.yml
```

## Étape 2 : Créer et configurer votre pipeline
<a name="serverlessrepo-auto-publish-create-pipeline"></a>

Suivez ces étapes pour créer votre pipeline à l' Région AWS endroit où vous souhaitez publier votre application sans serveur.

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Si nécessaire, passez à l' Région AWS endroit où vous souhaitez publier votre application sans serveur.

1. Sur la page **Bienvenue**, la page **Démarrez** ou la page **Pipelines**, choisissez **Créer un pipeline**.

1. Sur la page **Étape 1 : Choisir une option de création**, sous **Options de création**, choisissez l'option **Créer un pipeline personnalisé**. Choisissez **Suivant**.

1. Choisissez **Créer un pipeline**. Sur la page **Étape 2 : Choisir les paramètres du pipeline**, dans **Nom du pipeline**, entrez le nom de votre pipeline.

1. Dans **Type de pipeline**, choisissez **V2**. Pour de plus amples informations, veuillez consulter [Types de pipelines](pipeline-types.md). Choisissez **Suivant**.

1. Dans **Rôle de service**, choisissez **Nouveau rôle de service** pour autoriser CodePipeline la création d'un rôle de service dans IAM.

1. Laissez les paramètres sous **Advanced settings (Paramètres avancés)** à leurs valeurs par défaut, puis choisissez **Suivant**.

1. Sur la page **Étape 3 : Ajouter une étape source**, dans **Source provider**, sélectionnez **GitHub**.

1. Sous **Connexion**, choisissez une connexion existante ou créez-en une nouvelle. Pour créer ou gérer une connexion pour votre action GitHub source, consultez[GitHub connexions](connections-github.md).

1. Dans **Repository**, choisissez votre référentiel GitHub source.

1. Dans **Branche**, choisissez votre GitHub succursale.

1. Conservez les valeurs par défaut restantes pour l'action source. Choisissez **Suivant**.

1. Sur la page **Étape 4 : Ajouter une phase de construction**, ajoutez une étape de construction :

   1. Dans le champ **Fournisseur de génération**, choisissez **AWS CodeBuild**. Pour **Région**, utilisez la région du pipeline.

   1. Sélectionnez **Create a project (Créer un projet)**.

   1. Dans **Nom du projet**, saisissez un nom pour ce projet de génération.

   1. Dans le champ **Image d'environnement**, choisissez **Image gérée**. Pour **Système d'exploitation**, choisissez **Ubuntu**.

   1. Pour **Exécution** et **Version d'exécution**, choisissez l'exécution et la version d'exécution requises pour votre application sans serveur.

   1. Pour **Rôle de service**, choisissez **Nouveau rôle de service**.

   1. Pour **Build specifications (Spécifications de génération)**, choisissez **Use a buildspec file (Utiliser un fichier buildspec)**.

   1. Choisissez **Continuer vers CodePipeline**. Cela ouvre la CodePipeline console et crée un CodeBuild projet qui utilise le `buildspec.yml` dans votre référentiel pour la configuration. Le projet de construction utilise un rôle de service pour gérer les Service AWS autorisations. Cette étape peut prendre quelques minutes.

   1. Choisissez **Suivant**.

1. À **l'étape 5 : Ajouter une phase de test**, choisissez **Ignorer l'étape de test**, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. 

   Choisissez **Suivant**.

1. Sur la page **Étape 6 : Ajouter une phase de déploiement**, choisissez **Ignorer l'étape de déploiement**, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. Choisissez **Suivant**.

1. À **l'étape 7 : Révision**, choisissez **Créer un pipeline**. Vous devriez voir un schéma illustrant les étapes.

1. Accordez au rôle de CodeBuild service l'autorisation d'accéder au compartiment S3 dans lequel votre application packagée est stockée.

   1. À l'étape **Génération** de votre nouveau pipeline, choisissez **CodeBuild**.

   1. Choisissez l'onglet **Détails de la génération**.

   1. Dans **Environment**, choisissez le rôle CodeBuild de service pour ouvrir la console IAM.

   1. Développez la sélection pour `CodeBuildBasePolicy`, puis choisissez **Modifier la stratégie**.

   1. Choisissez **JSON**.

   1. Ajoutez un nouvel énoncé de stratégie avec le contenu suivant. L'instruction permet CodeBuild de placer des objets dans le compartiment S3 dans lequel votre application empaquetée est stockée. *bucketname*Remplacez-le par le nom de votre compartiment S3.

      ```
              {
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:s3:::bucketname/*"
                  ],
                  "Action": [
                      "s3:PutObject"
                  ]
              }
      ```

   1. Choisissez **Examiner une politique**.

   1. Sélectionnez **Enregistrer les modifications**.

## Étape 3 : Déployer l'application de publication
<a name="serverlessrepo-auto-publish-deploy-app"></a>

Procédez comme suit pour déployer l'application qui contient la fonction Lambda qui effectue la publication sur. AWS Serverless Application Repository Cette application s'appelle **aws-serverless-codepipeline-serverlessrepo-publish**.

**Note**  
Vous devez déployer l'application sur le même site Région AWS que votre pipeline.

1. Accédez à la page de l'[application](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~aws-serverless-codepipeline-serverlessrepo-publish ) et choisissez **Déployer**.

1. Sélectionnez **Je comprends que cette application crée des rôles IAM personnalisés**. 

1. Choisissez **Déployer**.

1. Choisissez **View CloudFormation Stack** pour ouvrir la CloudFormation console.

1. Développez la section **Ressources**. Vous voyez **ServerlessRepoPublish**, laquelle est du genre **AWS::Lambda::Function**. Prenez note de l'ID physique de cette ressource pour l'étape suivante. Utilisez cet ID physique lorsque vous créez la nouvelle action de publication dans CodePipeline.

## Étape 4 : Créer l'action de publication
<a name="serverlessrepo-auto-publish-create-action"></a>

Procédez comme suit pour créer l'action de publication dans votre pipeline.

1. Ouvrez la CodePipeline console à l'adresse [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Dans le volet de navigation de gauche, choisissez le pipeline à modifier.

1. Choisissez **Modifier**.

1. Après la dernière étape de votre pipeline, choisissez **\$1Ajouter une étape**. Dans **Nom de l'étape**, saisissez un nom, tel que **Publish**, puis choisissez **Ajouter une étape**.

1. Dans la nouvelle étape, choisissez **\$1 Add action group (\$1 Ajouter un groupe d'actions)**.

1. Saisissez un nom d'action. Dans **Fournisseur d'action**, dans **Invoquer**, choisissez **AWS Lambda**.

1. Dans **Artefacts d'entrée**, sélectionnez **BuildArtifact**.

1. Dans **Nom de la fonction**, choisissez l'ID physique de la fonction Lambda que vous avez noté à l'étape précédente.

1. Choisissez **Enregistrer** pour l'action.

1. Choisissez **Effectué** pour l'étape.

1. Dans le coin supérieur droit, choisissez **Enregistrer**.

1. Pour vérifier votre pipeline, apportez une modification à votre application dans GitHub. Par exemple, modifiez la description de l'application dans la `Metadata` section de votre fichier AWS SAM modèle. Validez le changement et envoyez-le à votre GitHub agence. Cela déclenche l'exécution de votre pipeline. Une fois le pipeline terminé, vérifiez que votre application a été mise à jour avec vos modifications dans le [AWS Serverless Application Repository](https://console.aws.amazon.com/serverlessrepo/home).