Ana içeriğe geç

Amazon Athena

Bir veritabanı bağlantısı eklemek için sağ üst köşedeki dişli simgesine tıklayın ve Yönetici ayarları > Veritabanları > Veritabanı ekle yolunu izleyin.

Athena'ya Bağlanma

Patrona'yı Athena'ya bağlamak için IAM kimlik bilgilerinizi girmeniz gerekir:

  • Erişim anahtarı
  • Gizli Anahtar

Patrona bu kimlik bilgilerini şifreleyecektir.

Başka AWS hizmetleri kullanıyorsanız, yalnızca Athena'yı çalıştırmak için gereken izinlere sahip özel bir AWS Hizmet Hesabı oluşturmanızı ve Patrona'yı Athena'ya bağlamak için bu hesaptan alınan IAM kimlik bilgilerini girmenizi öneririz.

Bkz. Athena'da kimlik ve erişim yönetimi.

AWS Varsayılan Kimlik Bilgileri Zinciri Kullanarak Bağlanma

Patrona'yı AWS üzerinde çalıştırıyorsanız ve AWS Varsayılan Kimlik Bilgileri Zinciri kullanmak istiyorsanız, Erişim ve Gizli anahtar alanlarını boş bırakın.

Her iki durumda da Athena sürücüsü, hangi IAM rolünü yapılandırdığınıza bağlı olarak otomatik olarak oturum kimlik bilgilerini getirecektir.

Ayarlar

Bu ayarları istediğiniz zaman düzenleyebilirsiniz. Değişikliklerinizi kaydetmeyi unutmayın.

Görünen ad

Patrona arayüzünde veritabanı için görünen ad.

Bölge

Veritabanınızın barındırıldığı AWS bölgesi, Amazon Athena için. Örneğin, us-east-1 girebilirsiniz.

Çalışma grubu

AWS çalışma grubu. Örneğin: primary. Bkz. çalışma grupları hakkında belgeler.

S3 Hazırlık dizini

Bu S3 hazırlık dizini, yukarıda belirttiğiniz bölgeyle aynı bölgede olmalıdır.

Erişim anahtarı

AWS için IAM kimlik bilgilerinin bir parçası. Patrona bu kimlik bilgilerini şifreleyecektir.

Patrona'yı AWS üzerinde çalıştırıyorsanız ve AWS Varsayılan Kimlik Bilgileri Zinciri kullanmak istiyorsanız, Erişim ve Gizli anahtar alanlarını boş bırakın.

Gizli Anahtar

AWS için IAM kimlik bilgilerinin bir parçası. Patrona bu kimlik bilgilerini şifreleyecektir.

Ek Athena bağlantı dizesi seçenekleri

Bir dize aracılığıyla ek seçenekler belirleyebilirsiniz, örneğin UseResultsetStreaming=0;LogLevel=6.

Basit keşifler için sorguları yeniden çalıştırın

Herhangi bir Özetle veya filtre seçimi uygulamadan önce kişilerin Çalıştır (oynat butonu) seçeneğini tıklamasını istiyorsanız bu seçeneği KAPALI konuma getirin.

Varsayılan olarak Patrona, Özetle menüsünden bir gruplandırma seçeneği veya detaylandırma menüsünden bir filtre koşulu seçtiğiniz anda bir sorguyu çalıştırır. Veritabanınız yavaşsa, her tıklamada veri yüklemeyi önlemek için yeniden çalıştırmayı devre dışı bırakmak isteyebilirsiniz.

Patrona'nın ne zaman senkronize edeceğini ve tarayacağını seçin

Patrona'nın veritabanınızla güncel kalmak için kullandığı sorguları yönetmek için bu seçeneği AÇIK konuma getirin. Daha fazla bilgi için bkz. Veritabanlarını senkronize etme ve tarama.

Veritabanı senkronizasyonu

Senkronizasyonların ve taramaların ne zaman gerçekleşeceğini seçin > AÇIK seçeneğini seçtiyseniz, şunları ayarlayabileceksiniz:

  • Senkronizasyonun sıklığı: saatlik (varsayılan) veya günlük.
  • Senkronizasyonun çalışma zamanı, Patrona uygulamanızın çalıştığı sunucunun saat diliminde.

Filtre değerleri için tarama

Patrona, panolarda ve sorularda onay kutusu filtrelerini etkinleştirmek için bu veritabanındaki her alanda bulunan değerleri tarayabilir. Bu, özellikle çok büyük bir veritabanınız varsa, biraz kaynak yoğun bir işlem olabilir.

Senkronizasyonların ve taramaların ne zaman gerçekleşeceğini seçin > AÇIK seçeneğini seçtiyseniz, Filtre değerleri için tarama altında aşağıdaki seçenekleri göreceksiniz:

  • Düzenli olarak, bir zamanlamaya göre, veritabanınızdaki değişiklik oranına uyan bir sıklıkta tarama sorguları çalıştırmanıza olanak tanır. Saat, Patrona uygulamanızın çalıştığı sunucunun saat diliminde ayarlanır. Bu, küçük bir veritabanı veya sık sık güncellenen farklı değerlere sahip tablolar için en iyi seçenektir.
  • Yalnızca yeni bir filtre widget'ı eklerken, talep üzerine tarama sorgularının çalışmasını istiyorsanız harika bir seçenektir. Bu seçeneği AÇIK konuma getirmek, Patrona'nın yalnızca bir panoya veya SQL sorusuna yeni bir filtre eklendiğinde kullanılan alan(lar)ın değerlerini tarayacağı ve önbelleğe alacağı anlamına gelir.
  • Asla, gerekirse bunu manuel olarak yapacağım, ya çok büyük olan ya da asla gerçekten yeni değerler eklenmeyen veritabanları için bir seçenektir. Manuel bir tarama çalıştırmak ve filtre değerlerinizi güncel hale getirmek için Alan değerlerini şimdi yeniden tara butonunu kullanın.

