Cara menggunakan siapakah yang mengembangkan postgresql?

Meskipun ini benar, ini bukan gambaran lengkap. Publik juga bertindak sebagai peran implisit yang dimiliki oleh peran lain dan yang memiliki izinnya sendiri yang tidak selalu tercermin dan dilaporkan yang diwarisi.

Show

Secara default itu memberi izin membuat skema publik. ketika Anda tidak menghapus ini semua langkah-langkah lain yang benar untuk membuat hasil baca-saja pengguna di pengguna itu juga dapat membuat objek baru di skema publik dan kemudian karena kepemilikan memasukkan data di dalamnya. Untuk mencegahnya

REVOKE ALL ON SCHEMA public FROM PUBLIC;

Demikian pula itu juga memberikan izin pada tingkat basis data, untuk menghapus penggunaan

REVOKE ALL ON DATABASE all_database FROM PUBLIC;

Artikel bagus di sini: https://wiki.postgresql.org/images/d/d1/Managing_rights_in_postgresql.pdf

Dengan machine learning Aurora, Anda dapat menambahkan prediksi berbasis machine learning ke aplikasi database menggunakan bahasa SQL. Machine learning Aurora menggunakan integrasi yang sangat dioptimalkan antara database Aurora danAWSLayanan pembelajaran mesin (L) SageMaker dan Amazon Comprehend.

Manfaat machine learning Aurora mencakup hal berikut:

  • Anda dapat menambahkan prediksi berbasis ML ke aplikasi database yang ada. Anda tidak perlu membangun integrasi khusus atau mempelajari alat terpisah. Anda dapat menyematkan pemrosesan machine learning secara langsung ke kueri SQL Anda sebagai panggilan ke fungsi.

  • Integrasi ML adalah cara cepat untuk mengaktifkan layanan ML agar bekerja dengan data transaksional. Anda tidak perlu memindahkan data dari basis data untuk melakukan operasi machine learning. Anda tidak perlu mengonversi atau mengimpor ulang hasil operasi machine learning untuk menggunakannya dalam aplikasi basis data Anda.

  • Anda dapat menggunakan kebijakan tata kelola yang ada untuk mengontrol siapa yang memiliki akses ke data yang mendasari dan wawasan yang dihasilkan.

Layanan machine learning AWS adalah layanan terkelola yang Anda siapkan dan jalankan di lingkungan produksinya sendiri. Saat ini, machine learning Aurora terintegrasi dengan Amazon Comprehend untuk analisis sentimen dan SageMaker untuk berbagai macam algoritme L.

Untuk informasi umum tentang Amazon Comprehend, lihat Amazon Comprehend. Untuk detail tentang menggunakan Aurora dan Amazon Comprehend secara bersama-sama, lihat Menggunakan Amazon Comprehend untuk pemrosesan bahasa alami.

Untuk informasi umum tentang SageMaker, lihat SageMaker. Untuk detail tentang menggunakan Aurora dan SageMaker bersama-sama, lihatMenggunakan SageMaker menjalankan model ML-mu sendiri.

Machine learning Aurora untuk PostgreSQL menghubungkan klaster Aurora ke SageMaker atau layanan Amazon Comprehend hanya dalam hal yang samaAWSWilayah.

Topik

  • Prasyarat untuk machine learning Aurora
  • Memungkinkan machine learning Aurora
  • Menggunakan Amazon Comprehend untuk pemrosesan bahasa alami
  • Mengekspor data ke Amazon S3 SageMaker pelatihan model
  • Menggunakan SageMaker menjalankan model ML-mu sendiri
  • Praktik terbaik dengan machine learning Aurora
  • Pembelajaran Machine Learning Aurora
  • Referensi fungsi PostgreSQL untuk machine learning Aurora
  • Secara manual mengatur IAM role untuk SageMaker dan Amazon Comprehend menggunakanAWS CLI

Prasyarat untuk machine learning Aurora

Pembelajaran mesin Aurora tersedia di kluster Aurora yang menjalankan Aurora PostgreSQL 10 atau versi utama yang lebih tinggi dalamAWSWilayah yang mendukung pembelajaran mesin Aurora. Anda dapat meningkatkan klaster Aurora yang menjalankan Aurora PostgreSQL versi yang lebih rendah ke versi yang lebih tinggi jika Anda ingin menggunakan machine learning Aurora dengan klaster tersebut. Untuk informasi selengkapnya, lihat Meningkatkan mesin PostgreSQL DB untuk Aurora PostgreSQL.

Untuk informasi lebih lanjut tentang ketersediaan versi Wilayah dan Aurora, lihat Pembelajaran Machine Learning Aurora.

Memungkinkan machine learning Aurora

Mengaktifkan kapabilitas ML melibatkan langkah-langkah berikut.

Topik

  • Menyiapkan akses IAM ke layanan machine learning AWS
  • Memasang ekstensi aws_ml untuk inferensi model

Menyiapkan akses IAM ke layanan machine learning AWS

Sebelum Anda dapat mengakses SageMaker dan layanan Amazon Comprehend, Anda mengaturAWS Identity and Access Management(IAM) peran. Selanjutnya Anda menambahkan IAM role ke klaster Aurora PostgreSQL. Peran ini memberi wewenang kepada pengguna database Aurora PostgreSQL Anda untuk mengakses layanan ML AWS.

Anda dapat melakukan penyiapan IAM secara otomatis menggunakan AWS Management Console seperti yang ditunjukkan di sini. Untuk menggunakan AWS CLI guna menyiapkan akses IAM, lihat Secara manual mengatur IAM role untuk SageMaker dan Amazon Comprehend menggunakanAWS CLI.

Secara otomatis menghubungkan klaster DB Aurora ke layanan AWS menggunakan konsol

Machine learning Aurora mengharuskan klaster DB Anda untuk menggunakan beberapa kombinasi Amazon S3, SageMaker, dan Amazon Comprehend. Amazon Comprehend adalah untuk analisis sentimen. SageMaker adalah untuk berbagai macam algoritme machine learning.

Untuk machine learning Aurora, Anda menggunakan Amazon S3 hanya untuk pelatihan SageMaker model. Anda hanya perlu menggunakan Amazon S3 dengan Aurora machine learning jika Anda belum memiliki model terlatih yang tersedia dan pelatihan adalah tanggung jawab Anda.

Untuk menghubungkan klaster DB ke layanan ini, Anda harus menyiapkan AWS Identity and Access Management (IAM) role untuk setiap layanan Amazon. Peran IAM memungkinkan pengguna klaster DB Anda untuk mengautentikasi layanan terkait.

Guna menghasilkan IAM role untuk SageMaker, Amazon Comprehend, atau Amazon S3, ulangi langkah-langkah berikut untuk setiap layanan yang Anda butuhkan.

