从云存储导入CSV到云SQL时拒绝服务帐户访问(权限问题?)

时间:2018-07-19 19:52:16

标签: google-cloud-platform google-cloud-storage google-cloud-sql google-api-client

我正在尝试使用云存储中的csv填充mysql数据库

我正在使用API Explorer通过以下请求正文执行请求:

{
  "importContext": {
    "csvImportOptions": {
      "columns": [
        "col1",
        "col2",
        "col3"
      ],
      "table": "table_name"
    },
    "database": "db_name",
    "fileType": "CSV",
    "kind": "sql#importContext",
    "uri": "gs://some_bucket/somecsv.csv"
  }
}

当我按下执行按钮时,我收到以下内容的响应200

{
 "kind": "sql#operation",
 "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/somelink",
 "targetProject": "some-project",
 "targetId": "some-tarjet",
 "targetLink": "https://www.googleapis.com/sql/v1beta4/projects/somelink",
 "name": "some-name",
 "operationType": "IMPORT",
 "status": "PENDING",
 "user": "myuser@mydomain.com",
 "insertTime": "somedate",
 "importContext": {
  ...
 }
}

但是,如果我转到Google控制台中的详细实例页面,则会看到以下消息:

  

gs:// link-to-csv:拒绝访问该帐户   oosyrcl32gnzypxg4uhqw54uab@somename.iam.gserviceaccount.com   (权限问题?)

我已使用在csv所在的云存储中创建存储桶的同一帐户进行身份验证,并且使用python sdk也会发生这种情况。

2 个答案:

答案 0 :(得分:2)

您正在尝试从存储桶向Cloud SQL实例进行导入,但是该导入将由一个服务帐户(尤其是一个服务帐户)进行,该帐户可以在“服务帐户”部分中看到, Cloud SQL实例的详细信息。

CloudSQL服务帐户可能没有适当的权限来访问带有要导入的数据的Cloud Storage存储桶。

为了在SQL实例和存储桶之间创建成功的导入,应首先设置适当的权限。您应将Storage Object Viewer role赋予服务帐户“ oosyrcl32gnzypxg4uhqw54uab@speckle-umbrella-27.iam.gserviceaccount.com”。

答案 1 :(得分:0)

  1. 转到:https://console.cloud.google.com/iam-admin/iam
  2. 单击“添加”以添加新成员。
  3. 将错误消息中显示的gserviceaccount.com电子邮件地址粘贴到“新成员”字段中。
  4. 添加2个角色:
    1. Cloud SQL Viewer
    2. 存储对象管理
  5. 点击保存。