Mindestkonfigurationsbeispiel für die automatische Freigabe von Lambda durch Java mit Code-Pipeline

TL;DR

Das folgende Dokument enthält ein Beispiel für die Automatisierung der Freigabe von Lambda-Funktionen in node.js. http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/automating-deployment.html

In diesem Dokument werden wir eine ähnliche App in Java schreiben und deren Veröffentlichung automatisieren. Minimieren Sie die Erklärung der Bedeutung und Rolle jedes Elements. (Ich bin nicht sicher. Es tut mir leid.) Ich werde ein Beispiel für das Mindestbetriebsbeispiel geben.

In diesem Dokument werden verschiedene Einstellungen manuell in der Verwaltungskonsole eingegeben. Die Prozedur hat sich möglicherweise aufgrund zukünftiger Änderungen an der Benutzeroberfläche geändert. Bitte verzeih mir.

Annahme

Vorbereitung

Eine Rolle erstellen

Öffnen Sie die IAM-Verwaltungskonsole und erstellen Sie eine Rolle wie unten gezeigt.

Artikel Wert Bemerkungen
Name cloudformation-lambda-execution-role
Rollentyp AWS CloudFormation Wählen Sie beim Erstellen unter "AWS Service Role". Auf dem Bildschirm der erstellten Rolle wird sie auf der Registerkarte Vertrauensstellung angezeigt.
Angehängte Richtlinie AWSLambdaExecute Auf dem Rollenbildschirm wird es auf der Registerkarte Berechtigungen angezeigt => Verwaltungsrichtlinie

Öffnen Sie nach dem einmaligen Erstellen der Rolle die erstellte Rolle in der Verwaltungskonsole und klicken Sie auf "Inline-Richtlinie hinzufügen". Geben Sie den folgenden Inhalt ein, nachdem Sie mit "Benutzerdefinierte Richtlinie-> Auswählen" fortgefahren sind. Stellen Sie den Richtliniennamen entsprechend ein.

{
    "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"
}

Hinweis: Dies ist möglicherweise nicht die erforderliche Mindestautorität. Ich möchte es in zukünftigen Updates dieses Artikels so weit wie möglich reduzieren.

Legen Sie die Datei auf Github

Speichern Sie den Anwendungsquellcode in github.

Den spezifischen Inhalt der Datei finden Sie im Beispiel-Repository. https://github.com/kazurof/minimum-java-lambda-with-codepipeline Beschreiben Sie die Verzeichnisstruktur der Datei.

│  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

Ergänzung

Der Name des zu verwendenden S3-Repositorys ist in "buildspec.yml" beschrieben. (Diejenige, die zuerst auf "Auto-Release-Sample" gesetzt wurde.) Wenn Sie es tatsächlich ausführen möchten, ändern Sie es in den von Ihnen vorbereiteten Repository-Namen.

Erstellen einer CodePipeline

Öffnen Sie die AWS CodePipeline-Verwaltungskonsole und erstellen Sie die Pipeline wie folgt:

Name der Pipeline

Alles ist in Ordnung, solange Sie den Namen der Pipeline kennen.

Quelle

Artikel Wert Bemerkungen
Quellanbieter GitHub Wenn Sie GitHub auswählen, geben Sie die URL und den Zweig des GitHub-Repositorys an, führen Sie die OAuth-Authentifizierung durch und erlauben Sie Code Pipeline den Zugriff auf das angegebene GitHub-Repository.
Aktionskategorie Quelle Sie werden beim Erstellen nicht zur Eingabe aufgefordert. Alles, was automatisch angehängt werden kann, ist in Ordnung
Aktionsname Source Sie werden beim Erstellen nicht zur Eingabe aufgefordert. Sie können den Namen verwenden, der automatisch vergeben wird
Name des Ausgabeartefakts MyApp Sie werden beim Erstellen nicht zur Eingabe aufgefordert. Sie können den Namen verwenden, der automatisch vergeben wird

Bauen

Artikel Wert Bemerkungen
Anbieter erstellen AWS CodeBuild
Aktionskategorie Bauen Sie werden beim Erstellen nicht zur Eingabe aufgefordert.
Aktionsname CodeBuild Sie werden beim Erstellen nicht zur Eingabe aufgefordert.

Wählen Sie "Neues CodeBuild-Projekt erstellen". Alles wird funktionieren, solange Sie den Projektnamen kennen.

Erstellen eines Build-Projekts

Artikel Wert
Umgebung erstellen Ubuntu Java8
Erstellen Sie Spezifikationen Buildspec im Stammverzeichnis des Quellcodes.Verwenden Sie yml

Hinweis:

Artikel Wert
Eingabeartefakt MyApp
Ausgabeartefakt MyAppBuild

Klicken Sie auf "Build-Projekt speichern" und dann auf "Nächster Schritt".

Bereitstellen

Artikel Wert Bemerkungen
Provider bereitstellen AWS CloudFormation
Aktionsmodus Änderungssatz erstellen oder ersetzen
Der Name des Stapels MyBetaStack Wird auch für Aktionsnamen verwendet.
Satznamen ändern MyChangeSet
Vorlagendatei packaged-minimum-lambda-java-model.yaml
Fähigkeiten CAPABILITY_IAM
Rollenname cloudformation-lambda-execution-role Geben Sie die zu Beginn dieses Verfahrens erstellte Rolle an.
Aktionskategorie Bereitstellen Automatisch einstellen

Erstellen einer AWS-Servicerolle

