Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memuat data streaming dari Amazon DynamoDB
Anda dapat menggunakan AWS Lambda untuk mengirim data ke domain OpenSearch Layanan Anda dari Amazon DynamoDB. Data baru yang tiba di basis data memicu notifikasi peristiwa untuk Lambda, yang kemudian menjalankan kode kustom Anda untuk melakukan pengindeksan.
Prasyarat
Sebelum melanjutkan, Anda harus memiliki sumber daya berikut.
Prasyarat | Deskripsi |
---|---|
Tabel DynamoDB | Tabel berisi data sumber Anda. Untuk informasi selengkapnya, lihat Operasi Dasar pada Tabel DynamoDB di Panduan Pengembang Amazon DynamoDB. Tabel harus berada di Wilayah yang sama dengan domain OpenSearch Layanan Anda dan memiliki aliran yang disetel ke Gambar baru. Untuk mempelajari selengkapnya, lihat Mengaktifkan Pengaliran. |
OpenSearch Domain layanan | Tujuan untuk data setelah fungsi Lambda Anda memprosesnya. Untuk informasi selengkapnya, lihat Membuat domain OpenSearch Layanan. |
IAMperan | Peran ini harus memiliki izin eksekusi OpenSearch Service, DynamoDB, dan Lambda dasar, seperti berikut ini:
Peran harus memiliki hubungan kepercayaan berikut:
Untuk mempelajari selengkapnya, lihat Membuat IAM peran di Panduan IAM Pengguna. |
Buat fungsi Lambda
Ikuti instruksi di Membuat paket deployment Lambda, tapi buat sebuah direktori bernama ddb-to-opensearch
dan gunakan kode berikut untuk sample.py
:
import boto3 import requests from requests_aws4auth import AWS4Auth region = '' # e.g. us-east-1 service = 'es' credentials = boto3.Session().get_credentials() awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token) host = '' # the OpenSearch Service domain, e.g. https://search-mydomain.us-west-1.es.amazonaws.com index = 'lambda-index' datatype = '_doc' url = host + '/' + index + '/' + datatype + '/' headers = { "Content-Type": "application/json" } def handler(event, context): count = 0 for record in event['Records']: # Get the primary key for use as the OpenSearch ID id = record['dynamodb']['Keys']['id']['S'] if record['eventName'] == 'REMOVE': r = requests.delete(url + id, auth=awsauth) else: document = record['dynamodb']['NewImage'] r = requests.put(url + id, auth=awsauth, json=document, headers=headers) count += 1 return str(count) + ' records processed.'
Edit variabel untuk region
dan host
.
Instal pip
cd ddb-to-opensearch pip install --target ./package requests pip install --target ./package requests_aws4auth
Kemudian ikuti instruksi diBuat fungsi Lambda, tetapi tentukan IAM peran dari Prasyarat dan pengaturan berikut untuk pemicunya:
-
Tabel: Tabel DynamoDB Anda
-
Ukuran Batch: 100
-
Posisi awal: Potong cakrawala
Untuk mempelajari lebih lanjut, lihat Memproses Item Baru dengan DynamoDB Streams dan Lambda di Panduan Pengembang Amazon DynamoDB.
Pada titik ini, Anda memiliki satu set lengkap sumber daya: tabel DynamoDB untuk data sumber Anda, aliran perubahan DynamoDB pada tabel, fungsi yang berjalan setelah data sumber Anda berubah dan mengindeks perubahan tersebut, dan domain Layanan untuk pencarian dan visualisasi. OpenSearch
Tes fungsi Lambda
Setelah Anda membuat fungsi, Anda dapat mengujinya dengan menambahkan item baru ke tabel DynamoDB dengan menggunakan AWS CLI:
aws dynamodb put-item --table-name test --item '{"director": {"S": "Kevin Costner"},"id": {"S": "00001"},"title": {"S": "The Postman"}}' --region
us-west-1
Kemudian gunakan konsol OpenSearch Layanan atau OpenSearch Dasbor untuk memverifikasi bahwa lambda-index
berisi dokumen. Anda juga dapat menggunakan permintaan berikut:
GET https://domain-name
/lambda-index/_doc/00001
{
"_index": "lambda-index",
"_type": "_doc",
"_id": "00001",
"_version": 1,
"found": true,
"_source": {
"director": {
"S": "Kevin Costner"
},
"id": {
"S": "00001"
},
"title": {
"S": "The Postman"
}
}
}