Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Mengakses DAX lintas akun AWS

Mode fokus
Mengakses DAX lintas akun AWS - Amazon DynamoDB

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

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

Bayangkan Anda memiliki klaster DynamoDB Accelerator DAX () yang berjalan di AWS satu akun (akun A), dan DAX klaster harus dapat diakses dari instans Amazon Elastic Compute Cloud (EC2Amazon) di akun AWS lain (akun B). Dalam tutorial ini, Anda melakukannya dengan meluncurkan sebuah EC2 instance di akun B dengan IAM peran dari akun B. Anda kemudian menggunakan kredenal keamanan sementara dari EC2 instance untuk mengambil IAM peran dari akun A. Akhirnya, Anda menggunakan kredenal keamanan sementara dari asumsi IAM peran di akun A untuk membuat panggilan aplikasi melalui koneksi VPC peering Amazon ke DAX cluster di akun A. Untuk melakukan tugas-tugas ini, Anda akan memerlukan akses administratif di kedua akun. AWS

penting

Tidak mungkin untuk memiliki DAX cluster mengakses tabel DynamoDB dari akun yang berbeda.

Mengatur IAM

  1. Buat file teks bernama AssumeDaxRoleTrust.json dengan konten berikut, yang EC2 memungkinkan Amazon bekerja atas nama Anda.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Di akun B, buat peran yang EC2 dapat digunakan Amazon saat meluncurkan instance.

    aws iam create-role \ --role-name AssumeDaxRole \ --assume-role-policy-document file://AssumeDaxRoleTrust.json
  3. Buat file teks bernama AssumeDaxRolePolicy.json dengan konten berikut, yang memungkinkan kode berjalan pada EC2 instance di akun B untuk mengambil IAM peran dalam akun A. Ganti accountA dengan ID aktual akun A.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::accountA:role/DaxCrossAccountRole" } ] }
  4. Tambahkan kebijakan tersebut ke peran yang baru Anda buat.

    aws iam put-role-policy \ --role-name AssumeDaxRole \ --policy-name AssumeDaxRolePolicy \ --policy-document file://AssumeDaxRolePolicy.json
  5. Buat profil instans untuk mengizinkan instans menggunakan peran.

    aws iam create-instance-profile \ --instance-profile-name AssumeDaxInstanceProfile
  6. Kaitkan peran dengan profil instans.

    aws iam add-role-to-instance-profile \ --instance-profile-name AssumeDaxInstanceProfile \ --role-name AssumeDaxRole
  7. Buat file teks bernama DaxCrossAccountRoleTrust.json berisi konten berikut, yang mengizinkan akun B mengambil peran akun A. Ganti accountB dengan ID aktual akun B.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountB:role/AssumeDaxRole" }, "Action": "sts:AssumeRole" } ] }
  8. Di akun A, buat peran yang dapat diambil oleh akun B.

    aws iam create-role \ --role-name DaxCrossAccountRole \ --assume-role-policy-document file://DaxCrossAccountRoleTrust.json
  9. Buat file teks bernama DaxCrossAccountPolicy.json yang memungkinkan akses ke DAX cluster. Ganti dax-cluster-arn dengan Amazon Resource Name (ARN) yang benar dari DAX cluster Anda.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan", "dax:PutItem", "dax:UpdateItem", "dax:DeleteItem", "dax:BatchWriteItem", "dax:ConditionCheckItem" ], "Resource": "dax-cluster-arn" } ] }
  10. Di akun A, tambahkan kebijakan ke peran tersebut.

    aws iam put-role-policy \ --role-name DaxCrossAccountRole \ --policy-name DaxCrossAccountPolicy \ --policy-document file://DaxCrossAccountPolicy.json