Untuk menghubungkan klaster DB ke layanan Amazon

  1. Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  2. Di panel navigasi, pilih Database, lalu pilih klaster DB Aurora PostgreSQL DB yang ingin Anda gunakan.

  3. Pilih tab Konektivitas & keamanan.

  4. Pilih Pilih layanan untuk dihubungkan ke kluster ini di bagian Kelola peran IAM.

  5. Pilih layanan yang ingin Anda sambungkan dari daftar:

    • Amazon S3

    • Amazon Comprehend

    • SageMaker

  6. Pilih Hubungkan layanan.

  7. Masukkan informasi yang diperlukan untuk layanan spesifik di jendela Hubungkan klaster:

    • Untuk SageMaker, masukkan Amazon Resource Name (ARN) dari a SageMaker titik akhir.

      Dari panel navigasi konsol SageMaker, pilih Titik akhir dan salin ARN titik akhir yang ingin Anda gunakan. Untuk detail tentang apa yang diwakili oleh titik akhir, lihat Menerapkan model pada Amazon SageMaker.

    • Untuk Amazon Comprehend, Anda tidak menentukan parameter tambahan apa pun.

    • Untuk Amazon S3, masukkan ARN bucket Amazon S3 untuk digunakan.

      Format ARN bucket Amazon S3 adalah arn:aws:s3:::bucket_name. Pastikan bahwa bucket Amazon S3 yang Anda gunakan disiapkan dengan persyaratan untuk pelatihan SageMaker model. Saat Anda melatih model, klaster DB Aurora Anda memerlukan izin untuk mengekspor data ke bucket Amazon S3, dan juga untuk mengimpor data dari bucket.

      Untuk selengkapnya tentang bucket Amazon S3 ARN, lihatMenentukan sumber daya dalam sebuah kebijakandiPanduan Pengguna Amazon Simple Storage Service. Untuk selengkapnya tentang menggunakan bucket Amazon S3 dengan SageMaker, lihatLangkah 1: Buat bucket Amazon S3.diAmazon SageMaker Panduan Developer.

  8. Pilih Hubungkan layanan.

  9. Aurora membuat IAM role baru dan menambahkannya ke daftar klaster DB dari IAM role saat ini untuk klaster ini. Status IAM role awalnya dalam proses. Nama IAM role dibuat secara otomatis dengan pola berikut untuk setiap layanan yang terhubung:

    • Pola nama IAM role Amazon S3 adalah rds-cluster_ID-S3-role-timestamp.

    • Parameter SageMaker Pola nama peran IAM adalahrds-cluster_ID-SageMaker-role-timestamp.

    • Pola nama IAM role Amazon Comprehend adalah rds-cluster_ID-Comprehend-role-timestamp.

    Aurora juga membuat kebijakan IAM baru dan melampirkannya ke peran tersebut. Nama kebijakan mengikuti konvensi penamaan yang mirip dan juga memiliki stempel waktu.

Memasang ekstensi aws_ml untuk inferensi model

Setelah Anda membuat IAM role yang diperlukan dan menghubungkannya dengan klaster DB PostgreSQL, instal fungsi yang menggunakan SageMaker dan fungsionalitas Amazon Comprehend. Ekstensi Aurora PostgreSQL aws_ml menyediakan fungsi aws_sagemaker.invoke_endpoint yang berkomunikasi langsung dengan SageMaker. Ekstensi aws_ml juga menyediakan fungsi aws_comprehend.detect_sentiment yang berkomunikasi secara langsung dengan Amazon Comprehend.

Untuk menginstal fungsi ini dalam database tertentu, masukkan perintah SQL berikut pada prompt psql.

psql>CREATE EXTENSION IF NOT EXISTS aws_ml CASCADE;

Jika Anda membuat ekstensi aws_ml di template1 database default, maka fungsi tersebut tersedia di setiap database baru yang Anda buat.

Untuk memverifikasi instalasi, masukkan berikut ini pada prompt psql.

psql>\dx

Jika Anda mengatur peran IAM untuk Amazon Comprehend, Anda dapat memverifikasi pengaturan sebagai berikut.

SELECT sentiment FROM aws_comprehend.detect_sentiment(null, 'I like it!', 'en'); 

Saat Anda menginstal ekstensi aws_ml, peran administratif aws_ml dibuat dan diberikan ke peran rds_superuser. Skema terpisah juga dibuat untuk layanan aws_sagemaker dan untuk layanan aws_comprehend. Peran rds_superuser dibuat OWNER dari kedua skema ini.

Bagi pengguna atau peran untuk mendapatkan akses ke fungsi dalam ekstensi aws_ml, berikan EXECUTE hak istimewa pada fungsi tersebut. Selanjutnya, Anda dapat MENCABUT hak istimewa, bila perlu. Hak istimewa EXECUTE dicabut dari PUBLIK pada fungsi skema ini secara default. Dalam konfigurasi database multi-tenant, untuk mencegah tenant mengakses fungsi, gunakan REVOKE USAGE pada satu atau beberapa skema layanan ML.

Untuk referensi ke fungsi terinstal dari ekstensi aws_ml, lihat Referensi fungsi PostgreSQL untuk machine learning Aurora.

Menggunakan Amazon Comprehend untuk pemrosesan bahasa alami

Amazon Comprehend menggunakan machine learning untuk menemukan wawasan dan hubungan dalam teks. Amazon Comprehend menggunakan pemrosesan bahasa alami untuk mengekstrak wawasan tentang konten dokumen. Hal ini mengembangkan wawasan dengan mengakui entitas, frase kunci, bahasa, sentimen, dan elemen umum lainnya dalam dokumen. Anda dapat menggunakan layanan machine learning Aurora ini dengan pengalaman machine learning yang sangat sedikit.

Machine learning Aurora menggunakan Amazon Comprehend untuk analisis sentimen teks yang disimpan di database Anda. Sentimen adalah opini yang diungkapkan dalam teks. Analisis sentimen mengidentifikasi dan mengkategorikan sentimen untuk menentukan apakah sikap terhadap sesuatu (seperti topik atau produk) positif, negatif, atau netral.

Amazon Comprehend saat ini hanya tersedia di beberapa Wilayah AWS. Untuk memeriksa di Wilayah AWS mana Anda dapat menggunakan Amazon Comprehend, lihat halaman tabel Wilayah AWS di situs AWS.

Misalnya, menggunakan Amazon Comprehend, Anda dapat menganalisis dokumen panggilan masuk pusat kontak untuk mendeteksi sentimen penelepon dan lebih memahami dinamika agen-penelepon. Anda dapat menemukan deskripsi lebih lanjut di postingan Menganalisis panggilan pusat kontak di blog Machine Learning AWS.

Anda juga dapat menggabungkan analisis sentimen dengan analisis informasi lain di database Anda menggunakan satu kueri. Misalnya, Anda dapat mendeteksi sentimen rata-rata dokumen pusat panggilan untuk masalah yang menggabungkan hal berikut:

  • Buka selama lebih dari 30 hari.

  • Tentang produk atau fitur tertentu.

  • Dibuat oleh pelanggan yang memiliki pengaruh media sosial terbesar.

Menggunakan machine learning Amazon Comprehend semudah memanggil fungsi SQL. Saat Anda menginstal aws_ml ekstensi (Memasang ekstensi aws_ml untuk inferensi model), ini menyediakan fungsi aws_comprehend.detect_sentiment untuk melakukan analisis sentimen melalui Amazon Comprehend.

Untuk setiap fragmen teks yang Anda analisis, fungsi ini membantu Anda menentukan sentimen dan tingkat kepercayaan. Kueri Amazon Comprehend biasanya mencari baris tabel yang sentimennya memiliki nilai tertentu (POSITIF atau NEGATIF), dengan tingkat kepercayaan lebih besar dari persentase tertentu.

Misalnya, kueri berikut ini menunjukkan cara menentukan sentimen rata-rata dokumen di tabel database Anda, myTable.document. Kueri hanya mempertimbangkan dokumen dengan tingkat kepercayaan penilaian minimal 80%. Dalam contoh berikut, Inggris (en) adalah bahasa teks sentimen.

SELECT AVG(CASE s.sentiment 
    WHEN 'POSITIVE' then 1 
    WHEN 'NEGATIVE' then -1 
    ELSE 0 END) as avg_sentiment, COUNT(*) AS total
FROM myTable, aws_comprehend.detect_sentiment (myTable.document, 'en') s
WHERE s.confidence >= 0.80;

