Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengonfigurasikan akses lintas akun ke Amazon DynamoDB
Shashi Dalmia, Imhoertha Ojior, dan Esteban Serna Parra, Amazon Web Services
Ringkasan
Pola ini menjelaskan langkah-langkah untuk mengonfigurasi akses lintas akun ke Amazon DynamoDB dengan menggunakan kebijakan berbasis sumber daya. Untuk beban kerja yang menggunakan DynamoDB, semakin umum menggunakan strategi isolasi beban kerja
Kebijakan berbasis sumber daya untuk DynamoDB sangat menyederhanakan postur keamanan untuk beban kerja lintas akun. Pola ini menyediakan langkah-langkah dan kode sampel untuk menunjukkan bagaimana Anda dapat mengkonfigurasi AWS Lambda fungsi dalam satu Akun AWS untuk menulis data ke tabel database DynamoDB di akun yang berbeda.
Prasyarat dan batasan
Prasyarat
Dua aktif Akun AWS. Pola ini mengacu pada akun ini sebagai Akun A dan Akun B.
AWS Command Line Interface (AWS CLI) diinstal dan dikonfigurasi untuk mengakses Akun A, untuk membuat tabel DynamoDB. Langkah-langkah lain dalam pola ini memberikan instruksi untuk menggunakan konsol IAM, DynamoDB, dan Lambda. Jika Anda berencana untuk menggunakannya, AWS CLI konfigurasikan untuk mengakses kedua akun.
Batasan
Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat Layanan AWS berdasarkan Wilayah
. Untuk titik akhir tertentu, lihat halaman titik akhir dan kuota Layanan, dan pilih tautan untuk layanan.
Arsitektur
Diagram berikut menunjukkan arsitektur akun tunggal. AWS Lambda, Amazon Elastic Compute Cloud (Amazon EC2), dan DynamoDB semuanya berada di akun yang sama. Dalam skenario ini, fungsi Lambda dan EC2 instans Amazon dapat mengakses DynamoDB. Untuk memberikan akses ke tabel DynamoDB, Anda dapat membuat kebijakan berbasis identitas di IAM, atau Anda dapat membuat kebijakan berbasis sumber daya di DynamoDB.

Diagram berikut menunjukkan arsitektur multi-akun. Jika sumber daya dalam satu Akun AWS memerlukan akses ke tabel DynamoDB di akun lain, Anda perlu menyiapkan kebijakan berbasis sumber daya di DynamoDB untuk memberikan akses yang diperlukan. Misalnya, dalam diagram berikut, akses ke tabel DynamoDB di Akun A diberikan ke fungsi Lambda di Akun B dengan menggunakan kebijakan berbasis sumber daya.

Pola ini menjelaskan akses lintas akun antara Lambda dan DynamoDB. Anda dapat menggunakan langkah serupa untuk yang lain Layanan AWS jika izin yang sesuai dikonfigurasi di kedua akun. Misalnya, jika ingin memberikan akses fungsi Lambda ke bucket Amazon Simple Storage Service (Amazon S3) di Akun A, Anda dapat membuat kebijakan berbasis sumber daya di Amazon S3 dan menambahkan izin ke peran eksekusi Lambda di Akun B.
Alat
Layanan AWS
Amazon DynamoDB adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan terukur.
AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
Kode
Pola ini mencakup kode sampel di bagian Informasi tambahan untuk menunjukkan bagaimana Anda dapat mengonfigurasi fungsi Lambda di Akun B untuk menulis ke tabel DynamoDB di Akun A. Kode disediakan hanya untuk tujuan ilustrasi dan pengujian. Jika Anda menerapkan pola ini di lingkungan produksi, gunakan kode sebagai referensi, dan sesuaikan untuk lingkungan Anda sendiri.
Praktik terbaik
Ikuti praktik terbaik untuk kebijakan berbasis sumber daya dalam dokumentasi DynamoDB.
Ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat Berikan hak istimewa terkecil dan praktik terbaik Keamanan dalam dokumentasi IAM.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat kebijakan di Akun B. | Kebijakan IAM ini memungkinkan PutItemtindakan untuk tabel DynamoDB di Akun A.
| AWS Umum |
Buat peran di Akun B. | Fungsi Lambda di Akun B menggunakan peran IAM ini untuk mengakses tabel DynamoDB di Akun A.
Untuk informasi selengkapnya tentang membuat peran, lihat dokumentasi IAM. | AWS Umum |
Perhatikan ARN peran. |
| AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat tabel DynamoDB. | Gunakan AWS CLI perintah berikut untuk membuat tabel DynamoDB.
Ganti yang berikut ini dalam contoh kode ini:
catatanAnda menentukan konfigurasi kebijakan berbasis sumber daya dalam Untuk informasi selengkapnya tentang membuat tabel, lihat dokumentasi DynamoDB. | AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat fungsi Lambda untuk menulis data ke DynamoDB. |
Untuk informasi selengkapnya tentang membuat fungsi Lambda, lihat dokumentasi Lambda. | AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Hapus sumber daya. | Untuk menghindari timbulnya biaya yang terkait dengan sumber daya yang dibuat dalam pola ini, lakukan hal berikut untuk menghapus sumber daya ini:
| AWS Umum |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Saat membuat fungsi Lambda, Anda menerima kesalahan. | Konfirmasikan bahwa Anda telah memasukkan Wilayah AWS dan ID Akun A. Ini adalah bagian dari ARN untuk tabel DynamoDB. |
Sumber daya terkait
Memulai dengan DynamoDB (dokumentasi DynamoDB)
Menggunakan kebijakan berbasis sumber daya untuk DynamoDB (dokumentasi DynamoDB)
Membuat kebijakan IAM (dokumentasi IAM)
Logika evaluasi kebijakan lintas akun (dokumentasi IAM)
Informasi tambahan
Kode sampel
import boto3 from datetime import datetime dynamodb_client = boto3.client('dynamodb') def lambda_handler(event, context): now = datetime.now().isoformat() data = dynamodb_client.put_item(TableName='arn:aws:dynamodb:<Region>:<Account-A-ID>:table/Table-Account-A', Item={"category": {"S": "Fruit"},"item": {"S": "Apple"},"time": {"S": now}}) return data
catatan
Ketika klien DynamoDB dipakai, ARN dari tabel DynamoDB disediakan bukan nama tabel. Ini diperlukan agar fungsi Lambda terhubung ke tabel DynamoDB yang benar saat dijalankan.