Stellen Sie serverlose Container über Ihre Befehlszeile in der Cloud bereit
Fargate ist eine Befehlszeilenschnittstelle zum Bereitstellen von Containern auf AWS Fargate. Mit Fargate können Entwickler ganz einfach Fargate-Dienste bedienen, einschließlich der Bereitstellung von Anwendungen (Bilder und Umgebungsvariablen), der Überwachung von Bereitstellungen, der Anzeige von Containerprotokollen, des Neustarts und der Skalierung.
Sie können die neueste stabile CLI mit einem Curl-Dienstprogramm-Skript installieren oder die Binärdatei von der Release-Seite herunterladen. Nach der Installation erhalten Sie den Befehl fargate
.
curl -s get-fargate.turnerlabs.io | sh
Wenn Sie die neueste Vorabversion installieren möchten, verwenden Sie diesen Befehl:
curl -s get-fargate.turnerlabs.io | RELEASE=develop sh
Standardmäßig verwendet Fargate us-east-1 , da dies die einzige Region ist, in der AWS Fargate verfügbar ist. Die CLI akzeptiert einen --region-Parameter für die zukünftige Verwendung und berücksichtigt die Umgebungseinstellungen AWS_REGION und AWS_DEFAULT_REGION . Beachten Sie, dass die Angabe einer Region, in der nicht alle erforderlichen Dienste verfügbar sind, einen Fehler zurückgibt.
Eine Aufschlüsselung der in welchen Regionen verfügbaren Dienste finden Sie in der Regionstabelle.
Fargate wird mit dem AWS SDK for Go erstellt, das an den folgenden Orten nach Anmeldeinformationen sucht:
Umgebungsvariablen
Gemeinsame Anmeldeinformationsdatei
EC2-Instanzprofil
Weitere Informationen finden Sie unter Angeben von Anmeldeinformationen in der AWS SDK for Go-Dokumentation.
Es gibt mehrere Möglichkeiten, Parameter anzugeben. Jedes Element hat Vorrang vor dem darunter liegenden Element:
CLI-Argumente (z. B. --cluster my-cluster
)
Umgebungsvariablen (z. B. FARGATE_CLUSTER=my-cluster
)
fargate.yml
(z. B. unten)
cluster : my-cluster
service : my-service
task : my-task
rule : my-event-rule
verbose : false
nocolor : true
Flagge | Kurz | Standard | Beschreibung |
---|---|---|---|
--cluster | -C | ECS-Clustername | |
--Region | us-east-1 | AWS-Region | |
--keine Farbe | FALSCH | Farbausgabe deaktivieren | |
--verbose | -v | FALSCH | Ausführliche Ausgabe |
Services verwalten langlebige Instanzen Ihrer Container, die auf AWS Fargate ausgeführt werden. Wenn Ihr Container aus irgendeinem Grund beendet wird, startet der Dienstplaner Ihre Container neu und stellt sicher, dass in Ihrem Dienst die gewünschte Anzahl an Aufgaben ausgeführt wird. Dienste können zusammen mit einem Load Balancer verwendet werden, um den Datenverkehr auf die Aufgaben in Ihrem Dienst zu verteilen.
Flagge | Kurz | Standard | Beschreibung |
---|---|---|---|
--Service | -S | ECS-Dienstname |
fargate service list
Dienste auflisten
fargate service deploy [--image <docker-image>]
Stellen Sie ein neues Image für den Dienst bereit
Das im Dienst zu verwendende Docker-Container-Image kann über das Flag --image angegeben werden.
fargate service deploy [--file docker-compose.yml]
Stellen Sie das in einer Docker-Compose-Datei definierte Image, Umgebungsvariablen und Geheimnisse für den Dienst bereit
Stellen Sie ein Docker-Image und Umgebungsvariablen, die in einer Docker-Compose-Datei definiert sind, zusammen als eine Einheit bereit. Beachten Sie, dass Umgebungsvariablen und Geheimnisse durch den Inhalt der Compose-Datei ersetzt werden.
Geheimnisse können als Schlüssel-Wert-Paare unter dem Docker-Compose-Dateierweiterungsfeld x-fargate-secrets
definiert werden. Um Erweiterungsfelder verwenden zu können, muss die Compose-Dateiversion mindestens 2.4
für die 2.x-Serie oder mindestens 3.7
für die 3.x-Serie sein.
Dadurch können Sie docker-compose up
lokal ausführen, um Ihre App auf die gleiche Weise auszuführen, wie sie in AWS ausgeführt wird. Beachten Sie, dass die Docker-Compose-Yaml-Konfiguration zwar zahlreiche Optionen unterstützt, jedoch nur die Image- und Umgebungsvariablen für Fargate bereitgestellt werden. Wenn die Docker-Compose-Datei mehr als einen Container definiert, können Sie die Bezeichnung aws.ecs.fargate.deploy: 1
verwenden, um anzugeben, welchen Container Sie bereitstellen möchten. Zum Beispiel:
version : " 3.7 "
services :
web :
build : .
image : 1234567890.dkr.ecr.us-east-1.amazonaws.com/my-service:0.1.0
ports :
- 80:5000
environment :
FOO : bar
BAZ : bam
env_file :
- hidden.env
x-fargate-secrets :
QUX : arn:key:ssm:us-east-1:000000000000:parameter/path/to/my_parameter
labels :
aws.ecs.fargate.deploy : 1
redis :
image : redis
fargate service info
Service prüfen
Zeigen Sie erweiterte Informationen für einen Dienst an, einschließlich Load-Balancer-Konfiguration, aktive Bereitstellungen, Umgebungsvariablen und Geheimnisse.
Bereitstellungen zeigen aktive Versionen Ihres Dienstes an, die ausgeführt werden. Mehrere Bereitstellungen werden angezeigt, wenn ein Dienst aufgrund einer Bereitstellung oder Aktualisierung der Konfiguration wie CPU, Speicher oder Umgebungsvariablen umgestellt wird.
fargate service logs [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
[--time] [--no-prefix]
Protokolle von Aufgaben in einem Dienst anzeigen
Geben Sie mit der Option --follow entweder ein bestimmtes Segment von Dienstprotokollen oder Tail-Protokolle in Echtzeit zurück. Protokollen wird der Name des Protokollstreams vorangestellt, der das Format „fargate/<Dienstname>/<Aufgaben-ID>“ hat.
Follow wird weiterhin ausgeführt und gibt Protokolle zurück, bis es durch Control-C unterbrochen wird. Wenn --follow übergeben wird, kann --end nicht angegeben werden.
Protokolle können für bestimmte Aufgaben innerhalb eines Dienstes zurückgegeben werden, indem eine Aufgaben-ID über das Flag --task übergeben wird. Übergeben Sie --task mehrmals mit einer Aufgaben-ID, um Protokolle von mehreren spezifischen Aufgaben abzurufen.
Ein bestimmtes Protokollfenster kann angefordert werden, indem die Optionen --start und --end mit einem Zeitausdruck übergeben werden. Der Zeitausdruck kann entweder eine Dauer oder ein Zeitstempel sein:
Sie können Protokolle nach bestimmten Begriffen filtern, indem Sie einen Filterausdruck über das Flag --filter übergeben. Übergeben Sie einen einzelnen Begriff, um nach diesem Begriff zu suchen, und übergeben Sie mehrere Begriffe, um nach Protokollnachrichten zu suchen, die alle Begriffe enthalten. Weitere Informationen finden Sie in der CloudWatch Logs-Dokumentation.
--time fügt den Protokollzeitstempel in die Ausgabe ein
--no-prefix schließt das Protokoll-Stream-Präfix von der Ausgabe aus
fargate service ps
Listen Sie laufende Aufgaben für einen Dienst auf
fargate service scale <scale-expression>
Skalieren Sie die Anzahl der Aufgaben in einem Dienst
Ändert die Anzahl der gewünschten Aufgaben, die in einem Dienst ausgeführt werden sollen, um den angegebenen Skalierungsausdruck. Ein Skalierungsausdruck kann entweder eine absolute Zahl oder ein Delta sein, das mit einem Vorzeichen wie +5 oder -2 angegeben wird.
fargate service env set [--env <key=value>] [--file <pathname>]
[--secret <key=valueFrom>] [--secret-file <pathname>]
Legen Sie Umgebungsvariablen und Geheimnisse fest
Mindestens eine Umgebungsvariable oder ein Geheimnis muss über die Flags --env, --file, --secret oder --secret-file angegeben werden. Sie können eine beliebige Anzahl von Variablen in der Befehlszeile angeben, indem Sie --env vor jeder einzelnen Variable wiederholen, oder mehrere Variablen in eine Textdatei einfügen, eine pro Zeile, und den Dateinamen mit --file und/oder --secret-file angeben .
Jede --env- und --secret-Parameterzeichenfolge oder -zeile in der Datei muss die Form „Schlüssel=Wert“ haben, ohne Anführungszeichen und ohne Leerzeichen um das „=“, es sei denn, Sie möchten wörtliche führende Leerzeichen im Wert. Darüber hinaus muss die „Schlüssel“-Seite eine gültige Shell-ID sein, das heißt, sie muss mit einem ASCII-Buchstaben AZ oder einem Unterstrich beginnen und darf nur aus Buchstaben, Ziffern und Unterstrichen bestehen.
Der „Wert“ in „key=value“ für jedes Flag „--secret“ sollte den ARN auf das AWS Secrets Manager-Geheimnis oder den AWS Systems Manager Parameter Store-Parameter verweisen.
fargate service env unset --key <key-name>
Deaktivieren Sie Umgebungsvariablen und Geheimnisse
Setzt die über das Flag --key angegebene Umgebungsvariable oder das Geheimnis zurück. Geben Sie --key mehrmals mit einem Schlüsselnamen an, um mehrere Variablen zu deaktivieren.
fargate service env list
Umgebungsvariablen anzeigen
Flagge | Kurz | Standard | Beschreibung |
---|---|---|---|
--CPU | Anzahl der CPU-Einheiten, die jeder Aufgabe zugewiesen werden sollen | ||
--Erinnerung | -M | Menge an MiB, die jeder Aufgabe zugewiesen werden soll |
fargate service update [--cpu <cpu-units>] [--memory <MiB>]
Dienstkonfiguration aktualisieren
CPU- und Speichereinstellungen werden mit den Flags --cpu und --memory als CPU-Einheiten bzw. Mebibyte angegeben. Alle 1024 CPU-Einheiten entsprechen einer einzelnen vCPU. AWS Fargate unterstützt nur bestimmte Kombinationen von CPU- und Speicherkonfigurationen:
CPU (CPU-Einheiten) | Speicher (MiB) |
---|---|
256 | 512, 1024 oder 2048 |
512 | 1024 bis 4096 in 1-GiB-Schritten |
1024 | 2048 bis 8192 in 1-GiB-Schritten |
2048 | 4096 bis 16384 in 1-GiB-Schritten |
4096 | 8192 bis 30720 in 1-GiB-Schritten |
Mindestens eines von --cpu oder --memory muss angegeben werden.
fargate service restart
Dienst neu starten
Erstellt einen neuen Aufgabensatz für den Dienst und stoppt die vorherigen Aufgaben. Dies ist nützlich, wenn Ihr Dienst beispielsweise von einer externen Quelle zwischengespeicherte Daten neu laden muss.
Flagge | Kurz | Standard | Beschreibung |
---|---|---|---|
--Aufgabe | -T | Aufgabendefinitionsfamilie |
Aufgaben sind einmalige Ausführungen Ihres Containers. Instanzen Ihrer Aufgabe werden ausgeführt, bis Sie sie manuell entweder über AWS-APIs oder die AWS-Managementkonsole stoppen oder bis sie aus irgendeinem Grund unterbrochen werden.
fargate task register [--image <docker-image>]
[-e KEY=value -e KEY2=value] [--env-file dev.env]
[--secret KEY3=valueFrom] [--secret-file secrets.env]
Registriert eine neue Aufgabendefinition für das angegebene Docker-Image, Umgebungsvariablen oder Geheimnisse basierend auf der neuesten Revision der Aufgabenfamilie und gibt die neue Revisionsnummer zurück.
Das in der neuen Aufgabendefinition zu verwendende Docker-Container-Image kann über das Flag --image angegeben werden.
Die Umgebungsvariablen können mit einem oder mehreren Flags --env
oder dem Flag --env-file
angegeben werden.
Die Geheimnisse können mit einem oder mehreren Flags --secret
oder dem Flag --secret-file
angegeben werden.
fargate task register [--file docker-compose.yml]
Registriert eine neue Aufgabendefinition unter Verwendung des Bildes, der Umgebungsvariablen und der Geheimnisse, die in einer Docker-Compose-Datei definiert sind. Beachten Sie, dass Umgebungsvariablen durch den Inhalt der Compose-Datei ersetzt werden.
Geheimnisse können als Schlüssel-Wert-Paare unter dem Docker-Compose-Dateierweiterungsfeld x-fargate-secrets
definiert werden. Um Erweiterungsfelder verwenden zu können, muss die Compose-Dateiversion mindestens 2.4
für die 2.x-Serie oder mindestens 3.7
für die 3.x-Serie sein.
Wenn die Docker-Compose-Datei mehr als einen Container definiert, können Sie die Bezeichnung aws.ecs.fargate.deploy: 1
verwenden, um anzugeben, welchen Container Sie bereitstellen möchten.
fargate task describe
Der Befehl „beschreiben“ beschreibt eine Aufgabendefinition im Docker Compose-Format. Das Docker-Image, Umgebungsvariablen, Geheimnisse und Zielport sind die zugeordneten Elemente.
Dieser Befehl kann nützlich sein, um Änderungen anzuzeigen, die durch die Befehle task register
, service deploy
oder service env set
vorgenommen wurden. Es kann auch nützlich sein, um eine Aufgabendefinition zu Debug- oder Fehlerbehebungszwecken lokal auszuführen.
fargate task describe -t my-app > docker-compose.yml
docker-compose up
Sie können die Aufgabendefinitionsfamilie angeben, indem Sie eine Datei fargate.yml
, die Umgebungsvariable FARGATE_TASK
oder das Flag -t
“ einschließlich einer optionalen Revisionsnummer verwenden.
fargate task describe -t my-app
fargate task describe -t my-app:42
Beispielausgabe:
version : " 3.7 "
services :
app :
image : 1234567890.dkr.ecr.us-east-1.amazonaws.com/my-app:1.0
ports :
- published : 8080
target : 8080
environment :
AWS_REGION : us-east-1
ENVIRONMENT : dev
FOO : bar
x-fargate-secrets :
KEY : arn:key:ssm:us-east-1:000000000000:parameter/path/to/my_parameter
labels :
aws.ecs.fargate.deploy : " 1 "
fargate task logs [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
[--container-name] [--time] [--no-prefix]
Protokolle von Aufgaben anzeigen
Geht von einer Cloudwatch-Protokollgruppe mit der folgenden Konvention aus: fargate/task/<task>
wobei task
über --task
oder fargate.yml oder Umgebungsvariablenoptionen angegeben wird
Geben Sie mithilfe der Option --follow entweder ein bestimmtes Segment von Aufgabenprotokollen oder Endprotokollen in Echtzeit zurück. Den Protokollen wird der Name des Protokollstreams vorangestellt, der das Format fargate/<container-name>/<task-id>.
--container-name
ermöglicht es Ihnen, den Container innerhalb der Aufgabendefinition anzugeben, für den Protokolle abgerufen werden sollen (standardmäßig app
).
Follow wird weiterhin ausgeführt und gibt Protokolle zurück, bis es durch Control-C unterbrochen wird. Wenn --follow
übergeben wird, kann --end
nicht angegeben werden.
Protokolle können für bestimmte Aufgaben zurückgegeben werden, indem eine Aufgaben-ID über das Flag --task
übergeben wird. Übergeben Sie --task
mehrmals mit einer Aufgaben-ID, um Protokolle von mehreren spezifischen Aufgaben abzurufen.
Ein bestimmtes Protokollfenster kann angefordert werden, indem die Optionen --start
und --end
mit einem Zeitausdruck übergeben werden. Der Zeitausdruck kann entweder eine Dauer oder ein Zeitstempel sein:
Sie können Protokolle nach bestimmten Begriffen filtern, indem Sie einen Filterausdruck über das Flag --filter
übergeben. Übergeben Sie einen einzelnen Begriff, um nach diesem Begriff zu suchen, und übergeben Sie mehrere Begriffe, um nach Protokollnachrichten zu suchen, die alle Begriffe enthalten.
--time
fügt den Protokollzeitstempel in die Ausgabe ein
--no-prefix
schließt das Protokoll-Stream-Präfix von der Ausgabe aus
Flagge | Kurz | Standard | Beschreibung |
---|---|---|---|
--Regel | -R | CloudWatch-Ereignisregel |
Der Befehl events
stellt Unterbefehle für die Arbeit mit CloudWatch-Ereignissen (geplante Aufgaben usw.) bereit.
fargate events target --revision <revision>
„Bereitstellt“ (bewirkt, dass der nächste Ereignisregelaufruf die neue Version ausführt) einer Aufgabendefinitionsrevision für eine CloudWatch-Ereignisregel durch Aktualisieren des EcsParameters.TaskDefinitionArn
des Regelziels.
Ein typisches CI/CD-System könnte etwa Folgendes tun:
REVISION=$(fargate task register -i 123456789.dkr.ecr.us-east-1.amazonaws.com/my-app:${VERSION}-${CIRCLE_BUILD_NUM} -e FOO=bar)
fargate events target -r ${REVISION}