Mengatur VPC

  1. Temukan grup subnet dari DAX cluster akun A. Ganti cluster-name dengan nama DAX cluster yang harus diakses akun B.

    aws dax describe-clusters \ --cluster-name cluster-name --query 'Clusters[0].SubnetGroup'
  2. Dengan menggunakan itusubnet-group, temukan clusterVPC.

    aws dax describe-subnet-groups \ --subnet-group-name subnet-group \ --query 'SubnetGroups[0].VpcId'
  3. Dengan menggunakan ituvpc-id, temukan VPC'sCIDR.

    aws ec2 describe-vpcs \ --vpc vpc-id \ --query 'Vpcs[0].CidrBlock'
  4. Dari akun B, buat VPC menggunakan yang berbeda, tidak tumpang tindih CIDR dari yang ditemukan pada langkah sebelumnya. Kemudian, buat setidaknya satu subnet. Anda dapat menggunakan wizard VPC pembuatan di AWS Management Console atau AWS CLI.

  5. Dari akun B, minta koneksi peering ke akun A VPC seperti yang dijelaskan dalam Membuat dan menerima koneksi VPC peering. Dari akun A, terima koneksi.

  6. Dari akun B, temukan tabel VPC routing baru. Ganti vpc-id dengan ID yang VPC Anda buat di akun B.

    aws ec2 describe-route-tables \ --filters 'Name=vpc-id,Values=vpc-id' \ --query 'RouteTables[0].RouteTableId'
  7. Tambahkan rute untuk mengirim lalu lintas yang ditujukan untuk akun A CIDR ke koneksi VPC peering. Ingatlah untuk mengganti masing-masing user input placeholder dengan nilai yang benar untuk akun Anda.

    aws ec2 create-route \ --route-table-id accountB-route-table-id \ --destination-cidr accountA-vpc-cidr \ --vpc-peering-connection-id peering-connection-id
  8. Dari akun A, temukan tabel rute DAX cluster menggunakan yang vpc-id Anda temukan sebelumnya.

    aws ec2 describe-route-tables \ --filters 'Name=vpc-id, Values=accountA-vpc-id' \ --query 'RouteTables[0].RouteTableId'
  9. Dari akun A, tambahkan rute untuk mengirim lalu lintas yang ditujukan untuk akun B CIDR ke koneksi VPC peering. Ganti masing-masing user input placeholder dengan nilai yang benar untuk akun Anda.

    aws ec2 create-route \ --route-table-id accountA-route-table-id \ --destination-cidr accountB-vpc-cidr \ --vpc-peering-connection-id peering-connection-id
  10. Dari akun B, luncurkan EC2 instance VPC yang Anda buat sebelumnya. Berikan AssumeDaxInstanceProfile. Anda dapat menggunakan wizard peluncuran di AWS Management Console atau AWS CLI. Perhatikan grup keamanan instans.

  11. Dari akun A, temukan grup keamanan yang digunakan oleh DAX cluster. Ingatlah untuk mengganti cluster-name dengan nama DAX cluster Anda.

    aws dax describe-clusters \ --cluster-name cluster-name \ --query 'Clusters[0].SecurityGroups[0].SecurityGroupIdentifier'
  12. Perbarui grup keamanan DAX klaster untuk mengizinkan lalu lintas masuk dari grup keamanan EC2 instans yang Anda buat di akun B. Ingatlah untuk mengganti user input placeholders dengan nilai yang benar untuk akun Anda.

    aws ec2 authorize-security-group-ingress \ --group-id accountA-security-group-id \ --protocol tcp \ --port 8111 \ --source-group accountB-security-group-id \ --group-owner accountB-id

Pada titik ini, aplikasi pada EC2 instance akun B dapat menggunakan profil instance untuk mengambil arn:aws:iam::accountA-id:role/DaxCrossAccountRole peran dan menggunakan DAX cluster.

Ubah DAX klien untuk memungkinkan akses lintas akun

catatan

