Memohon AWS Lambda - Amazon Aurora

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memohon AWS Lambda

AWS Lambda adalah layanan komputasi berbasis peristiwa yang memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server. Ini tersedia untuk digunakan dengan banyak AWS Misalnya, Anda dapat menggunakan fungsi Lambda untuk memproses pemberitahuan peristiwa dari basis data, atau memuat data dari file setiap kali file baru diunggah ke Amazon S3. Untuk mempelajari lebih lanjut tentang Lambda, lihat Apa itu AWS Lambda? di AWS Lambda Panduan Pengembang.

catatan

Memohon AWS Lambda fungsi didukung di Aurora Postgre SQL 11.9 dan lebih tinggi (termasuk Aurora Serverless v2).

Menyiapkan Aurora Postgre SQL RDS untuk Postgre SQL bekerja dengan fungsi Lambda adalah proses multi-langkah yang melibatkan AWS Lambda,, Anda IAMVPC, dan cluster Aurora Postgre SQL DB Anda instans Postgre DB. SQL Berikut ini, Anda dapat menemukan ringkasan langkah-langkah yang diperlukan.

Untuk informasi selengkapnya tentang fungsi Lambda, lihat Memulai Lambda dan AWS Yayasan Lambda di AWS Lambda Panduan Pengembang.

Langkah 1: Konfigurasikan cluster Aurora Postgre SQL DB Anda untuk instance Postgre DB RDS keluar ke AWS Lambda

Fungsi Lambda selalu berjalan di dalam Amazon VPC yang dimiliki oleh AWS Lambda layanan. Lambda menerapkan akses jaringan dan aturan keamanan untuk ini VPC dan memelihara dan memantau secara otomatis. VPC Cluster Aurora Postgre SQL DB Anda lalu lintas jaringan ke layanan Lambda. VPC Cara Anda mengonfigurasi ini bergantung pada apakah instans DB primer klaster DB Aurora Anda bersifat publik atau pribadi.

  • Cluster SQL DB Aurora Postgre Publik DB instans DB utama cluster tersebut. PubliclyAccessible true Untuk menemukan nilai properti ini, Anda dapat menggunakan describe-db-instances AWS CLI perintah. Atau, Anda dapat menggunakan AWS Management Console untuk membuka tab Konektivitas & keamanan dan memeriksa apakah dapat diakses publik adalah Ya. Untuk memverifikasi bahwa instans ada di subnet publik AndaVPC, Anda dapat menggunakan AWS Management Console atau AWS CLI.

    Untuk mengatur akses ke Lambda, Anda menggunakan AWS Management Console atau AWS CLI untuk membuat aturan keluar pada grup VPC keamanan Anda. Aturan keluar menentukan yang TCP dapat menggunakan port 443 untuk mengirim paket ke IPv4 alamat apa pun (0.0.0.0/0).

  • Cluster Aurora Postgre SQL DB pribadi — Dalam hal ini, properti "PubliclyAccessible" instance ada false atau berada dalam subnet pribadi. Untuk memungkinkan instance bekerja dengan Lambda, Anda dapat menggunakan gateway Network Address Translation)NAT. Untuk informasi lebih lanjut, lihat NATgateway. Atau, Anda dapat mengonfigurasi VPC dengan VPC titik akhir untuk Lambda. Untuk informasi selengkapnya, lihat VPCtitik akhir di Panduan VPC Pengguna Amazon. Titik akhir merespons panggilan yang dilakukan oleh cluster DB Aurora Postgre Anda untuk instans Postgre SQL DB ke fungsi Anda. SQL

Anda sekarang VPC dapat berinteraksi dengan AWS Lambda VPCdi tingkat jaringan. Selanjutnya, Anda mengonfigurasi izin menggunakanIAM.

Langkah 2: Konfigurasikan IAM untuk cluster Aurora Postgre SQL DB Anda instans Postgre DB dan SQL AWS Lambda

