BigQuery连接AWS S3失败:外部数据库凭据未找到求助
问题:BigQuery跨云连接AWS S3时提示"External database credentials not found"
我正尝试将AWS S3中的数据接入Google BigQuery,已按官方文档配置权限并完成角色关联。AWS S3区域为us-west-1,但在BigQuery创建外部连接时将数据位置设为aws-us-west-2。AWS角色ARN已正确配置为arn:aws:iam::0000:role/My_role_name,且BigQuery的Google身份已添加至信任关系中。
当前配置信息
IAM策略(bq_omni_read_only)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::my-bucket-name" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::my-bucket-name", "arn:aws:s3:::my-bucket-name/*" ] } ] }
AWS角色信任关系
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:sub": "my_BigQuery_Google_identity", "accounts.google.com:aud": "my_BigQuery_Google_identity" } } } ] }
执行的BigQuery查询语句
SELECT * FROM EXTERNAL_QUERY("my_connection_id", "SELECT * FROM INFORMATION_SCHEMA.TABLES;");
错误信息
Invalid table-valued function EXTERNAL_QUERY External database credentials not found for connection my_connection_id at [1:15]
已等待12小时让信任关系配置生效,但错误仍存在。拥有BigQuery管理员权限,不确定是否足够,请求协助排查。
排查建议
修正区域不匹配问题:S3桶位于us-west-1,但BigQuery外部连接的数据源位置设为aws-us-west-2,跨区域连接会导致凭据验证失败。BigQuery Omni要求连接区域必须与S3桶所在区域一致,需修改连接的数据源位置为
aws-us-west-1。调整IAM策略资源配置:当前
s3:GetObject权限包含了桶本身(arn:aws:s3:::my-bucket-name),该权限对桶本身无效,应只保留对象路径的资源:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::my-bucket-name" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket-name/*" } ] }
验证信任关系条件值:确认
accounts.google.com:sub和accounts.google.com:aud的值与BigQuery连接详情页显示的Google身份ID完全一致,检查是否存在拼写错误或格式问题。检查BigQuery连接配置细节:
- 确认连接类型选择的是Amazon S3
- 角色ARN无多余空格或字符,填写准确
- 数据源位置已修正为对应S3区域
重新创建连接测试:删除现有连接,按照正确区域重新配置,避免旧配置缓存引发的问题。
内容的提问来源于stack exchange,提问作者Seona Shim
相关产品推荐
相关产品推荐

