Поддерживает ли проекция раздела AWS Athena более одного `storage.location.template`?
CloutTrail, управляемый AWS ControlTower, создал журналы отслеживания учетных записей, которые использовали/org id/AWSLogs/…
путь журнала в корзине S3 до обновления Landing Zone 3.0, которое заменило его журналами журнала организации, новый путь журнала которых/org id/AWSLogs/org id/…
.
https://docs.aws.amazon.com/controltower/latest/userguide/2022-all.html
Это создает проблему с проекцией раздела AWS Athena. Исходный DDL выглядит следующим образом:
CREATE EXTERNAL TABLE cloudtrail_logs_partition_projected(
eventVersion STRING,
userIdentity STRUCT<
type: STRING,
principalId: STRING,
arn: STRING,
accountId: STRING,
invokedBy: STRING,
accessKeyId: STRING,
userName: STRING,
sessionContext: STRUCT<
attributes: STRUCT< mfaAuthenticated: STRING, creationDate: STRING>,
sessionIssuer: STRUCT< type: STRING, principalId: STRING, arn: STRING, accountId: STRING, userName: STRING>>>,
eventTime STRING,
eventSource STRING,
eventName STRING,
awsRegion STRING,
sourceIpAddress STRING,
userAgent STRING,
errorCode STRING,
errorMessage STRING,
requestParameters STRING,
responseElements STRING,
additionalEventData STRING,
requestId STRING,
eventId STRING,
readOnly STRING,
resources ARRAY<STRUCT< arn: STRING, accountId: STRING, type: STRING>>,
eventType STRING,
apiVersion STRING,
recipientAccountId STRING,
serviceEventDetails STRING,
sharedEventID STRING,
vpcEndpointId STRING )
PARTITIONED BY ( `accountid` string, `region` string, `date_created` string)
ROW FORMAT SERDE 'com.amazon.emr.hive.serde.CloudTrailSerde'
STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://<s3-bucket>/<org-id>/AWSLogs/'
TBLPROPERTIES (
'projection.enabled'='true',
'projection.accountid.type'='injected',
'projection.region.type'='enum',
'projection.region.values'='eu-north-1,ap-south-1,eu-west-3,eu-west-2,eu-west-1,ap-northeast-3,ap-northeast-2,ap-northeast-1,sa-east-1,ca-central-1,ap-southeast-1,ap-southeast-2,eu-central-1,us-east-1,us-east-2,us-west-1,us-west-2',
'projection.date_created.format'='yyyy/MM/dd',
'projection.date_created.interval'='1',
'projection.date_created.interval.unit'='DAYS',
'projection.date_created.range'='2021/01/01,NOW',
'projection.date_created.type'='date',
'storage.location.template'='s3://<s3-bucket-name>/<org-id>/AWSLogs/${accountid}/CloudTrail/${region}/${date_created}')
ПосколькуLOCATION
иstorage.location.template
различаются для старых и новых объектов s3 (т. е. журналов из CloudTrail), какое решение лучше всего подходит для запроса журналов cloudtrail, старых и новых? Я предпочитаю одну таблицу Athena Table как для старых, так и для новых журналов, но я не уверен, что несколькоLOCATIONS
поддерживаются.