Memanggil fungsi Lambda dari . Pendekatan ini memberikan hak istimewa klaster DB untuk menginvokasi fungsi Lambda yang ditentukan atas nama Anda. Langkah-langkah berikut menunjukkan kepada Anda bagaimana melakukan ini menggunakan AWS CLI.

Untuk mengonfigurasi IAM izin untuk menggunakan cluster Anda dengan Lambda
  1. Gunakan kebijakan create- AWS CLI perintah untuk membuat IAM kebijakan yang memungkinkan cluster Aurora Postgre SQL DB Anda untuk instance Postgre SQL DB RDS yang ditentukan. (ID pernyataan (Sid) adalah deskripsi opsional untuk pernyataan kebijakan Anda dan tidak berpengaruh pada penggunaan.) Kebijakan ini memberi klaster DB Aurora izin minimum yang diperlukan untuk menginvokasi fungsi Lambda yang ditentukan.

    aws iam create-policy --policy-name rds-lambda-policy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessToExampleFunction", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:aws-region:444455556666:function:my-function" } ] }'

    Sebagai alternatif, Anda dapat menggunakan kebijakan AWSLambdaRole yang ditentukan sebelumnya yang memungkinkan Anda menginvokasi fungsi Lambda apa pun. Untuk informasi selengkapnya, lihat Kebijakan berbasis identitas IAM untuk Lambda

  2. Gunakan create-role AWS CLI perintah untuk membuat IAM peran yang dapat diasumsikan oleh kebijakan saat runtime.

    aws iam create-role --role-name rds-lambda-role --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
  3. Menerapkan kebijakan ke peran dengan menggunakan attach-role-policy AWS CLI perintah.

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::444455556666:policy/rds-lambda-policy \ --role-name rds-lambda-role --region aws-region
  4. https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/add-role-to-db-cluster.html AWS CLI perintah. Langkah terakhir ini memungkinkan pengguna basis data klaster DB menginvokasi fungsi Lambda.

    aws rds add-role-to-db-cluster \ --db-cluster-identifier my-cluster-name \ --feature-name Lambda \ --role-arn arn:aws:iam::444455556666:role/rds-lambda-role \ --region aws-region

Dengan konfigurasi VPC dan IAM konfigurasi selesai, Anda sekarang dapat menginstal aws_lambda ekstensi. (Perhatikan bahwa Anda dapat menginstal ekstensi kapan saja, tetapi sampai Anda menyiapkan VPC dukungan dan IAM hak istimewa yang benar, aws_lambda ekstensi tidak menambahkan apa pun ke Aurora SQL Postgre DB Anda untuk kemampuan instans Postgre DB.) SQL

Untuk menggunakan AWS Lambda Ekstensi ini menyediakan cluster Aurora Postgre SQL DB Anda untuk instans Postgre DB Lambda dari Postgre. SQL

  1. Connect ke cluster Aurora Postgre SQL DB Anda sebagai pengguna dengan hak istimewa. rds_superuser Pengguna postgres default ditampilkan dalam contoh.

    psql -h cluster-instance.444455556666.aws-region.rds.amazonaws.com -U postgres -p 5432
  2. Instal ekstensi aws_lambda. Ekstensi aws_commons juga diperlukan. Ini menyediakan fungsi pembantu aws_lambda dan banyak ekstensi Aurora lainnya untuk Postgre. SQL Jika belum ada di SQLDBcluster Aurora Postgre Anda RDS untuk SQLDB instance Postgre dengan seperti yang ditunjukkan berikut. aws_lambda

    CREATE EXTENSION IF NOT EXISTS aws_lambda CASCADE; NOTICE: installing required extension "aws_commons" CREATE EXTENSION

aws_lambdaEkstensi dipasang di instans DB utama klaster Aurora Postgre SQL DB Anda. Anda sekarang dapat membuat struktur kemudahan untuk menginvokasi fungsi Lambda.

Anda dapat menggunakan fungsi pembantu di aws_commons ekstensi untuk menyiapkan entitas yang dapat Anda panggil dengan lebih mudah dari Postgre. SQL Untuk melakukannya, Anda harus memiliki informasi berikut tentang fungsi Lambda:

