Exemple de configuration minimale pour publier automatiquement Lambda par Java avec un pipeline de code

TL;DR

Le document suivant fournit un exemple d'automatisation de la publication des fonctions Lambda dans node.js. http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/automating-deployment.html

Dans ce document, nous allons écrire une application similaire à celle-ci en Java et automatiser sa publication. Minimisez l'explication de la signification et du rôle de chaque élément. (Je ne suis pas sûr. Je suis désolé.) Je vais donner un exemple de l'exemple d'opération minimum.

Dans ce document, divers paramètres sont saisis manuellement sur la console de gestion. La procédure peut avoir changé en raison de futures modifications de l'interface utilisateur. S'il vous plaît, pardonnez-moi.

supposition

Préparation

Créer un rôle

Ouvrez la console de gestion IAM et créez un rôle comme indiqué ci-dessous.

article valeur Remarques
Nom cloudformation-lambda-execution-role
Type de rouleau AWS CloudFormation Lors de la création, sélectionnez "Rôle de service AWS". Sur l'écran du rôle créé, il sera affiché dans l'onglet Relation d'approbation.
Politique jointe AWSLambdaExecute Sur l'écran des rôles, il apparaît dans l'onglet Permissions => Stratégie administrative

Après avoir créé un rôle une fois, ouvrez le rôle créé dans la console de gestion et cliquez sur «Ajouter une stratégie en ligne». Après avoir procédé à Politique personnalisée-> Sélectionner, entrez le contenu suivant. Définissez le nom de la stratégie comme il convient.

{
    "Statement": [
        {
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:GetBucketVersioning"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::codepipeline*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "lambda:*"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "iam:GetRole",
                "iam:CreateRole",
                "iam:DeleteRole"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "iam:AttachRolePolicy",
                "iam:DetachRolePolicy"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "cloudformation:CreateChangeSet"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        }
    ],
    "Version": "2012-10-17"
}

Remarque: ce n'est peut-être pas l'autorité minimale requise. Je voudrais le réduire autant que possible dans les futures mises à jour de cet article.

Placez le fichier sur github

Enregistrez le code source de l'application sur github.

Veuillez vous référer à l'exemple de référentiel pour le contenu spécifique du fichier. https://github.com/kazurof/minimum-java-lambda-with-codepipeline Décrivez la structure des répertoires du fichier.

│  build.gradle
│  buildspec.yml
│  gradlew
│  gradlew.bat
│  minimum-lambda-java-model.yaml
│
│
├─gradle
│  └─wrapper
│          gradle-wrapper.jar
│          gradle-wrapper.properties
│
└─src
    └─main
        └─java
            └─codepipelinesample
                    Main.java

Supplément

