Ich konnte AWS-Batch mit Python, Moto verspotten, also werde ich es verlassen

Einführung

Ich habe AWS-Batch mit moto verspottet und konnte den Job registrieren, sodass ich ihn als Memorandum belassen werde.

Scheinzielressource

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')

        #Schein iam Rolle
        iams = iam.create_role(
            RoleName='test_matsu_iam',
            AssumeRolePolicyDocument='string',

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

        # aws-Batch Compute-Umgebungsmodell
        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-Batch Job Queue Mock
        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-Batch Job Definition Mock
        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)

        #Job hinzufügen
        client.submit_job(
            jobName='string',
            jobQueue=job_q_arn,
            jobDefinition=job_definition_arn
        )

        #Jobliste abrufen
        jobs = client.list_jobs(
            jobQueue=job_q_arn
        )

        #Jobliste ausgeben
        print("jobSummaryList: " + str(jobs.get('jobSummaryList')))


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

Ausführungsergebnis

$ 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

Verschiedene Ressourcen wurden verspottet und der Job wurde erfolgreich eingereicht.

Am Ende

Mit diesem Modell können Sie die Übermittlung von Jobs an AWS-Batch testen, ohne die tatsächlichen AWS-Ressourcen zu verwenden. Leider ist der Inhalt des übergebenen Jobs nur "jobId" und "jobName". Es ist unwahrscheinlich, dass Tests für die Erstellung oder den Status von Arbeitsplätzen verfügbar sind. Die Schlussfolgerung ist, dass es besser erscheint, für den Test, der den übergebenen Job verwendet, "Mock" des "Unit Test" zu verwenden.

Recommended Posts

Ich konnte AWS-Batch mit Python, Moto verspotten, also werde ich es verlassen
Python: Kann in Lambda wiederholt werden
Ich möchte es mit Python Lambda Django machen, aber ich werde aufhören
Verwenden Sie Python aus Java mit Jython. Ich war auch süchtig danach.
Python: Ich konnte in Lambda rekursieren
Ich habe es mit Visual Studio Code (hauptsächlich für Python) angepasst, daher werde ich es zusammenfassen
Ich war süchtig danach, 2020 mit Selen (+ Python) zu kratzen
Ein Anfänger versuchte, eine Strichzeichnung mit einem Kettenmesser zu färben. Ich konnte es schaffen.
Ich möchte Daten mit Python analysieren können (Teil 3)
[IOS] GIF-Animation mit Pythonista3. Ich war süchtig danach.
Ich konnte die Web-App-Authentifizierung mit Flask-Login implementieren
Ich möchte Daten mit Python analysieren können (Teil 4)
Ich möchte Daten mit Python analysieren können (Teil 2)
PyTorchs Buch war schwer zu verstehen, deshalb habe ich es ergänzt
Es ist Halloween, also werde ich versuchen, es mit Python zu verstecken
[Erwerb der Qualifikation] Ich habe LinuC Level 1 bestanden und werde darüber schreiben, wie man studiert und wie es war.
Da es Doppelgenger gab, habe ich versucht, es mit künstlicher Intelligenz zu unterscheiden (lacht) (Teil 1)
Ich möchte mit Python debuggen
Was ich mit json.dumps in Pythons base64-Codierung süchtig gemacht habe
Es fiel mir schwer, meine Hausaufgaben zu machen, deshalb verwendete ich Python für das Management Accounting.
Ich konnte den Thermodrucker "PAPERANG" aus Python (Windows10, Python3.6) drucken.
Ich möchte Twitter mit Python twittern, bin aber süchtig danach
Als ich versuchte, Python auszuführen, wurde ich zum Microsoft Store übersprungen
Ich war süchtig danach, eine Python-Venv-Umgebung mit VS Code zu erstellen
Ich wollte ABC160 mit Python lösen
Der Cloud Shell Editor von GCP war mit der Python-Entwicklungsumgebung verstopft, sodass ich es geschafft habe, ihn auf einem freien Grundstück neu zu erstellen.
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
Ich habe über Docker recherchiert und werde es zusammenfassen
Was ich süchtig nach Python Autorun war
[Zaif] Ich habe versucht, den Handel mit virtuellen Währungen mit Python zu vereinfachen
Ich wollte ABC172 mit Python lösen
Ich war süchtig danach, Cython mit PyCharm auszuprobieren, also machen Sie sich eine Notiz
Als ich in IPython versuchte, den Wert zu sehen, war es ein Generator, also kam ich auf ihn, als ich frustriert war.
Als ich eine Baumkarte (Flächendiagramm) mit Python erstellt habe, war sie subtil. Wenn ich also Schnörkel verwendete, fühlte es sich ziemlich gut an.
Die mit vim bearbeitete Datei war schreibgeschützt, aber ich möchte sie speichern
Irgendwie hat der Code, den ich geschrieben habe, funktioniert und ich war beeindruckt, also werde ich ihn veröffentlichen
Als ich versuchte, mit Python eine virtuelle Umgebung zu erstellen, funktionierte dies nicht
Drei Dinge, von denen ich süchtig war, als ich Python und MySQL mit Docker verwendete
Docker x Visualization hat nicht funktioniert und ich war süchtig danach, also habe ich es zusammengefasst!
Ein Hinweis, dem ich beim Ausführen von Python mit Visual Studio Code verfallen war
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war
Beachten Sie, dass ich süchtig danach war, TensowFlow einzurichten
Ich möchte MATLAB feval mit Python verwenden
[Einführung in json] Nein, ich war süchtig danach. .. .. ♬
Ich möchte datetime.datetime.now () auch mit pytest verspotten!
Ich möchte ein Spiel mit Python machen
Ich wollte Python 3.4.3 mit Homebrew + pyenv installieren
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich habe versucht, LLVM IR mit Python auszugeben
So legen Sie Attribute mit Mock of Python fest
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich habe versucht, die Herstellung von Sushi mit Python zu automatisieren
#Unresolved Ich möchte Gobject-Introspection mit Python3 kompilieren
Ich möchte APG4b mit Python lösen (Kapitel 2)
[Python] Ich werde FTP auf den FTP-Server hochladen.
Ich möchte mit Python in eine Datei schreiben