Glue和Cloudformation跨账户访问错误

0

【以下的问题经过翻译处理】 我正试图在 CloudFormation Stack 内创建一个 Glue 表。我收到了以下错误提示:

Cross account access is not supported for account that hasn't imported Athena catalog to Glue. Please refer to documentation: https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html (Service: AWSGlue; Status Code: 400; Error Code: AccessDeniedException; Request ID: e7439225-9a53-4594-84a4-0201c9e0eb94; Proxy: null)

我正在使用具有广泛 IAM 权限的用户账户来创建 Stack(如 glue:*, athena:*, s3:*)。错误中的链接不包含可行的解决方案,因为我已经在一起使用 Athena 和 Glue。我还能够使用用户帐户从 AWS-CLI 访问数据库(包括创建一个 glue 表)。

我尝试搜索此错误,但最接近的结果似乎是允许另一个帐户访问您的帐户的 Athena 数据库,而这全部包含在同一个帐户中。尽管如此,我按照说明(添加到数据目录设置的权限)进行了尝试,但并没有成功。这些结果是针对类似措辞的错误的,但是我无法找到任何描述这个确切错误的结果(目前在 Google 上具有此错误的唯一结果是我自己在 SO 上的问题)。

以下是我的 CloudFormation 的一部分代码:

Type: AWS::Glue::Table
    Properties:
      CatalogId: AwsDataCatalog
      DatabaseName: !Sub 'db_{BucketName}'
      TableInput:
        Name: 'tbl_${LocalName}'
        Description: !Sub 'Glue Table for {LocalName}'
        TableType: EXTERNAL_TABLE
        Parameters:
          EXTERNAL: TRUE
        PartitionKeys:
          - Name: groupid
            Type: smallint
          - Name: dt
            Type: date
        StorageDescriptor:
          Location: !Sub 's3://${BucketName}/${LocalName}/'
          InputFormat: org.apache.hadoop.mapred.TextInputFormat
          OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
          SerdeInfo:
            SerializationLibrary: org.apache.hadoop.hive.serde2.OpenCSVSerde
            Parameters: 
              escapeChar: '\\'
              quoteChar: '\"'
              separatorChar: ','
          Parameters: {}
          Columns:
            - Name: traceID
              Type: int
....

1 回答
0

【以下的回答经过翻译处理】 CatalogId 是帐户ID,而不是在Athena控制台中看到的Catalog名称。 解决方案是替换我提供的模板的第三行:

类型:AWS :: Glue ::表
    属性:
      CatalogId:!Sub ' $ {AWS :: AccountId}'
      DatabaseName:!Sub' db_ {BucketName}'
      TableInput:
        名称:'tbl_ {LocalName}'
....。
profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则