Untuk menghindari Anda ditagih untuk analisis sentimen lebih dari sekali per baris tabel, Anda dapat mewujudkan hasil analisis tersebut satu kali per baris. Lakukan ini di baris yang diinginkan. Dalam contoh berikut, Prancis (fr) adalah bahasa teks sentimen.

-- *Example:* Update the sentiment and confidence of French text.
--
UPDATE clinician_notes
SET sentiment = (aws_comprehend.detect_sentiment (french_notes, 'fr')).sentiment,
    confidence = (aws_comprehend.detect_sentiment (french_notes, 'fr')).confidence
WHERE
    clinician_notes.french_notes IS NOT NULL AND
    LENGTH(TRIM(clinician_notes.french_notes)) > 0 AND
    clinician_notes.sentiment IS NULL;

Untuk informasi selengkapnya tentang mengoptimalkan panggilan fungsi Anda, lihat Praktik terbaik dengan machine learning Aurora.

Untuk informasi tentang parameter dan tipe pengembalian untuk fungsi deteksi sentimen, lihat aws_comprehend.detect_sentiment.

Mengekspor data ke Amazon S3 SageMaker pelatihan model

Bergantung pada cara tim Anda membagi tugas machine learning, Anda mungkin tidak melakukan pelatihan model. Jika orang lain menyediakan SageMaker model untuk Anda, Anda dapat melewati bagian ini.

Untuk melatih SageMaker model, Anda mengekspor data ke bucket Amazon S3. Bucket Amazon S3 digunakan oleh SageMaker untuk melatih model Anda sebelum diterapkan. Anda dapat membuat kueri data dari klaster DB Aurora PostgreSQL dan menyimpannya langsung ke dalam file teks yang disimpan dalam bucket Amazon S3. Kemudian SageMaker menggunakan data dari bucket Amazon S3 untuk pelatihan. Untuk selengkapnya tentang SageMaker pelatihan model, lihatMelatih model dengan Amazon SageMaker.

Saat Anda membuat bucket S3 SageMaker Model pelatihan atau batch scoring, selalu sertakan tekssagemakerdalam nama bucket S3. Untuk informasi selengkapnya tentang membuat bucket S3 untuk SageMaker, lihatLangkah 1: Buat bucket Amazon S3.

Untuk informasi lebih lanjut tentang mengekspor data Anda, lihat Mengekspor data dari klaster DB Aurora PostgreSQL ke Amazon S3.

Menggunakan SageMaker menjalankan model ML-mu sendiri

SageMaker adalah layanan machine learning yang dikelola sepenuhnya. Dengan SageMaker, ilmuwan dan developer data membangun dan melatih model machine learning. Kemudian mereka dapat langsung menerapkan model ke dalam lingkungan yang di-hosting siap produksi.

SageMaker menyediakan akses ke sumber data Anda agar Anda dapat melakukan eksplorasi dan analisis tanpa mengelola infrastruktur perangkat keras untuk peladen. SageMaker juga menyediakan algoritme machine learning umum yang dioptimalkan untuk berjalan secara efisien terhadap kumpulan data yang sangat besar dalam lingkungan terdistribusi. Dengan dukungan asli untuk bring-your-own-algorithms dan kerangka kerja, SageMaker menawarkan opsi pelatihan terdistribusi yang fleksibel yang menyesuaikan dengan alur kerja spesifik Anda.

Saat ini, pembelajaran mesin Aurora mendukung SageMaker titik akhir yang dapat membaca dan menulis format nilai yang dipisahkan koma (CSV), melaluiContentTypenilaitext/csv. Built-in SageMaker algoritme yang saat ini menerima format ini adalah Random Cut Forest, Linear Learner, dan XGBoost.

Pastikan untuk menerapkan model yang Anda gunakan di Wilayah AWS yang sama dengan klaster Aurora PostgreSQL Anda. Pembelajaran Machine Learning Aurora selalu dipanggil SageMaker endpoint yang samaAWSWilayah sebagai kluster Aurora Anda.

Saat Anda menginstal ekstensi aws_ml (seperti dijelaskan di Memasang ekstensi aws_ml untuk inferensi model), ini menyediakan fungsi aws_sagemaker.invoke_endpoint. Anda menggunakan fungsi ini untuk memanggil SageMaker model dan melakukan inferensi model langsung dari dalam aplikasi database SQL Anda.

Topik

  • Membuat fungsi yang ditentukan pengguna untuk memanggil SageMaker model
  • Meneruskan array sebagai input untuk model SageMaker
  • Menentukan ukuran array saat memanggil model SageMaker
  • Memanggil SageMaker model yang memiliki banyak output

Membuat fungsi yang ditentukan pengguna untuk memanggil SageMaker model

Membuat fungsi yang ditentukan pengguna yang akan dipanggilaws_sagemaker.invoke_endpointuntuk masing-masing SageMaker model. Fungsi yang ditentukan pengguna mewakili SageMaker hosting model. Fungsi aws_sagemaker.invoke_endpoint berjalan dalam fungsi yang ditentukan pengguna. Fungsi yang ditentukan pengguna memberikan banyak keuntungan:

  • Anda dapat memberikan nama model ML Anda sendiri dan bukan hanya memanggil aws_sagemaker.invoke_endpoint ​​untuk semua model ML Anda.

  • Anda dapat menentukan URL titik akhir model hanya di satu tempat di kode aplikasi SQL Anda.

  • Anda dapat mengontrol hak istimewa EXECUTE ​​untuk setiap fungsi ML secara independen.

  • Anda dapat mendeklarasikan tipe input dan output model menggunakan tipe SQL. SQL menerapkan jumlah dan jenis argumen yang diteruskan ke model ML Anda dan melakukan konversi jenis jika diperlukan. Menggunakan jenis SQL juga akan menerjemahkan SQL NULL ke nilai default sesuai yang diharapkan oleh model ML Anda.

  • Anda dapat mengurangi ukuran batch maksimum jika Anda ingin mengembalikan beberapa baris pertama sedikit lebih cepat.

Untuk menentukan fungsi yang ditentukan pengguna, gunakan pernyataan bahasa definisi data (DDL) SQLCREATE FUNCTION. Saat menentukan fungsi, Anda juga menetapkan hal berikut:

  • Parameter input ke model.

  • Spesifik SageMaker Titik akhir yang akan dipanggil.

  • Tipe pengembalian.

Fungsi yang ditentukan pengguna mengembalikan inferensi yang dihitung oleh SageMaker titik akhir setelah menjalankan model pada parameter input. Contoh berikut membuat fungsi yang ditentukan pengguna untuk SageMaker model dengan dua parameter masukan.

CREATE FUNCTION classify_event (IN arg1 INT, IN arg2 DATE, OUT category INT)
AS $$
    SELECT aws_sagemaker.invoke_endpoint (
        'sagemaker_model_endpoint_name', NULL,
        arg1, arg2                        -- model inputs are separate arguments
        )::INT                            -- cast the output to INT
$$ LANGUAGE SQL PARALLEL SAFE COST 5000;

