Delphi AWS SDK — S3、SQS、IoT、Lambda、DynamoDB

Amazon Web Services 向けのネイティブ、依存なしの Delphi ツールキット。REST リクエストを S3 に署名して送信し、SQS にメッセージをプッシュし、WebSocket 上の MQTT で AWS IoT Core を駆動し、Lambda 関数を呼び出し、DynamoDB と Bedrock と通信し、任意の AWS API の OpenAPI / Smithy 仕様から強く型付けされた Pascal クライアントを生成 — すべて単一の sgcWebSockets コンポーネントセットから。

1 つのネットワーキングスタック、すべての AWS サービス

Java ランタイム不要、Python boto3 不要、Node ブリッジ不要 — AWS エッジに直接 HTTPS、MQTT、WebSocket、AMQP を話す Pascal コンポーネントだけ。

Amazon Web Services は 250 を超える API — ストレージ、キューイング、IoT、コンピュート、機械学習、ID、DNS、CDN、検索、RDBMS、鍵管理、その他多数 — を公開しています。公式 AWS SDK は Java、Python、JavaScript、Go、Ruby、PHP、.NET で出荷されますが、Delphi や C++Builder では出荷されません。sgcWebSockets はこのギャップを、一貫したネイティブコンポーネントセットで埋めます: キューイング用の TsgcHTTP_API_AmazonSQS、WebSocket 上の MQTT(Signature v4 事前署名)用の TsgcWSAPI_AWSIoT、任意の REST サービス用の組み込み AWS Signature v4 署名者付き TsgcHTTPClient、機械可読仕様を公開するサービスのロングテール向けの sgcOpenAPI コードジェネレーター。

認証は統一されています: アクセスキー + シークレットキーのペア(または IAM ロール引き受け付きの一時 STS セッショントークン)、リージョン、サービス識別子。Signature v4 ヘルパーは、すべての送信呼び出しの正規リクエスト、署名する文字列、HMAC チェーン、Authorization ヘッダーを計算します。したがって、すべての AWS エンドポイント — S3 PUT から Bedrock InvokeModel まで — が同じ方言を話します。すべて同じ Pascal ソースで Windows、macOS、Linux、iOS、Android で動作します。

コアコンポーネント

TsgcHTTP_API_AmazonSQSTsgcWSAPI_AWSIoT、Signature v4 署名者付き TsgcHTTPClient

トランスポート

REST 用 HTTPS / HTTP/2、IoT 用 WebSocket 上の MQTT 3.1.1 + 5、ストリーミング用生 WebSocket。

プラットフォーム

Windows、macOS、Linux、iOS、Android、.NET。

コードジェネレーター

sgcOpenAPI は任意の AWS OpenAPI / Smithy 仕様を消費し、Pascal クライアントクラスを出力します。

第一級ラッパー + 残りのための生成 SDK

Amazon S3

HTTPS と Signature v4 経由でオブジェクトの PUT / GET / DELETE、マルチパートアップロード、事前署名 URL、バケットリスト。任意の S3 互換ストア(MinIO、Wasabi、Backblaze B2、Cloudflare R2)で動作。

Amazon SQS

TsgcHTTP_API_AmazonSQS — キューの作成、メッセージの送信/受信/削除、FIFO + 標準、dead-letter キュー、1 メソッド呼び出しでのバッチ送信。

AWS IoT Core

TsgcWSAPI_AWSIoT — Signature v4 事前署名 URL または X.509 相互 TLS を使った WebSocket 上の MQTT 3.1.1 / 5。デバイスシャドウ、ジョブ、フリートプロビジョニング、カスタム認証。

AWS Lambda

/2015-03-31/functions/{name}/invocations エンドポイントに対する同期(RequestResponse)と非同期(Event)呼び出し。JSON レスポンスまたは X-Ray トレース ID を返します。

Amazon DynamoDB

JSON 1.0 プロトコル経由の PutItem、GetItem、Query、Scan、TransactWriteItems — 同じコンポーネント、異なる X-Amz-Target ヘッダー。

Amazon Bedrock

