AWS SDK dla Delphi — S3, SQS, IoT, Lambda, DynamoDB

Natywny, niezależny od zależności zestaw narzędzi Delphi dla Amazon Web Services. Podpisuj i wysyłaj żądania REST do S3, pchaj wiadomości do SQS, napędzaj AWS IoT Core przez MQTT-na-WebSocket, wywołuj funkcje Lambda, rozmawiaj z DynamoDB i Bedrock i generuj silnie typowanych klientów Pascala dla dowolnego API AWS z jego specyfikacji OpenAPI / Smithy — wszystko z pojedynczego zestawu komponentów sgcWebSockets.

Jeden stos sieciowy, każda usługa AWS

Bez Java runtime, bez Python boto3, bez mostu Node — tylko komponenty Pascala, które mówią HTTPS, MQTT, WebSocket i AMQP bezpośrednio do edge AWS.

Amazon Web Services udostępnia ponad 250 API — storage, kolejkowanie, IoT, compute, machine learning, tożsamość, DNS, CDN, search, RDBMS, key management i dziesiątki więcej. Oficjalny AWS SDK jest dostarczany w Java, Python, JavaScript, Go, Ruby, PHP i .NET, ale nie w Delphi ani C++Builder. sgcWebSockets wypełnia lukę spójnym zestawem natywnych komponentów: TsgcHTTP_API_AmazonSQS dla kolejkowania, TsgcWSAPI_AWSIoT dla MQTT nad WebSocket (presigned Signature v4), TsgcHTTPClient z wbudowanym signerem AWS Signature v4 dla dowolnej usługi REST oraz generatorem kodu sgcOpenAPI dla długiego ogona usług, które publikują czytelną maszynowo specyfikację.

Uwierzytelnianie jest jednolite: para klucz dostępu + klucz tajny (lub tymczasowy token sesji STS z założeniem roli IAM), region i identyfikator usługi. Pomocnik Signature v4 oblicza kanoniczne żądanie, string-to-sign, łańcuch HMAC i nagłówek Authorization dla każdego wychodzącego wywołania, więc każdy endpoint AWS — od S3 PUT do Bedrock InvokeModel — mówi tym samym dialektem. Wszystko działa na Windows, macOS, Linux, iOS i Android z tym samym źródłem Pascala.

Komponenty rdzenia

TsgcHTTP_API_AmazonSQS, TsgcWSAPI_AWSIoT, TsgcHTTPClient + signer Signature v4.

Transport

HTTPS / HTTP/2 dla REST, MQTT 3.1.1 + 5 nad WebSocket dla IoT, surowy WebSocket dla strumieniowania.

Platformy

Windows, macOS, Linux, iOS, Android, .NET.

Generator kodu

sgcOpenAPI konsumuje dowolną specyfikację AWS OpenAPI / Smithy i emituje klasy klienta Pascala.

Wrappery pierwszej klasy + wygenerowane SDK dla reszty

Amazon S3

PUT / GET / DELETE obiektów, multipart uploady, presigned URLs i listowanie bucketów przez HTTPS z Signature v4. Działa wobec dowolnego storage kompatybilnego z S3 (MinIO, Wasabi, Backblaze B2, Cloudflare R2).

Amazon SQS

TsgcHTTP_API_AmazonSQS — twórz kolejki, wysyłaj / odbieraj / usuwaj wiadomości, FIFO + standard, dead-letter queues, wsadowe wysyłanie jednym wywołaniem metody.

AWS IoT Core

TsgcWSAPI_AWSIoT — MQTT 3.1.1 / 5 nad WebSocket z presigned URLs Signature v4 lub wzajemnym TLS X.509. Device shadow, jobs, fleet provisioning, niestandardowe uwierzytelnianie.

AWS Lambda

Synchroniczne (RequestResponse) i asynchroniczne (Event) wywołania wobec endpointu /2015-03-31/functions/{name}/invocations. Zwraca odpowiedź JSON lub ID śladu X-Ray.

Amazon DynamoDB

PutItem, GetItem, Query, Scan i TransactWriteItems przez protokół JSON 1.0 — ten sam komponent, inny nagłówek X-Amz-Target.

Amazon Bedrock

InvokeModel i InvokeModelWithResponseStream dla Claude, Llama, Mistral, Titan i Nova — wariant strumieniowy używa kodeka event-stream owijanego przez klienta HTTP/2.

Amazon SNS

Publikuj do tematów i celów SMS, zarządzaj subskrypcjami i endpointami platformy — czysty HTTPS POST + Signature v4.

STS + Cognito

AssumeRole, GetSessionToken i Cognito user-pool sign-in / token-refresh — przepływy OAuth2 interoperują z TsgcOAuth2Client.

Wygenerowane SDK AWS

sgcOpenAPI emituje klasy klienta Pascala dla dowolnej usługi AWS, która publikuje specyfikację OpenAPI lub Smithy — długi ogon CloudWatch, Kinesis, ECS, EKS, EventBridge i pokrewnych.

Signature v4 dla każdej usługi

Każde żądanie AWS — S3 PUT, DynamoDB Query, Lambda Invoke, nawet presigned URL MQTT-na-WebSocket używany przez AWS IoT — niesie nagłówek Authorization: AWS4-HMAC-SHA256 (lub query string) wyprowadzony z Twojego klucza dostępu, klucza tajnego, regionu i nazwy usługi. sgcWebSockets dostarcza pojedynczy pomocnik Pascala Signature v4, który obsługuje budowanie kanonicznego żądania, string-to-sign, łańcuchowanie HMAC i wykrywanie odchylenia zegara — ponownie używalny z dowolnego komponentu HTTP / WebSocket / MQTT. W połączeniu z TsgcOAuth2Client dla przepływów STS / Cognito i wbudowanym wzorcem zakładania roli IAM, dostajesz tę samą postawę bezpieczeństwa co oficjalne SDK w każdym innym języku.

