执行创建OBS外表的SQL语句时,提示Access Denied
问题现象
执行创建OBS外表的SQL语句时,返回OBS错误信息,提示访问被拒绝“Access Denied”。
原因分析
- 创建OBS外表语句中的访问密钥AK和SK错误,会出现如下所示的错误信息:
1
ERROR: Fail to connect OBS in node:cn_5001 with error code: AccessDenied
- 账户OBS权限不足,对OBS桶没有读、写权限,会出现如下所示的错误信息:
1
dn_6001_6002: Datanode 'dn_6001_6002' fail to read OBS object bucket:'obs-bucket-name' key:'xxx/xxx/xxx.csv' with OBS error code:AccessDenied message: Access Denied
默认情况下,您不具备访问其他账号的OBS数据的权限,此外,IAM用户(相当于子用户)也不具备访问其所属账号的OBS数据的权限。
处理方法
- 创建OBS外表语句中的访问密钥AK和SK错误
请获取正确的访问密钥AK和SK,写入创建OBS外表的SQL语句中。获取访问密钥的步骤如下:
- 账户OBS权限不足,对OBS桶没有读、写权限
您必须给指定的用户授予所需的OBS访问权限:
- 通过OBS外表导入数据到GaussDB(DWS)时,执行导入操作的用户必须具备数据源文件所在的OBS桶和对象的读取权限。
- 通过OBS外表导出数据时,执行导出操作的用户必须具备数据导出路径所在的OBS桶和对象的读取和写入权限。
有关配置OBS权限的具体操作,请参见《对象存储服务控制台指南》中的配置桶ACL和“配置对象ACL”章节。