AWS Security Token Service (AWS STS) kredensial adalah kredensial sementara. Beberapa klien menangani pembaruan secara otomatis, sementara klien lain memerlukan logika tambahan untuk memperbarui kredensialnya. Sebaiknya Anda mengikuti panduan dokumentasi yang sesuai.

Java

Bagian ini membantu Anda memodifikasi kode DAX klien yang ada untuk memungkinkan DAX akses lintas akun. Jika Anda belum memiliki kode DAX klien, Anda dapat menemukan contoh kode kerja di Jawa dan DAX tutorial.

  1. Tambahkan impor berikut.

    import com.amazonaws.auth.STSAssumeRoleSessionCredentialsProvider; import com.amazonaws.services.securitytoken.AWSSecurityTokenService; import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder;
  2. Dapatkan penyedia kredensial dari AWS STS dan buat objek DAX klien. Ingatlah untuk mengganti masing-masing user input placeholder dengan nilai yang benar untuk akun Anda.

    AWSSecurityTokenService awsSecurityTokenService = AWSSecurityTokenServiceClientBuilder .standard() .withRegion(region) .build(); STSAssumeRoleSessionCredentialsProvider credentials = new STSAssumeRoleSessionCredentialsProvider.Builder("arn:aws:iam::accountA:role/RoleName", "TryDax") .withStsClient(awsSecurityTokenService) .build(); DynamoDB client = AmazonDaxClientBuilder.standard() .withRegion(region) .withEndpointConfiguration(dax_endpoint) .withCredentials(credentials) .build();
.NET

Bagian ini membantu Anda memodifikasi kode DAX klien yang ada untuk memungkinkan DAX akses lintas akun. Jika Anda belum memiliki kode DAX klien, Anda dapat menemukan contoh kode kerja di . NETdan DAX tutorial.

  1. Tambahkan AWSSDK. SecurityToken NuGet paket untuk solusinya.

    <PackageReference Include="AWSSDK.SecurityToken" Version="latest version" />
  2. Gunakan paket SecurityToken dan SecurityToken.Model.

    using Amazon.SecurityToken; using Amazon.SecurityToken.Model;
  3. Dapatkan kredensial sementara dari AmazonSimpleTokenService dan buat objek ClusterDaxClient. Ingatlah untuk mengganti masing-masing user input placeholder dengan nilai yang benar untuk akun Anda.

    IAmazonSecurityTokenService sts = new AmazonSecurityTokenServiceClient(); var assumeRoleResponse = sts.AssumeRole(new AssumeRoleRequest { RoleArn = "arn:aws:iam::accountA:role/RoleName", RoleSessionName = "TryDax" }); Credentials credentials = assumeRoleResponse.Credentials; var clientConfig = new DaxClientConfig(dax_endpoint, port) { AwsCredentials = assumeRoleResponse.Credentials }; var client = new ClusterDaxClient(clientConfig);
Go

Bagian ini membantu Anda memodifikasi kode DAX klien yang ada untuk memungkinkan DAX akses lintas akun. Jika Anda belum memiliki kode DAX klien, Anda dapat menemukan contoh kode yang berfungsi di GitHub.

  1. Impor paket AWS STS dan sesi.

    import ( "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/sts" "github.com/aws/aws-sdk-go/aws/credentials/stscreds" )
  2. Dapatkan kredensi sementara dari AmazonSimpleTokenService dan buat objek DAX klien. Ingatlah untuk mengganti masing-masing user input placeholder dengan nilai yang benar untuk akun Anda.

    sess, err := session.NewSession(&aws.Config{ Region: aws.String(region)}, ) if err != nil { return nil, err } stsClient := sts.New(sess) arp := &stscreds.AssumeRoleProvider{ Duration: 900 * time.Second, ExpiryWindow: 10 * time.Second, RoleARN: "arn:aws:iam::accountA:role/role_name", Client: stsClient, RoleSessionName: "session_name", }cfg := dax.DefaultConfig() cfg.HostPorts = []string{dax_endpoint} cfg.Region = region cfg.Credentials = credentials.NewCredentials(arp) daxClient := dax.New(cfg)
