AWS Transcribe输出文件显示AccessDenied,配置权限仍未解决
解决AWS Transcribe输出文件返回AccessDenied的问题
核心排查与修复步骤
1. 检查Transcribe服务角色的写入权限
Transcribe需要具备写入目标S3桶的权限,确保服务角色关联以下IAM策略(替换your-bucket-name为实际输出桶名称):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": "arn:aws:s3:::your-bucket-name/*" } ] }
注意策略的Resource必须覆盖桶内所有对象(以/*结尾),不能仅指定桶本身。
2. 验证S3桶策略的访问规则
如果目标S3桶有自定义桶策略,需确保允许Transcribe服务主体写入:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "transcribe.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::your-bucket-name/*", "Condition": { "StringEquals": { "aws:SourceAccount": "你的AWS账号ID" } } } ] }
填写你的AWS账号ID作为aws:SourceAccount值,避免无关账号的Transcribe服务访问桶。
3. 确认本地/代码使用的IAM凭证权限
确保Go代码使用的IAM凭证(环境变量、~/.aws/credentials或EC2实例角色)具备:
transcribe:StartTranscriptionJob:启动转录任务的权限s3:GetObject:读取输出文件的权限
本地环境可执行aws configure list确认当前使用的账号是否正确,以及关联权限是否齐全。
4. 检查S3文件的实际状态
登录AWS控制台查看目标桶内的.json文件:
- 若文件仅几百字节,说明Transcribe因权限不足无法写入有效内容,需回到服务角色/桶策略排查
- 若文件大小正常但读取时返回AccessDenied,说明你的IAM身份缺少读取权限
5. VPC环境额外排查(若适用)
如果Transcribe任务在VPC内运行,需确保已配置S3的VPC端点,且端点策略允许Transcribe访问目标桶。
快速验证方案
创建一个无自定义策略的全新S3桶,给Transcribe服务角色添加该桶的PutObject/GetObject权限,重新运行转录任务。若能生成有效内容,说明原桶的策略或权限配置存在冲突。
内容的提问来源于stack exchange,提问作者Soufiane Ezzine
相关产品推荐
相关产品推荐

