3

Verwenden von AWS-Ebextensions, was ist der richtige Weg, um ein Array von Befehlen für ihre Dokumente zu übergeben?

Ich versuche, mehrere Befehle in einem conainter_commands Eintrag zu übergeben und Fehler zu erhalten. Aber wenn ich die gleichen Befehle wie einzelne Einträge übergebe, funktioniert es gut.

Works:

container_commands: 
    01_remove_old_dump: 
    command: 'rm -f /tmp/db.dump' 
    02_get_new_dump: 
    command: 'aws s3 cp s3://bucket/db.dump' 

schlägt mit /bin/sh: rm -f /tmp/db.dump: No such file or directory.

container_commands: 
    01_remove_old_dump: 
    command: ('rm -f /tmp/db.dump' 'aws s3 cp s3://bucket/db.dump') 

Antwort

5

Es macht nichts, ich brach nur die Linien mit einem YAML-Block und das funktioniert:

01_command: 
    command: | 
     if [[ ! $ENVIRONMENT = "PROD" ]] && [[ $RDS_HOSTNAME ]] 
      rm -f /tmp/db.dump 
      aws s3 cp s3://bucket/db.dump 
      pg_restore -H $RDS_HOSTNAME dbname /tmp/db.dump 
      echo "Refreshing database..." 
     else 
      Echo "Environment is ${ENVIRONMENT}. Skipping database refresh..." 
     fi 

HINWEIS: Dies wurde entfernt, es scheint nicht zu funktionieren (gibt immer t zurück rue):

test: | 
     [[ ! $ENVIRONMENT = "PRODUCTION" ]] && \ 
     [[ $RDS_HOSTNAME ]] && \ 
     echo "Refreshing database..." 
+2

Vielen Dank! Ich schlug für immer auf meine Wand an der Wand. Ihre Dokumente sind falsch. – vcardillo

+1

Hinweis, die Testsyntax hier scheint nicht zu funktionieren. Ich dachte, es würde funktionieren, aber ich stellte fest, dass es jedes Mal "wahr" war. Ich habe meinen Befehl in eine if-Anweisung eingeschlossen, die denselben Test durchführt. –