Le nom du référentiel S3 à utiliser est décrit dans buildspec.yml. (D'abord, ʻauto-release-sample`.) Si vous voulez l'exécuter, changez-le par le nom du référentiel que vous avez préparé.

Créer un CodePipeline

Ouvrez la console de gestion AWS CodePipeline et créez le pipeline comme suit:

Nom du pipeline

Tout va bien tant que vous connaissez le nom du pipeline.

La source

article valeur Remarques
Fournisseur source GitHub Si vous sélectionnez GitHub, spécifiez l'URL et la branche du référentiel GitHub, effectuez l'authentification OAuth et autorisez Code Pipeline à accéder au référentiel GitHub spécifié.
Catégorie d'action La source Vous ne serez pas invité à entrer lors de la création. Tout ce qui peut être attaché automatiquement est OK
Nom de l'action Source Vous ne serez pas invité à entrer lors de la création. Vous pouvez utiliser le nom qui est automatiquement attribué
Nom de l'artefact de sortie MyApp Vous ne serez pas invité à entrer lors de la création. Vous pouvez utiliser le nom qui est automatiquement attribué

Construire

article valeur Remarques
Construire le fournisseur AWS CodeBuild
Catégorie d'action Construire Vous ne serez pas invité à entrer lors de la création.
Nom de l'action CodeBuild Vous ne serez pas invité à entrer lors de la création.

Sélectionnez Créer un nouveau projet CodeBuild. Tout fonctionnera tant que vous connaissez le nom du projet.

Créer un projet de construction

article valeur
Créer un environnement Ubuntu Java8
Spécifications de construction Buildspec dans le répertoire racine du code source.Utilisez yml

Remarque:

article valeur
Artefact d'entrée MyApp
Artefact de sortie MyAppBuild

Cliquez sur "Enregistrer le projet de construction" puis sur "Étape suivante".

Déployer

article valeur Remarques
Déployer le fournisseur AWS CloudFormation
Mode d'action Créer ou remplacer un jeu de modifications
Le nom de la pile MyBetaStack Également utilisé pour les noms d'actions.
Changer le nom du jeu MyChangeSet
Fichier modèle packaged-minimum-lambda-java-model.yaml
Capacités CAPABILITY_IAM
Nom de rôle cloudformation-lambda-execution-role Spécifiez le rôle créé au début de cette procédure.
Catégorie d'action Déployer Définir automatiquement

Création d'un rôle de service AWS

Faites un nouveau rouleau.

Réimprimez le texte à l'écran: "Créez un rôle de service dans IAM pour AWS CodePipeline afin d'accorder des autorisations pour utiliser les ressources de votre compte."

Le nom du rôle doit être "AWS-CodePipeline-Service". (S'il existe déjà, il sera ajouté à la stratégie en ligne. Il n'est pas confirmé.)

Vérifiez le pipeline

Un écran de confirmation du contenu entré jusqu'à présent s'affiche. Cliquez sur "Créer un pipeline".

Fixer le rôle de service

Modifiez le rôle de service créé pour Codebuild afin qu'il puisse accéder au compartiment S3 préparé (ʻauto-release-sample`).

Dans la procédure jusqu'à présent, le rôle code-build- <nom du projet de construction> -service-role a été généré, alors modifiez-le.

--Sélectionnez un rôle dans la console de gestion IAM. --Sélectionnez code-build- <nom du projet de construction> -service-role.

Ajouter une étape pour mettre à jour Lambda vers CodePipeline

--Accédez à AWS CodePipeline Management Console => Sélectionnez le pipeline créé --Cliquez sur le bouton Modifier --Cliquez sur l'icône de crayon de mise en scène --Sélectionnez l'icône [+ Action] à la fin d'une action existante. --Saisissez comme suit

article valeur
Catégorie d'action Déployer
Nom de l'action execute_cs (Tout va bien si tu sais)
Déployer le fournisseur AWS CloudFormation
Mode d'action Exécuter le jeu de modifications
Le nom de la pile MyBetaStack
Changer le nom du jeu MyChangeSet

Libération automatique et exécution de Lambda

Ceci termine la création de Codepipeline. Essayez d'apporter quelques modifications à la branche master du référentiel git. Vous pouvez voir où le pipeline fonctionne dans la console de gestion Codepipeline.

Une fois l'opération terminée, ouvrez la console de gestion Lambda. Vous devez avoir créé une fonction Lambda en Java. Vous pouvez exécuter le test.

Impressions

La procédure est longue, probablement parce que de nombreuses technologies élémentaires sont impliquées. .. .. : sweat_smile:

Recommended Posts

Exemple de configuration minimale pour publier automatiquement Lambda par Java avec un pipeline de code
Comment gérer le code Java généré automatiquement par l'exemple jOOQ et Flyway
Exemple de code pour analyser la date et l'heure avec SimpleDateFormat de Java
Conseils autour de l'exemple pour publier Lambda de Java sur CodePipeline
[Pour les débutants] Exemple minimum pour mettre à jour RecyclerView avec DiffUtils en Java
[Code Pipeline x Elastic Beanstalk] Application Java CI / CD vers Elastic Beanstalk avec Code Pipeline, partie 2
[Code Pipeline x Elastic Beanstalk] Application Java CI / CD vers Elastic Beanstalk avec Code Pipeline, partie 1
[Code Pipeline x Elastic Beanstalk] Application Java CI / CD vers Elastic Beanstalk avec Code Pipeline Part 3
Exemple de code Java 02
Exemple de code Java 03
Comment utiliser le framework Java avec AWS Lambda! ??
Exemple de code Java 04
Comment utiliser l'API Java avec des expressions lambda
Exemple de code Java 01
Exemple de code pour convertir List en List <String> dans Java Stream
Comment déployer Java sur AWS Lambda avec Serverless Framework
Comment créer un environnement de développement Java avec VS Code
Exemple de code pour la sortie du journal par Java + SLF4J + Logback
Comment inverser la compilation du fichier apk en code source Java avec MAC
Un mémo pour démarrer la programmation Java avec VS Code (version 2020-04)
Créons un conteneur Docker qui peut SSH à la configuration minimale de CentOS 8
Utiliser des couches Lambda avec Java
Exemple de code de signature électronique (JAVA)
Java pour jouer avec Function
Collection d'exemples de code parallèle Java
[Java] Introduction à l'expression lambda
Connectez-vous à MySQL 8 avec Java
Est-il possible de générer automatiquement Getter / Setter avec l'interface Java?
Essayez HelloWorld avec la configuration minimale de Heroku Java spring-boot
Paramètres pour supprimer les importations Java inutilisées lors de l'enregistrement avec VS Code
Exemple de code pour le test unitaire d'un contrôleur Spring Boot avec MockMvc
[Avec un exemple de code] Les bases de Spring JDBC apprises avec l'application Blog
Exemple de code pour appeler l'API Yahoo! Local Search en Java
Exemple de code pour appeler l'API Yahoo! Shopping Product Search (v3) avec l'API client HTTP officiellement introduite à partir de Java 11
[Code Pipeline x Elastic Beanstalk] Récapitulatif des erreurs et des contre-mesures pour les applications Java CI / CD vers Elastic Beanstalk avec Code Pipeline