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.
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.
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
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é.
Ouvrez la console de gestion AWS CodePipeline et créez le pipeline comme suit:
Tout va bien tant que vous connaissez le nom du pipeline.
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é |
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.
article | valeur |
---|---|
Créer un environnement | Ubuntu Java8 |
Spécifications de construction | Buildspec dans le répertoire racine du code source.Utilisez yml |
Remarque:
code-build- <nom du projet de construction> -service-role
.
--Dans l'action de cette construction, les éléments suivants sont automatiquement définis comme suit.article | valeur |
---|---|
Artefact d'entrée | MyApp |
Artefact de sortie | MyAppBuild |
Cliquez sur "Enregistrer le projet de construction" puis sur "Étape suivante".
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 |
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é.)
Un écran de confirmation du contenu entré jusqu'à présent s'affiche. Cliquez sur "Créer un pipeline".
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
.
--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 |
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.
La procédure est longue, probablement parce que de nombreuses technologies élémentaires sont impliquées. .. .. : sweat_smile:
Recommended Posts