Ich war nüchtern süchtig danach, awscli von einem in crontab registrierten Python 2.7-Skript aus aufzurufen

Zusammenfassung

Ich habe "boto" nicht verwendet, weil ich das Gefühl hatte, einen Fehler zu bekommen, weil ich nur Zugang zum Boden des Eimers hatte.

Was du machen willst

$ aws s3 cp s3://hoge/fuga/foo_20160711.txt .

Ich möchte die Datei aus S3 bringen. Der Dateiname ändert sich jeden Tag je nach Datum. Wenn der Download erfolgreich ist, verarbeiten Sie den Import und irgendwie. Ich werde es vorerst mit Python nennen.

Ich versuchte es

fetch.py


import datetime
import os
import stat
import subprocess
import tempfile


def main():
	fd, tmp = tempfile.mkstemp()
    os.close(fd)
    os.chmod(tmp, stat.S_IRWXU | stat.S_IROTH)
    filename = 'foo_{}.txt'.format(datetie.datetime.now().strftime('%Y%m%d'))
    subprocess.check_call([
	    'aws',
     	's3',
	    'cp',
	    's3://hoge/fuga/{}'.format(filename),
		tmp,
    	'--quiet',
    ])
	do_something(tmp)

if __name__ == '__main__':
	main()

Machen Sie einen Code wie diesen. Ich habe es von der Kommandozeile aus ausgeführt und bestätigt, dass es funktioniert, also habe ich es in crontab geworfen.

0 1 * * * /usr/local/bin/python /home/vagrant/fetch.py

Es war nicht gut

Gründe nicht gut

Wenn ich mir den Ausführungsverlauf ansehe, erhalte ich normalerweise eine Fehlermeldung. Es wird gesagt, dass der Befehl aws nicht existiert. Übrigens habe ich irgendwo gehört, dass sich die Konfigurationsdatei von "awscli" im Ausgangsverzeichnis befindet, sodass die Konfiguration nur gelesen werden kann, wenn das Ausgangsverzeichnis genau in der Umgebungsvariablen angegeben ist. Da jedoch gesagt wird, dass es überhaupt keinen Befehl "aws" gibt, haben wir das Problem der Umgebungsvariablen nicht erreicht. Vielleicht gibt es keinen "Pfad". Ich denke, es kann gelöst werden, indem man "PATH" hinzufügt oder den Ort des Befehls direkt angibt.

Fix

HOME=/home/vagrant
0 1 * * * /usr/local/bin/python /home/vagrant/fetch.py

fetch.py


import datetime
import os
import stat
import subprocess
import tempfile


def do_something(name):
	return


def main():
	fd, tmp = tempfile.mkstemp()
    os.close(fd)
    os.chmod(tmp, stat.S_IRWXU | stat.S_IROTH)
    filename = 'foo_{}.txt'.format(datetie.datetime.now().strftime('%Y%m%d'))
    subprocess.check_call([
	    '/usr/local/bin/aws',
     	's3',
	    'cp',
	    's3://hoge/fuga/{}'.format(filename),
		tmp,
    	'--quiet',
    ], env=os.environ.copy())
	do_something(tmp)

if __name__ == '__main__':
	main()

Es hat fast funktioniert.

Recommended Posts

