DataSunrise erreicht AWS DevOps Kompetenz Status in AWS DevSecOps und Überwachung, Protokollierung, Performance

Erste Schritte mit dem Athena JDBC-Treiber für nahtlose Datenabfragen

Erste Schritte mit dem Athena JDBC-Treiber für nahtlose Datenabfragen

Sind Sie ein Java-Entwickler, der versucht, eine Verbindung zu Amazon Athena von Ihren Anwendungen herzustellen? Der Athena JDBC-Treiber macht es einfach, Daten in Amazon S3 mit Standard-SQL abzufragen.

Dieser Artikel wird den Athena JDBC-Treiber erklären. Es wird gezeigt, wie man ihn mit Beispielcode verwendet. Es wird auch über die Sicherheitsfunktionen sprechen, die er hat. Am Ende haben Sie eine solide Grundlage für die Verwendung von Athena mit Java.

Was ist der Athena JDBC-Treiber?

Der Athena JDBC-Treiber ist ein Typ 4 Treiber. Java-Anwendungen verwenden ihn, um eine Verbindung zur Athena-Datenquelle herzustellen. Das JDBC-API stellt diese Verbindung her. Es wandelt JDBC-Methodenaufrufe in HTTP-Anfragen um, die Athena verstehen kann.

Die Verwendung der JDBC-API zur Abfrage von Athena hat mehrere Vorteile:

  • Es abstrahiert die Details der zugrunde liegenden HTTP-Kommunikation
  • Es ermöglicht die Verwendung von vertrautem JDBC-Code und SQL zur Arbeit mit Athena
  • Es ermöglicht die Integration von Athena in jede Java-Anwendung oder jedes Tool, das JDBC unterstützt

AWS stellt den Treiber als eigenständige JAR-Datei zur Verfügung. Um ihn zu verwenden, fügen Sie einfach die JAR-Datei zum Klassenpfad Ihrer Anwendung hinzu.

Verbindung zu Athena herstellen

Um eine Verbindung zu Athena mit dem JDBC-Treiber herzustellen, müssen Sie eine JDBC-Verbindungszeichenkette mit folgendem Format erstellen:

jdbc:awsathena://AwsRegion=[Region];S3OutputLocation=[Output];[Property1]=[Value1];[Property2]=[Value2];...

Die Schlüsselkomponenten sind:

  • Die AWS-Region, die Ihre Athena-Instanz hostet.
  • S3OutputLocation – Der S3-Standort, an dem Athena die Abfrageergebnisse speichern soll
  • Weitere optionale Konfigurationsparameter

Hier ist ein Beispiel für eine JDBC-URL, die eine Verbindung zu Athena in der Region us-west-2 herstellt. Das System speichert die Ergebnisse in einem bestimmten S3-Bucket:

jdbc:awsathena://AwsRegion=us-west-2;S3OutputLocation=s3://my-athena-results/output;

Um die Verbindung im Java-Code tatsächlich herzustellen, verwenden Sie die DriverManager-Klasse:

String url = "jdbc:awsathena://AwsRegion=us-west-2;S3OutputLocation=s3://my-athena-results/output";
Connection conn = DriverManager.getConnection(url);

Dies erstellt ein Connection-Objekt, mit dem Sie dann Abfragen ausführen können.

Athena-Authentifizierung

Um eine Verbindung herzustellen, benötigt der JDBC-Treiber AWS-Anmeldeinformationen, um sich bei Athena zu authentifizieren. Es gibt mehrere Möglichkeiten, um Anmeldeinformationen bereitzustellen:

  1. Umgebungsvariablen – Legen Sie die Umgebungsvariablen AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY fest.
  2. Java-Systemeigenschaften – Legen Sie die Systemeigenschaften aws.accessKeyId und aws.secretKey fest.
  3. AWS-Anmeldeinformationsdatei – Platzieren Sie den Zugriffsschlüssel und das Geheimnis in der Datei ~/.aws/credentials.
  4. AWS-Instanzprofil – Wenn Sie auf EC2 ausgeführt werden, weisen Sie der Instanz eine IAM-Rolle zu. Der Treiber ruft automatisch temporäre Anmeldeinformationen ab.

Der JDBC-Treiber sucht in dieser Reihenfolge nach Anmeldeinformationen. Sie sollten ein Instanzprofil oder die Anmeldeinformationsdatei verwenden, um das Hardcodieren sensibler Schlüssel zu vermeiden.

Grundlegende Abfragen

Sobald Sie eine Verbindung haben, können Sie SQL-Abfragen darauf ausführen. Verwenden Sie die Methode createStatement, um ein Statement-Objekt zu erstellen, und rufen Sie dann executeQuery mit Ihrem SQL auf:

