

 Das [AWS SDK für JavaScript V3-API-Referenzhandbuch](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/) beschreibt detailliert alle API-Operationen für die AWS SDK für JavaScript Version 3 (V3). 

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.

# Konfigurieren Sie das SDK für JavaScript
<a name="configuring-the-jssdk"></a>

Bevor Sie das SDK JavaScript zum Aufrufen von Webdiensten mithilfe der API verwenden, müssen Sie das SDK konfigurieren. Sie müssen mindestens Folgendes konfigurieren:
+ Die AWS Region, in der Sie Dienste anfordern werden
+ Wie authentifiziert sich Ihr Code mit AWS

Zusätzlich zu diesen Einstellungen müssen Sie möglicherweise auch Berechtigungen für Ihre AWS Ressourcen konfigurieren. Sie können beispielsweise den Zugriff auf einen Amazon S3 S3-Bucket oder den Lesezugriff auf eine Amazon DynamoDB-Tabelle einschränken.

Das [AWS SDKs Referenzhandbuch zu Tools](https://docs.aws.amazon.com/sdkref/latest/guide/) enthält auch Einstellungen, Funktionen und andere grundlegende Konzepte, die vielen von ihnen gemeinsam sind. AWS SDKs 

In den Themen dieses Abschnitts wird beschrieben, wie Sie das SDK JavaScript für Node.js konfigurieren und in einem Webbrowser JavaScript ausführen können.

**Topics**
+ [Konfiguration pro Dienst](global-config-object.md)
+ [Legen Sie die Region fest AWS](setting-region.md)
+ [Legen Sie die Anmeldeinformationen fest](setting-credentials.md)
+ [Überlegungen zu Node.js](node-js-considerations.md)
+ [Überlegungen zum Browser-Skript](browser-js-considerations.md)

# Konfiguration pro Dienst
<a name="global-config-object"></a>

Sie können das SDK konfigurieren, indem Sie Konfigurationsinformationen an ein Serviceobjekt übergeben.

Die Konfiguration auf Dienstebene bietet umfassende Kontrolle über einzelne Dienste und ermöglicht es Ihnen, die Konfiguration einzelner Dienstobjekte zu aktualisieren, wenn Ihre Anforderungen von der Standardkonfiguration abweichen.

**Anmerkung**  
In Version 2.x konnte die AWS SDK für JavaScript Dienstkonfiguration an einzelne Client-Konstruktoren übergeben werden. Diese Konfigurationen würden jedoch zunächst automatisch zu einer Kopie der globalen SDK-Konfiguration zusammengeführt. `AWS.config`  
Außerdem wird `AWS.config.update({/* params *})` nur die aktualisierte Konfiguration für Service-Clients aufgerufen, die nach dem Aktualisierungsaufruf instanziiert wurden, nicht für bestehende Clients.  
Dieses Verhalten sorgte häufig für Verwirrung und erschwerte es, dem globalen Objekt eine Konfiguration hinzuzufügen, die sich auf vorwärtskompatible Weise nur auf eine Teilmenge von Service-Clients auswirkt. In Version 3 gibt es keine globale Konfiguration mehr, die vom SDK verwaltet wird. Die Konfiguration muss an jeden Service-Client übergeben werden, der instanziiert wird. Es ist immer noch möglich, dieselbe Konfiguration für mehrere Clients gemeinsam zu verwenden, aber diese Konfiguration wird nicht automatisch mit einem globalen Status zusammengeführt.

## Legen Sie die Konfiguration pro Dienst fest
<a name="service-specific-configuration"></a>

Auf jeden Dienst, den Sie im SDK verwenden, JavaScript wird über ein Dienstobjekt zugegriffen, das Teil der API für diesen Dienst ist. Um beispielsweise auf den Amazon S3 S3-Service zuzugreifen, erstellen Sie das Amazon S3 S3-Serviceobjekt. Sie können für einen bestimmten Service Konfigurationseinstellungen als Teil des Konstruktors für dieses Serviceobjekt definieren. 

Wenn Sie beispielsweise auf Amazon EC2-Objekte in mehreren AWS Regionen zugreifen müssen, erstellen Sie ein Amazon EC2-Serviceobjekt für jede Region und legen Sie dann die Regionskonfiguration für jedes Serviceobjekt entsprechend fest.

```
var ec2_regionA = new EC2({region: 'ap-southeast-2', maxAttempts: 15});
var ec2_regionB = new EC2({region: 'us-west-2', maxAttempts: 15});
```

# Legen Sie die Region fest AWS
<a name="setting-region"></a>

Eine AWS Region ist eine benannte Gruppe von AWS Ressourcen in demselben geografischen Gebiet. Ein Beispiel für eine Region ist `us-east-1` die Region USA Ost (Nord-Virginia). Sie geben eine Region an, wenn Sie einen Service-Client im SDK für erstellen, JavaScript sodass das SDK auf den Service in dieser Region zugreift. Einige -Services werden nur in bestimmten Regionen angeboten.

Das SDK für wählt standardmäßig JavaScript keine Region aus. Sie können die AWS Region jedoch mithilfe einer Umgebungsvariablen oder einer gemeinsam genutzten `config` Konfigurationsdatei festlegen.

## In einem Client-Klassenkonstruktor
<a name="setting-region-constructor"></a>

Wenn Sie ein Serviceobjekt instanziieren, können Sie die AWS Region für diese Ressource als Teil des Client-Klassenkonstruktors angeben, wie hier gezeigt.

```
const s3Client = new S3.S3Client({region: 'us-west-2'});
```

## Verwenden Sie eine Umgebungsvariable
<a name="setting-region-environment-variable"></a>

Sie können die Region mithilfe der Umgebungsvariablen `AWS_REGION` festlegen. Wenn Sie diese Variable definieren, JavaScript liest das SDK für sie und verwendet sie.

## Verwenden Sie eine gemeinsam genutzte Konfigurationsdatei
<a name="setting-region-config-file"></a>

So wie Sie mit der Datei mit gemeinsam genutzten Anmeldeinformationen Anmeldeinformationen für das SDK speichern können, können Sie Ihre AWS Region und andere Konfigurationseinstellungen in einer gemeinsam genutzten Datei speichern, die `config` nach dem zu verwendenden SDK benannt ist. Wenn die `AWS_SDK_LOAD_CONFIG` Umgebungsvariable auf einen wahrheitsgemäßen Wert gesetzt ist, sucht das SDK für beim Laden JavaScript automatisch nach einer `config` Datei. Wo Sie die `config`-Datei speichern, hängt von Ihrem Betriebssystem ab:
+ Linux-, MacOS- oder Unix-Benutzer - `~/.aws/config`
+ Windows-Benutzer - `C:\Users\USER_NAME\.aws\config`

Wenn Sie noch keine freigegebene `config`-Datei haben, können Sie diese in dem angegebenen Verzeichnis erstellen. Im folgenden Beispiel werden sowohl die Region als auch das Ausgabeformat über die `config`-Datei definiert.

```
[default]
   region=us-west-2
   output=json
```

Weitere Informationen zur Verwendung von `credentials` Dateien `config` und gemeinsam genutzten Dateien finden Sie unter Dateien [mit gemeinsam genutzten Konfigurationen und Anmeldeinformationen](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) im *AWS SDKs Referenzhandbuch für Tools*.

## Reihenfolge der Festlegung der Region
<a name="setting-region-order-of-precedence"></a>

Im Folgenden finden Sie die Rangfolge für die Einstellung der Region:

1. Wenn eine Region an einen Client-Klassenkonstruktor übergeben wird, wird diese Region verwendet.

1. Wenn in der Umgebungsvariablen eine Region festgelegt ist, wird diese Region verwendet.

1. Andernfalls wird die in der gemeinsam genutzten Konfigurationsdatei definierte Region verwendet.

# Legen Sie die Anmeldeinformationen fest
<a name="setting-credentials"></a>

AWS verwendet Anmeldeinformationen, um festzustellen, wer Dienste anruft und ob der Zugriff auf die angeforderten Ressourcen zulässig ist. 

Unabhängig davon, ob Ihr JavaScript Code in einem Webbrowser oder auf einem Node.js -Server ausgeführt wird, muss er gültige Anmeldeinformationen erhalten, bevor er über die API auf Dienste zugreifen kann. Anmeldeinformationen können pro Dienst festgelegt werden, indem Anmeldeinformationen direkt an ein Dienstobjekt übergeben werden.

Es gibt mehrere Möglichkeiten, Anmeldeinformationen festzulegen, die sich in Node.js und JavaScript in Webbrowsern unterscheiden. Die Themen in diesem Abschnitt beschreiben, wie Sie die Anmeldeinformationen in Node.js oder Web-Browsern definieren. In jedem Fall werden die Optionen in der empfohlenen Reihenfolge dargestellt.

## Bewährte Methoden für Anmeldeinformationen
<a name="credentials-best-practices"></a>

Durch das ordnungsgemäße Festlegen von Anmeldeinformationen wird sichergestellt, dass Ihre Anwendung oder Ihr Browser-Skript auf die benötigten Services und Ressourcen zugreifen kann. Gleichzeitig werden Sicherheitsrisiken minimiert, die geschäftskritische Anwendungen beeinträchtigen oder vertrauliche Daten kompromittieren könnten.

Ein wichtiger Grundsatz beim Einrichten von Anmeldeinformationen lautet, immer nur die geringstmöglichen Berechtigungen zu erteilen, die für eine Aufgabe erforderlich sind. Es ist sicherer, minimale Berechtigungen für Ihre Ressourcen bereitzustellen und bei Bedarf weitere Berechtigungen hinzuzufügen, anstatt Berechtigungen bereitzustellen, die die geringsten Rechte überschreiten, und aufgrund dessen zu einem späteren Zeitpunkt möglicherweise Sicherheitsprobleme beheben zu müssen. Wenn Sie beispielsweise nicht einzelne Ressourcen lesen und schreiben müssen, z. B. Objekte in einem Amazon S3 S3-Bucket oder einer DynamoDB-Tabelle, legen Sie für diese Berechtigungen nur Lesen fest.

Weitere Informationen zur Gewährung der geringsten Rechte finden Sie im Abschnitt [Geringste Rechte gewähren](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) des Themas Best Practices im *IAM-Benutzerhandbuch*.

**Topics**
+ [Bewährte Methoden für Anmeldeinformationen](#credentials-best-practices)
+ [Legen Sie die Anmeldeinformationen in Node.js fest](setting-credentials-node.md)
+ [Anmeldeinformationen in einem Webbrowser einrichten](setting-credentials-browser.md)

# Legen Sie die Anmeldeinformationen in Node.js fest
<a name="setting-credentials-node"></a>

Wir empfehlen neuen Benutzern, die sich lokal weiterentwickeln und von ihrem Arbeitgeber keine Authentifizierungsmethode erhalten, zur Einrichtung AWS IAM Identity Center. Weitere Informationen finden Sie unter [SDK-Authentifizierung mit AWS](getting-your-credentials.md).

Es gibt mehrere Möglichkeiten in Node.js, um dem SDK die Anmeldeinformationen bereitzustellen. Einige davon sind sicherer und andere bieten eine höhere Benutzerfreundlichkeit bei der Anwendungsentwicklung. Achten Sie beim Abrufen von Anmeldeinformationen in Node.js darauf, dass Sie sich nicht auf mehr als eine Quelle verlassen, z. B. auf eine Umgebungsvariable und eine JSON-Datei, die Sie laden. Sie können die Berechtigungen, unter denen Ihr Code ausgeführt wird, ändern, ohne sich dieser Änderung bewusst zu sein.

AWS SDK für JavaScript V3 stellt in Node.js eine standardmäßige Anbieterkette für Anmeldeinformationen bereit, sodass Sie nicht explizit einen Anmeldeinformationsanbieter angeben müssen. Die standardmäßige [Anbieterkette für Anmeldeinformationen](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html#credentialProviderChain) versucht, die Anmeldeinformationen aus einer Vielzahl verschiedener Quellen in einer bestimmten Rangfolge aufzulösen, bis Anmeldeinformationen aus einer der Quellen zurückgegeben werden. [Die Anmeldeinformationsanbieterkette für SDK für V3 finden Sie hier. JavaScript ](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromnodeproviderchain)

## Kette der Anbieter von Anmeldeinformationen
<a name="credchain"></a>

Alle SDKs haben eine Reihe von Stellen (oder Quellen), die sie überprüfen, um gültige Anmeldeinformationen zu erhalten, mit denen eine Anfrage an AWS-Service einen gestellt werden kann. Nachdem gültige Anmeldeinformationen gefunden wurden, wird die Suche beendet. Diese systematische Suche wird als Standardanbieterkette für Anmeldeinformationen bezeichnet. 

Für jeden Schritt in der Kette gibt es unterschiedliche Möglichkeiten, die Werte festzulegen. Das Setzen von Werten direkt im Code hat immer Vorrang, gefolgt von der Einstellung als Umgebungsvariablen und dann in der gemeinsam genutzten AWS `config` Datei. Weitere Informationen finden Sie unter [Priorität der Einstellungen](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html#precedenceOfSettings) im Referenzhandbuch *AWS SDKs und im Tools-Referenzhandbuch.* 

Das *Referenzhandbuch AWS SDKs und die Tools* enthalten Informationen zu den SDK-Konfigurationseinstellungen, die von allen verwendet werden, AWS SDKs und zu den AWS CLI. Weitere Informationen zur Konfiguration des SDK mithilfe der gemeinsam genutzten AWS `config` Datei finden Sie unter Gemeinsam genutzte Konfigurations [- und Anmeldeinformationsdateien](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html). Weitere Informationen zur Konfiguration des SDK durch das Setzen von Umgebungsvariablen finden Sie unter [Unterstützung von Umgebungsvariablen](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html).

Für die Authentifizierung werden AWS die Anbieter der Anmeldeinformationen in der in der folgenden Tabelle angegebenen Reihenfolge AWS SDK für JavaScript überprüft.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html)

Wenn Sie für den Einstieg den empfohlenen Ansatz für neue Benutzer befolgt haben, richten Sie die AWS IAM Identity Center Authentifizierung während [SDK-Authentifizierung mit AWS](getting-your-credentials.md) des Themas Erste Schritte ein. Andere Authentifizierungsmethoden sind in verschiedenen Situationen nützlich. Um Sicherheitsrisiken zu vermeiden, empfehlen wir, immer kurzfristige Anmeldeinformationen zu verwenden. Informationen zu anderen Authentifizierungsmethoden finden Sie unter [Authentifizierung und Zugriff](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) im *AWS SDKs Referenzhandbuch zu Tools*.

Die Themen in diesem Abschnitt beschreiben, wie Sie die Anmeldeinformationen in Node.js laden.

**Topics**
+ [Kette der Anbieter von Anmeldeinformationen](#credchain)
+ [Anmeldeinformationen in Node.js aus IAM-Rollen für Amazon EC2 laden](loading-node-credentials-iam.md)
+ [Anmeldeinformationen für eine Lambda-Funktion von Node.js laden](loading-node-credentials-lambda.md)

# Anmeldeinformationen in Node.js aus IAM-Rollen für Amazon EC2 laden
<a name="loading-node-credentials-iam"></a>

Wenn Sie Ihre Anwendung Node.js auf einer Amazon EC2-Instance ausführen, können Sie IAM-Rollen für Amazon EC2 nutzen, um automatisch Anmeldeinformationen für die Instance bereitzustellen. Wenn Sie Ihre Instance für die Verwendung von IAM-Rollen konfigurieren, wählt das SDK automatisch die IAM-Anmeldeinformationen für Ihre Anwendung aus, sodass Sie keine Anmeldeinformationen manuell angeben müssen.

Weitere Informationen zum Hinzufügen von IAM-Rollen zu einer Amazon EC2-Instance finden Sie unter [IAM-Rollen für](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) Amazon EC2.

# Anmeldeinformationen für eine Lambda-Funktion von Node.js laden
<a name="loading-node-credentials-lambda"></a>

Wenn Sie eine AWS Lambda Funktion erstellen, müssen Sie eine spezielle IAM-Rolle erstellen, die über die Berechtigung zum Ausführen der Funktion verfügt. Diese Rolle wird *Ausführungsrolle* genannt. Wenn Sie eine Lambda-Funktion einrichten, müssen Sie die von Ihnen erstellte IAM-Rolle als entsprechende Ausführungsrolle angeben.

Die Ausführungsrolle stellt der Lambda-Funktion die Anmeldeinformationen zur Verfügung, die sie zum Ausführen und Aufrufen anderer Webdienste benötigt. Daher müssen Sie keine Anmeldeinformationen für den Code Node.js angeben, den Sie in einer Lambda-Funktion schreiben.

Weitere Informationen zum Erstellen einer Lambda-Ausführungsrolle finden Sie unter [Berechtigungen verwalten: Verwenden einer IAM-Rolle (Ausführungsrolle)](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role) im *AWS Lambda Entwicklerhandbuch*.

# Anmeldeinformationen in einem Webbrowser einrichten
<a name="setting-credentials-browser"></a>

Es gibt mehrere Möglichkeiten, um dem SDK die Anmeldeinformationen aus Browser-Skripts bereitzustellen. Einige davon sind sicherer und andere bieten eine höhere Benutzerfreundlichkeit bei der Entwicklung eines Skripts.

 So können Sie Ihre Anmeldeinformationen in der Reihenfolge ihrer Empfehlungen angeben:

1. Verwenden von Amazon Cognito Identity zur Benutzerauthentifizierung und Bereitstellung von Anmeldeinformationen

1. Verwenden von Web-Verbundidentitäten

**Warnung**  
Wir empfehlen nicht, Ihre AWS Anmeldeinformationen in Ihren Skripten fest zu codieren. Die Hartcodierung der Anmeldeinformationen setzt die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel dem Risiko einer Offenlegung aus.

**Topics**
+ [Verwenden Sie Amazon Cognito Identity, um Benutzer zu authentifizieren](loading-browser-credentials-cognito.md)

# Verwenden Sie Amazon Cognito Identity, um Benutzer zu authentifizieren
<a name="loading-browser-credentials-cognito"></a>

Die empfohlene Methode zum Abrufen von AWS Anmeldeinformationen für Ihre Browserskripte ist die Verwendung des Amazon Cognito Identity-Anmeldeinformationsclients`CognitoIdentityClient`. Amazon Cognito ermöglicht die Authentifizierung von Benutzern über externe Identitätsanbieter.

Um Amazon Cognito Identity verwenden zu können, müssen Sie zunächst einen Identitätspool in der Amazon Cognito Cognito-Konsole erstellen. Ein Identitäten-Pool stellt die Gruppe von Identitäten dar, die Ihre Anwendung für Ihre Benutzer bereitstellt. Die den Benutzern zugewiesenen Identitäten identifizieren jedes Benutzerkonto eindeutig. Amazon-Cognito-Identitäten sind keine Anmeldeinformationen. Sie werden mithilfe der Unterstützung von Web Identity Federation in AWS -Security-Token-Service (AWS STS) gegen Anmeldeinformationen ausgetauscht.

Amazon Cognito unterstützt Sie bei der Verwaltung der Abstraktion von Identitäten über mehrere Identitätsanbieter hinweg. Die geladene Identität wird dann gegen Anmeldeinformationen in AWS STS ausgetauscht.

## Konfigurieren Sie das Amazon Cognito Identity-Anmeldeinformationsobjekt
<a name="browser-cognito-configuration"></a>

Wenn Sie noch keinen erstellt haben, erstellen Sie einen Identitätspool, den Sie mit Ihren Browserskripten in der [Amazon Cognito Cognito-Konsole](https://console.aws.amazon.com/cognito) verwenden können, bevor Sie Ihren Amazon Cognito Cognito-Client konfigurieren. Erstellen Sie sowohl authentifizierte als auch nicht authentifizierte IAM-Rollen für Ihren Identitätspool und ordnen Sie sie zu. Weitere Informationen finden Sie unter [Tutorial: Einen Identitätspool erstellen](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-identity-pool.html) im *Amazon Cognito Developer Guide*.

Bei nicht authentifizierten Benutzern wird die Identität nicht verifiziert, sodass diese Rolle für Gastbenutzer Ihrer App oder für Fälle geeignet ist, in denen es egal ist, ob die Identität der Benutzer verifiziert wurde. Authentifizierte Benutzer melden sich bei Ihrer Anwendung über einen Drittanbieter an, der ihre Identität überprüft. Vergewissern Sie sich, dass Sie die Berechtigungen der Ressourcen entsprechend anpassen, damit Sie keinen Zugriff von nicht authentifizierten Benutzern darauf gewähren.

Nachdem Sie einen Identitätspool konfiguriert haben, verwenden Sie die `fromCognitoIdentityPool` Methode von, `@aws-sdk/credential-providers` um die Anmeldeinformationen aus dem Identitätspool abzurufen. Ersetzen Sie im folgenden Beispiel für die Erstellung eines Amazon S3 S3-Clients *AWS\$1REGION* durch die Region und *IDENTITY\$1POOL\$1ID* die Identitätspool-ID.

```
// Import required AWS SDK clients and command for Node.js
import {S3Client} from "@aws-sdk/client-s3";
import {fromCognitoIdentityPool} from "@aws-sdk/credential-providers";

const REGION = AWS_REGION;

const s3Client = new S3Client({
  region: REGION,
  credentials: fromCognitoIdentityPool({
    clientConfig: { region: REGION }, // Configure the underlying CognitoIdentityClient.
    identityPoolId: 'IDENTITY_POOL_ID',
    logins: {
            // Optional tokens, used for authenticated login.
        },
  })
});
```

Die optionale `logins`-Eigenschaft ist eine Abbildung der Namen des Identitätsanbieters auf die Identitäts-Token für diese Anbieter. Wie Sie den Token von Ihrem Identitätsanbieter erhalten, hängt davon ab, welchen Anbieter Sie verwenden. Wenn Sie beispielsweise einen Amazon Cognito Cognito-Benutzerpool als Authentifizierungsanbieter verwenden, könnten Sie eine Methode verwenden, die der folgenden ähnelt.

```
// Get the Amazon Cognito ID token for the user. 'getToken()' below.
let idToken = getToken();
let COGNITO_ID = "COGNITO_ID"; // 'COGNITO_ID' has the format 'cognito-idp.REGION.amazonaws.com/COGNITO_USER_POOL_ID'
let loginData = {
  [COGNITO_ID]: idToken,
};
const s3Client = new S3Client({
    region: REGION,
    credentials: fromCognitoIdentityPool({
    clientConfig: { region: REGION }, // Configure the underlying CognitoIdentityClient.
    identityPoolId: 'IDENTITY_POOL_ID',
    logins: loginData
  })
});

// Strips the token ID from the URL after authentication.
window.getToken = function () {
  var idtoken = window.location.href;
  var idtoken1 = idtoken.split("=")[1];
  var idtoken2 = idtoken1.split("&")[0];
  var idtoken3 = idtoken2.split("&")[0];
  return idtoken3;
};
```

## Wechseln Sie zwischen nicht authentifizierten Benutzern und authentifizierten Benutzern
<a name="browser-switching-unauthenticated-users"></a>

Amazon Cognito unterstützt sowohl authentifizierte als auch nicht authentifizierte Benutzer. Nicht authentifizierte Benutzer erhalten Zugriff auf Ihre Ressourcen, auch wenn sie nicht über Ihre Identitätsanbieter angemeldet sind. Dieser Grad des Zugriffs ist nützlich, um Inhalte für Benutzer anzuzeigen, bevor diese sich anmelden. Jeder nicht authentifizierte Benutzer hat eine eindeutige Identität in Amazon Cognito, obwohl er nicht einzeln angemeldet und authentifiziert wurde.

### Anfänglich nicht authentifizierter Benutzer
<a name="browser-initially-unauthenticated-user"></a>

Benutzer beginnen in der Regel mit der nicht authentifizierten Rolle, für die Sie die Eigenschaft für die Anmeldeinformationen Ihres Konfigurationsobjekts ohne eine `logins`-Eigenschaft festlegen. In diesem Fall könnten Ihre Standardanmeldedaten wie folgt aussehen:

```
// Import the required AWS SDK für JavaScript v3 modules.                   
import {fromCognitoIdentityPool} from "@aws-sdk/credential-providers";
// Set the default credentials.
const creds = fromCognitoIdentityPool({
  identityPoolId: 'IDENTITY_POOL_ID',
  clientConfig: { region: REGION } // Configure the underlying CognitoIdentityClient.
});
```

### Wechseln Sie zum authentifizierten Benutzer
<a name="switch-to-authenticated"></a>

Wenn sich ein nicht authentifizierter Benutzer bei einem Identitätsanbieter anmeldet und Sie über ein Token verfügen, können Sie den Benutzer von nicht authentifiziert auf authentifiziert umstellen, indem Sie eine benutzerdefinierte Funktion aufrufen, die das Anmeldeinformationsobjekt aktualisiert und das Token hinzufügt. `logins`

```
// Called when an identity provider has a token for a logged in user
function userLoggedIn(providerName, token) {
  creds.params.Logins = creds.params.logins || {};
  creds.params.Logins[providerName] = token;
                    
  // Expire credentials to refresh them on the next request
  creds.expired = true;
}
```

# Überlegungen zu Node.js
<a name="node-js-considerations"></a>

Der Code Node.js ist es zwar JavaScript, aber die Verwendung von AWS SDK für JavaScript in Node.js kann sich von der Verwendung des SDK in Browserskripts unterscheiden. Einige API-Methoden funktionieren in Node.js, jedoch nicht in Browser-Skripts und umgekehrt. Und die erfolgreiche Verwendung einiger Module APIs hängt davon ab, ob Sie mit den gängigen Node.js -Codierungsmustern vertraut sind, z. B. mit dem Import und der Verwendung anderer Node.js -Module wie dem `File System (fs)` Modul.

**Anmerkung**  
AWS empfiehlt die Verwendung der Active LTS-Version von Node.js für die Entwicklung.

## Verwenden Sie die integrierten Node.js -Module
<a name="node-common-modules"></a>

Node.js bietet eine Reihe von integrierten Modulen, die Sie verwenden können ohne sie installieren zu müssen. Um diese Module verwenden zu können, müssen Sie ein Objekt mit der `require`-Methode erstellen und den Modulnamen angeben. Wenn beispielsweise das integrierte HTTP-Modul enthalten sein soll, geben Sie Folgendes ein.

```
import http from 'http';
```

Rufen Sie Methoden des Moduls ab, als würde es sich um Methoden dieses Objekts handeln. Das folgende Beispiel zeigt Code, der eine HTML-Datei liest.

```
// include File System module
import fs from "fs"; 
// Invoke readFile method 
fs.readFile('index.html', function(err, data) {
  if (err) {
    throw err;
  } else {
    // Successful file read
  }
});
```

Eine vollständige Liste aller integrierten Module, die Node.js bereitstellt, finden Sie in der [Node.js -Dokumentation](https://nodejs.org/api/modules.html) auf der Website Node.js.

## Verwenden Sie npm-Pakete
<a name="node-npm-packages"></a>

Zusätzlich zu den integrierten Modulen können Sie auch Code von Drittanbietern aus dem `npm` Paketmanager Node.js einbinden und integrieren. Hierbei handelt es sich um ein Repository mit Open-Source-Node.js-Paketen sowie um eine Befehlszeilen-Schnittstelle für die Installation dieser Pakete. Weitere Informationen zu `npm` und eine Liste der derzeit verfügbaren Pakete finden Sie unter [ https://www.npmjs.com](https://www.npmjs.com). Weitere Informationen zu den zusätzlichen Paketen von Node.js, die Sie verwenden können, finden Sie [hier auf GitHub](https://github.com/sindresorhus/awesome-nodejs).

# MaxSockets in Node.js konfigurieren
<a name="node-configuring-maxsockets"></a>

In Node.js können Sie die maximale Anzahl der Verbindungen pro Ursprungsserver festlegen. Wenn ` maxSockets` festgelegt wurde, setzt der Low-Level-HTTP-Client die Anforderungen auf eine Warteliste und ordnet sie Sockets zu, sobald diese verfügbar werden.

Mit dieser Option können Sie eine Obergrenze für die Anzahl der gleichzeitigen Anforderungen an einen bestimmten Ursprungsserver angeben. Indem Sie diesen Wert senken, kann die Anzahl der maximalen Ablehnungen oder Timeout-Fehler reduziert werden. Es kann jedoch auch die Speichernutzung erhöhen, da Anforderungen so lange in eine Warteschlange gesetzt werden, bis ein Socket verfügbar wird.

Das folgende Beispiel zeigt, wie die Einstellungen `maxSockets` für einen DynamoDB-Client vorgenommen werden.

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { NodeHttpHandler } from "@smithy/node-http-handler";
import https from "https";    
let agent = new https.Agent({
  maxSockets: 25
});

let dynamodbClient = new DynamoDBClient({
  requestHandler: new NodeHttpHandler({
    requestTimeout: 3_000,
    httpsAgent: agent
  });
});
```

Das SDK für JavaScript verwendet den `maxSockets` Wert 50, wenn Sie keinen Wert oder kein Objekt `Agent` angeben. Wenn Sie ein `Agent` Objekt angeben, wird sein `maxSockets` Wert verwendet. Weitere Informationen zur Einstellung `maxSockets` in Node.js finden Sie in der [Dokumentation zu Node.js](https://nodejs.org/dist/latest/docs/api/http.html#http_agent_maxsockets).

Ab Version 3.521.0 von können Sie AWS SDK für JavaScript die folgende [Kurzsyntax](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md#new-in-v35210) zur Konfiguration verwenden. `requestHandler`

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";

const client = new DynamoDBClient({
  requestHandler: {
    requestTimeout: 3_000,
    httpsAgent: { maxSockets: 25 },
  },
});
```

# Verbindungen mit Keep-Alive in Node.js wiederverwenden
<a name="node-reusing-connections"></a>

Der HTTP/HTTPS Standardagent Node.js erstellt für jede neue Anfrage eine neue TCP-Verbindung. Um die Kosten für den Aufbau einer neuen Verbindung zu vermeiden, werden TCP-Verbindungen *standardmäßig AWS SDK für JavaScript * wiederverwendet.

Bei kurzlebigen Vorgängen, wie Amazon DynamoDB DynamoDB-Abfragen, kann der Latenzaufwand beim Einrichten einer TCP-Verbindung größer sein als der Vorgang selbst. Da die [DynamoDB-Verschlüsselung im Ruhezustand](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/encryption.howitworks.html) integriert ist [AWS KMS](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/encryption.howitworks.html), kann es außerdem zu Latenzen kommen, weil die Datenbank für jeden Vorgang neue AWS KMS Cacheeinträge einrichten muss. 

Wenn Sie TCP-Verbindungen nicht wiederverwenden möchten, können Sie die Wiederverwendung dieser Verbindungen `keepAlive` live with für jeden einzelnen Service deaktivieren, wie im folgenden Beispiel für einen DynamoDB-Client gezeigt.

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { NodeHttpHandler } from "@smithy/node-http-handler";
import { Agent } from "https";

const dynamodbClient = new DynamoDBClient({
    requestHandler: new NodeHttpHandler({
        httpsAgent: new Agent({ keepAlive: false })
    })
});
```

Wenn `keepAlive` aktiviert, können Sie auch die Anfangsverzögerung für TCP-Keep-Alive-Pakete mit festlegen`keepAliveMsecs`, die standardmäßig 1000 ms beträgt. Weitere Informationen finden Sie in der [Node.js-Dokumentation](https://nodejs.org/api/http.html#new-agentoptions) .

# Konfigurieren Sie Proxys für Node.js
<a name="node-configuring-proxies"></a>

Wenn Sie keine direkte Verbindung zum Internet herstellen können, JavaScript unterstützt das SDK für die Verwendung von HTTP- oder HTTPS-Proxys über einen HTTP-Agenten eines Drittanbieters.

[Um einen HTTP-Agenten eines Drittanbieters zu finden, suchen Sie bei npm nach „HTTP-Proxy“.](https://www.npmjs.com/)

Um einen HTTP-Agent-Proxy eines Drittanbieters zu installieren, geben Sie in der Befehlszeile Folgendes ein, wobei der Name des `npm` Pakets angegeben *PROXY* ist. 

```
npm install PROXY --save
```

Um einen Proxy in Ihrer Anwendung zu verwenden, verwenden Sie die ` httpsAgent` Eigenschaft `httpAgent` and, wie im folgenden Beispiel für einen DynamoDB-Client gezeigt. 

```
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
import { NodeHttpHandler } from "@smithy/node-http-handler";
import { HttpsProxyAgent } from "hpagent";
const agent = new HttpsProxyAgent({ proxy: "http://internal.proxy.com" });
const dynamodbClient = new DynamoDBClient({
    requestHandler: new NodeHttpHandler({
        httpAgent: agent,
        httpsAgent: agent
    }),
});
```

**Anmerkung**  
`httpAgent`ist nicht dasselbe wie`httpsAgent`, und da die meisten Aufrufe vom Client an erfolgen`https`, sollten beide gesetzt werden.

# Registrieren Sie Zertifikatspakete in Node.js
<a name="node-registering-certs"></a>

Die Standard-Vertrauensspeicher für Node.js enthalten die Zertifikate, die für den Zugriff auf AWS Dienste erforderlich sind. In einigen Fällen könnte es vorteilhaft sein, nur eine bestimmte Gruppe von Zertifikaten einzuschließen.

In diesem Beispiel wird ein bestimmtes Zertifikat auf der Festplatte verwendet, mit dem ein ` https.Agent` erstellt wird, der alle Verbindungen ablehnt, die nicht über das vorgesehene Zertifikat verfügen. Das neu erstellte Objekt `https.Agent` wird dann vom DynamoDB-Client verwendet.

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { NodeHttpHandler } from "@smithy/node-http-handler";
import { Agent } from "https";
import { readFileSync } from "fs";
const certs = [readFileSync("/path/to/cert.pem")];
const agent = new Agent({
  rejectUnauthorized: true,
  ca: certs
});
const dynamodbClient = new DynamoDBClient({
  requestHandler: new NodeHttpHandler({
    httpAgent: agent,
    httpsAgent: agent
  })
});
```

# Überlegungen zum Browser-Skript
<a name="browser-js-considerations"></a>

In den folgenden Themen werden besondere Überlegungen zur Verwendung von AWS SDK für JavaScript In-Browser-Skripts beschrieben.

**Topics**
+ [Erstellen Sie das SDK für Browser](building-sdk-for-browsers.md)
+ [Cross-Origin Resource Sharing (CORS)](cors.md)
+ [Bündeln Sie Anwendungen mit Webpack](webpack.md)

# Erstellen Sie das SDK für Browser
<a name="building-sdk-for-browsers"></a>

Im Gegensatz zum SDK für JavaScript Version 2 (V2) wird V3 nicht als JavaScript Datei mit Unterstützung für eine Reihe von Standarddiensten bereitgestellt. Stattdessen können Sie mit V3 nur das SDK für die benötigten JavaScript Dateien bündeln und in den Browser aufnehmen, wodurch der Overhead reduziert wird. Wir empfehlen, Webpack zu verwenden, um das erforderliche SDK für JavaScript Dateien und alle zusätzlichen Pakete von Drittanbietern, die Sie benötigen, in einer einzigen `Javascript` Datei zu bündeln und diese mithilfe eines `<script>` Tags in Browserskripte zu laden. Weitere Informationen zu Webpack finden Sie unter. [Bündeln Sie Anwendungen mit Webpack](webpack.md) 

Wenn Sie mit dem SDK außerhalb einer Umgebung arbeiten, die CORS in Ihrem Browser erzwingt, und wenn Sie Zugriff auf alle vom SDK bereitgestellten Dienste für haben möchten JavaScript, können Sie lokal eine benutzerdefinierte Kopie des SDK erstellen, indem Sie das Repository klonen und dieselben Build-Tools ausführen, mit denen die gehostete Standardversion des SDK erstellt wird. In den folgenden Abschnitten werden die Schritte erklärt, anhand derer das SDK zusammen mit zusätzlichen Services und API-Versionen erstellt werden kann.

## Verwenden Sie den SDK Builder, um das SDK für zu erstellen JavaScript
<a name="using-the-sdk-builder"></a>

**Anmerkung**  
Amazon Web Services Version 3 (V3) unterstützt Browser Builder nicht mehr. Um die Bandbreitennutzung von Browseranwendungen zu minimieren, empfehlen wir Ihnen, benannte Module zu importieren und sie zu bündeln, um die Größe zu reduzieren. Weitere Informationen zur Bündelung finden Sie unter[Bündeln Sie Anwendungen mit Webpack](webpack.md).

# Cross-Origin Resource Sharing (CORS)
<a name="cors"></a>

Bei Cross-Origin Resource Sharing oder CORS handelt es sich um eine Sicherheitsfunktion der modernen Webbrowser. Es ermöglicht Webbrowsern zu verhandeln, welche Domänen Anforderungen von externen Websites oder Services senden können. 

CORS ist ein wichtiger Aspekt bei der Entwicklung von Browseranwendungen mit dem AWS SDK für JavaScript , da die meisten Anforderungen an Ressourcen an eine externe Domäne, wie z. B. der Endpunkt für einen Webservice, gesendet werden. Wenn in Ihrer JavaScript Umgebung die CORS-Sicherheit durchgesetzt wird, müssen Sie CORS mit dem Dienst konfigurieren.

CORS bestimmt auf der Grundlage der folgenden Kriterien, ob die gemeinsame Nutzung von Ressourcen in einer ursprungsübergreifenden Anfrage zulässig ist:
+ Der spezifischen Domäne, die die Anforderung sendet 
+ Dem Typ der HTTP-Anforderung, die gesendet wird (GET, PUT, POST, DELETE usw.)

## Wie funktioniert CORS
<a name="how-cors-works"></a>

Im einfachsten Fall sendet Ihr Browser-Skript eine GET-Anforderung für eine Ressource von einem Server in einer anderen Domäne. Abhängig von der CORS-Konfiguration dieses Servers, wenn die Anforderung von einer Domäne stammt, die berechtigt ist, GET-Anforderungen abzusenden, reagiert der ursprungsübergreifende Server, indem er die angeforderte Ressource zurück gibt.

Wenn entweder die anfordernde Domäne oder der Typ der HTTP-Anforderung nicht autorisiert ist, wird die Anforderung abgelehnt. CORS jedoch ermöglicht ein Preflight der Anforderung, bevor sie tatsächlich abgesendet wird. In diesem Fall wird eine Preflight-Anforderung ausgeführt, in der die `OPTIONS`-Zugriffsanforderungsoperation gesendet wird. Wenn die CORS-Konfiguration des ursprungsübergreifenden Servers Zugriff auf die anfordernde Domäne gewährt, sendet der Server eine Preflight-Antwort zurück, die alle HTTP-Anforderungstypen aufführt, die die anfordernde Domäne für die angeforderte Ressource vornehmen kann.

![\[Prozessablauf für CORS-Anforderungen\]](http://docs.aws.amazon.com/de_de/sdk-for-javascript/v3/developer-guide/images/cors-overview.png)


## Ist eine CORS-Konfiguration erforderlich?
<a name="the-need-for-cors-configuration"></a>

Amazon S3 S3-Buckets benötigen eine CORS-Konfiguration, bevor Sie Operationen mit ihnen ausführen können. In einigen JavaScript Umgebungen wird CORS möglicherweise nicht durchgesetzt, sodass die Konfiguration von CORS nicht erforderlich ist. Wenn Sie Ihre Anwendung beispielsweise von einem Amazon S3 S3-Bucket aus hosten und auf Ressourcen von `*.s3.amazonaws.com` oder einem anderen bestimmten Endpunkt zugreifen, greifen Ihre Anfragen nicht auf eine externe Domain zu. Aus diesem Grund benötigt diese Konfiguration kein CORS. In diesem Fall wird CORS weiterhin für andere Dienste als Amazon S3 verwendet.

## CORS für einen Amazon S3 S3-Bucket konfigurieren
<a name="configuring-cors-s3-bucket"></a>

Sie können einen Amazon S3 S3-Bucket für die Verwendung von CORS in der Amazon S3 S3-Konsole konfigurieren.

Wenn Sie CORS in der AWS Web Services Management Console konfigurieren, müssen Sie JSON verwenden, um eine CORS-Konfiguration zu erstellen. Die neue AWS Web Services Management Console unterstützt nur JSON-CORS-Konfigurationen. 

**Wichtig**  
In der neuen AWS Web Services Management Console muss die CORS-Konfiguration JSON sein.

1. Öffnen Sie in der AWS Web Services Management Console die Amazon S3 S3-Konsole, suchen Sie den Bucket, den Sie konfigurieren möchten, und aktivieren Sie das entsprechende Kontrollkästchen.

1. Wählen Sie in dem sich öffnenden Bereich **Permissions** aus.

1. Wählen Sie auf der Registerkarte **Permission** die Option **CORS-Konfiguration** aus.

1. **Geben Sie Ihre CORS-Konfiguration im **CORS-Konfigurationseditor** ein und wählen Sie dann Speichern.**

Eine CORS-Konfiguration ist eine XML-Datei mit einer Reihe von Regeln innerhalb eines `<CORSRule>`. Eine Konfiguration kann bis zu 100 Regeln enthalten. Eine Regel wird durch eines der folgenden Tags definiert:
+ `<AllowedOrigin>`— Gibt die Domain-Ursprünge an, die Sie für domänenübergreifende Anfragen zulassen.
+ `<AllowedMethod>`— Gibt einen Anfragetyp an, den Sie in domänenübergreifenden Anfragen zulassen (GET, PUT, POST, DELETE, HEAD).
+ `<AllowedHeader>`— Gibt die Header an, die in einer Preflight-Anfrage zulässig sind.

Beispielkonfigurationen finden Sie unter [Wie konfiguriere ich CORS in meinem](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html#how-do-i-enable-cors) Bucket? im *Amazon Simple Storage Service-Benutzerhandbuch*.

## Beispiel für eine CORS-Konfiguration
<a name="cors-configuration-example"></a>

Das folgende CORS-Konfigurationsbeispiel ermöglicht es einem Benutzer, Objekte innerhalb eines Buckets aus der Domain anzuzeigen, hinzuzufügen, zu entfernen oder zu aktualisieren. `example.org` Wir empfehlen jedoch, dass Sie den Bereich `<AllowedOrigin>` auf die Domain Ihrer Website beschränken. Sie können `"*"` angeben, sodass jeder Ursprung zulässig ist.

**Wichtig**  
In der neuen S3-Konsole muss die CORS-Konfiguration JSON sein.

------
#### [ XML ]

```
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <CORSRule>
    <AllowedOrigin>https://example.org</AllowedOrigin>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
    <ExposeHeader>ETag</ExposeHeader>
    <ExposeHeader>x-amz-meta-custom-header</ExposeHeader>
  </CORSRule>
</CORSConfiguration>
```

------
#### [ JSON ]

```
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "HEAD",
            "GET",
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "https://www.example.org"
        ],
        "ExposeHeaders": [
             "ETag",
             "x-amz-meta-custom-header"]
    }
]
```

------

Diese Konfiguration autorisiert den Benutzer nicht, Aktionen für den Bucket auszuführen. Es ermöglicht dem Sicherheitsmodell des Browsers, eine Anfrage an Amazon S3 zuzulassen. Berechtigungen müssen über Bucket-Berechtigungen oder IAM-Rollenberechtigungen konfiguriert werden.

Sie können `ExposeHeader` damit das SDK die von Amazon S3 zurückgegebenen Antwort-Header lesen lassen. Wenn Sie beispielsweise den `ETag` Header aus einem `PUT` oder einem mehrteiligen Upload lesen möchten, müssen Sie das `ExposeHeader` Tag in Ihre Konfiguration aufnehmen, wie im vorherigen Beispiel gezeigt. Das SDK kann nur auf Header zugreifen, die über die CORS-Konfiguration bereitgestellt werden. Wenn Sie Metadaten für das Objekt festlegen, werden Werte als Header mit dem Präfix `x-amz-meta-` zurückgegeben, wie z. B. `x-amz-meta-my-custom-header`, und müssen auch auf die gleiche Weise bereitgestellt werden.

# Bündeln Sie Anwendungen mit Webpack
<a name="webpack"></a>

Die Verwendung von Codemodulen durch Webanwendungen in Browserskripten oder Node.js erzeugt Abhängigkeiten. Diese Codemodule können eigene Abhängigkeiten haben, was zu einer Sammlung von miteinander verbundenen Modulen führt, die Ihre Anwendung benötigt, um zu funktionieren. Um Abhängigkeiten zu verwalten, können Sie einen Modul-Bundler wie `webpack` verwenden.

Der `webpack` Modul-Bundler analysiert Ihren Anwendungscode und sucht nach `import` `require` ODER-Anweisungen, um Bundles zu erstellen, die alle Ressourcen enthalten, die Ihre Anwendung benötigt. Auf diese Weise können die Ressourcen einfach über eine Webseite bereitgestellt werden. Das SDK für JavaScript kann `webpack` als eine der Abhängigkeiten in das Ausgabepaket aufgenommen werden.

Weitere Informationen zu `webpack` finden Sie im [Webpack-Modul-Bundler](https://webpack.github.io/) unter. GitHub

## Installieren Sie das Webpack
<a name="webpack-installing"></a>

Um den `webpack` Modul-Bundler zu installieren, müssen Sie zuerst npm, den Paketmanager Node.js, installiert haben. Geben Sie den folgenden Befehl ein, um die `webpack` CLI und das JavaScript Modul zu installieren.

```
npm install --save-dev webpack
```

Um das `path` Modul für die Arbeit mit Datei- und Verzeichnispfaden zu verwenden, das automatisch mit Webpack installiert wird, müssen Sie möglicherweise das `path-browserify` Paket Node.js installieren. 

```
npm install --save-dev path-browserify
```

## Webpack konfigurieren
<a name="webpack-configuring"></a>

Standardmäßig sucht Webpack nach einer JavaScript Datei mit dem Namen `webpack.config.js` im Stammverzeichnis Ihres Projekts. Diese Datei enthält Ihre Konfigurationsoptionen. Das Folgende ist ein Beispiel für eine `webpack.config.js` Konfigurationsdatei für WebPack Version 5.0.0 und höher.

**Anmerkung**  
Die Webpack-Konfigurationsanforderungen variieren je nach der Version von Webpack, die Sie installieren. Weitere Informationen finden Sie in der [Webpack-Dokumentation](https://webpack.js.org/configuration/). 

```
// Import path for resolving file paths
var path = require("path");
module.exports = {
  // Specify the entry point for our app.
  entry: [path.join(__dirname, "browser.js")],
  // Specify the output file containing our bundled code.
  output: {
    path: __dirname,
    filename: 'bundle.js'
  },
   // Enable WebPack to use the 'path' package.
   resolve:{
  fallback: { path: require.resolve("path-browserify")}
  }
  /**
  * In Webpack version v2.0.0 and earlier, you must tell 
  * webpack how to use "json-loader" to load 'json' files.
  * To do this Enter 'npm --save-dev install json-loader' at the 
  * command line to install the "json-loader' package, and include the 
  * following entry in your webpack.config.js.
  * module: {
    rules: [{test: /\.json$/, use: use: "json-loader"}]
  }
  **/
};
```

In diesem Beispiel `browser.js` wird als *Einstiegspunkt* angegeben. Der *Einstiegspunkt* wird von der Datei `webpack` verwendet, um mit der Suche nach importierten Modulen zu beginnen. Der Name für die Ausgabedatei ist als `bundle.js` angegeben. Diese Ausgabedatei enthält alles, was JavaScript die Anwendung zum Ausführen benötigt. Wenn der im Einstiegspunkt angegebene Code andere Module importiert oder benötigt, z. B. das SDK für JavaScript, wird dieser Code gebündelt, ohne dass er in der Konfiguration angegeben werden muss.

## Führen Sie Webpack aus
<a name="webpack-running"></a>

Um eine zu verwendende Anwendung zu erstellen`webpack`, fügen Sie dem `scripts` Objekt in Ihrer `package.json` Datei Folgendes hinzu.

```
"build": "webpack"
```

Im Folgenden finden Sie eine `package.json` Beispieldatei, die das Hinzufügen demonstriert`webpack`.

```
{
  "name": "aws-webpack",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@aws-sdk/client-iam": "^3.32.0",
    "@aws-sdk/client-s3": "^3.32.0"
  },
  "devDependencies": {
    "webpack": "^5.0.0"
  }
}
```

Geben Sie den folgenden Befehl ein, um Ihre Anwendung zu erstellen.

```
npm run build
```

Der `webpack` Modul-Bundler generiert dann die JavaScript Datei, die Sie im Stammverzeichnis Ihres Projekts angegeben haben.

## Verwenden Sie das Webpack-Bundle
<a name="webpack-using-bundle"></a>

Um das Bundle in einem Browser-Skript zu verwenden, können Sie das Bundle mithilfe eines `<script>` Tags integrieren, wie im folgenden Beispiel gezeigt.

```
<!DOCTYPE html>
<html>
    <head>
        <title>Amazon SDK with webpack</title>
    </head> 
    <body>
        <div id="list"></div>
        <script src="bundle.js"></script>
    </body>
</html>
```

## Paket für Node.js
<a name="webpack-nodejs-bundles"></a>

Sie können `webpack` es verwenden, um Bundles zu generieren, die in Node.js ausgeführt werden, indem Sie es `node` als Ziel in der Konfiguration angeben.

```
target: "node"
```

Dies ist nützlich, wenn eine Node.js-Anwendung in einer Umgebung ausgeführt wird, in der Speicherplatz begrenzt ist. Hier sehen Sie ein Beispiel für eine `webpack.config.js`-Konfiguration mit der Angabe von Node.js als Ausgabeziel.

```
// Import path for resolving file paths
var path = require("path");
module.exports = {
  // Specify the entry point for our app.
  entry: [path.join(__dirname, "browser.js")],
  // Specify the output file containing our bundled code.
  output: {
    path: __dirname,
    filename: 'bundle.js'
  },
  // Let webpack know to generate a Node.js bundle.
  target: "node",
   // Enable WebPack to use the 'path' package.
   resolve:{
  fallback: { path: require.resolve("path-browserify")}
   /**
   * In Webpack version v2.0.0 and earlier, you must tell 
   * webpack how to use "json-loader" to load 'json' files.
   * To do this Enter 'npm --save-dev install json-loader' at the 
   * command line to install the "json-loader' package, and include the 
   * following entry in your webpack.config.js.
   module: {
    rules: [{test: /\.json$/, use: use: "json-loader"}]
  }
  **/
};
```