[JAVA] Ich habe Step-Funktionen mit AWS CDK erstellt.

Dieser Artikel ist der 7. Tagesartikel von Hands Lab Adventskalender 2019.

Gute Arbeit. @naokiur. Ich werde auch dieses Jahr verantwortlich sein.

Kürzlich beim Aufbau von AWS-Ressourcen im Geschäft Mit CloudFormation und Serverless Ich versuche es zu codieren. (Halten Sie die Dosierung ein und merken Sie sich den Zweck ...)

Dank dessen gewöhne ich mich daran, Dateien im YAML-Format zu schreiben.

Inzwischen, Kenntnis der Existenz von AWS CDK Darüber hinaus stellt AWS CDK es allgemein für Java und .NET zur Verfügung! !!

Ich persönlich mag Java, Ich habe AWS CDK in Java ausprobiert.

Overview Mir wurde auch empfohlen, CDK Workshop, veröffentlicht von AWS CDK Es war wirklich gut für mich, wer nichts getan hat!

Umgebung

Was ich getan habe

Ich habe kürzlich in meiner Arbeit Schrittfunktionen erstellt Wir haben StepFunctions mit AWS CDK erstellt.

Inhalt

Installation des Befehls cdk

npm install -g aws-cdk

Projektvorlage erstellen

Mit dem folgenden Befehl können Sie eine Projektvorlage für Java generieren.

cdk init --a {Projektname} --language java

スクリーンショット 2019-12-07 16.35.36.png

Maven-Projekt. Ich persönlich vermisse es. Hier setzen wir Projektname = Beispiel.

App und Stack

Wenn Sie eine Projektvorlage generieren, SampleApp und SampleStack wurden generiert.

Stapel ist wie der Name schon sagt Dies wird 1 Stapel CloudFormation sein, Ich bin mir bewusst, dass.

Standardmäßig Es scheint, dass es sich um einen Stapel handelt, der SQS und SNS erstellt.

スクリーンショット 2019-12-07 16.52.06.png

pom.xml Abgesehen von "Kern" Abhängigkeiten werden für jeden AWS-Service aufgelistet. Wenn Sie mehr AWS-Services verwenden, müssen Sie anscheinend Abhängigkeiten hinzufügen.

スクリーンショット 2019-12-07 16.52.54.png

Schrittfunktionen erstellen

Löschen Sie die Standard-SQS und SNS. Fügen Sie dem Stapel Lambda- und Schrittfunktionen hinzu.

Abhängigkeit hinzufügen

Fügen Sie die Bibliotheken Lambda und StepFunctions zu pom.xml hinzu.

pom.xml


<dependency>
    <groupId>software.amazon.awscdk</groupId>
    <artifactId>lambda</artifactId>
    <version>1.18.0</version>
</dependency>
<dependency>
    <groupId>software.amazon.awscdk</groupId>
    <artifactId>stepfunctions</artifactId>
    <version>1.18.0</version>
</dependency>
<dependency>
    <groupId>software.amazon.awscdk</groupId>
    <artifactId>stepfunctions-tasks</artifactId>
    <version>1.18.0</version>
</dependency>

In Bezug auf StepFunctions Nicht nur "Stepfunctions" Sie müssen "Stepfunctions-Tasks" hinzufügen.

Fügen Sie dem Stapel Ressourcen hinzu

Fügen Sie Ressourcen für Lambda und Schrittfunktionen hinzu. In Form von {Resource} .Builder.hoge (). Fuga () .build () Es scheint, dass es oft möglich ist, Ressourcen zu generieren.

Es ist meine persönliche Präferenz, aber ich bin der Meinung, dass die Beschreibung vollständig und leicht zu lesen ist.

SampleStack.java


public class SampleStack extends Stack {
    public SampleStack(final Construct parent, final String id) {
        this(parent, id, null);
    }

    public SampleStack(final Construct parent, final String id, final StackProps props) {
        super(parent, id, props);

        final Function hello = Function.Builder.create(this, "HelloHandler")
                .runtime(Runtime.PYTHON_3_6)
                .code(Code.fromAsset("lambda"))
                .handler("hello.lambda_handler")
                .build();

        final Function world = Function.Builder.create(this, "WorldHandler")
                .runtime(Runtime.PYTHON_3_6)
                .code(Code.fromAsset("lambda"))
                .handler("world.lambda_handler")
                .build();

        final Task helloTask = Task.Builder.create(this, "HelloTask")
                .task(InvokeFunction.Builder.create(hello).build())
                .build();

        final Task worldTask = Task.Builder.create(this, "WorldTask")
                .task(InvokeFunction.Builder.create(world).build())
                .build();

        final StateMachine machine = StateMachine.Builder.create(this, "SampleStateMachine")
                .definition(helloTask.next(worldTask))
                .build();
    }
}

Lambda-Dateispeicher

Die Methode, die tatsächlich auf Lambda funktioniert, ist Es scheint, dass es unter dem Verzeichnis in derselben Zeile wie das "src-Verzeichnis" gespeichert werden muss.

Die Methode, die tatsächlich auf Lambda läuft, muss nicht Java sein, also Ich habe hier eine Python-Datei vorbereitet.

スクリーンショット 2019-12-07 17.42.58.png

Bereitstellen

Da es nicht ausgeführt wurde, führen Sie zuerst den folgenden Befehl aus.

cdk bootstrap

Es wird ein Stapel erstellt, um einen S3-Bucket für die Bereitstellung zu erstellen.

Für die Bereitstellung Führen Sie den folgenden Befehl aus.

mvn package cdk deploy

Durch die oben genannten, Sie haben einen Stapel in CloudFormation erstellt.

スクリーンショット 2019-12-07 17.53.17.png

Ressource

Schrittfunktionen wurde erfolgreich erstellt Ich konnte es schaffen!

スクリーンショット 2019-12-07 17.53.17.png スクリーンショット 2019-12-07 17.53.36.png

Impressionen

Hands Lab Adventskalender 2019, Der 8. Tag ist @watarukura!

Ich habe es als Referenz verwendet

Recommended Posts

Ich habe Step-Funktionen mit AWS CDK erstellt.
Ich habe Code Pipeline mit AWS CDK erstellt.
Adressiert, da Azure-Funktionen in Java nicht mehr funktionieren
Ich habe versucht, die automatische Bereitstellung mit CircleCI + Capistrano + AWS (EC2) + Rails durchzuführen
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!