Ich war nüchtern süchtig danach, awscli von einem in crontab registrierten Python 2.7-Skript aus aufzurufen
Eine Geschichte, die ich süchtig danach war, Lambda von AWS Lambda anzurufen.
Ich war süchtig danach, 2020 mit Selen (+ Python) zu kratzen
Was ich mit json.dumps in Pythons base64-Codierung süchtig gemacht habe
Ich habe eine Funktion zum Laden des Git-Erweiterungsskripts in Python geschrieben
Ich habe ein Skript geschrieben, um Webseiten-Links in Python zu extrahieren
Ich war süchtig nach falschen Klassenvariablen und Instanzvariablen in Python
Was ich süchtig nach Python Autorun war
Als ich versuchte, mithilfe von Anforderungen in Python zu kratzen, war ich süchtig nach SSLError, also einem Workaround-Memo
Ich war süchtig danach, eine Python-Venv-Umgebung mit VS Code zu erstellen
Verwenden Sie Python aus Java mit Jython. Ich war auch süchtig danach.
Der Dateiname war in Python schlecht und ich war süchtig nach Import
Ich habe ein Skript in Python erstellt, um MDD-Dateien in das Scrapbox-Format zu konvertieren
Python: Ich konnte in Lambda rekursieren
Ich möchte mit Python ein Fenster erstellen
Rufen Sie Python-Skripte aus Embedded Python in C ++ / C ++ auf
Wovon ich beim Erstellen von Webanwendungen in einer Windows-Umgebung abhängig war
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
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Ich habe ein Skript erstellt, um ein Snippet in README.md einzufügen
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Ein Memorandum zum Ausführen eines Python-Skripts in einer Bat-Datei
Ich möchte eine Datei mit Python zufällig testen
Ich möchte mit einem Roboter in Python arbeiten.
Eine Geschichte, von der ich bei np.where süchtig war
Python-Skript, das eine JSON-Datei aus einer CSV-Datei erstellt
Python: Kann in Lambda wiederholt werden
Ich war süchtig danach, logging.getLogger mit Flask 1.1.x zu versuchen
Wovon ich süchtig war, als ich Python Tornado benutzte
Beachten Sie, dass ich süchtig nach dem npm-Skript war, das in der Überprüfungsumgebung nicht übergeben wurde
Ich habe versucht, API list.csv mit Python aus swagger.yaml zu erstellen
Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
So schneiden Sie ein Block-Multiple-Array aus einem Multiple-Array in Python
So führen Sie ein Python-Programm in einem Shell-Skript aus
Ich möchte viele Prozesse von Python aus starten
Ich habe versucht "Wie man eine Methode in Python dekoriert"
Wovon ich süchtig war, als der Processing-Benutzer zu Python wechselte
Ich möchte eine Nachricht von Python an LINE Bot senden
Ich habe ein Skript geschrieben, um eine beliebte Seite in Japan zu bekommen
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe versucht, das Python-Skript unter Windows 10 von 2.7.11 auf 3.6.0 zu ändern
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
[Fix] Ich war süchtig nach dem alphanumerischen Urteil über Python-Strings
Ich habe ein Skript in Python erstellt, um eine Textdatei für JSON zu konvertieren (für das vscode-Benutzer-Snippet).
Als ich versuchte, PIL und matplotlib in einer virtuellen Umgebung zu installieren, war ich süchtig danach.
Wovon ich süchtig war, als ich mit riesigen Dateien in einer Linux 32-Bit-Umgebung umging
Eine Geschichte, nach der ich süchtig war, als ich in Go nil als Funktionsargument angab
Ich war ein wenig süchtig nach der Installation von Python3.3 + mod_wsgi3.4 auf Sakura VPS (CentOS), also ein Hinweis zur Überprüfung
Eine Geschichte über das Schreiben von AWS Lambda und ein wenig Abhängigkeit von den Standardwerten von Python-Argumenten
Übergeben von Argumenten an Python-Skripte in SPSS Modeler Batch
Wovon ich süchtig war, als ich ALE in Vim für Python einführte
Senden Sie eine Nachricht von IBM Cloud Functions an Slack in Python
Ein Hinweis, von dem ich süchtig war, als ich unter Linux einen Piepton machte
So erhalten Sie eine Zeichenfolge aus einem Befehlszeilenargument in Python
Ich habe versucht, ein missverstandenes Gefangenendilemma in Python zu implementieren
Ich habe einen verstümmelten Generator erstellt, der Ihre Lieblingssätze von UTF-8 bis Shift-JIS (cp932) in Python codiert