Perhatikan hal berikut:

  • Input fungsi aws_sagemaker.invoke_endpoint dapat berupa satu parameter atau lebih dari tipe data apa pun.

    Untuk mengetahui detail selengkapnya tentang parameter, lihat referensi fungsi aws_sagemaker.invoke_endpoint.

  • Contoh ini menggunakan tipe output INT. Jika Anda mengirimkan output dari tipe varchar ke tipe yang berbeda, output tersebut harus dikirimkan ke suatu tipe skalar bawaan PostgreSQL seperti INTEGER, REAL, FLOAT, atau NUMERIC. Untuk informasi selengkapnya tentang tipe ini, lihat Tipe data dalam dokumentasi PostgreSQL.

  • Tentukan PARALLEL SAFE untuk mengaktifkan pemrosesan kueri paralel. Untuk informasi selengkapnya, lihat Memanfaatkan pemrosesan kueri paralel.

  • Tentukan COST 5000 untuk memperkirakan biaya menjalankan fungsi. Gunakan bilangan positif yang memberikan taksiran biaya pengoperasian untuk fungsi tersebut, dalam satuan cpu_operator_cost.

Meneruskan array sebagai input untuk model SageMaker

Fungsi aws_sagemaker.invoke_endpoint dapat memiliki hingga 100 parameter input, yang merupakan batas untuk fungsi PostgreSQL. Jika SageMaker membutuhkan lebih dari 100 parameter dari jenis yang sama, meneruskan parameter model sebagai susunan.

Contoh berikut membuat fungsi yang ditentukan pengguna yang meneruskan susunan sebagai input ke SageMaker model regresi.

CREATE FUNCTION regression_model (params REAL[], OUT estimate REAL)
AS $$
    SELECT aws_sagemaker.invoke_endpoint (
        'sagemaker_model_endpoint_name', NULL,
        params                            -- model input parameters as an array
        )::REAL                           -- cast output to REAL
$$ LANGUAGE SQL PARALLEL SAFE COST 5000;

Menentukan ukuran array saat memanggil model SageMaker

Contoh berikut membuat fungsi yang ditentukan pengguna untuk SageMaker model yang mengatur ukuran batch default menjadi NULL. Fungsi ini juga memungkinkan Anda untuk memberikan ukuran batch yang berbeda saat Anda memanggilnya.

CREATE FUNCTION classify_event (
    IN event_type INT, IN event_day DATE, IN amount REAL, -- model inputs
    max_rows_per_batch INT DEFAULT NULL,  -- optional batch size limit
    OUT category INT)                     -- model output
AS $$
    SELECT aws_sagemaker.invoke_endpoint (
        'sagemaker_model_endpoint_name', max_rows_per_batch,
        event_type, event_day, COALESCE(amount, 0.0)
        )::INT              -- casts output to type INT
$$ LANGUAGE SQL PARALLEL SAFE COST 5000;

Perhatikan hal-hal berikut:

  • Gunakan parameter opsional max_rows_per_batch untuk memberikan kontrol jumlah baris untuk pemanggilan fungsi mode batch. Jika Anda menggunakan nilai NULL, maka pengoptimal kueri secara otomatis memilih ukuran batch maksimum. Untuk informasi selengkapnya, lihat Mengoptimalkan eksekusi mode batch untuk panggilan fungsi machine learning Aurora.

  • Secara default, meneruskan NULL sebagai nilai parameter diterjemahkan menjadi string kosong sebelum meneruskan ke SageMaker. Untuk contoh ini input memiliki tipe yang berbeda.

  • Jika Anda memiliki masukan non-teks, atau masukan teks yang perlu default ke beberapa nilai selain string kosong, gunakan pernyataan COALESCE. Gunakan COALESCE untuk menerjemahkan NULL menjadi nilai pengganti nol yang diinginkan dalam panggilan ke aws_sagemaker.invoke_endpoint. Untuk parameter amount dalam contoh ini, nilai NULL dikonversi menjadi 0,0.

Memanggil SageMaker model yang memiliki banyak output

Contoh berikut membuat fungsi yang ditentukan pengguna untuk SageMaker model yang mengembalikan beberapa output. Fungsi Anda perlu mentransmisikan output dari fungsi aws_sagemaker.invoke_endpoint ke jenis data yang terkait. Misalnya, Anda dapat menggunakan tipe titik PostgreSQL bawaan untuk pasangan (x, y) atau tipe komposit yang ditentukan oleh pengguna.

Fungsi yang ditentukan oleh pengguna ini mengembalikan nilai dari model yang mengembalikan beberapa output menggunakan jenis gabungan untuk output.

CREATE TYPE company_forecasts AS ( 
    six_month_estimated_return real,
    one_year_bankruptcy_probability float);
CREATE FUNCTION analyze_company (
    IN free_cash_flow NUMERIC(18, 6),
    IN debt NUMERIC(18,6),
    IN max_rows_per_batch INT DEFAULT NULL,
    OUT prediction company_forecasts) 
AS $$
    SELECT (aws_sagemaker.invoke_endpoint(
              'endpt_name', max_rows_per_batch,
              free_cash_flow, debt))::company_forecasts;                                                                                                                  
$$ LANGUAGE SQL PARALLEL SAFE COST 5000;

Untuk jenis komposit, gunakan bidang dalam urutan yang sama seperti yang muncul di output model dan transmisikan keluaran aws_sagemaker.invoke_endpoint ke jenis komposit Anda. Pemanggil dapat mengekstrak bidang individual, baik dengan nama maupun dengan notasi ".*" PostgreSQL.

Praktik terbaik dengan machine learning Aurora

Sebagian besar pekerjaan diaws_mlfungsi panggilan terjadi dalam layanan pembelajaran mesin Aurora eksternal. Pemisahan ini memungkinkan Anda meningkatkan sumber daya untuk layanan machine learning secara independen dari kluster Aurora Anda. Dalam Aurora, Anda sebagian besar berfokus untuk membuat panggilan fungsi yang ditentukan pengguna itu sendiri seefisien mungkin. Beberapa aspek yang dapat Anda pengaruhi dari kluster Aurora Anda meliputi:

  • Pengaturan max_rows_per_batch untuk panggilan ke fungsi aws_ml.

  • Jumlah CPU virtual dari instans database, yang menentukan derajat paralelisme maksimum yang mungkin digunakan database saat menjalankan fungsi ML Anda.

  • Parameter PostgreSQL yang mengontrol pemrosesan kueri paralel.

Topik

  • Mengoptimalkan eksekusi mode batch untuk panggilan fungsi machine learning Aurora
  • Memanfaatkan pemrosesan kueri paralel
  • Menggunakan tampilan terwujud dan kolom terwujud

Mengoptimalkan eksekusi mode batch untuk panggilan fungsi machine learning Aurora

Biasanya PostgreSQL menjalankan fungsi satu baris dalam satu waktu. Machine learning Aurora dapat meminimalkan overhead ini dengan menggabungkan panggilan ke layanan machine learning eksternal untuk banyak baris menjadi batch dengan pendekatan yang disebuteksekusi mode batch. Dalam mode batch, machine learning Aurora menerima respons untuk batch baris input, lalu mengirimkan respons kembali ke kueri yang sedang berjalan satu baris dalam satu waktu. Pengoptimalan ini meningkatkan throughput kueri Aurora Anda tanpa membatasi pengoptimal kueri PostgreSQL.

Aurora secara otomatis menggunakan mode batch jika fungsi direferensikan dari daftar SELECT, klausa WHERE, atau klausa HAVING. Perhatikan bahwa ekspresi CASE sederhana tingkat atas memenuhi syarat untuk eksekusi mode batch. Ekspresi CASE ditelusuri tingkat atas juga memenuhi syarat untuk eksekusi mode-batch asalkan klausa WHEN pertama adalah predikat sederhana dengan panggilan fungsi mode-batch.

Fungsi yang Anda tentukan harus berupa fungsi LANGUAGE SQL dan harus mencantumkan PARALLEL SAFE dan COST 5000.

Topik

  • Migrasi fungsi dari pernyataan SELECT ke klausa FROM
  • Menggunakan parameter max_rows_per_batch
  • Memverifikasi eksekusi mode batch

