无需 Java 运行时、无需 Python boto3、无需 Node 桥——只需直接与 AWS 边缘通信 HTTPS、MQTT、WebSocket 和 AMQP 的 Pascal 组件。
Amazon Web Services 公开了超过 250 个 API——存储、队列、IoT、计算、机器学习、身份、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、带内置 AWS Signature v4 签名器用于任何 REST 服务的 TsgcHTTPClient,以及用于发布机器可读规范的服务长尾的 sgcOpenAPI 代码生成器。
身份验证统一:访问密钥 + 秘密密钥对(或带 IAM 角色担任的临时 STS 会话令牌)、区域和服务标识符。Signature v4 辅助方法为每个出站调用计算规范请求、待签名字符串、HMAC 链和 Authorization 标头,因此每个 AWS 端点——从 S3 PUT 到 Bedrock InvokeModel——都说相同的方言。所有这些都在 Windows、macOS、Linux、iOS 和 Android 上以相同的 Pascal 源代码运行。
TsgcHTTP_API_AmazonSQS、TsgcWSAPI_AWSIoT、TsgcHTTPClient + Signature v4 签名器。
用于 REST 的 HTTPS / HTTP/2、用于 IoT 的基于 WebSocket 的 MQTT 3.1.1 + 5,以及用于流式传输的原始 WebSocket。
Windows、macOS、Linux、iOS、Android、.NET。
sgcOpenAPI 使用任何 AWS OpenAPI / Smithy 规范并发出 Pascal 客户端类。
通过带 Signature v4 的 HTTPS 进行 PUT / GET / DELETE 对象、多部分上传、预签名 URL 和存储桶列表。可对任何 S3 兼容存储(MinIO、Wasabi、Backblaze B2、Cloudflare R2)使用。
TsgcHTTP_API_AmazonSQS——创建队列、发送/接收/删除消息、FIFO + 标准、死信队列、一次方法调用即可批量发送。
TsgcWSAPI_AWSIoT——基于 WebSocket 的 MQTT 3.1.1 / 5,带 Signature v4 预签名 URL 或 X.509 双向 TLS。设备影子、作业、机群预配置、自定义身份验证。
对 /2015-03-31/functions/{name}/invocations 端点的同步(RequestResponse)和异步(Event)调用。返回 JSON 响应或 X-Ray 跟踪 ID。
通过 JSON 1.0 协议进行 PutItem、GetItem、Query、Scan 和 TransactWriteItems——相同的组件,不同的 X-Amz-Target 标头。
用于 Claude、Llama、Mistral、Titan 和 Nova 的 InvokeModel 和 InvokeModelWithResponseStream——流式变体使用由 HTTP/2 客户端包装的事件流编解码器。
向主题和 SMS 目标发布、管理订阅和平台端点——纯 HTTPS POST + Signature v4。
AssumeRole、GetSessionToken 以及 Cognito 用户池登录/令牌刷新——OAuth2 流与 TsgcOAuth2Client 互操作。
sgcOpenAPI 为发布 OpenAPI 或 Smithy 规范的任何 AWS 服务发出 Pascal 客户端类——CloudWatch、Kinesis、ECS、EKS、EventBridge 等的长尾服务。
每个 AWS 请求——S3 PUT、DynamoDB Query、Lambda Invoke,甚至 AWS IoT 使用的基于 WebSocket 的 MQTT 预签名 URL——都携带从您的访问密钥、秘密密钥、区域和服务名称派生的 Authorization: AWS4-HMAC-SHA256 标头(或查询字符串)。sgcWebSockets 提供一个单一的 Pascal Signature v4 辅助方法,处理规范请求构建、待签名字符串、HMAC 链和时钟偏差检测——可从任何 HTTP / WebSocket / MQTT 组件重用。结合 TsgcOAuth2Client 用于 STS / Cognito 流以及内置的 IAM 角色担任模式,您可以获得与任何其他语言中的官方 SDK 相同的安全态势。
一个 30 行的代码片段,将文件上传到 S3 存储桶并在 SQS 上排队通知——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;
AWS IoT Core 接受带 X.509 双向 TLS 的基于 TLS 的 MQTT(端口 8883)、使用 Signature v4 签名的基于 WebSocket 的 MQTT(端口 443),或带自定义授权器的 MQTT。TsgcWSAPI_AWSIoT 处理所有三种——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;
将 sgcWebSockets 放入您的 Delphi 或 C++Builder 安装——Delphi 7 至 13 的每个版本一个 IDE 包。下载试用版。
在 AWS 控制台中,创建一个程序访问的 IAM 用户,附加最小权限策略,并复制访问密钥/秘密密钥对。
对于 SQS 使用 TsgcHTTP_API_AmazonSQS,对于 IoT 使用 TsgcWSAPI_AWSIoT,对于其他任何东西,使用带 Signature v4 辅助方法的 TsgcHTTPClient。
sgcWebSockets 如何将 AWS 界面公开给 Pascal 开发者的概述。
TsgcHTTP_API_AmazonSQS 的分步演练——队列、FIFO、批处理、死信路由。
如何在不使用 X.509 证书的情况下通过基于 WebSocket 的 MQTT 驱动 AWS IoT Core。
使用 Lambda 授权器即时颁发 MQTT 凭据。
联合用户并从 Cognito 用户池获取 STS 会话令牌。
通过生成的 SDK 与 Amazon 量子计算服务通信。