Statement stmt = conn.createStatement();
String sql = "SELECT * FROM my_table LIMIT 10";
ResultSet rs = stmt.executeQuery(sql);

Dies sendet die Abfrage an Athena, wartet auf deren Abschluss und gibt die Ergebnisse als ResultSet zurück. Sie können dann über die Zeilen iterieren und auf die Spaltenwerte zugreifen:

while (rs.next()) {
String col1 = rs.getString(1);
int col2 = rs.getInt(2);
// ...
}

Denken Sie daran, dass Athena Daten in S3 abfragt. Bevor Sie Abfragen durchführen, müssen Sie eine externe Tabelle erstellen, die den S3-Daten zugeordnet ist:

CREATE EXTERNAL TABLE my_table (
col1 STRING,
col2 INT
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION 's3://my-data-bucket/input/';

Dies erstellt eine Tabelle my_table mit zwei Spalten, die durch eine CSV-Datei in S3 gesichert ist. Mit der Tabelle an Ort und Stelle können Sie sie wie oben gezeigt über JDBC abfragen.

Parametrisierte Abfragen

Für Abfragen, die Parameter akzeptieren, verwenden Sie ein PreparedStatement anstelle eines normalen Statements. Konstruieren Sie das SQL mit ? Platzhaltern und binden Sie dann Werte daran:

String sql = "SELECT * FROM my_table WHERE col1 = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "foo");
ResultSet rs = pstmt.executeQuery();

Dies bindet den Wert “foo” an den ersten ? Platzhalter. Die Verwendung eines PreparedStatement hat einige Vorteile:

  • Es vermeidet SQL-Injection, indem Parameter separat von der Abfrage gesendet werden.
  • Athena kann den Abfrageplan zwischenspeichern und wiederverwenden
  • Sie können dieselbe Abfrage mehrfach mit unterschiedlichen Parameterwerten ausführen

Sicherheitsfunktionen

Der Athena JDBC-Treiber unterstützt mehrere sicherheitsrelevante Funktionen und Konfigurationen:

Verschlüsselung

Standardmäßig stellt der Treiber eine Verbindung zu Athena über HTTPS für die Verschlüsselung während der Übertragung her. Alle zwischen der Anwendung und Athena gesendeten Daten werden mithilfe von TLS verschlüsselt.

Zugriffskontrolle

Athena berücksichtigt die IAM-Berechtigungen, die den AWS-Anmeldeinformationen, die vom JDBC-Treiber verwendet werden, zugeordnet sind. Sie können steuern, auf welche Daten ein Benutzer zugreifen kann, indem Sie SELECT-Berechtigungen für bestimmte Datenbanken und Tabellen erteilen.

Zum Beispiel erlaubt diese Richtlinie das Abfragen von Tabellen nur in der Datenbank «my_database»:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:GetQueryResults",
                "athena:StopQueryExecution"
            ],
            "Resource": [
"arn:aws:athena:us-west-2:123456789012:workgroup/primary"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetTable",
                "glue:GetPartitions",
                "glue:GetPartition"
            ],
            "Resource": [
                "arn:aws:glue:us-west-2:123456789012:catalog",
"arn:aws:glue:us-west-2:123456789012:database/my_database",
"arn:aws:glue:us-west-2:123456789012:table/my_database/*"
            ]
        }
    ]
}

Hängen Sie diese Richtlinie an den IAM-Benutzer oder die Rolle an, die von der JDBC-Verbindung verwendet wird, um die Zugriffskontrolle durchzusetzen.

S3-Verschlüsselung

Das System speichert Abfrageergebnisse im im JDBC-URL angegebenen S3-Standort. Um diese Daten im Ruhezustand zu schützen, können Sie den S3-Bucket zur Verwendung von Verschlüsselung konfigurieren.

Der Athena JDBC-Treiber unterstützt transparent das Lesen von und Schreiben in verschlüsselte S3-Buckets.

Fazit

Der Athena JDBC-Treiber hilft Java-Anwendungen, SQL-Abfragen für Daten in Amazon S3 auszuführen. Er unterstützt eine Vielzahl von Authentifizierungsmethoden und Sicherheitsfunktionen, um Daten zu schützen.

Weitere Informationen finden Sie in der offiziellen Athena JDBC-Treiber-Dokumentation.

Über DataSunrise

Wenn Sie zusätzliche Sicherheits-, Überwachungs-, Prüf- und Compliance-Funktionen für Athena benötigen, sollten Sie DataSunrise Database Security in Betracht ziehen. DataSunrise bietet Werkzeuge zur Steuerung der Datenmaskierung, zur Echtzeit-Abfrageprüfung, zur Überwachung und zur Einhaltung von Vorschriften.