Migrasi fungsi dari pernyataan SELECT ke klausa FROM

Biasanya, fungsi aws_ml yang memenuhi syarat untuk eksekusi mode-batch secara otomatis dimigrasikan oleh Aurora ke klausa FROM.

Migrasi fungsi mode batch yang memenuhi syarat ke klausa FROM dapat diperiksa secara manual pada tingkat per kueri. Untuk melakukan ini, Anda menggunakan pernyataan EXPLAIN (serta ANALYZE dan VERBOSE) dan menemukan informasi "Pemrosesan Batch" di bawah setiap mode batch Function Scan. Anda juga dapat menggunakan EXPLAIN (dengan VERBOSE) tanpa menjalankan kueri. Selanjutnya Anda mengamati apakah panggilan ke fungsi tersebut muncul sebagai Function Scan di dalam loop join bertingkat yang tidak ditentukan dalam pernyataan asli.

Dalam contoh berikut, keberadaan operator loop join bertingkat dalam rencana menunjukkan bahwa Aurora memigrasi fungsi anomaly_score. Ini memigrasi fungsi ini dari daftar SELECT ke klausa FROM, yang memenuhi syarat untuk eksekusi mode-batch.

EXPLAIN (VERBOSE, COSTS false) 
SELECT anomaly_score(ts.R.description) from ts.R;
                         QUERY PLAN                          
-------------------------------------------------------------
 Nested Loop
   Output: anomaly_score((r.description)::text)
   ->  Seq Scan on ts.r
         Output: r.id, r.description, r.score
   ->  Function Scan on public.anomaly_score
         Output: anomaly_score.anomaly_score
         Function Call: anomaly_score((r.description)::text)

Untuk menonaktifkan eksekusi mode-batch, atur parameter apg_enable_function_migration menjadi false. Hal ini mencegah migrasi dari fungsi aws_ml dari SELECT ke klausa FROM. Berikut ini menunjukkan caranya.

SET apg_enable_function_migration = false;

Parameter apg_enable_function_migration adalah parameter Grand Unified Configuration (GUC) yang dikenali oleh ekstensi apg_plan_mgmt Aurora PostgreSQL untuk manajemen rencana kueri. Untuk menonaktifkan migrasi fungsi dalam sebuah sesi, gunakan manajemen rencana kueri untuk menyimpan rencana yang dihasilkan sebagai rencana approved. Pada waktu proses, manajemen rencana kueri memberlakukan rencana approved dengan pengaturan apg_enable_function_migration-nya. Penerapan ini terjadi, apa pun pengaturan parameter apg_enable_function_migration GUC. Untuk informasi selengkapnya, lihat Mengelola rencana eksekusi kueri untuk Aurora PostgreSQL.

Menggunakan parameter max_rows_per_batch

Parametermax_rows_per_batchparameteraws_sagemaker.invoke_endpointdanaws_comprehend.detect_sentimentmempengaruhi berapa banyak baris ditransfer ke layanan machine learning Aurora. Semakin besar set data yang diproses oleh fungsi yang ditentukan pengguna, semakin besar Anda dapat membuat ukuran batch.

Fungsi mode batch meningkatkan efisiensi dengan membangun batch baris yang menyebarkan biaya panggilan fungsi machine learning Aurora dalam sejumlah besar baris. Namun, jika pernyataan SELECT selesai lebih awal karena klausa LIMIT, maka batch dapat dibuat di lebih banyak baris daripada yang digunakan kueri. Pendekatan ini dapat mengakibatkan biaya tambahan untuk akun AWS Anda. Untuk memanfaatkan eksekusi mode batch tetapi menghindari membuat batch yang terlalu besar, gunakan nilai yang lebih kecil untuk parameter max_rows_per_batch dalam panggilan fungsi Anda.

Jika Anda melakukan EXPLAIN (VERBOSE, ANALYZE) kueri yang menggunakan eksekusi mode batch, Anda akan melihat operator FunctionScan yang berada di bawah loop join bertingkat. Jumlah loop yang dilaporkan oleh EXPLAIN menjelaskan berapa kali sebuah baris diambil dari operator FunctionScan. Jika pernyataan menggunakan klausa LIMIT, jumlah pengambilannya konsisten. Untuk mengoptimalkan ukuran batch, atur parameter max_rows_per_batch ke nilai ini. Namun, jika fungsi mode batch direferensikan dalam predikat di klausa WHERE atau klausa HAVING, Anda mungkin tidak dapat mengetahui jumlah pengambilan sebelumnya. Dalam kasus ini, gunakan loop sebagai pedoman dan lakukan percobaan dengan max_rows_per_batch untuk menemukan pengaturan yang mengoptimalkan kinerja.

Memverifikasi eksekusi mode batch

Untuk melihat apakah fungsi berjalan dalam mode batch, gunakan EXPLAIN ANALYZE. Jika eksekusi mode batch digunakan, maka rencana kueri akan menyertakan informasi di bagian "Pemrosesan Batch".

EXPLAIN ANALYZE SELECT user-defined-function();
 Batch Processing: num batches=1 avg/min/max batch size=3333.000/3333.000/3333.000
                                avg/min/max batch call time=146.273/146.273/146.273

Dalam contoh ini, ada 1 batch yang berisi 3.333 baris, yang memerlukan waktu proses 146.273 milidetik. Bagian "Pemrosesan Batch" menunjukkan berikut:

  • Berapa banyak batch untuk operasi pemindaian fungsi ini

  • Ukuran batch rata-rata, minimum, dan maksimum

  • Rata-rata waktu eksekusi batch, minimum, dan maksimum

Biasanya batch akhir lebih kecil daripada yang lain, yang seringkali menghasilkan ukuran kelompok minimum yang jauh lebih kecil dari rata-rata.

Untuk mengembalikan beberapa baris pertama dengan lebih cepat, atur parameter max_rows_per_batch ke nilai yang lebih kecil.

Untuk mengurangi jumlah panggilan mode batch ke layanan ML saat Anda menggunakan LIMIT dalam fungsi yang ditentukan pengguna, setel parameter max_rows_per_batch ke nilai yang lebih kecil.

Memanfaatkan pemrosesan kueri paralel

Untuk meningkatkan kinerja secara drastis saat memproses baris dalam jumlah besar, Anda dapat menggabungkan pemrosesan kueri paralel dengan pemrosesan mode batch. Anda dapat menggunakan pemrosesan kueri paralel untuk pernyataan SELECT, CREATE TABLE AS SELECT, dan CREATE MATERIALIZED VIEW.

PostgreSQL belum mendukung kueri paralel untuk pernyataan bahasa manipulasi data (DML).

Pemrosesan kueri paralel terjadi baik dalam database maupun dalam layanan ML. Jumlah inti dalam kelas instans database membatasi derajat paralelisme yang dapat digunakan saat menjalankan kueri. Server database dapat membuat rencana eksekusi query paralel yang membagi tugas di antara sekumpulan pekerja paralel. Selanjutnya, setiap pekerja ini bisa membangun permintaan batch yang berisi puluhan ribu baris (atau sebanyak yang diizinkan oleh setiap layanan).

Permintaan batch dari semua pekerja paralel dikirim ke titik akhir untuk layanan AWS (SageMaker, misalnya). Dengan demikian, jumlah dan jenis instans di belakang titik akhir layanan AWS juga membatasi derajat paralelisme yang dapat dimanfaatkan kegunaannya. Bahkan kelas instans dua inti bisa memanfaatkan secara signifikan pemrosesan kueri paralel. Namun, untuk sepenuhnya mengeksploitasi paralelisme pada K derajat yang lebih tinggi, Anda memerlukan kelas instans database yang memiliki setidaknya K inti. Anda juga perlu mengonfigurasi layanan AWS agar dapat memproses permintaan batch K secara paralel. Untuk SageMaker, Anda perlu mengonfigurasi SageMaker titik akhir agar model L Anda memiliki instans awal K dari kelas instans berkinerja cukup tinggi.

Untuk memanfaatkan pemrosesan kueri paralel, Anda dapat mengatur parameter penyimpanan parallel_workers ​​dari tabel yang berisi data yang ingin Anda teruskan. Anda mengatur parallel_workers ke fungsi mode-batch seperti aws_comprehend.detect_sentiment. Jika pengoptimal memilih paket kueri paralel, layanan ML AWS dapat dipanggil secara batch dan paralel. Anda dapat menggunakan parameter berikut dengan fungsi aws_comprehend.detect_sentiment untuk mendapatkan rencana dengan paralelisme empat arah.

-- If you change either of the following two parameters, you must restart
-- the database instance for the changes to take effect.
--
-- SET max_worker_processes to 8;  -- default value is 8
-- SET max_parallel_workers to 8;  -- not greater than max_worker_processes

--
SET max_parallel_workers_per_gather to 4;  -- not greater than max_parallel_workers

-- You can set the parallel_workers storage parameter on the table that the data
-- for the ML function is coming from in order to manually override the degree of
-- parallelism that would otherwise be chosen by the query optimizer
--
ALTER TABLE yourTable SET (parallel_workers = 4);

-- Example query to exploit both batch-mode execution and parallel query
--
EXPLAIN (verbose, analyze, buffers, hashes) 
SELECT aws_comprehend.detect_sentiment(description, 'en')).*
FROM yourTable
WHERE id < 100;

Untuk mendalami tentang mengontrol kueri paralel, lihat Rencana paralel di dokumentasi PostgreSQL.

Menggunakan tampilan terwujud dan kolom terwujud

Ketika Anda memanggilAWSlayanan seperti SageMaker atau Amazon Comprehend dari database Anda, akun Anda dikenai biaya sesuai dengan kebijakan harga layanan tersebut. Guna meminimalkan biaya untuk akun Anda, Anda dapat mewujudkan hasil pemanggilan layanan AWS menjadi kolom terwujud sehingga layanan AWS tidak dipanggil lebih dari sekali per baris input. Jika diinginkan, Anda dapat menambahkan kolom dengan stempel waktu materializedAt untuk mencatat waktu saat kolom tersebut dibuat.

Latensi pernyataan INSERT baris tunggal biasa biasanya jauh lebih kecil daripada latensi pemanggilan fungsi mode batch. Dengan demikian, Anda mungkin tidak dapat memenuhi persyaratan latensi aplikasi Anda jika memanggil fungsi mode batch untuk setiap baris tunggal INSERT ​​yang dijalankan oleh aplikasi Anda. Untuk mewujudkan hasil pemanggilan layanan AWS menjadi kolom terwujud, aplikasi berperforma tinggi umumnya perlu mengisi kolom terwujud. Untuk melakukannya, aplikasi tersebut secara berkala mengeluarkan pernyataan UPDATE yang beroperasi pada batch baris pada waktu yang sama.

UPDATE menggunakan penguncian level baris yang dapat mempengaruhi aplikasi yang sedang berjalan. Jadi, Anda mungkin perlu menggunakan SELECT ... FOR UPDATE SKIP LOCKED, atau menggunakan MATERIALIZED VIEW.

Kueri Analitik yang beroperasi pada banyak baris secara real time dapat menggabungkan perwujudan mode batch dengan pemrosesan waktu nyata. Untuk melakukan ini, kueri ini mengumpulkan UNION ALL hasil yang telah diwujudkan sebelumnya dengan kueri di atas baris yang belum memiliki hasil yang terwujud. Dalam beberapa kasus, UNION ALL seperti itu diperlukan di banyak tempat, atau kueri dibuat oleh aplikasi pihak ketiga. Jika demikian, Anda dapat membuat VIEW untuk merangkum operasi UNION ALL sehingga detail ini tidak diekspos ke aplikasi SQL lainnya.

Anda bisa menggunakan tampilan terwujud untuk mewujudkan hasil dari pernyataan SELECT arbitrer pada snapshot sesuai waktunya. Anda juga dapat menggunakannya untuk menyegarkan tampilan material kapan saja di masa mendatang. Saat ini, PostgreSQL tidak mendukung refresh inkremental, sehingga setiap kali tampilan terwujud di-refresh, tampilan terwujud dihitung ulang sepenuhnya.

Anda dapat merefresh tampilan terwujud dengan opsi CONCURRENTLY, yang memperbarui konten tampilan terwujud tanpa mengambil kunci eksklusif. Melakukan hal ini memungkinkan aplikasi SQL membaca dari tampilan terwujud saat sedang di-refresh.

Pembelajaran Machine Learning Aurora

Untuk memantau fungsi dalam paket aws_ml, atur parameter track_functions kemudian buat kueri tampilan PostgreSQL pg_stat_user_functions.

Untuk informasi tentang pemantauan kinerja SageMaker operasi yang disebut dari fungsi pembelajaran mesin Aurora, lihatPantau Amazon SageMaker.

Untuk mengatur track_functions pada level sesi, jalankan perintah berikut.

SET track_functions = 'all';

Gunakan salah satu nilai berikut:

  • all - Lacak fungsi bahasa C dan fungsi bahasa SQL yang tidak ditempatkan sebaris. Untuk melacak fungsi aws_ml, gunakan all karena fungsi ini diimplementasikan di C.

  • pl - Lacak hanya fungsi bahasa prosedural.

  • none - Nonaktifkan pelacakan statistik fungsi.

Setelah mengaktifkan track_functions dan menjalankan fungsi ML yang ditentukan pengguna Anda, kueri tampilan pg_stat_user_functions untuk mendapatkan informasi. Tampilan tersebut mencakup jumlah calls, total_time, dan self_time untuk setiap fungsi. Untuk melihat statistik fungsi aws_sagemaker.invoke_endpoint dan aws_comprehend.detect_sentiment, filter hasil menurut nama skema yang diawali dengan aws_.

run your statement
SELECT * FROM pg_stat_user_functions WHERE schemaname LIKE 'aws_%';
SELECT pg_stat_reset();  -- To clear statistics

Untuk menemukan nama fungsi SQL Anda yang memanggil fungsi aws_sagemaker.invoke_endpoint, buat kueri kode sumber fungsi dalam tabel katalog pg_proc PostgreSQL.

SELECT proname FROM pg_proc WHERE prosrc LIKE '%invoke_endpoint%';

Menggunakan manajemen rencana kueri untuk memantau fungsi ML

Jika Anda mencatat rencana menggunakan ekstensi apg_plan_mgmt manajemen rencana kueri, selanjutnya Anda dapat menelusuri semua pernyataan dalam beban kerja Anda yang merujuk ke nama fungsi ini. Di pencarian, Anda dapat memeriksa plan_outline untuk melihat apakah eksekusi mode batch digunakan. Anda juga dapat membuat daftar statistik pernyataan seperti waktu pelaksanaan dan biaya rencana. Rencana yang menggunakan pemindaian fungsi mode batch berisi operator FuncScan dalam kerangka rencana. Fungsi yang tidak dijalankan sebagai gabungan tidak berisi operator FuncScan.

Untuk lebih lanjut tentang manajemen rencana kueri, lihat Mengelola rencana eksekusi kueri untuk Aurora PostgreSQL.

Untuk menemukan panggilan ke fungsi aws_sagemaker.invoke_endpoint yang tidak menggunakan mode batch, gunakan pernyataan berikut.

\dx apg_plan_mgmt

SELECT sql_hash, plan_hash, status, environment_variables,
       sql_text::varchar(50), plan_outline 
FROM pg_proc, apg_plan_mgmt.dba_plans
WHERE
    prosrc LIKE '%invoke_endpoint%' AND
    sql_text LIKE '%' || proname || '%' AND
    plan_outline NOT LIKE '%"FuncScan"%';

Contoh sebelumnya menelusuri semua pernyataan dalam beban kerja Anda yang memanggil fungsi SQL yang pada gilirannya memanggil fungsi aws_sagemaker.invoke_endpoint.

Untuk memperoleh statistik waktu proses terperinci untuk setiap pernyataan ini, panggil fungsi apg_plan_mgmt.get_explain_stmt.

SELECT apg_plan_mgmt.get_explain_stmt(sql_hash, plan_hash, 'analyze,verbose,buffers')
FROM pg_proc, apg_plan_mgmt.dba_plans
WHERE
    prosrc LIKE '%invoke_endpoint%' AND
    sql_text LIKE '%' || proname || '%' AND
    plan_outline NOT LIKE '%"FuncScan"%';

Referensi fungsi PostgreSQL untuk machine learning Aurora

Fungsi

  • aws_comprehend.detect_sentiment
  • aws_sagemaker.invoke_endpoint

aws_comprehend.detect_sentiment

Melakukan analisis sentimen menggunakan Amazon Comprehend. Untuk informasi lebih lanjut tentang penggunaan, lihat Menggunakan Amazon Comprehend untuk pemrosesan bahasa alami.

Sintaks

aws_comprehend.detect_sentiment (
    IN input_text varchar,      
    IN language_code varchar,  
    IN max_rows_per_batch int, 
    OUT sentiment varchar, 
    OUT confidence real)   
)

Parameter Output

sentimen

Sentimen teks. Nilai yang valid adalah POSITIVE, NEGATIVE, NEUTRAL, atau MIXED.

kepercayaan

Tingkat kepercayaan pada nilai sentiment. Nilainya berkisar antara 1,0 untuk 100% hingga 0,0 untuk 0%.

aws_sagemaker.invoke_endpoint

Setelah Anda melatih model dan menyebarkannya ke produksi menggunakan SageMaker layanan, aplikasi klien Anda menggunakanaws_sagemaker.invoke_endpointberfungsi untuk mendapatkan kesimpulan dari model. Model harus di-host di titik akhir yang ditentukan dan harus berada di Wilayah AWS yang sama dengan instans database. Untuk informasi lebih lanjut tentang penggunaan, lihat Menggunakan SageMaker menjalankan model ML-mu sendiri.

Sintaks

aws_sagemaker.invoke_endpoint(
    IN endpoint_name varchar,   
    IN max_rows_per_batch int,
    VARIADIC model_input "any",
    OUT model_output varchar  
)

Parameter Input

endpoint_name

URL titik akhir yang tidak bergantung pada Wilayah AWS.

max_rows_per_batch

Jumlah baris maksimum per batch untuk pemrosesan mode batch. Untuk informasi selengkapnya, lihat Mengoptimalkan eksekusi mode batch untuk panggilan fungsi machine learning Aurora.

model_input

Satu atau beberapa parameter input untuk model ML. Ini bisa berupa jenis data apa pun.

PostgreSQL memungkinkan Anda menetapkan hingga 100 parameter input untuk suatu fungsi. Jenis data susunan harus satu dimensi, tetapi dapat berisi elemen sebanyak yang diharapkan oleh SageMaker model. Jumlah input ke SageMaker hanya dibatasi oleh SageMaker Batas ukuran pesan 6 MB.

Parameter Output

model_output

Parameter SageMaker Parameter output model, sebagai teks.

Catatan Penggunaan

Fungsi aws_sagemaker.invoke_endpoint hanya menghubungkan ke titik akhir model di Wilayah AWS yang sama. Jika instans database Anda memiliki replika dalam beberapaAWSWilayah, selalu menyebarkan setiap Amazon SageMaker model untuk semuaAWSWilayah.

Panggilan keaws_sagemaker.invoke_endpointdiautentikasi menggunakan SageMaker Peran IAM untuk instance database.

Titik akhir model SageMaker dicakup ke akun individu dan bukan publik. Parameterendpoint_nameURL tidak berisi ID akun. SageMaker menentukan ID akun dari token autentikasi yang disediakan oleh SageMaker Peran IAM dari contoh database.

Secara manual mengatur IAM role untuk SageMaker dan Amazon Comprehend menggunakanAWS CLI

Menyiapkan peran IAM untuk SageMaker atau Amazon Comprehend menggunakanAWS CLIatau API RDS terdiri dari langkah-langkah berikut:

  1. Buat kebijakan IAM untuk menentukan SageMaker titik akhir dapat dipanggil oleh klaster Aurora PostgreSQL Anda atau untuk mengaktifkan akses ke Amazon Comprehend.

  2. Buat IAM role guna mengizinkan klaster database Aurora PostgreSQL Anda mengakses layanan ML AWS. Lampirkan juga kebijakan IAM yang dibuat sebelum peran IAM yang dibuat di sini.

  3. Hubungkan IAM role yang Anda buat sebelum klaster database Aurora PostgreSQL untuk mengizinkan akses ke layanan ML AWS.

Topik

  • Membuat kebijakan IAM untuk mengakses SageMaker menggunakanAWS CLI
  • Membuat kebijakan IAM untuk mengakses Amazon Comprehend menggunakan AWS CLI
  • Membuat peran IAM untuk mengakses SageMaker dan Amazon Comprehend
  • Mengaitkan IAM role dengan klaster DB Aurora PostgreSQL menggunakan AWS CLI

Membuat kebijakan IAM untuk mengakses SageMaker menggunakanAWS CLI

Kebijakan berikut menambahkan izin yang diperlukan oleh Aurora PostgreSQL untuk menjalankan fungsi SageMaker atas nama Anda. Anda dapat menentukan semua SageMaker titik akhir yang Anda perlukan untuk diakses aplikasi database dari klaster Aurora PostgreSQL dalam satu kebijakan.

Kebijakan ini memungkinkan Anda menentukanAWSWilayah untuk SageMaker titik akhir. Namun, klaster Aurora PostgreSQL hanya dapat memanggil SageMaker model dikerahkan dalamAWSWilayah sebagai cluster.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAuroraToInvokeRCFEndPoint", "Effect": "Allow", "Action": "sagemaker:InvokeEndpoint", "Resource": "arn:aws:sagemaker:region:123456789012:endpoint/endpointName" } ] }

Perintah CLI AWS berikut membuat kebijakan IAM dengan opsi ini.

aws iam create-policy  --policy-name policy_name --policy-document '{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowAuroraToInvokeRCFEndPoint",
      "Effect": "Allow",
      "Action": "sagemaker:InvokeEndpoint",
      "Resource": "arn:aws:sagemaker:region:123456789012:endpoint/endpointName"
    }
  ]
}' 

Untuk langkah selanjutnya, lihat Membuat peran IAM untuk mengakses SageMaker dan Amazon Comprehend.

Membuat kebijakan IAM untuk mengakses Amazon Comprehend menggunakan AWS CLI

Kebijakan berikut menambahkan izin yang diperlukan oleh Aurora PostgreSQL untuk mengaktifkan Amazon Comprehend atas nama Anda.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowAuroraToInvokeComprehendDetectSentiment",
      "Effect": "Allow",
      "Action": [
        "comprehend:DetectSentiment",
        "comprehend:BatchDetectSentiment"
      ],
      "Resource": "*"
    }
  ]
}

Untuk membuat kebijakan IAM untuk memberikan akses ke Amazon Comprehend

  1. Buka konsol pengelolaan IAM.

  2. Di panel navigasi, pilih Kebijakan.

  3. Pilih Buat kebijakan.

  4. Pada tab Editor visual, pilih Pilih layanan, lalu pilih Pahami.

  5. Untuk Tindakan, pilih Deteksi Sentimen dan BatchDetectSentiment.

  6. Pilih Tinjau kebijakan.

  7. Untuk Nama, masukkan nama untuk kebijakan IAM Anda. Anda menggunakan nama ini saat membuat IAM role untuk dikaitkan dengan klaster DB Aurora Anda. Anda juga dapat menambahkan nilai Deskripsi opsional.

  8. Pilih Buat kebijakan.

Untuk langkah bersihnya, lihat Membuat peran IAM untuk mengakses SageMaker dan Amazon Comprehend.

Membuat peran IAM untuk mengakses SageMaker dan Amazon Comprehend

Setelah Anda membuat kebijakan IAM, buat IAM role yang dapat digunakan oleh klaster DB Aurora PostgreSQL bagi pengguna database Anda untuk mengakses layanan ML. Untuk membuat peran IAM, ikuti langkah-langkah yang dijelaskan di Membuat peran untuk mendelegasikan izin kepada pengguna IAM.

Lampirkan kebijakan sebelumnya ke peran IAM yang Anda buat. Untuk informasi selengkapnya, lihat Melampirkan kebijakan IAM ke pengguna atau peran IAM.

Untuk informasi lebih lanjut tentang peran IAM, lihat Peran IAM dalam Panduan Pengguna IAM.

Untuk langkah selanjutnya, lihat Mengaitkan IAM role dengan klaster DB Aurora PostgreSQL menggunakan AWS CLI.

Mengaitkan IAM role dengan klaster DB Aurora PostgreSQL menggunakan AWS CLI

Proses terakhir dalam menyiapkan akses IAM adalah mengaitkan IAM role dan kebijakan IAM dengan klaster DB Aurora PostgreSQL Anda. Lakukan hal berikut:

  1. Tambahkan peran ke daftar peran terkait untuk kluster DB.

    Untuk mengaitkan peran dengan klaster DB Anda, gunakan AWS Management Console atau perintah AWS CLI add-role-to-db-cluster.

    • Untuk menambahkan IAM role untuk DB PostgreSQLgugusmenggunakan konsol

      1. Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

      2. Pilih nama klaster DB PostgreSQL untuk menampilkan detailnya.

      3. Pada tab Konektivitas & keamanan, di bagian Kelola peran IAM , pilih peran yang akan ditambahkan pada Tambahkan peran IAM ke kluster .

      4. Dalam Fitur, pilih SageMaker atau Comprehend.

      5. Pilih Tambahkan peran.

    • Untuk menambahkan IAM role untuk klaster DB PostgreSQL menggunakan CLI

      Gunakan perintah berikut untuk menambahkan peran ke klaster DB PostgreSQL dengan nama my-db-cluster. Ganti your-role-arn dengan peran ARN yang Anda catat di langkah sebelumnya. Untuk nilai opsi --feature-name, gunakan SageMaker, Comprehend, atau s3Export bergantung pada layanan mana yang ingin Anda gunakan.

      contoh

      Untuk Linux, macOS, atau Unix:

      aws rds add-role-to-db-cluster \
         --db-cluster-identifier my-db-cluster \
         --feature-name external-service \
         --role-arn your-role-arn   \
         --region your-region

      Untuk Windows:

      aws rds add-role-to-db-cluster ^
         --db-cluster-identifier my-db-cluster ^
         --feature-name external-service ^
         --role-arn your-role-arn ^
         --region your-region     

  2. Tetapkan parameter tingkat klaster untuk setiap layanan ML AWS ke ARN untuk IAM role terkait.

    Gunakan electroencephalographic, miscomprehended, atau kedua parameter tersebut bergantung pada layanan ML AWS mana yang ingin Anda gunakan dengan klaster Aurora Anda.

    Parameter tingkat kluster dikelompokkan ke dalam grup parameter kluster DB. Untuk mengatur parameter kluster sebelumnya, gunakan grup kluster DB kustom yang sudah ada atau buat yang baru. Untuk membuat grup parameter kaster DB baru, panggil perintah create-db-cluster-parameter-group dari AWS CLI, misalnya:

    aws rds create-db-cluster-parameter-group  --db-cluster-parameter-group-name AllowAWSAccessToExternalServices \
         --db-parameter-group-family aurora-postgresql-group --description "Allow access to Amazon S3, Amazon SageMaker, and Amazon Comprehend"

    Tetapkan parameter atau parameter tingkat kluster yang sesuai dan nilai ARN peran IAM terkait di grup parameter kluster DB Anda. Lakukan hal berikut.

    aws rds modify-db-cluster-parameter-group \
      --db-cluster-parameter-group-name AllowAWSAccessToExternalServices \
      --parameters "ParameterName=aws_default_s3_role,ParameterValue=arn:aws:iam::123456789012:role/AllowAuroraS3Role,ApplyMethod=pending-reboot" \
      --parameters "ParameterName=aws_default_sagemaker_role,ParameterValue=arn:aws:iam::123456789012:role/AllowAuroraSageMakerRole,ApplyMethod=pending-reboot" \
      --parameters "ParameterName=aws_default_comprehend_role,ParameterValue=arn:aws:iam::123456789012:role/AllowAuroraComprehendRole,ApplyMethod=pending-reboot"

    Ubah kluster DB untuk menggunakan grup parameter kluster DB baru. Lalu, lakukan boot ulang pada klaster. Berikut ini menunjukkan caranya.

    aws rds modify-db-cluster --db-cluster-identifier your_cluster_id --db-cluster-parameter-group-nameAllowAWSAccessToExternalServices 
    aws rds failover-db-cluster --db-cluster-identifier your_cluster_id

Saat instans di-boot ulang, peran IAM Anda akan dikaitkan dengan kluster DB Anda.

Siapakah yang mengembangkan PostgreSQL?

PostgreSQL adalah alat yang dipakai untuk beragam aktivitas terkait pengolahan data, salah satunya seperti mereplikasi database. Sistem ini dikembangkan pada tahun 1986 oleh Michael Stonebraker, seorang professor komputer dan IT.

Apa kegunaan PostgreSQL?

PostgreSQL adalah sebuah sistem basis data yang disebarluaskan secara bebas menurut Perjanjian lisensi BSD. Peranti lunak ini merupakan salah satu basis data yang paling banyak digunakan saat ini, selain MySQL dan Oracle. PostgreSQL menyediakan fitur yang berguna untuk replikasi basis data.

PostgreSQL menggunakan bahasa apa?

PostgreSQL mendukung beberapa bahasa pemrograman seperti C/C++, Java, NodeJS, PHP, Python, Ruby, .NET, Delphi hingga Perl.

Kenapa harus PostgreSQL?

Sistem manajemen database ini memiliki performa stabil, keamanan tinggi, serta fitur melimpah. PostgreSQL adalah database yang banyak digunakan pada web app, aplikasi mobile, dan aplikasi analytics. Itulah kenapa aplikasi yang membutuhkan pengolahan data yang lebih kompleks akan lebih cocok menggunakan postgreSQL.