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!
Ich habe kürzlich in meiner Arbeit Schrittfunktionen erstellt Wir haben StepFunctions mit AWS CDK erstellt.
npm install -g aws-cdk
Mit dem folgenden Befehl können Sie eine Projektvorlage für Java generieren.
cdk init --a {Projektname} --language java
Maven-Projekt.
Ich persönlich vermisse es.
Hier setzen wir Projektname = Beispiel
.
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.
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.
Löschen Sie die Standard-SQS und SNS. Fügen Sie dem Stapel Lambda- und Schrittfunktionen hinzu.
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 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();
}
}
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.
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.
Schrittfunktionen wurde erfolgreich erstellt Ich konnte es schaffen!
Hands Lab Adventskalender 2019, Der 8. Tag ist @watarukura!
Recommended Posts