Um DataSunrise live zu erleben und eine kostenlose Testlizenz zu erhalten, kontaktieren Sie unser Team, um eine Online-Demo zu vereinbaren. Wir zeigen Ihnen, wie DataSunrise die Sicherheit von Athena verbessern kann.

Nächste

Azure Cloud DataSunrise-Konfiguration mit OpenTOFU: Eine Schritt-für-Schritt-Anleitung

Azure Cloud DataSunrise-Konfiguration mit OpenTOFU: Eine Schritt-für-Schritt-Anleitung

Erfahren Sie mehr

Benötigen Sie die Hilfe unseres Support-Teams?

Unsere Experten beantworten gerne Ihre Fragen.

Countryx
United States
United Kingdom
France
Germany
Australia
Afghanistan
Islands
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antarctica
Antigua and Barbuda
Argentina
Armenia
Aruba
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia
Bosnia and Herzegovina
Botswana
Bouvet
Brazil
British Indian Ocean Territory
Brunei Darussalam
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada
Cape Verde
Cayman Islands
Central African Republic
Chad
Chile
China
Christmas Island
Cocos (Keeling) Islands
Colombia
Comoros
Congo, Republic of the
Congo, The Democratic Republic of the
Cook Islands
Costa Rica
Cote D'Ivoire
Croatia
Cuba
Cyprus
Czech Republic
Denmark
Djibouti
Dominica
Dominican Republic
Ecuador
Egypt
El Salvador
Equatorial Guinea
Eritrea
Estonia
Ethiopia
Falkland Islands (Malvinas)
Faroe Islands
Fiji
Finland
French Guiana
French Polynesia
French Southern Territories
Gabon
Gambia
Georgia
Ghana
Gibraltar
Greece
Greenland
Grenada
Guadeloupe
Guam
Guatemala
Guernsey
Guinea
Guinea-Bissau
Guyana
Haiti
Heard Island and Mcdonald Islands
Holy See (Vatican City State)
Honduras
Hong Kong
Hungary
Iceland
India
Indonesia
Iran, Islamic Republic Of
Iraq
Ireland
Isle of Man
Israel
Italy
Jamaica
Japan
Jersey
Jordan
Kazakhstan
Kenya
Kiribati
Korea, Democratic People's Republic of
Korea, Republic of
Kuwait
Kyrgyzstan
Lao People's Democratic Republic
Latvia
Lebanon
Lesotho
Liberia
Libyan Arab Jamahiriya
Liechtenstein
Lithuania
Luxembourg
Macao
Madagascar
Malawi
Malaysia
Maldives
Mali
Malta
Marshall Islands
Martinique
Mauritania
Mauritius
Mayotte
Mexico
Micronesia, Federated States of
Moldova, Republic of
Monaco
Mongolia
Montserrat
Morocco
Mozambique
Myanmar
Namibia
Nauru
Nepal
Netherlands
Netherlands Antilles
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
Niue
Norfolk Island
North Macedonia, Republic of
Northern Mariana Islands
Norway
Oman
Pakistan
Palau
Palestinian Territory, Occupied
Panama
Papua New Guinea
Paraguay
Peru
Philippines
Pitcairn
Poland
Portugal
Puerto Rico
Qatar
Reunion
Romania
Russian Federation
Rwanda
Saint Helena
Saint Kitts and Nevis
Saint Lucia
Saint Pierre and Miquelon
Saint Vincent and the Grenadines
Samoa
San Marino
Sao Tome and Principe
Saudi Arabia
Senegal
Serbia and Montenegro
Seychelles
Sierra Leone
Singapore
Slovakia
Slovenia
Solomon Islands
Somalia
South Africa
South Georgia and the South Sandwich Islands
Spain
Sri Lanka
Sudan
Suriname
Svalbard and Jan Mayen
Swaziland
Sweden
Switzerland
Syrian Arab Republic
Taiwan, Province of China
Tajikistan
Tanzania, United Republic of
Thailand
Timor-Leste
Togo
Tokelau
Tonga
Trinidad and Tobago
Tunisia
Turkey
Turkmenistan
Turks and Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United States Minor Outlying Islands
Uruguay
Uzbekistan
Vanuatu
Venezuela
Viet Nam
Virgin Islands, British
Virgin Islands, U.S.
Wallis and Futuna
Western Sahara
Yemen
Zambia
Zimbabwe
Choose a topicx
Allgemeine Informationen
Vertrieb
Kundenservice und technischer Support
Partnerschafts- und Allianz-Anfragen
Allgemeine Informationen:
info@datasunrise.com
Kundenservice und technischer Support:
support.datasunrise.com
Partnerschafts- und Allianz-Anfragen:
partner@datasunrise.com