

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
<a name="configure-cross-account-access-to-amazon-dynamodb"></a>

*Shashi Dalmia, Imhoertha Ojior, dan Esteban Serna Parra, Amazon Web Services*

## Ringkasan
<a name="configure-cross-account-access-to-amazon-dynamodb-summary"></a>

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](https://aws.amazon.com/solutions/guidance/workload-isolation-on-aws/?did=sl_card&trk=sl_card) untuk meminimalkan ancaman keamanan dan memenuhi persyaratan kepatuhan. Menerapkan strategi isolasi beban kerja seringkali memerlukan akses lintas akun dan lintas wilayah ke sumber daya DynamoDB dengan menggunakan kebijakan berbasis identitas (IAM). AWS Identity and Access Management Ini melibatkan pengaturan izin IAM dan membangun hubungan kepercayaan antara. Akun AWS

[Kebijakan berbasis sumber daya untuk DynamoDB sangat menyederhanakan postur keamanan untuk beban kerja](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html) 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
<a name="configure-cross-account-access-to-amazon-dynamodb-prereqs"></a>

**Prasyarat**
+ Dua aktif Akun AWS. Pola ini mengacu pada akun ini sebagai *Akun A* dan *Akun B*.
+ AWS Command Line Interface (AWS CLI) [diinstal](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) dan [dikonfigurasi](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) 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](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat halaman [titik akhir dan kuota Layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

## Arsitektur
<a name="configure-cross-account-access-to-amazon-dynamodb-architecture"></a>

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.

![\[Menggunakan izin IAM untuk mengakses tabel DynamoDB di akun yang sama.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/bfc32fe8-5db0-4cac-a30f-b870a1a82875/images/cbb009eb-422d-4833-a1bc-0c571d83c21f.png)


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.

![\[Menggunakan kebijakan berbasis sumber daya untuk mengakses tabel DynamoDB di akun yang berbeda.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/bfc32fe8-5db0-4cac-a30f-b870a1a82875/images/9f9165a8-b767-4427-a2ae-31b5b8c83326.png)


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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html) izin ke peran eksekusi Lambda di Akun B.](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)

## Alat
<a name="configure-cross-account-access-to-amazon-dynamodb-tools"></a>

**Layanan AWS**
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan terukur.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)adalah 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](#configure-cross-account-access-to-amazon-dynamodb-additional) 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
<a name="configure-cross-account-access-to-amazon-dynamodb-best-practices"></a>
+ Ikuti [praktik terbaik untuk kebijakan berbasis sumber daya dalam](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-best-practices.html) dokumentasi DynamoDB.
+ Ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat [Berikan hak istimewa terkecil](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) dan [praktik terbaik Keamanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dalam dokumentasi IAM.

## Epik
<a name="configure-cross-account-access-to-amazon-dynamodb-epics"></a>

### Buat kebijakan dan peran IAM untuk fungsi Lambda di Akun B
<a name="create-an-iam-policy-and-role-for-the-lam-function-in-account-b"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat kebijakan di Akun B. | Kebijakan IAM ini memungkinkan [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)tindakan untuk tabel DynamoDB di Akun A.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-amazon-dynamodb.html) | AWS Umum | 
| Buat peran di Akun B. | Fungsi Lambda di Akun B menggunakan peran IAM ini untuk mengakses tabel DynamoDB di Akun A.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-amazon-dynamodb.html)Untuk informasi selengkapnya tentang membuat peran, lihat [dokumentasi IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html). | AWS Umum | 
| Perhatikan ARN peran. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-amazon-dynamodb.html) | AWS Umum | 

### Buat tabel DynamoDB di Akun A
<a name="create-a-ddb-table-in-account-a"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat tabel DynamoDB. | Gunakan AWS CLI perintah berikut untuk membuat tabel DynamoDB.<pre> aws dynamodb create-table \<br />    --table-name Table-Account-A \<br />    --attribute-definitions \<br />      AttributeName=category,AttributeType=S \<br />      AttributeName=item,AttributeType=S \<br />    --key-schema \<br />      AttributeName=category,KeyType=HASH \<br />      AttributeName=item,KeyType=RANGE \<br />    --provisioned-throughput \<br />      ReadCapacityUnits=5,WriteCapacityUnits=5 \<br />    --resource-policy \<br />      '{         <br />          "Version": "2012-10-17",		 	 	 <br />          "Statement": [<br />            {                    <br />               "Sid": "Statement1",<br />               "Effect": "Allow",<br />               "Principal": {<br />                  "AWS": "arn:aws:iam::<Account-B-ID>:role/<Role-Name>"<br />               },<br />               "Action": "dynamodb:PutItem",<br />               "Resource": "arn:aws:dynamodb:<Region>:<Account-A-ID>:table/Table-Account-A"<br />            }            <br />         ]<br />      }'</pre>Ganti yang berikut ini dalam contoh kode ini:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-amazon-dynamodb.html)Anda menentukan konfigurasi kebijakan berbasis sumber daya dalam `create-table` pernyataan menggunakan tanda. `--resource-policy` Kebijakan ini mengacu pada ARN untuk tabel DynamoDB di Akun A.Untuk informasi selengkapnya tentang membuat tabel, lihat dokumentasi [DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStartedDynamoDB.html). | AWS Umum | 

### Buat fungsi Lambda di Akun B
<a name="create-a-lam-function-in-account-b"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat fungsi Lambda untuk menulis data ke DynamoDB. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-amazon-dynamodb.html)[Untuk informasi selengkapnya tentang membuat fungsi Lambda, lihat dokumentasi Lambda.](https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html) | AWS Umum | 

### Bersihkan
<a name="clean-up"></a>


| 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-amazon-dynamodb.html) | AWS Umum | 

## Pemecahan masalah
<a name="configure-cross-account-access-to-amazon-dynamodb-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Saat membuat fungsi Lambda, Anda menerima kesalahan. `ResourceNotFoundException` | Konfirmasikan bahwa Anda telah memasukkan Wilayah AWS dan ID Akun A. Ini adalah bagian dari ARN untuk tabel DynamoDB. | 

## Sumber daya terkait
<a name="configure-cross-account-access-to-amazon-dynamodb-resources"></a>
+ [Memulai dengan DynamoDB (dokumentasi](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStartedDynamoDB.html) DynamoDB)
+ [Memulai dengan Lambda (dokumentasi](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) Lambda)
+ [Menggunakan kebijakan berbasis sumber daya untuk DynamoDB (dokumentasi DynamoDB)](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html)
+ [Membuat kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) (dokumentasi IAM)
+ [Logika evaluasi kebijakan lintas akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html) (dokumentasi IAM)
+ [Referensi elemen kebijakan IAM JSON (dokumentasi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) IAM)

## Informasi tambahan
<a name="configure-cross-account-access-to-amazon-dynamodb-additional"></a>

*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.