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.
Ö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.
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
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.
Öffnen Sie die AWS CodePipeline-Verwaltungskonsole und erstellen Sie die Pipeline wie folgt:
Alles ist in Ordnung, solange Sie den Namen der Pipeline kennen.
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 |
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.
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".
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 |
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- code-build- <Build-Projektname> -service-Rolle
.
arn: aws: s3 ::: auto-release-sample *
in "Amazon Resource Name (ARN)" ein. (Sternchen am Ende ist erforderlich!)
--Klicken Sie auf "Anweisung hinzufügen" und dann auf "Nächster Schritt".
--Klicken Sie auf "Richtlinie anwenden".--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 |
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.
Das Verfahren ist lang, wahrscheinlich weil es viele elementare Technologien gibt. .. .. : heat_smile:
Recommended Posts