调用boto3的start_medical_scribe_job时出现S3 Bucket无法访问错误
解决调用start_medical_scribe_job时的S3存储桶无法访问错误
以下是针对你遇到的问题的排查和解决步骤:
修正OutputBucketName的取值
代码中OutputBucketName='same as above bucket'是占位符,必须替换为实际的存储桶名称(例如'myBucket'),确保和MediaFileUri中的桶名一致。处理文件名中的空格
S3路径包含空格时需要进行URL编码,可使用urllib.parse.quote对文件名部分编码,修改job_uri的生成逻辑:from urllib.parse import quote job_uri = f"s3://myBucket/{quote('myFile with spaces')}"验证IAM角色的信任关系
即使角色拥有管理员权限,也需要确保信任策略允许Amazon Transcribe服务扮演该角色。角色的信任策略应包含以下内容:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "transcribe.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }没有正确的信任关系,Transcribe服务无法通过该角色访问S3存储桶。
检查S3桶策略(若存在)
如果存储桶配置了自定义桶策略,确认没有Deny语句阻止Transcribe服务或你的IAM角色的访问。也可以添加明确允许Transcribe写入桶的策略:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "transcribe.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::myBucket/*" } ] }确认角色权限覆盖必要操作
虽然角色有管理员权限,仍建议确认权限策略包含以下S3操作:s3:GetObject(读取输入媒体文件)s3:PutObject(写入输出结果到存储桶)
内容的提问来源于stack exchange,提问作者Hamid Faraz
相关产品推荐
相关产品推荐

