Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwendung von CloudWatch Logs zur Protokollierung des Ausführungsverlaufs in Step Functions
Standard-Workflows zeichnen den Ausführungsverlauf auf AWS Step Functions, obwohl Sie optional die Protokollierung in Amazon CloudWatch Logs konfigurieren können.
Anders als Standard-Workflows zeichnen Express-Workflows den Ausführungsverlauf nicht in AWS Step Functions auf. Um den Ausführungsverlauf und die Ergebnisse für einen Express-Workflow zu sehen, müssen Sie die Protokollierung in Amazon CloudWatch Logs konfigurieren. Durch das Veröffentlichen von Protokollen werden die Ausführungen nicht blockiert oder verlangsamt.
Garantien für die Protokollzustellung
Amazon CloudWatch Logs werden nach bestem Wissen und Gewissen geliefert. Die Vollständigkeit und Aktualität der Protokolleinträge können nicht garantiert werden. Wenn Sie einen garantierten Workflow-Verlauf in Express Workflows benötigen, empfehlen wir Ihnen, Workflow-Schritte zu implementieren, um Daten in einem geeigneten Datenspeicherservice wie Amazon DynamoDB aufzuzeichnen. Alternativ könnten Sie die Verwendung von Standard-Workflows für eine garantierte Ausführungshistorie in Betracht ziehen.
Preisinformationen
Wenn Sie die Protokollierung konfigurieren, fallen CloudWatch Logs-Gebühren
Konfigurieren der -Protokollierung
Wenn Sie mit der Step Functions Functions-Konsole einen Standard-Workflow erstellen, ist dieser Zustandsmaschine nicht so konfiguriert, dass er CloudWatch Protokolle an Logs sendet. Wenn Sie mit der Step Functions Functions-Konsole einen Express-Workflow erstellen, ist dieser Zustandsmaschine standardmäßig so konfiguriert, dass er CloudWatch Protokolle an Logs sendet.
Für Express-Workflows kann Step Functions eine Rolle mit der erforderlichen AWS Identity and Access Management (IAM-) Richtlinie für CloudWatch Logs erstellen. Wenn Sie einen Standard-Workflow oder einen Express-Workflow mithilfe der API, CLI oder der API erstellen AWS CloudFormation, aktiviert Step Functions die Protokollierung standardmäßig nicht, und Sie müssen sicherstellen, dass Ihre Rolle über die erforderlichen Berechtigungen verfügt.
Für jede Ausführung, die von der Konsole aus gestartet wird, stellt Step Functions einen Link zu CloudWatch Logs bereit, der mit dem richtigen Filter konfiguriert ist, um Protokollereignisse abzurufen, die für diese Ausführung spezifisch sind.
Sie können optional vom Kunden verwaltete AWS KMS Schlüssel konfigurieren, um Ihre Protokolle zu verschlüsseln. Verschlüsselung von Daten im RuhezustandEinzelheiten und Berechtigungseinstellungen finden Sie unter.
Um die Protokollierung zu konfigurieren, können Sie den LoggingConfigurationParameter übergeben, wenn Sie CreateStateMachineoder verwenden UpdateStateMachine. Mithilfe von CloudWatch Logs Insights können Sie Ihre Daten in CloudWatch Logs weiter analysieren. Weitere Informationen finden Sie unter Analysieren von Protokolldaten mit CloudWatch Logs Insights.
CloudWatch Protokolliert Payloads
Ereignisse in der Ausführungshistorie können entweder Eingabe- oder Ausgabeeigenschaften in ihren Definitionen enthalten. Wenn die Escape-Eingabe oder die an CloudWatch Logs gesendete Escape-Ausgabe 248 KiB überschreitet, werden sie aufgrund der CloudWatch Log-Kontingente gekürzt.
-
Anhand der Eigenschaften und können Sie feststellen, ob eine Payload gekürzt wurde.
inputDetails
outputDetails
Weitere Informationen finden Sie unterHistoryEventExecutionDataDetails
Datentyp. -
Für Standard-Workflows können Sie den vollständigen Ausführungsverlauf anzeigen, indem Sie
GetExecutionHistory
-
GetExecutionHistory
ist für Express-Workflows nicht verfügbar. Wenn Sie die vollständige Eingabe und Ausgabe sehen möchten, können Sie Amazon S3 verwenden ARNs. Weitere Informationen finden Sie unter Amazon S3 verwenden, ARNs anstatt große Nutzlasten in Step Functions zu übergeben.
IAM-Richtlinien für die Protokollierung in Protokollen CloudWatch
Wie im folgenden Beispiel gezeigt, müssen Sie auch die Ausführungs-IAM-Rolle Ihres Zustandsmaschinen so konfigurieren, dass Sie über die erforderlichen Berechtigungen für die CloudWatch Protokollierung in Logs verfügen.
Beispiel für eine IAM-Richtlinie
Im Folgenden finden Sie eine Beispielrichtlinie, mit der Sie Ihre Berechtigungen konfigurieren können. Wie im folgenden Beispiel gezeigt, müssen Sie * in das Resource
Feld eingeben. CloudWatch API-Aktionen wie CreateLogDelivery und unterstützen keine Ressourcentypen DescribeLogGroups, die von definiert sind Amazon CloudWatch Logs. Weitere Informationen finden Sie unter Aktionen, die von definiert sindAmazon CloudWatch Logs.
-
Informationen zu CloudWatch Ressourcen finden Sie unter CloudWatch LogsRessourcen und Abläufe im CloudWatch Amazon-Benutzerhandbuch.
-
Informationen zu den Berechtigungen, die Sie benötigen, um das Senden von Protokollen an CloudWatch Logs einzurichten, finden Sie unter Benutzerberechtigungen im Abschnitt Gesendete Logs CloudWatch Logs.
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:CreateLogStream", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "logs:PutLogEvents", "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": "*" } ] }
Protokollebenen für Ausführungsereignisse von Step Functions
Die Protokollebenen reichen von ALL
ERROR
bis FATAL
bisOFF
. Alle Ereignistypen werden protokolliert. Wenn diese Einstellung auf gesetzt istALL
, werden keine Ereignistypen protokolliertOFF
. Informationen zu ERROR
und FATAL
finden Sie in der folgenden Tabelle.
Weitere Informationen zu den Ausführungsdaten, die für Express Workflow-Ausführungen auf der Grundlage dieser Protokollebenen angezeigt werden, finden Sie unterBei Standard- und Express-Konsolen gibt es Unterschiede.
Ereignistyp | ALL |
ERROR |
FATAL |
OFF |
---|---|---|---|---|
ChoiceStateEntered |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
ChoiceStateExited |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
ExecutionAborted |
Geloggt | Geloggt | Geloggt | Nicht angemeldet |
ExecutionFailed |
Geloggt | Geloggt | Geloggt | Nicht angemeldet |
ExecutionStarted |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
ExecutionSucceeded |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
ExecutionTimedOut |
Geloggt | Geloggt | Geloggt | Nicht angemeldet |
FailStateEntered |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
LambdaFunctionFailed |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
LambdaFunctionScheduled | Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
LambdaFunctionScheduleFailed |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
LambdaFunctionStarted |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
LambdaFunctionStartFailed |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
LambdaFunctionSucceeded |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
LambdaFunctionTimedOut |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
MapIterationAborted |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
MapIterationFailed |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
MapIterationStarted |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
MapIterationSucceeded |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
MapRunAborted |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
MapRunFailed |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
MapStateAborted |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
MapStateEntered |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
MapStateExited |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
MapStateFailed |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
MapStateStarted |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
MapStateSucceeded |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
ParallelStateAborted |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
ParallelStateEntered |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
ParallelStateExited |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
ParallelStateFailed | Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
ParallelStateStarted |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
ParallelStateSucceeded |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
PassStateEntered |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
PassStateExited |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
SucceedStateEntered |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
SucceedStateExited |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
TaskFailed |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
TaskScheduled |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
TaskStarted | Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
TaskStartFailed |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
TaskStateAborted |
Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
TaskStateEntered |
Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
TaskStateExited | Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
TaskSubmitFailed | Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
TaskSubmitted | Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
TaskSucceeded | Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
TaskTimedOut | Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
WaitStateAborted | Geloggt | Geloggt | Nicht angemeldet | Nicht angemeldet |
WaitStateEntered | Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
WaitStateExited | Geloggt | Nicht angemeldet | Nicht angemeldet | Nicht angemeldet |
Problembehandlung bei der Protokollierung in CloudWatch Logs
Wenn Ihr Zustandsmaschine keine CloudWatch Protokolle an Logs senden kann oder Ihnen die folgende Fehlermeldung angezeigt wird: "AccessDeniedException : The state machine IAM Role is not authorized to access
the Log Destination
„, versuchen Sie es mit den folgenden Schritten:
-
Stellen Sie sicher, dass die Ausführungsrolle Ihres Zustandsmaschinen berechtigt ist, sich in CloudWatch Logs zu protokollieren.
Wenn Sie UpdateStateMachineAPI-Endpunkte aufrufen CreateStateMachine, stellen Sie sicher, dass die im
roleArn
Parameter angegebene IAM-Rolle die erforderlichen Berechtigungen bereitstellt, wie im vorherigen Beispiel für eine IAM-Richtlinie gezeigt. -
Stellen Sie sicher, dass die Ressourcenrichtlinie für CloudWatch Logs das Limit von 5.120 Zeichen nicht überschreitet.
Wenn die Richtlinie die Zeichenbeschränkung überschreitet, stellen Sie Ihren Protokollgruppennamen ein Präfix voran,
/aws/vendedlogs/states
um Ihren Zustandsmaschinen Berechtigungen zu gewähren und das Limit zu umgehen.Wenn Sie eine Protokollgruppe in der Step Functions Functions-Konsole erstellen, wird den vorgeschlagenen Protokollgruppennamen bereits ein Präfix
/aws/vendedlogs/states
vorangestellt. Weitere Informationen zu bewährten Methoden für die Protokollierung finden Sie unterGrößenbeschränkungen für Ressourcenrichtlinien vermeiden CloudWatch . -
Vergewissern Sie sich, dass die Anzahl der Ressourcenrichtlinien für CloudWatch Logs Log im Konto unter zehn liegt.
CloudWatch Logs hat ein Kontingent von zehn Ressourcenrichtlinien pro Region und Konto. Wenn Sie versuchen, die Protokollierung auf einem Zustandsmaschine zu aktivieren, der bereits über zehn Ressourcenrichtlinien verfügt, wird der Zustandsmaschine weder erstellt noch aktualisiert, und Sie erhalten eine Fehlermeldung. Weitere Informationen zu Protokollierungskontingenten finden Sie unter CloudWatch Protokollkontingente
Um das Problem zu überprüfen, überprüfen Sie die Anzahl der Ressourcenrichtlinien mit dem CLI-Befehl:
aws logs describe-resource-policies
Um das Problem zu lösen, ändern Sie Ihre vorhandenen Ressourcenrichtlinien.
Erstellen Sie zunächst eine Sicherungskopie der vorhandenen Richtlinien. Fügen Sie dann ähnliche Aktionen oder Ressourcen zu einer neuen Richtlinie zusammen und verwenden Sie den folgenden CLI-Befehl, um eine neue Lieferquelle im Konto zu erstellen:
Nachdem Sie die Richtlinien gesichert und aktualisiert haben, entfernen Sie alle nicht verwendeten Richtlinien mit dem folgenden Befehl:
aws logs delete-resource-policy --policy-name <PolicyNameToBeDeleted>