aws-s3-Befehl funktioniert nicht in einer batch-Datei ausgelöst durch einen Windows-task scheduler
Habe ich eine batch-Datei C:\upload_to_s3.bat. In dieser Datei gibt es eine Zeile:
aws s3 synchronisieren D:\S3\batch1\ s3://MyBucket/batch1 --exclude *.bat
Ich habe Windows task scheduler "S3 Stündliche Sync" läuft jede Stunde auslösen zu laufen C:\upload_to_s3.bat. Aber dieser Befehl tut nichts - der Datei-upload ist nie passiert.
Es läuft perfekt wenn ich Doppelklick auf C:\upload_to_s3.bat.
Ist dies Windows 2008 Standard server. Ich habe installiert AWS-CLI konfiguriert und mit dem Befehl "aws konfigurieren", und trat my access key und secret key. Das ist, warum es läuft wenn ich Doppelklick auf die batch-Datei.
Den Windows-Taskplaner ausgeführt wird, als "[MyServer]/Administrator" - Konto.
Warum also nicht die "aws-s3-sync" - Befehl funktioniert, wenn, ausgelöst durch den task-scheduler?
Brauche ich eine Zeile hinzufügen, bevor Sie "aws-s3 "sync", um zuerst die Anmeldeinformationen? Wenn ja, wie?
Danke!
aws configure
? Die aws configure
Befehl wird dokumentiert, um die config-Datei auf ~/.aws/config
(auf Windows, ich glaube, diese Karten zu "%USERPROFILE%\.aws config"). Nicht, dass die Datei vorhanden ist für die batch-Datei user?ja, ich bin als Administrator angemeldet und ich kann die Datei sehen C:\Users\Administrator\.aws\config. Alle anderen Gedanken? Bitte fühlen Sie sich frei, Fragen zu stellen - eine davon ist vielleicht nur Schein.
Dort war eine Ausgabe der batch-Datei? Wenn nicht, können Sie erfassen die Ausgabe in eine Datei? Könnten Sie einen anderen Befehl ausführen, der vielleicht-Liste eine Datei aus S3, die Sie ausführen können, überprüfen Sie die Berechtigung situation sicher.
Ich ändern Sie die neue Zeile auf "aws-s3 synchronisieren D:\S3\batch1\ s3://MyBucket/batch1 --exclude *.Fledermaus > D:\logs\s3.txt" Die output-Datei ist leer - eigentlich ist die Ausgabe-Datei wurde auch nicht erstellt. Die Befehle vor und nach dieser Zeile ausgeführt wurden - das bedeutet, der task scheduler funktioniert. Die "aws-s3" - Linie ist das einzige problem. Mehr Gedanken?
Vielleicht die Benutzerkontensteuerung verhindert, dass lokale Dateien zugreifen? Empfehle ich versuchen Sie zu trennen, lokale Probleme von AWS-Probleme, und ich würde versuchen, diese durch hinzufügen von zwei zusätzlichen Zeilen in die batch-Datei zu erfassen Textausgabe - 1)
type "%USERPROFILE%\.aws\config"
zur Gewährleistung der batch-Datei Lesen Sie die Anmeldeinformationen, und 2) aws s3 ls
wie ein minimaler Befehl, der verwendet AWS creds, ohne etwas zu tun. Beide sollten eine Ausgabe generieren, Fehler oder nicht.InformationsquelleAutor user3703038 | 2014-06-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Grund, warum das passiert ist, weil aws Befehl ist nicht zu finden, die die config oder die credentials-Datei! Und es geschieht für Win2012 zu.
Das problem ist, dass Windows Task-Zeitplan setzt den %USERPROFILE% zu C:\Users\Default anstelle der tatsächlichen Benutzer der task ausgeführt wird, unter!! ??? Und AWS ist mit dass zu finden, die config und die Anmeldeinformationen-Dateien.
Also das Update ist etwas zu setzen, wie dies in Ihrem Skript (entweder FLEDERMAUS oder PowerShell)
Sogar der %homepath% - variable ist leer, wenn die von einem Geplanten Task.
Ich habe gerade entdeckt, das nach procrastinating zu versuchen, herauszufinden, warum dies geschah für uns.
Nur, bis ich fügte hinzu, die AWS_CONFIG_FILE Zeile oben in meinem script war AWS in der Lage, tatsächlich sehen die config-Datei! Es kann jedoch nicht finden, die Anmeldeinformationen jetzt, und ich don ' T sehen überall, wie eingestellt.
Dies ist die Fehlermeldung die ich bekomme, ohne zu sagen, wo die config Datei ist:
Und dann ist dies der Fehler, die ich erhalte nach der Einstellung der AWS_CONFIG_FILE variable:
jemand kauft diese person ein Getränk
Danke für die Bezifferung dieses heraus - mich gerettet eine Menge Zeit!
InformationsquelleAutor user2415376
war ich in der Lage das problem zu lösen, indem Sie den folgenden 3 Zeilen in die batch-Datei, BEVOR Sie Ihren s3-Befehl
ersetzen Sie das Zeug zwischen den Spitzen Klammern mit Ihren Daten und die region mit Ihrem Eimer in der region. und ja ,es gibt kein Gleichheitszeichen zwischen "AWS_ACCESS_KEY_ID" und die Taste.
aws configure
auf Benutzer ausgeführt task-Planer (in der Regel 'Administrator'), sollte es automatisch erstellenc:\users\administrator\.aws\config
undc:\users\administrator\.aws\credentials
- Dateien. Sie sind gesetzt. Hinweis: Sie können auch setup-verschiedene profile. ( docs.aws.amazon.com/cli/latest/userguide/... )Dies sollte vermieden werden, da es display AWS-Anmeldeinformationen, die direkt im script. Mit der gemeinsamen Anmeldeinformationen Datei erstellt, die über
aws configure
ist ein besserer AnsatzInformationsquelleAutor EKanadily
Zählen die folgenden Zeilen in der batch-Datei:
set AWS_ACCESS_KEY_ID=your_access_key_id
set AWS_SECRET_ACCESS_KEY=your_secret_access_key
AWS-Dokumentation
InformationsquelleAutor user3815183
In windows bat-Datei, was funktioniert, ist eine Kombination von user2415376 und docesam Antworten.
Hier ist es:
InformationsquelleAutor Auresco82