Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Python
boto3neptunedataKlien menyediakan cara paling sederhana untuk terhubung ke database Neptunus berkemampuan IAM dari Python. Klien menangani penandatanganan Signature Version 4 secara otomatis, jadi Anda tidak perlu menandatangani permintaan sendiri.
Prasyarat
Python 3.x
boto3Perpustakaan:pip install boto3AWS kredensyal yang dikonfigurasi melalui metode standar apa pun (variabel lingkungan, file AWS konfigurasi, profil instance, atau peran eksekusi Lambda)
Kebijakan IAM yang memungkinkan
neptune-db:*tindakan di cluster Neptunus Anda
Menghubungkan dengan kredensi default
Pendekatan ini berfungsi ketika boto3 dapat menyelesaikan kredensyal secara otomatis, seperti pada instans Amazon Elastic Compute Cloud dengan profil instans, dalam AWS Lambda fungsi, atau dengan profil yang dikonfigurasi. AWS
Ganti URL endpoint dengan endpoint cluster Neptunus Anda.
Gremlin dan OpenCypher
import boto3 from botocore.config import Config cfg = Config(retries={"total_max_attempts": 1, "mode": "standard"}, read_timeout=None) neptune = boto3.client('neptunedata', config=cfg, region_name='us-east-1', endpoint_url='https://your-neptune-endpoint:8182') # Gremlin resp = neptune.execute_gremlin_query(gremlinQuery='g.V().limit(1)') print(resp['result']) # openCypher resp = neptune.execute_open_cypher_query(openCypherQuery='MATCH (n) RETURN n LIMIT 1') print(resp['results'])
SPARQL
boto3neptunedataKlien saat ini tidak mendukung SPARQL. Untuk mengirim kueri SPARQL ke database Neptunus berkemampuan IAM, tandatangani permintaan secara manual dengan menggunakan Signature Version 4 dengan utilitas penandatanganan permintaan dan library (). botocore requests pip install boto3 requests
import requests from botocore.auth import SigV4Auth from botocore.awsrequest import AWSRequest from botocore.session import Session endpoint = 'https://your-neptune-endpoint:8182' region = 'us-east-1' query = 'SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 1' request = AWSRequest(method='POST', url=f'{endpoint}/sparql/', data={'query': query}) SigV4Auth(Session().get_credentials(), 'neptune-db', region).add_auth(request) resp = requests.post(f'{endpoint}/sparql/', headers=request.headers, data={'query': query}) print(resp.json())
catatan
Contoh ini digunakan botocore.session.Session untuk menyelesaikan AWS kredensil secara otomatis dari variabel lingkungan, file AWS konfigurasi, profil instance, atau peran eksekusi Lambda. Anda tidak perlu mengatur kredensil secara eksplisit.
Menggunakan kredensial sementara
Untuk akses lintas akun, sesi terbatas waktu, atau sebagai praktik terbaik keamanan untuk menghindari kredensi berumur panjang, gunakan AWS STS untuk mendapatkan kredensil sementara dan buat file. boto3.Session
Gremlin dan OpenCypher
import boto3 from botocore.config import Config sts = boto3.client('sts') creds = sts.assume_role( RoleArn='arn:aws:iam::123456789012:role/NeptuneRole', RoleSessionName='neptune-session' )['Credentials'] session = boto3.Session( aws_access_key_id=creds['AccessKeyId'], aws_secret_access_key=creds['SecretAccessKey'], aws_session_token=creds['SessionToken'], region_name='us-east-1' ) cfg = Config(retries={"total_max_attempts": 1, "mode": "standard"}, read_timeout=None) neptune = session.client('neptunedata', config=cfg, endpoint_url='https://your-neptune-endpoint:8182') # Gremlin resp = neptune.execute_gremlin_query(gremlinQuery='g.V().limit(1)') print(resp['result']) # openCypher resp = neptune.execute_open_cypher_query(openCypherQuery='MATCH (n) RETURN n LIMIT 1') print(resp['results'])
catatan
Kredensyal sementara kedaluwarsa setelah interval tertentu (defaultnya adalah 1 jam) dan tidak diperbarui secara otomatis oleh klien. Untuk aplikasi yang berjalan lama, gunakan kredensi berbasis profil atau profil instance sebagai gantinya.
SPARQL
Karena boto3 neptunedata klien saat ini tidak mendukung SPARQL, Anda harus menandatangani permintaan secara manual dengan kredensi sementara.
import boto3 import requests from botocore.auth import SigV4Auth from botocore.awsrequest import AWSRequest from botocore.credentials import ReadOnlyCredentials sts = boto3.client('sts') creds = sts.assume_role( RoleArn='arn:aws:iam::123456789012:role/NeptuneRole', RoleSessionName='neptune-session' )['Credentials'] endpoint = 'https://your-neptune-endpoint:8182' region = 'us-east-1' query = 'SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 1' request = AWSRequest(method='POST', url=f'{endpoint}/sparql/', data={'query': query}) SigV4Auth(ReadOnlyCredentials( creds['AccessKeyId'], creds['SecretAccessKey'], creds['SessionToken'] ), 'neptune-db', region).add_auth(request) resp = requests.post(f'{endpoint}/sparql/', headers=request.headers, data={'query': query}) print(resp.json())
Menggunakan dengan AWS Lambda
Di Lambda, peran eksekusi memberikan kredensil secara otomatis melalui. boto3 Contoh kredensyal default berfungsi tanpa modifikasi.
Untuk contoh Lambda lengkap dengan manajemen koneksi dan logika coba lagi, lihat. AWS Lambda contoh fungsi untuk Amazon Neptunus