J'ai pu me moquer d'AWS-Batch avec python, moto, donc je vais le laisser

introduction

Je me suis moqué d'AWS-Batch en utilisant moto, et j'ai pu enregistrer le travail, je vais donc le laisser sous forme de mémorandum.

ressource cible fictive

code

test_aws_batch.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
import boto3
from moto import mock_batch, mock_iam


class MyTestCase(unittest.TestCase):
    @mock_iam
    @mock_batch
    def test_aws_batch(self):
        client = boto3.client('batch')
        iam = boto3.client('iam')

        #rôle simulé iam
        iams = iam.create_role(
            RoleName='test_matsu_iam',
            AssumeRolePolicyDocument='string',

        )
        iam_arn = iams.get('Role').get('Arn')
        print("iamRoleArn: " + iam_arn)

        # aws-simulation d'environnement de calcul par lots
        batch = client.create_compute_environment(
            computeEnvironmentName='test_matsu_batch',
            type='UNMANAGED',
            serviceRole=iam_arn
        )
        compute_environment_arn = batch.get('computeEnvironmentArn')
        print("computeEnvironmentArn: " + compute_environment_arn)

        # aws-maquette de file d'attente de travaux par lots
        job_qs = client.create_job_queue(
            jobQueueName='test_matsu_job_q',
            state='ENABLED',
            priority=1,
            computeEnvironmentOrder=[
                {
                    'order': 1,
                    'computeEnvironment': compute_environment_arn
                },
            ]
        )
        job_q_arn = job_qs.get('jobQueueArn')
        print("jobQueueArn: " + job_q_arn)

        # aws-simulation de définition de tâche par lots
        job_definition = client.register_job_definition(
            jobDefinitionName='test_matsu_job_definition',
            type='container',
            containerProperties={
                'image': 'string',
                'vcpus': 123,
                'memory': 123
            },
        )
        job_definition_arn = job_definition.get('jobDefinitionArn')
        print("jobDefinitionArn: " + job_definition_arn)

        #Ajouter un emploi
        client.submit_job(
            jobName='string',
            jobQueue=job_q_arn,
            jobDefinition=job_definition_arn
        )

        #Obtenir la liste des emplois
        jobs = client.list_jobs(
            jobQueue=job_q_arn
        )

        #Liste des travaux de sortie
        print("jobSummaryList: " + str(jobs.get('jobSummaryList')))


if __name__ == '__main__':
    unittest.main()

Résultat d'exécution

$ python -m unittest test.test_aws_batch -v
test_aws_batch (test.test_aws_batch.MyTestCase) ... iamRoleArn: arn:aws:iam::123456789012:role/test_matsu_iam
computeEnvironmentArn: arn:aws:batch:ap-northeast-1:123456789012:compute-environment/test_matsu_batch
jobQueueArn: arn:aws:batch:ap-northeast-1:123456789012:job-queue/test_matsu_job_q
jobDefinitionArn: arn:aws:batch:ap-northeast-1:123456789012:job-definition/test_matsu_job_definition:1
jobSummaryList: [{'jobId': 'ee3a3206-fdfe-404f-a1c1-9c444b41b546', 'jobName': 'string'}]
ok

----------------------------------------------------------------------
Ran 1 test in 0.167s

OK

Diverses ressources ont été moquées et le travail a été soumis avec succès.

À la fin

Cette maquette permet de tester la soumission de tâches à AWS-Batch sans utiliser de vraies ressources AWS. Malheureusement, le contenu du travail soumis est uniquement «jobId» et «jobName». Il est peu probable qu'il soit disponible pour les tests liés à l'heure ou au statut de création d'emploi. La conclusion est qu'il semble préférable d'utiliser «mock» de «test d'unité» pour les tests qui utilisent le travail soumis.

Recommended Posts

