

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.

# Aufbau von Lambda-Funktionen mit PowerShell
<a name="lambda-powershell"></a>

In den folgenden Abschnitten wird erklärt, wie gängige Programmiermuster und Kernkonzepte beim Verfassen von Lambda-Funktionscode in PowerShell angewendet werden.

Lambda bietet die folgenden Beispielanwendungen für PowerShell:
+ [blank-powershell](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-powershell) — Eine PowerShell Funktion, die die Verwendung von Logging, Umgebungsvariablen und dem SDK veranschaulicht. AWS 

Bevor Sie beginnen, müssen Sie zunächst eine PowerShell Entwicklungsumgebung einrichten. Anweisungen dazu finden Sie unter [Einrichten einer PowerShell-Entwicklungsumgebung](powershell-devenv.md).

Weitere Informationen zur Verwendung des AWSLambda PSCore Moduls zum Herunterladen von PowerShell Beispielprojekten aus Vorlagen, zum Erstellen von PowerShell Bereitstellungspaketen und zum Bereitstellen von PowerShell Funktionen in der AWS Cloud finden Sie unter[PowerShell-Lambda-Funktionen mit .zip-Dateiarchiven bereitstellen](powershell-package.md).

Lambda stellt die folgenden Laufzeiten für .NET-Sprachen bereit:


| Name | ID | Betriebssystem | Datum der Veraltung | Blockfunktion erstellen | Blockfunktion aktualisieren | 
| --- | --- | --- | --- | --- | --- | 
|  .NET 10  |  `dotnet10`  |  Amazon Linux 2023  |   14. November 2028   |   14. Dezember 2028   |   15. Januar 2029   | 
|  .NET 9 (nur Container)  |  `dotnet9`  |  Amazon Linux 2023  |   10. November 2026   |   Nicht geplant   |   Nicht geplant   | 
|  .NET 8  |  `dotnet8`  |  Amazon Linux 2023  |   10. November 2026   |   10. Dezember 2026   |   11. Januar 2027   | 

**Topics**
+ [Einrichten einer PowerShell-Entwicklungsumgebung](powershell-devenv.md)
+ [PowerShell-Lambda-Funktionen mit .zip-Dateiarchiven bereitstellen](powershell-package.md)
+ [Definieren von Lambda-Funktions-Handlern in PowerShell](powershell-handler.md)
+ [Verwenden des Lambda-Kontextobjekts zum Abrufen von PowerShell-Funktionsinformationen](powershell-context.md)
+ [Powershell-Lambda-Funktionen protokollieren und überwachen](powershell-logging.md)

# Einrichten einer PowerShell-Entwicklungsumgebung
<a name="powershell-devenv"></a>

