【以下的问题经过翻译处理】 我正试图在 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
....