Tabloları periyodik olarak yeniden parmak iziyle tanımlayın

Periyodik yeniden parmak iziyle tanımlama, veritabanınızdaki yükü artıracaktır.

Patrona her senkronizasyon çalıştırdığında bir değer örneğini taramak için bu seçeneği AÇIK konuma getirin.

Bir parmak izi sorgusu, her sütundan ilk 10.000 satırı inceler ve bu verileri kullanarak her sütunun kaç benzersiz değere sahip olduğunu, sayısal ve zaman damgası sütunları için minimum ve maksimum değerlerin ne olduğunu tahmin eder. Bu seçeneği KAPALI bırakırsanız, Patrona sütunlarınızın parmak izini yalnızca kurulum sırasında bir kez alır.

İzinler ve IAM Politikaları

Kişilerin AWS Athena'ya bağlanmaya çalışırken gördüğümüz sorunların çoğu izinlerle ilgilidir. AWS Athena'yı sorgulamak için aşağıdaki izinler gerekir:

  • AWS Athena.
  • AWS Glue.
  • Athena sonuçlarının depolandığı S3 bucket'ı.
  • Athena'nın sorguladığı kaynaklar (yani, Athena'nın sorguladığı S3 bucket(ları)).
  • AWS Lake Formation kullanıyorsanız, AWS Konsolu aracılığıyla AWS Lake Formation izinleri de vermeniz gerekir (AWS Lake Formation > İzinler > Veri Gölü İzinleri > Veri gölü izinleri ver; Patrona'nın kullandığı rolün SELECT ve DESCRIBE tablo izinlerine ihtiyacı vardır).

Örnek IAM Politikası

Bu politika, S3'teki veriler için salt okunur izinler sağlar. Patrona'nın sorgulayabilmesini istediğiniz tüm S3 bucket'larını ve sonuçların yazıldığı yapılandırmanın bir parçası olarak sağlanan S3 bucket'ını belirtmeniz gerekir.

Birçok kişi, AWS Athena'ya bağlanmaya çalışırken izinlerle ilgili sorunlar yaşamaktadır. AWS Athena'yı sorgulamak için şunlara izinler gerekir:

  • AWS Athena.
  • AWS Glue.
  • Athena sonuçlarının depolandığı S3 bucket'ı.
  • Athena'nın sorguladığı kaynaklar (yani, Athena'nın sorguladığı S3 bucket'ları).

Federasyon sorguları gibi diğer Athena işlevleri için ek izinler gerekebilir. Ayrıntılar için Athena belgelerine göz atın.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Athena",
"Effect": "Allow",
"Action": [
"athena:BatchGetNamedQuery",
"athena:BatchGetQueryExecution",
"athena:GetNamedQuery",
"athena:GetQueryExecution",
"athena:GetQueryResults",
"athena:GetQueryResultsStream",
"athena:GetWorkGroup",
"athena:ListDatabases",
"athena:ListDataCatalogs",
"athena:ListNamedQueries",
"athena:ListQueryExecutions",
"athena:ListTagsForResource",
"athena:ListWorkGroups",
"athena:ListTableMetadata",
"athena:StartQueryExecution",
"athena:StopQueryExecution",
"athena:CreatePreparedStatement",
"athena:DeletePreparedStatement",
"athena:GetPreparedStatement"
],
"Resource": "*"
},
{
"Sid": "Glue",
"Effect": "Allow",
"Action": [
"glue:BatchGetPartition",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:GetPartition",
"glue:GetPartitions",
"glue:GetTable",
"glue:GetTables",
"glue:GetTableVersion",
"glue:GetTableVersions"
],
"Resource": "*"
},
{
"Sid": "S3ReadAccess",
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:ListBucket", "s3:GetBucketLocation"],
"Resource": [
"arn:aws:s3:::bucket1",
"arn:aws:s3:::bucket1/*",
"arn:aws:s3:::bucket2",
"arn:aws:s3:::bucket2/*"
]
},
{
"Sid": "AthenaResultsBucket",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:AbortMultipartUpload",
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": ["arn:aws:s3:::bucket2", "arn:aws:s3:::bucket2/*"]
}
]
}

Patrona'nın ayrıca tablolar oluşturması gerekiyorsa, ek AWS Glue izinlerine ihtiyacınız olacaktır. "Resource": "*" anahtar-değer çifti, hesaba herhangi bir tabloyu Silme ve Güncelleme izinleri verir:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"glue:BatchCreatePartition",
"glue:UpdateDatabase",
"glue:DeleteDatabase",
"glue:CreateTable",
"glue:CreateDatabase",
"glue:UpdateTable",
"glue:BatchDeletePartition",
"glue:BatchDeleteTable",
"glue:DeleteTable",
"glue:CreatePartition",
"glue:DeletePartition",
"glue:UpdatePartition",
"glue:GetCatalogImportStatus"
],
"Resource": "*"
}
]
}

Daha fazla okuma