Mach eine neue Rolle.

Drucken Sie den Wortlaut auf dem Bildschirm erneut aus: "Erstellen Sie in IAM eine Servicerolle für AWS CodePipeline, um Berechtigungen zur Verwendung von Ressourcen in Ihrem Konto zu erteilen."

--Klicken Sie auf "Rolle erstellen".

Bestätigung der Pipeline Der Bestätigungsbildschirm des bisher eingegebenen Inhalts wird angezeigt. Klicken Sie auf "Pipeline erstellen". Ändern der Servicerolle Ändern Sie die für Codebuild erstellte Servicerolle, damit auf den vorbereiteten S3-Bucket zugegriffen werden kann ("Auto-Release-Sample"). In der bisherigen Prozedur wurde die Rolle "Code-Build- -Service-Rolle" generiert. Ändern Sie sie daher. --Wählen Sie eine Rolle in der IAM-Verwaltungskonsole aus. --Wählen Sie code-build- <Build-Projektname> -service-Rolle.

Fügen Sie einen Schritt hinzu, um Lambda auf CodePipeline zu aktualisieren

--Gehen Sie zur AWS CodePipeline Management Console => Wählen Sie die erstellte Pipeline aus --Klicken Sie auf die Schaltfläche Bearbeiten --Klicken Sie auf das Staging-Stiftsymbol --Wählen Sie das Symbol [+ Aktion] am Ende einer vorhandenen Aktion. --Geben Sie wie folgt ein

Artikel Wert
Aktionskategorie Bereitstellen
Aktionsname execute_cs (Alles ist in Ordnung, wenn Sie wissen)
Provider bereitstellen AWS CloudFormation
Aktionsmodus Änderungssatz ausführen
Der Name des Stapels MyBetaStack
Satznamen ändern MyChangeSet

Automatische Freigabe und Betrieb von Lambda

Damit ist die Codepipeline-Erstellung abgeschlossen. Versuchen Sie, einige Änderungen am Hauptzweig des Git-Repositorys vorzunehmen. In der Codepipeline-Verwaltungskonsole können Sie sehen, wo die Pipeline funktioniert.

Wenn der Vorgang erfolgreich abgeschlossen wurde, öffnen Sie die Lambda-Verwaltungskonsole. Sie sollten eine Lambda-Funktion in Java erstellt haben. Sie können den Test ausführen.

Impressionen

Das Verfahren ist lang, wahrscheinlich weil es viele elementare Technologien gibt. .. .. : heat_smile:

Recommended Posts

Mindestkonfigurationsbeispiel für die automatische Freigabe von Lambda durch Java mit Code-Pipeline
So verwalten Sie Java-Code, der automatisch von jOOQ & Flyway generiert wird
Beispielcode zum Parsen von Datum und Uhrzeit mit Java SimpleDateFormat
Tipps rund um das Beispiel, um Lambda von Java auf CodePipeline freizugeben
[Für Anfänger] Mindestbeispiel zum Aktualisieren von RecyclerView mit DiffUtils in Java
[Code Pipeline x Elastic Beanstalk] CI / CD-Java-Anwendung für Elastic Beanstalk mit Code Pipeline Part 2
[Code Pipeline x Elastic Beanstalk] CI / CD-Java-Anwendung für Elastic Beanstalk mit Code Pipeline Part 1
[Code Pipeline x Elastic Beanstalk] CI / CD-Java-Anwendung für Elastic Beanstalk mit Code Pipeline Part 3
Java-Beispielcode 02
Java-Beispielcode 03
Verwendung des Java-Frameworks mit AWS Lambda! ??
Java-Beispielcode 04
Verwendung der Java-API mit Lambda-Ausdrücken
Java-Beispielcode 01
Beispielcode zum Konvertieren von List in List <String> in Java Stream
So stellen Sie Java mit Serverless Framework für AWS Lambda bereit
So erstellen Sie eine Java-Entwicklungsumgebung mit VS Code
Beispielcode für die Protokollausgabe von Java + SLF4J + Logback
So kehren Sie die Kompilierung der Apk-Datei in Java-Quellcode mit MAC um
Ein Memo zum Starten der Java-Programmierung mit VS Code (Version 2020-04)
Erstellen wir einen Docker-Container, der SSH auf die Mindestkonfiguration von CentOS 8 ausführen kann
Verwenden Sie Lambda-Ebenen mit Java
Beispielcode für elektronische Signatur (JAVA)
Java zum Spielen mit Function
Java Parallel Code Sample Collection
[Java] Einführung in den Lambda-Ausdruck
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
Ist es möglich, Getter / Setter automatisch mit Java Interface zu generieren?
Probieren Sie HelloWorld mit der Mindestkonfiguration von Heroku Java Spring-Boot aus
Einstellungen zum Löschen nicht verwendeter Java-Importe beim Speichern mit VS-Code
Beispielcode zum Testen eines Spring Boot-Controllers mit MockMvc
[Mit Beispielcode] Grundlagen von Spring JDBC mit der Blog-App gelernt
Beispielcode zum Aufrufen der Yahoo! Local Search API in Java
Beispielcode zum Aufrufen der Yahoo! Shopping Product Search (v3) -API mit der offiziell von Java 11 eingeführten HTTP-Client-API
[Code Pipeline x Elastic Beanstalk] Zusammenfassung der Fehler und Gegenmaßnahmen für CI / CD-Java-Anwendungen zu Elastic Beanstalk mit Code Pipeline