Python

Bagian ini membantu Anda memodifikasi kode DAX klien yang ada untuk memungkinkan DAX akses lintas akun. Jika Anda belum memiliki kode DAX klien, Anda dapat menemukan contoh kode kerja di Python dan DAX tutorial.

  1. Impor boto3.

    import boto3
  2. Dapatkan kredensial sementara dari sts dan buat objek AmazonDaxClient. Ingatlah untuk mengganti masing-masing user input placeholder dengan nilai yang benar untuk akun Anda.

    sts = boto3.client('sts') stsresponse = sts.assume_role(RoleArn='arn:aws:iam::accountA:role/RoleName',RoleSessionName='tryDax') credentials = botocore.session.get_session()['Credentials'] dax = amazondax.AmazonDaxClient(session, region_name=region, endpoints=[dax_endpoint], aws_access_key_id=credentials['AccessKeyId'], aws_secret_access_key=credentials['SecretAccessKey'], aws_session_token=credentials['SessionToken']) client = dax
Node.js

Bagian ini membantu Anda memodifikasi kode DAX klien yang ada untuk memungkinkan DAX akses lintas akun. Jika Anda belum memiliki kode DAX klien, Anda dapat menemukan contoh kode kerja di Node.js dan DAX tutorial. Ingatlah untuk mengganti masing-masing user input placeholder dengan nilai yang benar untuk akun Anda.

const AmazonDaxClient = require('amazon-dax-client'); const AWS = require('aws-sdk'); const region = 'region'; const endpoints = [daxEndpoint1, ...]; const getCredentials = async() => { return new Promise((resolve, reject) => { const sts = new AWS.STS(); const roleParams = { RoleArn: 'arn:aws:iam::accountA:role/RoleName', RoleSessionName: 'tryDax', }; sts.assumeRole(roleParams, (err, session) => { if(err) { reject(err); } else { resolve({ accessKeyId: session.Credentials.AccessKeyId, secretAccessKey: session.Credentials.SecretAccessKey, sessionToken: session.Credentials.SessionToken, }); } }); }); }; const createDaxClient = async() => { const credentials = await getCredentials(); const daxClient = new AmazonDaxClient({endpoints: endpoints, region: region, accessKeyId: credentials.accessKeyId, secretAccessKey: credentials.secretAccessKey, sessionToken: credentials.sessionToken}); return new AWS.DynamoDB.DocumentClient({service: daxClient}); }; createDaxClient().then((client) => { client.get(...); ... }).catch((error) => { console.log('Caught an error: ' + error); });

Bagian ini membantu Anda memodifikasi kode DAX klien yang ada untuk memungkinkan DAX akses lintas akun. Jika Anda belum memiliki kode DAX klien, Anda dapat menemukan contoh kode kerja di Jawa dan DAX tutorial.

  1. Tambahkan impor berikut.

    import com.amazonaws.auth.STSAssumeRoleSessionCredentialsProvider; import com.amazonaws.services.securitytoken.AWSSecurityTokenService; import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder;
  2. Dapatkan penyedia kredensial dari AWS STS dan buat objek DAX klien. Ingatlah untuk mengganti masing-masing user input placeholder dengan nilai yang benar untuk akun Anda.

    AWSSecurityTokenService awsSecurityTokenService = AWSSecurityTokenServiceClientBuilder .standard() .withRegion(region) .build(); STSAssumeRoleSessionCredentialsProvider credentials = new STSAssumeRoleSessionCredentialsProvider.Builder("arn:aws:iam::accountA:role/RoleName", "TryDax") .withStsClient(awsSecurityTokenService) .build(); DynamoDB client = AmazonDaxClientBuilder.standard() .withRegion(region) .withEndpointConfiguration(dax_endpoint) .withCredentials(credentials) .build();
PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.