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 Antwort
0

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

类型:AWS :: Glue ::表
    属性:
      CatalogId:!Sub ' $ {AWS :: AccountId}'
      DatabaseName:!Sub' db_ {BucketName}'
      TableInput:
        名称:'tbl_ {LocalName}'
....。
profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen