

 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.

# Serviceobjekte erstellen und aufrufen
<a name="creating-and-calling-service-objects"></a>

Die JavaScript API unterstützt die meisten verfügbaren AWS Dienste. Jeder Dienst in der JavaScript API stellt eine Clientklasse mit einer `send` Methode bereit, mit der Sie jede API aufrufen, die der Dienst unterstützt. Weitere Informationen zu Serviceklassen, Vorgängen und Parametern in der JavaScript API finden Sie in der [API-Referenz.](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/)

Wenn Sie das SDK in Node.js verwenden, fügen Sie Ihrer Anwendung das SDK-Paket für jeden Dienst hinzu`import`, den Sie benötigen. Dadurch werden alle aktuellen Dienste unterstützt. Im folgenden Beispiel wird ein Amazon S3 S3-Serviceobjekt in der `us-west-1` Region erstellt.

```
// Import the Amazon S3 service client
import { S3Client } from "@aws-sdk/client-s3"; 
// Create an S3 client in the us-west-1 Region
const s3Client = new S3Client({
    region: "us-west-1"
});
```

## Geben Sie die Parameter des Serviceobjekts an
<a name="specifying-service-object-parameters"></a>

Wenn Sie eine Methode eines Service-Objekts aufrufen, übergeben Sie die JSON-Parameter wie für die API erforderlich. Um beispielsweise in Amazon S3 ein Objekt für einen bestimmten Bucket und Schlüssel abzurufen, übergeben Sie der `GetObjectCommand` Methode die folgenden Parameter von`S3Client`. Weitere Informationen zum Übergeben von JSON-Parametern finden Sie unter [Arbeiten Sie mit JSON](working-with-json.md).

```
s3Client.send(new GetObjectCommand({Bucket: 'bucketName', Key: 'keyName'}));
```

Weitere Informationen zu Amazon S3 S3-Parametern finden Sie unter [@aws -sdk/client-s3](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/) in der API-Referenz.

## Verwenden Sie @smithy /types für generierte Clients in TypeScript
<a name="smithy-types"></a>

Wenn Sie das `@smithy/types` Paket verwenden TypeScript, können Sie die Eingabe- und Ausgabeformen eines Clients bearbeiten.

### Szenario: `undefined` Aus Eingabe- und Ausgabestrukturen entfernen
<a name="remove-undefined-from-input"></a>

Die Elemente der generierten Formen werden `undefined` für Eingabeformen mit vereinigt und sind `?` (optional) für Ausgabeformen verfügbar. Bei Eingaben wird dadurch die Validierung auf den Dienst verschoben. Bei Ausgaben empfiehlt dies dringend, dass Sie die Ausgabedaten zur Laufzeit überprüfen sollten.

Wenn Sie diese Schritte überspringen möchten, verwenden Sie die `AssertiveClient` oder `UncheckedClient` geben Sie Helferlein ein. Im folgenden Beispiel werden die Typhelfer mit dem Amazon S3 S3-Service verwendet.

```
import { S3 } from "@aws-sdk/client-s3";
import type { AssertiveClient, UncheckedClient } from "@smithy/types";

const s3a = new S3({}) as AssertiveClient<S3>;
const s3b = new S3({}) as UncheckedClient<S3>;

// AssertiveClient enforces required inputs are not undefined
// and required outputs are not undefined.
const get = await s3a.getObject({
  Bucket: "",
  // @ts-expect-error (undefined not assignable to string)
  Key: undefined,
});

// UncheckedClient makes output fields non-nullable.
// You should still perform type checks as you deem
// necessary, but the SDK will no longer prompt you
// with nullability errors.
const body = await (
  await s3b.getObject({
    Bucket: "",
    Key: "",
  })
).Body.transformToString();
```

Wenn die Transformation auf einem nicht aggregierten Client mit der `Command` Syntax verwendet wird, kann die Eingabe nicht validiert werden, da sie eine andere Klasse durchläuft, wie im Beispiel unten gezeigt.

```
import { S3Client, ListBucketsCommand, GetObjectCommand, GetObjectCommandInput } from "@aws-sdk/client-s3";
import type { AssertiveClient, UncheckedClient, NoUndefined } from "@smithy/types";

const s3 = new S3Client({}) as UncheckedClient<S3Client>;

const list = await s3.send(
  new ListBucketsCommand({
    // command inputs are not validated by the type transform.
    // because this is a separate class.
  })
);

/**
 * Although less ergonomic, you can use the NoUndefined<T>
 * transform on the input type.
 */
const getObjectInput: NoUndefined<GetObjectCommandInput> = {
  Bucket: "undefined",
  // @ts-expect-error (undefined not assignable to string)
  Key: undefined,
  // optional params can still be undefined.
  SSECustomerAlgorithm: undefined,
};

const get = s3.send(new GetObjectCommand(getObjectInput));

// outputs are still transformed.
await get.Body.TransformToString();
```

### Szenario: Eingrenzung der Ausgaben-Nutzdaten-Blobtypen eines von Smithy TypeScript generierten Clients
<a name="remove-undefined-from-input"></a>

Dieses Szenario ist vor allem für Operationen mit Streaming-Bodies relevant, z. B. innerhalb der Version 3. `S3Client` AWS SDK für JavaScript 

Da die Blob-Payload-Typen plattformabhängig sind, sollten Sie in Ihrer Anwendung angeben, dass ein Client in einer bestimmten Umgebung ausgeführt wird. Dadurch werden die Blob-Nutzlasttypen eingegrenzt, wie im folgenden Beispiel gezeigt.

```
import { GetObjectCommand, S3Client } from "@aws-sdk/client-s3";
import type { NodeJsClient, SdkStream, StreamingBlobPayloadOutputTypes } from "@smithy/types";
import type { IncomingMessage } from "node:http";

// default client init.
const s3Default = new S3Client({});

// client init with type narrowing.
const s3NarrowType = new S3Client({}) as NodeJsClient<S3Client>;

// The default type of blob payloads is a wide union type including multiple possible
// request handlers.
const body1: StreamingBlobPayloadOutputTypes = (await s3Default.send(new GetObjectCommand({ Key: "", Bucket: "" })))
  .Body!;

// This is of the narrower type SdkStream<IncomingMessage> representing
// blob payload responses using specifically the node:http request handler.
const body2: SdkStream<IncomingMessage> = (await s3NarrowType.send(new GetObjectCommand({ Key: "", Bucket: "" })))
  .Body!;
```