J'ai pu me moquer d'AWS-Batch avec python, moto, donc je vais le laisser
Python: peut être répété en lambda
Je veux le faire avec Python lambda Django, mais je vais m'arrêter
Utilisez Python de Java avec Jython. J'étais aussi accro.
Python: j'ai pu récurer en lambda
Je l'ai personnalisé avec Visual Studio Code (principalement pour python), je vais donc le résumer
J'étais accro au grattage avec Selenium (+ Python) en 2020
Un débutant a essayé de colorier un dessin au trait avec un chainer. J'ai pu le faire.
Je veux pouvoir analyser des données avec Python (partie 3)
[IOS] Animation GIF avec Pythonista3. J'en étais accro.
J'ai pu implémenter l'authentification d'application Web avec flask-login
Je veux pouvoir analyser des données avec Python (partie 4)
Je veux pouvoir analyser des données avec Python (partie 2)
Le livre de PyTorch était difficile à comprendre, alors je l'ai complété
C'est Halloween donc je vais essayer de le cacher avec Python
[Acquisition de la qualification] J'ai réussi le niveau LinuC 1, donc j'écrirai sur la façon d'étudier et comment c'était.
Depuis qu'il y avait Doppelgenger, j'ai essayé de le distinguer avec l'intelligence artificielle (rires) (Partie 1)
Je veux déboguer avec Python
Ce à quoi j'étais accro avec json.dumps dans l'encodage base64 de Python
J'avais du mal à faire mes devoirs, j'ai donc utilisé Python pour la comptabilité de gestion.
J'ai pu imprimer l'imprimante thermique "PAPERANG" depuis Python (Windows10, Python3.6)
Je veux tweeter Twitter avec Python, mais j'y suis accro
Lorsque j'ai essayé d'exécuter Python, j'ai été ignoré dans le Microsoft Store
J'étais accro à la création d'un environnement Python venv avec VS Code
Je voulais résoudre ABC160 avec Python
L'éditeur Cloud Shell de GCP était encombré par l'environnement de développement Python, j'ai donc réussi à le reconstruire comme un terrain vacant.
Je veux analyser les journaux avec Python
Je veux jouer avec aws avec python
J'ai fait des recherches sur Docker, donc je vais le résumer
Ce que j'étais accro à Python autorun
[Zaif] J'ai essayé de faciliter le commerce de devises virtuelles avec Python
Je voulais résoudre ABC172 avec Python
J'étais accro à essayer Cython avec PyCharm, alors prenez note
Dans IPython, quand j'ai essayé de voir la valeur, c'était un générateur, donc je l'ai inventé quand j'étais frustré.
Quand j'ai fait un treemap (graphique de zone) avec python, c'était subtil, donc quand j'ai utilisé fleurir, c'était plutôt bien.
Le fichier édité avec vim était en lecture seule, mais je veux le sauvegarder
D'une manière ou d'une autre, le code que j'ai écrit a fonctionné et j'ai été impressionné, alors je vais le poster
Quand j'ai essayé de créer un environnement virtuel avec Python, cela n'a pas fonctionné
Trois choses auxquelles j'étais accro lors de l'utilisation de Python et MySQL avec Docker
Docker x Visualization ne fonctionnait pas et j'en étais accro, alors je l'ai résumé!
Une note à laquelle j'étais accro lors de l'exécution de Python avec Visual Studio Code
Une histoire à laquelle j'étais accro après la communication SFTP avec python
Notez que j'étais accro à la configuration de TensowFlow
Je veux utiliser MATLAB feval avec python
[Introduction à json] Non, j'en étais accro. .. .. ♬
Je veux moquer datetime.datetime.now () même avec pytest!
Je veux faire un jeu avec Python
Je voulais installer Python 3.4.3 avec Homebrew + pyenv
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé de sortir LLVM IR avec Python
Comment spécifier des attributs avec Mock of Python
Je souhaite utiliser le répertoire temporaire avec Python2
J'ai essayé d'automatiser la fabrication des sushis avec python
#Unresolved Je veux compiler gobject-introspection avec Python3
Je veux résoudre APG4b avec Python (chapitre 2)
[Python] Je vais télécharger FTP sur le serveur FTP.
Je veux écrire dans un fichier avec Python