Cet article est l'article du 7ème jour du Calendrier de l'Avent Hands Lab 2019.
Bon travail. @naokiur. Je serai également responsable de cette année.
Récemment, lors de la création de ressources AWS en entreprise Avec CloudFormation et Serverless J'essaye de le coder. (Gardez le dosage et rappelez-vous le but ...)
Grâce à cela, je m'habitue à écrire des fichiers au format YAML.
Pendant ce temps, Connaître l'existence de AWS CDK De plus, AWS CDK le rend généralement disponible pour Java et .NET! !!
J'aime personnellement Java, J'ai essayé AWS CDK en Java.
Overview On m'a également recommandé, Atelier CDK publié par AWS CDK C'était vraiment bien pour moi qui n'ai rien fait!
J'ai récemment créé des fonctions d'étape dans mon travail, donc Nous avons créé StepFunctions avec AWS CDK.
npm install -g aws-cdk
Vous pouvez générer un modèle de projet pour Java avec la commande suivante.
cdk init --a {nom du projet} --language java
Projet Maven.
Cela me manque personnellement.
Ici, nous définissons project name = sample
.
Lorsque vous générez un modèle de projet, «SampleApp» et «SampleStack» ont été générés.
La pile est comme son nom l'indique Ce sera 1 pile de CloudFormation, Je suis conscient que.
Par défaut Il semble que ce soit une pile qui crée SQS et SNS.
pom.xml
En dehors de core
Les dépendances sont répertoriées pour chaque service AWS.
Si vous utilisez plus de services AWS, il semble que vous deviez ajouter des dépendances.
Supprimez les SQS et SNS par défaut, Ajoutez des fonctions Lambda et Step à la pile.
Ajoutez les bibliothèques Lambda et StepFunctions à pom.xml.
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>
Concernant StepFunctions
Pas seulement des stepfunctions
Vous devez ajouter stepfunctions-tasks
.
Ajoutez des ressources pour Lambda et Step Functions.
Sous la forme de {Resource} .Builder.hoge (). Fuga () .build ()
Il semble qu'il soit souvent possible de générer des ressources.
C'est ma préférence personnelle, mais je pense que la description est complète et facile à lire.
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();
}
}
La méthode qui fonctionne réellement sur Lambda est
Il semble qu'il doive être stocké sous le répertoire dans la même ligne que le répertoire src
.
La méthode qui s'exécute réellement sur Lambda ne doit pas nécessairement être Java
, donc
J'ai préparé un fichier Python ici.
Puisqu'il n'a pas été exécuté, exécutez d'abord la commande suivante.
cdk bootstrap
Il créera une pile pour créer un compartiment S3 pour le déploiement.
Pour le déploiement Exécutez la commande suivante.
mvn package
cdk deploy
Par ce qui précède, Vous avez créé une pile sur CloudFormation.
Step Functions a été créé avec succès J'ai pu le faire!
erreur de compilation
Calendrier de l'Avent Hands Lab 2019, Le 8ème jour est @watarukura!
Recommended Posts