Lambda bietet eine Reihe von Tools und Bibliotheken für die PowerShell-Laufzeit. Eine Installationsanleitung finden Sie unter [Lambda Tools for PowerShell](https://github.com/aws/aws-lambda-dotnet/tree/master/PowerShell) auf GitHub.

Das AWSLambdaPSCore-Modul enthält die folgenden Cmdlets, um das Erstellen und Veröffentlichen von PowerShell-Lambda-Funktionen zu unterstützen:
+ **Get-AWSPowerShellLambdaTemplate** – Gibt eine Liste der Einstiegs-Vorlagen zurück.
+ **New-AWSPowerShellLambda** – Erstellt eine anfängliche PowerShell-Skript basierend auf einer Vorlage.
+ **Publish-AWSPowerShellLambda** – Veröffentlicht ein bestimmtes PowerShell-Skript in Lambda.
+ **New-AWSPowerShellLambdaPackage** – Erstellt ein Lambda-Bereitstellungspaket, das in einem CI/CD-System für die Bereitstellung verwendet werden kann.

# PowerShell-Lambda-Funktionen mit .zip-Dateiarchiven bereitstellen
<a name="powershell-package"></a>

Ein Bereitstellungspaket für die PowerShell-Laufzeit enthält Ihr PowerShell-Skript, PowerShell-Module, die für Ihr PowerShell-Skript erforderlich sind, und die Komponenten, die zum Hosten von PowerShell Core erforderlich sind.

## Erstellen der Lambda-Funktion
<a name="powershell-package-create"></a>

Um die ersten Schritte zum Schreiben und Aufrufen eines PowerShell-Skripts mit Lambda auszuführen, können Sie das `New-AWSPowerShellLambda`-Cmdlet verwenden, um ein Starter-Skript basierend auf einer Vorlage zu erstellen. Sie können das `Publish-AWSPowerShellLambda`-Cmdlet verwenden, um Ihr Skript in Lambda bereitzustellen. Anschließend können Sie Ihr Skript entweder über die Befehlszeile oder die Lambda-Konsole testen.

Zum Erstellen, Hochladen und Testen eines neuen PowerShell-Skripts gehen Sie wie folgt vor:

1. Führen Sie den folgenden Befehl aus, um die Liste der verfügbaren Vorlagen anzuzeigen:

   ```
   PS C:\> Get-AWSPowerShellLambdaTemplate
   
   Template               Description
   --------               -----------
   Basic                  Bare bones script
   CodeCommitTrigger      Script to process AWS CodeCommit Triggers
   ...
   ```

1. Führen Sie den folgenden Befehl aus, um ein Beispielskript anhand der `Basic`-Vorlage zu erstellen:

   ```
   New-AWSPowerShellLambda -ScriptName MyFirstPSScript -Template Basic
   ```

   Eine neue Datei mit dem Namen `MyFirstPSScript.ps1` wird in einem neuen Unterverzeichnis des aktuellen Verzeichnisses erstellt. Der Name des Verzeichnisses basiert auf dem `-ScriptName`-Parameter. Sie können den `-Directory`-Parameter verwenden, um ein alternatives Verzeichnis auswählen.

   Sie können sehen, dass die neue Datei folgenden Inhalt hat:

   ```
   # PowerShell script file to run as a Lambda function
   # 
   # When executing in Lambda the following variables are predefined.
   #   $LambdaInput - A PSObject that contains the Lambda function input data.
   #   $LambdaContext - An Amazon.Lambda.Core.ILambdaContext object that contains information about the currently running Lambda environment.
   #
   # The last item in the PowerShell pipeline is returned as the result of the Lambda function.
   #
   # To include PowerShell modules with your Lambda function, like the AWSPowerShell.NetCore module, add a "#Requires" statement 
   # indicating the module and version.
                   
   #Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'}
   
   # Uncomment to send the input to CloudWatch Logs
   # Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5)
   ```

1. Wenn Sie wissen möchten, wie Log-Nachrichten von Ihrem PowerShell-Skript an Amazon CloudWatch Logs gesendet werden, entfernen Sie die Kommentarzeichen in der `Write-Host`-Zeile des Beispielskripts.

   Um zu veranschaulichen, wie Sie Daten von Ihren Lambda-Funktionen zurückgeben können, fügen Sie mit eine neue Zeile am Ende des Skripts hinzu `$PSVersionTable`. Damit wird `$PSVersionTable` der PowerShell-Pipeline hinzugefügt. Nachdem das PowerShell-Skript abgeschlossen ist, ist das letzte Objekt der PowerShell-Pipeline der Rückgabewert für die Lambda-Funktion. Bei `$PSVersionTable` handelt es sich um eine globale PowerShell-Variable, die außerdem Informationen über die laufende Umgebung bietet.

   Nachdem Sie alle Änderungen vorgenommen haben, sehen die beiden letzten Zeilen des Beispielskripts wie folgt aus:

   ```
   Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5)
   $PSVersionTable
   ```

1. Nachdem Sie die `MyFirstPSScript.ps1`-Datei bearbeitet haben, ändern Sie das Verzeichnis in den Speicherort des Skripts. Führen Sie anschließend führen Sie den folgenden Befehl aus, um das Skript in Lambda zu veröffentlichen:

   ```
   Publish-AWSPowerShellLambda -ScriptPath .\MyFirstPSScript.ps1 -Name  MyFirstPSScript -Region us-east-2
   ```

   Beachten Sie, dass der `-Name`-Parameter den Lambda-Funktionsnamen angibt, der in der Lambda-Konsole angezeigt wird. Sie können diese Funktion auch verwenden, um Ihr Skript manuell aufzurufen.

1. Rufen Sie Ihre Funktion mit dem AWS Command Line Interface (AWS CLI) `invoke`-Befehl auf.

   ```
   > aws lambda invoke --function-name MyFirstPSScript out
   ```

# Definieren von Lambda-Funktions-Handlern in PowerShell
<a name="powershell-handler"></a>

Beim Aufrufen einer Lambda-Funktion ruft der Lambda-Handler das PowerShell-Skript auf.

Wenn das PowerShell-Skript aufgerufen wird, werden die folgenden Variablen vordefiniert:
+  *\$1LambdaInput* – Ein PSObject mit den Eingabedaten für den Handler. Diese Eingabedaten können (von einer Ereignisquelle veröffentlichte) Ereignisdaten oder beliebige andere Eingabedaten sein, die Sie in Form einer Zeichenfolge oder eines benutzerdefinierten Datenobjekts übergeben. 
+  *\$1LambdaContext* – Ein Amazon.Lambda.Core.ILambdaContext-Objekt, das Sie für den Zugriff auf Informationen über den aktuellen Aufrufverwenden können, wie etwa den Namen der aktuellen Funktion, das Speicherlimit, die verbleibende Ausführungszeit und die Protokollierung. 

Betrachten Sie beispielsweise das folgende PowerShell-Codebeispiel.

```
#Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'}
Write-Host 'Function Name:' $LambdaContext.FunctionName
```

Dieses Skript gibt die FunctionName-Eigenschaft zurück, das es von der \$1LambdaContext-Variable USD erhält.

**Anmerkung**  
Sie müssen die `#Requires`-Anweisung innerhalb Ihres PowerShell-Skripts verwenden, um die Module anzugeben, von denen Ihre Skripts abhängen. Diese Anweisung erfüllt zwei wichtige Aufgaben. 1) Sie teilt anderen Entwicklern mit, welche Module das Skript verwendet und 2) identifiziert die abhängigen Module, die AWS PowerShell-Tools mit dem Skript im Rahmen der Bereitstellung verpacken müssen. Weitere Informationen über die `#Requires`-Anweisung in PowerShell finden Sie unter [About Requires](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_requires?view=powershell-6). Weitere Informationen zu PowerShell Bereitstellungspaketen finden Sie unter [PowerShell-Lambda-Funktionen mit .zip-Dateiarchiven bereitstellen](powershell-package.md).  
Wenn Ihre PowerShell Lambda-Funktion AWS PowerShell-Cmdlets verwendet, dann stellen Sie sicher, dass Sie eine `AWSPowerShell.NetCore`-Anweisung festlegen, die auf das `#Requires`-Modul verweist. Dieses Modul unterstützt PowerShell Core und nicht das `AWSPowerShell`-Modul, das nur Windows PowerShell unterstützt. Stellen Sie zudem sicher, dass Sie `AWSPowerShell.NetCore` Version 3.3.270.0 oder höher verwenden, da diese den Cmdlet-Importvorgang optimiert. Mit älteren Versionen dauern Kaltstarts länger. Weitere Informationen finden Sie unter [AWS-Tools for PowerShell](https://aws.amazon.com/powershell/?track=sdk).

## Zurückgeben von Daten
<a name="powershell-handler-output"></a>

Einige Lambda-Aufrufe sollen Daten zurück an ihren Aufrufer zurückgeben. Beispiel: Wenn ein Aufruf als Reaktion auf eine Webanforderung aus API Gateway erfolgt ist, muss unsere Lambda-Funktion die Antwort zurückgeben. Für PowerShell Lambda ist das letzte Objekt, das der PowerShell-Pipeline hinzugefügt wird, die Rückgabedaten aus dem Lambda-Aufruf. Wenn es sich bei dem Objekt um eine Zeichenfolge handelt, werden die Daten im Ist-Zustand zurückgegeben. Andernfalls wird das Objekt mithilfe des `ConvertTo-Json`-Cmdlets in JSON konvertiert.

Betrachten Sie dazu die folgende Beispiel PowerShell-Anweisung, mit der `$PSVersionTable` der PowerShell-Pipeline hinzugefügt wird:

```
$PSVersionTable
```

Nachdem das PowerShell-Skript beendet ist, ist das letzte Objekt der PowerShell-Pipeline der Rückgabewert für die Lambda-Funktion. Bei `$PSVersionTable` handelt es sich um eine globale PowerShell-Variable, die außerdem Informationen über die laufende Umgebung bietet.

# Verwenden des Lambda-Kontextobjekts zum Abrufen von PowerShell-Funktionsinformationen
<a name="powershell-context"></a>

Wenn Lambda Ihre Funktion ausführt, werden Context-Informationen übergeben, indem eine `$LambdaContext`-Variable für den [Handler](powershell-handler.md) verfügbar gemacht wird. Diese Variable stellt Methoden und Eigenschaften mit Informationen zum Aufruf, zur Funktion und zur Ausführungsumgebung bereit.

**Context-Eigenschaften**
+ `FunctionName` – Der Name der Lambda-Funktion.
+ `FunctionVersion` – Die [Version](configuration-versions.md) der Funktion.
+ `InvokedFunctionArn` – Der Amazon-Ressourcenname (ARN), der zum Aufrufen der Funktion verwendet wird. Gibt an, ob der Aufrufer eine Versionsnummer oder einen Alias angegeben hat.
+ `MemoryLimitInMB` – Die Menge an Arbeitsspeicher, die der Funktion zugewiesen ist.
+ `AwsRequestId` – Der Bezeichner der Aufrufanforderung.
+ `LogGroupName` – Protokollgruppe für die Funktion.
+ `LogStreamName` – Der Protokollstrom für die Funktionsinstance.
+ `RemainingTime` – Die Anzahl der Millisekunden, die vor der Zeitüberschreitung der Ausführung verbleiben.
+ `Identity` – Informationen zur Amazon-Cognito-Identität, die die Anforderung autorisiert hat.
+ `ClientContext` – (mobile Apps) Clientkontext, der Lambda von der Clientanwendung bereitgestellt wird.
+ `Logger` – Das [Logger-Objekt](powershell-logging.md) für die Funktion.

Der folgende PowerShell-Codeausschnitt zeigt eine einfache Handler-Funktion zum Drucken einiger der Kontextinformationen. 

```
#Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'}
Write-Host 'Function name:' $LambdaContext.FunctionName
Write-Host 'Remaining milliseconds:' $LambdaContext.RemainingTime.TotalMilliseconds
Write-Host 'Log group name:' $LambdaContext.LogGroupName
Write-Host 'Log stream name:' $LambdaContext.LogStreamName
```

# Powershell-Lambda-Funktionen protokollieren und überwachen
<a name="powershell-logging"></a>

AWS Lambda überwacht automatisch Lambda-Funktionen in Ihrem Namen und sendet Protokolle an Amazon CloudWatch. Ihre Lambda-Funktion enthält eine CloudWatch Logs-Log-Gruppe und einen Log-Stream für jede Instanz Ihrer Funktion. Die Lambda-Laufzeitumgebung sendet Details zu den einzelnen Aufrufen an den Protokollstream und leitet Protokolle und andere Ausgaben aus dem Code Ihrer Funktion weiter. Weitere Informationen finden Sie unter [Senden von Lambda-Funktionsprotokollen an CloudWatch Logs](monitoring-cloudwatchlogs.md).

Auf dieser Seite wird beschrieben, wie Sie eine Protokollausgabe aus dem Code Ihrer Lambda-Funktion erstellen und mithilfe der AWS Command Line Interface Lambda-Konsole oder der CloudWatch Konsole auf Logs zugreifen.

**Topics**
+ [Erstellen einer Funktion, die Protokolle zurückgibt](#powershell-logging-output)
+ [Anzeigen von Protokollen in der Lambda-Konsole](#powershell-logging-console)
+ [Protokolle in der Konsole anzeigen CloudWatch](#powershell-logging-cwconsole)
+ [Logs mit dem Befehl () anzeigen AWS Command Line Interface AWS CLI](#powershell-logging-cli)
+ [Löschen von Protokollen](#powershell-logging-delete)

## Erstellen einer Funktion, die Protokolle zurückgibt
<a name="powershell-logging-output"></a>

[Um Protokolle aus Ihrem Funktionscode auszugeben, können Sie Cmdlets auf Microsoft verwenden. PowerShell.Utility](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility) oder ein beliebiges Protokollierungsmodul, das in oder schreibt. `stdout` `stderr` Im folgenden Beispiel wird verwende `Write-Host`.

**Example [function/Handler.ps1](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-powershell/function/Handler.ps1) – Protokollierung**  

```
#Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'}
Write-Host `## Environment variables
Write-Host AWS_LAMBDA_FUNCTION_VERSION=$Env:AWS_LAMBDA_FUNCTION_VERSION
Write-Host AWS_LAMBDA_LOG_GROUP_NAME=$Env:AWS_LAMBDA_LOG_GROUP_NAME
Write-Host AWS_LAMBDA_LOG_STREAM_NAME=$Env:AWS_LAMBDA_LOG_STREAM_NAME
Write-Host AWS_EXECUTION_ENV=$Env:AWS_EXECUTION_ENV
Write-Host AWS_LAMBDA_FUNCTION_NAME=$Env:AWS_LAMBDA_FUNCTION_NAME
Write-Host PATH=$Env:PATH
Write-Host `## Event
Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 3)
```

**Example Protokollformat**  

```
START RequestId: 56639408-xmpl-435f-9041-ac47ae25ceed Version: $LATEST
Importing module ./Modules/AWSPowerShell.NetCore/3.3.618.0/AWSPowerShell.NetCore.psd1
[Information] - ## Environment variables
[Information] - AWS_LAMBDA_FUNCTION_VERSION=$LATEST
[Information] - AWS_LAMBDA_LOG_GROUP_NAME=/aws/lambda/blank-powershell-function-18CIXMPLHFAJJ
[Information] - AWS_LAMBDA_LOG_STREAM_NAME=2020/04/01/[$LATEST]53c5xmpl52d64ed3a744724d9c201089
[Information] - AWS_EXECUTION_ENV=AWS_Lambda_dotnet6_powershell_1.0.0
[Information] - AWS_LAMBDA_FUNCTION_NAME=blank-powershell-function-18CIXMPLHFAJJ
[Information] - PATH=/var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin
[Information] - ## Event
[Information] - 
{
    "Records": [
        {
            "messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78",
            "receiptHandle": "MessageReceiptHandle",
            "body": "Hello from SQS!",
            "attributes": {
                "ApproximateReceiveCount": "1",
                "SentTimestamp": "1523232000000",
                "SenderId": "123456789012",
                "ApproximateFirstReceiveTimestamp": "1523232000001"
            },
            ...
END RequestId: 56639408-xmpl-435f-9041-ac47ae25ceed
REPORT RequestId: 56639408-xmpl-435f-9041-ac47ae25ceed	Duration: 3906.38 ms	Billed Duration: 9867 ms	Memory Size: 512 MB	Max Memory Used: 367 MB	Init Duration: 5960.19 ms	
XRAY TraceId: 1-5e843da6-733cxmple7d0c3c020510040	SegmentId: 3913xmpl20999446	Sampled: true
```

Die .NET-Laufzeit protokolliert die Zeilen `START`, `END` und `REPORT` für jeden Aufruf. Die Berichtszeile enthält die folgenden Details.

**Datenfelder für REPORT-Zeilen**
+ **RequestId**— Die eindeutige Anforderungs-ID für den Aufruf.
+ **Dauer** – Die Zeit, die die Handler-Methode Ihrer Funktion mit der Verarbeitung des Ereignisses verbracht hat.
+ **Fakturierte Dauer** – Die für den Aufruf fakturierte Zeit.
+ **Speichergröße** – Die der Funktion zugewiesene Speichermenge.
+ **Max. verwendeter Speicher** – Die Speichermenge, die von der Funktion verwendet wird. Wenn Aufrufe eine Ausführungsumgebung gemeinsam nutzen, meldet Lambda den maximalen Speicherverbrauch für alle Aufrufe. Dieses Verhalten kann zu einem höheren als erwarteten gemeldeten Wert führen.
+ **Initialisierungsdauer** – Für die erste Anfrage die Zeit, die zur Laufzeit zum Laden der Funktion und Ausführen von Code außerhalb der Handler-Methode benötigt wurde.
+ **XRAY TraceId** [— Für verfolgte Anfragen die AWS X-Ray Trace-ID.](services-xray.md)
+ **SegmentId**— Für verfolgte Anfragen die X-Ray-Segment-ID.
+ **Stichprobe** – Bei verfolgten Anforderungen das Stichprobenergebnis.

## Anzeigen von Protokollen in der Lambda-Konsole
<a name="powershell-logging-console"></a>

Sie können die Lambda-Konsole verwenden, um die Protokollausgabe nach dem Aufrufen einer Lambda-Funktion anzuzeigen.

Wenn Ihr Code über den eingebetteten **Code**-Editor getestet werden kann, finden Sie Protokolle in den **Ausführungsergebnissen**. Wenn Sie das Feature Konsolentest verwenden, um eine Funktion aufzurufen, finden Sie die **Protokollausgabe** im Abschnitt **Details**.

## Protokolle in der Konsole anzeigen CloudWatch
<a name="powershell-logging-cwconsole"></a>

Sie können die CloudWatch Amazon-Konsole verwenden, um Protokolle für alle Lambda-Funktionsaufrufe anzuzeigen.

**Um Protokolle auf der Konsole anzuzeigen CloudWatch**

1. Öffnen Sie die [Seite Protokollgruppen](https://console.aws.amazon.com/cloudwatch/home?#logs:) auf der CloudWatch Konsole.

1. Wählen Sie die Protokollgruppe für Ihre Funktion (***your-function-name*/aws/lambda/**).

1. Wählen Sie eine Protokollstream aus.

Jeder Protokoll-Stream entspricht einer [Instance Ihrer Funktion](lambda-runtime-environment.md). Ein Protokollstream wird angezeigt, wenn Sie Ihre Lambda-Funktion aktualisieren und wenn zusätzliche Instanzen für gleichzeitige Aufrufe erstellt werden. Um Protokolle für einen bestimmten Aufruf zu finden, empfehlen wir, Ihre Funktion mit zu instrumentieren. AWS X-Ray X-Ray erfasst Details zu der Anforderung und dem Protokollstream in der Trace.

## Logs mit dem Befehl () anzeigen AWS Command Line Interface AWS CLI
<a name="powershell-logging-cli"></a>

Das AWS CLI ist ein Open-Source-Tool, mit dem Sie mithilfe von Befehlen in Ihrer Befehlszeilen-Shell mit AWS Diensten interagieren können. Zur Durchführung der Schritte in diesem Abschnitt benötigen Sie [AWS CLI Version 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

Sie können die [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) verwenden, um Protokolle für einen Aufruf mit der `--log-type`-Befehlsoption abzurufen. Die Antwort enthält das Feld `LogResult`, das bis zu 4 KB base64-verschlüsselte Protokolle aus dem Aufruf enthält.

**Example eine Log-ID abrufen**  
Das folgende Beispiel zeigt, wie eine *Protokoll-ID* aus dem `LogResult`-Feld für eine Funktion namens `my-function` abgerufen wird.  

```
aws lambda invoke --function-name my-function out --log-type Tail
```
Die Ausgabe sollte folgendermaßen aussehen:  

```
{
    "StatusCode": 200,
    "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...",
    "ExecutedVersion": "$LATEST"
}
```

**Example entschlüsseln der Protokolle**  
Verwenden Sie in derselben Eingabeaufforderung das `base64`-Dienstprogramm, um die Protokolle zu entschlüsseln. Das folgende Beispiel zeigt, wie Base64-codierte Logs für abgerufen werde `my-function`.  

```
aws lambda invoke --function-name my-function out --log-type Tail \
--query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decode
```
Die **cli-binary-format** Option ist erforderlich, wenn Sie AWS CLI Version 2 verwenden. Um dies zur Standardeinstellung zu machen, führen Sie `aws configure set cli-binary-format raw-in-base64-out` aus. Weitere Informationen finden Sie unter [Von AWS CLI unterstützte globale Befehlszeilenoptionen](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) im *AWS Command Line Interface -Benutzerhandbuch für Version 2*.  
Die Ausgabe sollte folgendermaßen aussehen:  

```
START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST
"AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib",
END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8
REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8  Duration: 79.67 ms      Billed Duration: 80 ms         Memory Size: 128 MB     Max Memory Used: 73 MB
```
Das `base64`-Dienstprogramm ist unter Linux, macOS und [Ubuntu auf Windows](https://docs.microsoft.com/en-us/windows/wsl/install-win10)verfügbar. macOS-Benutzer müssen möglicherweise `base64 -D` verwenden.

**Example get-logs.sh-Skript**  
Verwenden Sie in derselben Eingabeaufforderung das folgende Skript, um die letzten fünf Protokollereignisse herunterzuladen. Das Skript verwendet `sed` zum Entfernen von Anführungszeichen aus der Ausgabedatei und wechselt 15 Sekunden lang in den Ruhezustand, um Zeit einzuräumen, damit Protokolle verfügbar werden können. Die Ausgabe enthält die Antwort von Lambda und die `get-log-events`Ausgabe des Befehls.   
Kopieren Sie den Inhalt des folgenden Codebeispiels und speichern Sie es in Ihrem Lambda-Projektverzeichnis unter `get-logs.sh`.  
Die **cli-binary-format** Option ist erforderlich, wenn Sie AWS CLI Version 2 verwenden. Um dies zur Standardeinstellung zu machen, führen Sie `aws configure set cli-binary-format raw-in-base64-out` aus. Weitere Informationen finden Sie unter [Von AWS CLI unterstützte globale Befehlszeilenoptionen](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) im *AWS Command Line Interface -Benutzerhandbuch für Version 2*.  

```
#!/bin/bash
aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{"key": "value"}' out
sed -i'' -e 's/"//g' out
sleep 15
aws logs get-log-events --log-group-name /aws/lambda/my-function --log-stream-name stream1 --limit 5
```

**Example macOS und Linux (nur diese Systeme)**  
In derselben Eingabeaufforderung müssen macOS- und Linux-Benutzer möglicherweise den folgenden Befehl ausführen, um sicherzustellen, dass das Skript ausführbar ist.  

```
chmod -R 755 get-logs.sh
```

**Example die letzten fünf Protokollereignisse abrufen**  
Führen Sie an derselben Eingabeaufforderung das folgende Skript aus, um die letzten fünf Protokollereignisse abzurufen.  

```
./get-logs.sh
```
Die Ausgabe sollte folgendermaßen aussehen:  

```
{
    "StatusCode": 200,
    "ExecutedVersion": "$LATEST"
}
{
    "events": [
        {
            "timestamp": 1559763003171,
            "message": "START RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf Version: $LATEST\n",
            "ingestionTime": 1559763003309
        },
        {
            "timestamp": 1559763003173,
            "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tENVIRONMENT VARIABLES\r{\r  \"AWS_LAMBDA_FUNCTION_VERSION\": \"$LATEST\",\r ...",
            "ingestionTime": 1559763018353
        },
        {
            "timestamp": 1559763003173,
            "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tEVENT\r{\r  \"key\": \"value\"\r}\n",
            "ingestionTime": 1559763018353
        },
        {
            "timestamp": 1559763003218,
            "message": "END RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\n",
            "ingestionTime": 1559763018353
        },
        {
            "timestamp": 1559763003218,
            "message": "REPORT RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\tDuration: 26.73 ms\tBilled Duration: 27 ms \tMemory Size: 128 MB\tMax Memory Used: 75 MB\t\n",
            "ingestionTime": 1559763018353
        }
    ],
    "nextForwardToken": "f/34783877304859518393868359594929986069206639495374241795",
    "nextBackwardToken": "b/34783877303811383369537420289090800615709599058929582080"
}
```

## Löschen von Protokollen
<a name="powershell-logging-delete"></a>

Wenn Sie eine Funktion löschen, werden Protokollgruppen nicht automatisch gelöscht. Um das unbegrenzte Speichern von Protokollen zu vermeiden, löschen Sie die Protokollgruppe oder [konfigurieren Sie eine Aufbewahrungszeitraum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#SettingLogRetention) nach dem Protokolle automatisch gelöscht werden.