logo hsb.horse
← Zur Blog-Übersicht

Blog

Mit TypeScript eine Anfrage an ein IAM-geschütztes API Gateway senden

So senden Sie aus einer lokalen TypeScript-Umgebung mit SigV4 aus dem AWS SDK für JavaScript Anfragen an ein API Gateway mit IAM-Authentifizierung.

Veröffentlicht:

Wenn IAM-Authentifizierung auf API Gateway aktiviert ist, müssen Anfragen signiert werden.

Hier ist eine TypeScript-Implementierung, um solche Anfragen aus einer lokalen Umgebung zu senden.

Umgebung

  • Ausführung aus einer lokalen Umgebung
  • Läuft mit Node.js (oder Bun)

Implementierung

Verwenden Sie SignatureV4 aus dem AWS SDK für JavaScript, um die Anfrage zu signieren.

import { fromIni } from "@aws-sdk/credential-providers";
import { SignatureV4 } from "@aws-sdk/signature-v4";
import { Sha256 } from "@aws-crypto/sha256-js";
import { HttpRequest } from "@aws-sdk/protocol-http";
const credentials = fromIni({ profile: "profile-name" });
const serviceName = "execute-api";
const options = {
url: "https://{id}.execute-api.ap-northeast-1.amazonaws.com/",
headers: {} as Record<string, string>,
};
const url = new URL(options.url);
const host = url.hostname;
const path = url.pathname;
const req = new HttpRequest({
headers: {
Host: host,
},
hostname: host,
method: "GET",
path: path,
});
const signer = new SignatureV4({
credentials,
region: "ap-northeast-1",
service: serviceName,
sha256: Sha256,
});
const signed = await signer.sign(req);
const response = await fetch(options.url, {
headers: {
...signed.headers,
Host: host,
},
});

Wichtige Punkte

  1. Mit fromIni die Zugangsdaten aus einem AWS-Profil laden
  2. Mit HttpRequest das Anfrageobjekt erzeugen
  3. Mit SignatureV4 die Anfrage signieren
  4. Mit fetch die Anfrage inklusive signierter Header senden

Zusammenfassung

Mit SignatureV4 aus dem AWS SDK für JavaScript lassen sich Anfragen an ein IAM-geschütztes API Gateway aus einer lokalen Umgebung unkompliziert senden.

Da die Zugangsdaten aus dem AWS-Profil gelesen werden, müssen sie nicht im Code hinterlegt werden.