Untuk menyimpan informasi nama fungsi Lambda, Anda menggunakan fungsi aws_commons.create_lambda_function_arn. Fungsi pembantu ini menciptakan struktur komposit aws_commons._lambda_function_arn_1 dengan detail yang dibutuhkan oleh fungsi invokasi. Berikut ini, Anda dapat menemukan tiga pendekatan alternatif untuk menyiapkan struktur komposit ini.

SELECT aws_commons.create_lambda_function_arn( 'my-function', 'aws-region' ) AS aws_lambda_arn_1 \gset
SELECT aws_commons.create_lambda_function_arn( '111122223333:function:my-function', 'aws-region' ) AS lambda_partial_arn_1 \gset
SELECT aws_commons.create_lambda_function_arn( 'arn:aws:lambda:aws-region:111122223333:function:my-function' ) AS lambda_arn_1 \gset

Salah satu dari nilai ini dapat digunakan dalam panggilan ke fungsi aws_lambda.invoke. Sebagai contoh, lihat .

Fungsi aws_lambda.invoke berperilaku sinkron atau asinkron, bergantung pada invocation_type. Dua alternatif untuk parameter ini adalah RequestResponse (default) dan Event, sebagai berikut.

  • RequestResponse – Jenis invokasi ini sinkron. Ini adalah perilaku default saat panggilan dilakukan tanpa menentukan jenis invokasi. Payload respons mencakup hasil dari fungsi aws_lambda.invoke. Gunakan jenis invokasi ini jika alur kerja Anda perlu menerima hasil dari fungsi Lambda sebelum melanjutkan.

  • Event – Jenis invokasi ini asinkron. Respons tidak mencakup payload yang berisi hasil. Gunakan jenis invokasi ini jika alur kerja Anda tidak memerlukan hasil dari fungsi Lambda untuk melanjutkan pemrosesan.

Sebagai pengujian sederhana terhadap pengaturan Anda, Anda dapat terhubung ke instans DB menggunakan psql dan menginvokasi contoh fungsi dari baris perintah. Misalkan Anda memiliki salah satu fungsi dasar yang disiapkan pada layanan Lambda, seperti fungsi Python sederhana yang diperlihatkan pada tangkapan layar berikut.

Contoh fungsi Lambda yang ditunjukkan pada AWS CLI untuk AWS Lambda
Untuk menginvokasi contoh fungsi
  1. Connect ke instans DB utama Anda menggunakan psql ataupgAdmin.

    psql -h cluster.444455556666.aws-region.rds.amazonaws.com -U postgres -p 5432
  2. Memanggil fungsi menggunakan nyaARN.

    SELECT * from aws_lambda.invoke(aws_commons.create_lambda_function_arn('arn:aws:lambda:aws-region:444455556666:function:simple', 'us-west-1'), '{"body": "Hello from Postgres!"}'::json );

    Respons-nya terlihat sebagai berikut.

    status_code | payload | executed_version | log_result -------------+-------------------------------------------------------+------------------+------------ 200 | {"statusCode": 200, "body": "\"Hello from Lambda!\""} | $LATEST | (1 row)

Jika upaya invokasi tidak berhasil, lihat Pesan kesalahan fungsi Lambda .

Langkah 6: Berikan pengguna lain izin untuk menginvokasi fungsi Lambda

Dalam langkah ini, hanya Anda sebagai rds_superuser yang dapat menginvokasi fungsi Lambda. Untuk mengizinkan pengguna lain menginvokasi fungsi apa pun yang Anda buat, Anda harus memberi mereka izin.

Untuk memberi pengguna lain izin untuk menginvokasi fungsi Lambda
  1. Connect ke instans DB utama Anda menggunakan psql ataupgAdmin.

    psql -h cluster.444455556666.aws-region.rds.amazonaws.com -U postgres -p 5432
  2. Jalankan SQL perintah berikut:

    postgres=> GRANT USAGE ON SCHEMA aws_lambda TO db_username; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA aws_lambda TO db_username;