Claude、Llama、Mistral、Titan、Nova 用の InvokeModel と InvokeModelWithResponseStream — ストリーミングバリアントは HTTP/2 クライアントがラップする event-stream コーデックを使用。

Amazon SNS

トピックと SMS ターゲットへの発行、購読とプラットフォームエンドポイントの管理 — 純粋な HTTPS POST + Signature v4。

STS + Cognito

AssumeRole、GetSessionToken、Cognito ユーザープールのサインイン/トークンリフレッシュ — OAuth2 フローは TsgcOAuth2Client と相互運用します。

生成 AWS SDK

sgcOpenAPI は、OpenAPI または Smithy 仕様を公開する任意の AWS サービス用の Pascal クライアントクラスを出力します — CloudWatch、Kinesis、ECS、EKS、EventBridge 他のロングテール。

すべてのサービスに対する Signature v4

すべての AWS リクエスト — S3 PUT、DynamoDB Query、Lambda Invoke、AWS IoT が使用する MQTT-on-WebSocket 事前署名 URL でさえも — アクセスキー、シークレットキー、リージョン、サービス名から派生した Authorization: AWS4-HMAC-SHA256 ヘッダー(またはクエリ文字列)を運びます。sgcWebSockets は、正規リクエスト構築、署名する文字列、HMAC チェーン、クロックスキュー検出を処理する単一の Pascal Signature v4 ヘルパーを出荷します — 任意の HTTP / WebSocket / MQTT コンポーネントから再利用可能。STS / Cognito フロー用の TsgcOAuth2Client と組み込み IAM ロール引き受けパターンと組み合わせると、他の言語の公式 SDK と同じセキュリティ姿勢が得られます。

S3 にアップロードし SQS に発行

S3 バケットにファイルをアップロードし、SQS に通知をキューする 30 行のスニペット — AWS 自動化の標準的な「hello world」。

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;

Signature v4 付き WebSocket 上の MQTT

AWS IoT Core は、X.509 相互 TLS 付きの TLS 上の MQTT(ポート 8883)、Signature v4 で署名された WebSocket 上の MQTT(ポート 443)、またはカスタムオーソライザー付きの MQTT を受け入れます。TsgcWSAPI_AWSIoT は 3 つすべてを処理します — WebSocket トランスポートは 8883 をブロックする企業ネットワークからの最も簡単な経路で、コンポーネントはアクセスキーから事前署名 URL を透過的に生成します。

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;

最初の AWS 呼び出しまでの 3 ステップ

1. インストール

sgcWebSockets を Delphi または C++Builder インストールにドロップ — Delphi バージョン 7 から 13 まで IDE パッケージ 1 つずつ。トライアルをダウンロード

2. IAM ユーザーを作成

AWS コンソールで、プログラムアクセス IAM ユーザーを作成し、最小権限ポリシーをアタッチし、アクセスキー/シークレットキーのペアをコピー。

3. コンポーネントをドロップ

SQS には TsgcHTTP_API_AmazonSQS、IoT には TsgcWSAPI_AWSIoT、それ以外には Signature v4 ヘルパー付き TsgcHTTPClient を使用。

関連ブログ投稿

Delphi Amazon AWS SDK

sgcWebSockets が Pascal 開発者に AWS 面をどう公開するかの概要。

Delphi 向け Amazon SQS コンポーネント

TsgcHTTP_API_AmazonSQS のステップバイステップウォークスルー — キュー、FIFO、バッチング、dead-letter ルーティング。

Signature v4 付き AWS IoT MQTT

X.509 証明書なしで WebSocket 上の MQTT で AWS IoT Core を駆動する方法。

AWS IoT カスタム認証

Lambda オーソライザーを使って MQTT 資格情報をその場で発行。

AWS Cognito + OAuth2

ユーザーをフェデレートし、Cognito ユーザープールから STS セッショントークンを取得。

Delphi から Amazon Braket

生成 SDK 経由で Amazon の量子コンピューティングサービスと通信。

今日 Delphi アプリに AWS 統合を出荷

トライアルをダウンロード — AWS デモは S3、SQS、IoT、Lambda をコンパイル準備済みのサンプルプロジェクトでカバー。