调用Transcribe的StartTranscriptionJob时遇x-amz-content-sha256缺失错误
你在调用AWS Transcribe的StartTranscriptionJob时踩了一个常见的端点配置坑,我来帮你梳理问题并解决:
问题根源
你在CLI命令里指定了错误的--endpoint-url:https://s3.amazonaws.com/。这个地址是S3存储服务的端点,而不是AWS Transcribe的服务端点。当你把Transcribe的API请求发送到S3端点时,S3的安全机制要求必须携带x-amz-content-sha256请求头,但Transcribe CLI的请求逻辑不会自动附加这个头,因此触发了InvalidRequest错误。
你的现有配置回顾
- 执行的CLI命令:
aws transcribe start-transcription-job --endpoint-url https://s3.amazonaws.com/ --region us-east-1 --cli-input-json file://D:\awstr.json - 输入JSON文件(
D:\awstr.json):{ "TranscriptionJobName": "awrtest05", "LanguageCode": "en-US", "MediaFormat": "mp3", "Media": { "MediaFileUri": "https://s3.amazonaws.com/temp-awr-store6/m1406.mp3" } } - AWS配置文件内容:
[default] output = json region = us-east-1
解决方案
移除错误的端点参数
Transcribe CLI会根据你配置的region自动匹配正确的服务端点,完全不需要指定S3的地址。修正后的命令如下:aws transcribe start-transcription-job --region us-east-1 --cli-input-json file://D:\awstr.json验证媒体文件权限与路径
确认你的AWS账号拥有访问https://s3.amazonaws.com/temp-awr-store6/m1406.mp3的权限(需要s3:GetObject权限),同时确保该S3对象确实存在,路径没有拼写错误。保持现有配置文件不变
你的配置文件中region设置为us-east-1,和命令中的region一致,这部分是正确的,无需修改。
额外提示
如果后续需要手动指定Transcribe的端点(比如在私有VPC或特殊环境下),请使用对应region的Transcribe专属端点,例如us-east-1的Transcribe端点是https://transcribe.us-east-1.amazonaws.com,千万不要混淆其他服务的端点。
内容的提问来源于stack exchange,提问作者Burning Daylight