Upload do S3 i publikacja do SQS

30-liniowy fragment, który uploaduje plik do bucketu S3 i kolejkuje powiadomienie na SQS — kanoniczne „hello world” automatyzacji AWS.

uses
  sgcHTTP_Client, sgcHTTP_API_AmazonSQS, sgcAWS_SignatureV4;

var
  vHTTP:    TsgcHTTPClient;
  vSigner:  TsgcAWSSignatureV4;
  vSQS:     TsgcHTTP_API_AmazonSQS;
  vStream:  TFileStream;
begin
  // ----- 1) Upload a file to S3 -----
  vHTTP   := TsgcHTTPClient.Create(nil);
  vSigner := TsgcAWSSignatureV4.Create;
  try
    vSigner.AccessKey := 'AKIA...';
    vSigner.SecretKey := 'wJalrXUtn...';
    vSigner.Region    := 'eu-west-1';
    vSigner.Service   := 's3';

    vStream := TFileStream.Create('report.pdf', fmOpenRead);
    try
      vSigner.Sign(vHTTP, 'PUT',
        'https://my-bucket.s3.eu-west-1.amazonaws.com/report.pdf', vStream);
      vHTTP.Put('https://my-bucket.s3.eu-west-1.amazonaws.com/report.pdf', vStream);
    finally
      vStream.Free;
    end;

    // ----- 2) Push a notification on SQS -----
    vSQS := TsgcHTTP_API_AmazonSQS.Create(nil);
    try
      vSQS.AccessKey := 'AKIA...';
      vSQS.SecretKey := 'wJalrXUtn...';
      vSQS.Region    := 'eu-west-1';
      vSQS.QueueUrl  := 'https://sqs.eu-west-1.amazonaws.com/123456789012/uploads';
      vSQS.SendMessage('{"event":"upload","key":"report.pdf"}');
    finally
      vSQS.Free;
    end;
  finally
    vSigner.Free;
    vHTTP.Free;
  end;
end;

MQTT nad WebSocket z Signature v4

AWS IoT Core akceptuje MQTT nad TLS (port 8883) z wzajemnym TLS X.509, MQTT nad WebSocket (port 443) podpisany z Signature v4, lub MQTT z niestandardowym authoriserem. TsgcWSAPI_AWSIoT obsługuje wszystkie trzy — transport WebSocket to najłatwiejsza ścieżka z sieci firmowych blokujących 8883, a komponent generuje presigned URL transparentnie z Twojego klucza dostępu.

uses
  sgcWSAPI_AWSIoT;

var
  vIoT: TsgcWSAPI_AWSIoT;
begin
  vIoT := TsgcWSAPI_AWSIoT.Create(nil);
  try
    vIoT.Authentication.SignatureV4.AccessKey := 'AKIA...';
    vIoT.Authentication.SignatureV4.SecretKey := 'wJalrXUtn...';
    vIoT.Authentication.SignatureV4.Region    := 'eu-west-1';
    vIoT.Host       := 'a1b2c3d4e5f6g7-ats.iot.eu-west-1.amazonaws.com';
    vIoT.OnMQTTConnect      := DoMQTTConnect;
    vIoT.OnMQTTSubscribe    := DoMQTTSubscribe;
    vIoT.OnMQTTPublish      := DoMQTTPublish;
    vIoT.Active := True;
  finally
    vIoT.Free;
  end;
end;

Trzy kroki do pierwszego wywołania AWS

1. Zainstaluj

Wrzuć sgcWebSockets do swojej instalacji Delphi lub C++Builder — jeden pakiet IDE na wersję Delphi 7 do 13. Pobierz wersję próbną.

2. Utwórz użytkownika IAM

W konsoli AWS utwórz użytkownika IAM z dostępem programowym, dołącz politykę least-privilege i skopiuj parę klucz dostępu / klucz tajny.

3. Upuść komponent

Dla SQS użyj TsgcHTTP_API_AmazonSQS, dla IoT użyj TsgcWSAPI_AWSIoT, dla wszystkiego innego użyj TsgcHTTPClient z pomocnikiem Signature v4.

Powiązane wpisy na blogu

AWS SDK dla Delphi

Przegląd, jak sgcWebSockets udostępnia powierzchnię AWS deweloperom Pascala.

Komponent Amazon SQS dla Delphi

Przewodnik krok po kroku TsgcHTTP_API_AmazonSQS — kolejki, FIFO, batching, routing dead-letter.

AWS IoT MQTT z Signature v4

Jak napędzać AWS IoT Core przez MQTT-na-WebSocket bez certyfikatów X.509.

Niestandardowe uwierzytelnianie AWS IoT

Użyj authorisera Lambda do wystawiania poświadczeń MQTT w locie.

AWS Cognito + OAuth2

Federuj użytkowników i uzyskuj tokeny sesji STS z user pools Cognito.

Amazon Braket z Delphi

Rozmawiaj z usługą kwantową Amazon przez wygenerowane SDK.

Dostarcz integracje AWS w swojej aplikacji Delphi już dziś

Pobierz wersję próbną — dema AWS pokrywają S3, SQS, IoT i Lambda z gotowymi do kompilacji przykładowymi projektami.