

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

# Merantai peran IAM di Amazon Neptunus
<a name="bulk-load-tutorial-chain-roles"></a>

**penting**  
Fitur lintas akun beban massal baru yang diperkenalkan dalam [rilis engine 1.2.1.0.R3](engine-releases-1.2.1.0.R3.md) yang memanfaatkan peran IAM rantai dalam beberapa kasus dapat menyebabkan Anda mengamati kinerja beban curah yang menurun. Akibatnya, peningkatan ke rilis mesin yang mendukung fitur ini telah ditangguhkan sementara hingga masalah ini teratasi.

Saat Anda melampirkan peran ke klaster, klaster Anda dapat mengambil peran tersebut untuk mendapatkan akses ke data yang disimpan di Amazon S3. Dimulai dengan [rilis mesin 1.2.1.0.R3](engine-releases-1.2.1.0.R3.md), jika peran tersebut tidak memiliki akses ke semua sumber daya yang Anda butuhkan, Anda dapat merantai satu atau beberapa peran tambahan yang dapat diasumsikan oleh klaster Anda untuk mendapatkan akses ke sumber daya lain. Setiap peran dalam rantai mengasumsikan peran berikutnya dalam rantai, sampai klaster Anda mengambil peran di akhir rantai.

Untuk peran rantai, Anda membangun hubungan kepercayaan di antara mereka. Misalnya, untuk berantai `RoleB``RoleA`, `RoleA` harus memiliki kebijakan izin yang memungkinkannya untuk berasumsi`RoleB`, dan `RoleB` harus memiliki kebijakan kepercayaan yang memungkinkannya meneruskan kembali izinnya. `RoleA` Untuk informasi selengkapnya, lihat [Menggunakan peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html).

Peran pertama dalam rantai harus dilampirkan ke cluster yang memuat data.

Peran pertama, dan setiap peran berikutnya yang mengasumsikan peran berikut dalam rantai, harus memiliki:
+ Kebijakan yang mencakup pernyataan spesifik dengan `Allow` efek pada `sts:AssumeRole` tindakan.
+ Nama Sumber Daya Amazon (ARN) dari peran berikutnya dalam suatu `Resource` elemen.

**catatan**  
Bucket Amazon S3 target harus berada di AWS Wilayah yang sama dengan cluster.

## Cross-account akses menggunakan peran berantai
<a name="bulk-load-tutorial-chain-cross-account"></a>

Anda dapat memberikan akses lintas akun dengan merantai peran atau peran milik akun lain. Ketika klaster Anda sementara mengambil peran milik akun lain, klaster dapat memperoleh akses ke sumber daya di sana.

Misalnya, **Akun A** ingin mengakses data di bucket Amazon S3 milik **Akun** B:
+ **Akun A** membuat peran AWS layanan untuk Neptunus `RoleA` bernama dan menempelkannya ke cluster.
+ **Akun B** membuat peran bernama `RoleB` yang diizinkan untuk mengakses data dalam bucket **Akun B**.
+ **Akun A** melampirkan kebijakan izin yang memungkinkannya untuk `RoleA` berasumsi. `RoleB`
+ **Akun B** melampirkan kebijakan kepercayaan `RoleB` yang memungkinkannya meneruskan kembali izinnya. `RoleA`
+ Untuk mengakses data di bucket **Account B**, **Account A** menjalankan perintah loader menggunakan `iamRoleArn` parameter yang berantai `RoleA` dan`RoleB`. Selama durasi operasi loader, `RoleA` maka untuk sementara mengasumsikan `RoleB` untuk mengakses bucket Amazon S3 **di** Akun B.

![Diagram yang menggambarkan akses lintas akun menggunakan peran berantai](http://docs.aws.amazon.com/id_id/neptune/latest/userguide/images/cross-account-bulk-load.png)


Misalnya, `RoleA` akan memiliki kebijakan kepercayaan yang membangun hubungan kepercayaan dengan Neptunus:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
          "Service": "rds.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

`RoleA`juga akan memiliki kebijakan izin yang memungkinkannya untuk berasumsi`RoleB`, yang dimiliki oleh **Akun B**:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt1487639602000",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": "arn:aws:iam::{{111122223333}}:role/RoleB"
        }
    ]
}
```

------

Sebaliknya, `RoleB` akan memiliki kebijakan kepercayaan untuk membangun hubungan kepercayaan dengan`RoleA`:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:role/RoleA"
            }
        }
    ]
}
```

------

`RoleB`juga memerlukan izin untuk mengakses data di bucket Amazon S3 yang terletak di **Akun** B.

## Membuat AWS Security Token Service (STS) Titik akhir VPC
<a name="bulk-load-tutorial-sts-endpoint"></a>

Pemuat Neptunus memerlukan titik akhir VPC saat Anda merantai peran IAM AWS STS untuk mengakses API secara pribadi melalui alamat IP pribadi. AWS STS Anda dapat terhubung langsung dari VPC Amazon ke AWS STS melalui VPC Endpoint VPC dengan cara yang aman dan terukur. Saat Anda menggunakan titik akhir VPC antarmuka, ini memberikan postur keamanan yang lebih baik karena Anda tidak perlu membuka firewall lalu lintas keluar. Ini juga memberikan manfaat lain menggunakan titik akhir Amazon VPC.

Saat menggunakan VPC Endpoint, lalu lintas ke AWS STS tidak mengirimkan melalui internet dan tidak pernah meninggalkan jaringan Amazon. VPC Anda terhubung dengan aman AWS STS tanpa risiko ketersediaan atau kendala bandwidth pada lalu lintas jaringan Anda. Untuk informasi selengkapnya, lihat [Menggunakan titik AWS STS akhir VPC antarmuka](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_sts_vpce.html).

**Untuk mengatur akses untuk AWS Security Token Service (STS)**

1. Masuk ke Konsol Manajemen AWS dan buka konsol VPC Amazon di. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Di panel navigasi, pilih **Titik Akhir**.

1. Pilih **Buat Titik Akhir**.

1. Pilih **Nama Layanan**: `com.amazonaws.region.sts` untuk titik akhir tipe Antarmuka.

1. Pilih **VPC** yang berisi instans DB Neptunus dan instans EC2 Anda.

1. Pilih kotak centang di sebelah subnet tempat instans EC2 Anda hadir. Anda tidak dapat memilih beberapa subnet dari Availability Zone yang sama.

1. Untuk jenis alamat IP, pilih dari opsi berikut:
   + **IPv4** — Tetapkan alamat IPv4 ke antarmuka jaringan titik akhir Anda. Opsi ini didukung hanya jika semua subnet yang dipilih memiliki rentang alamat IPv4.
   + **IPv6** — Tetapkan alamat IPv6 ke antarmuka jaringan titik akhir Anda. Opsi ini didukung hanya jika semua subnet yang dipilih adalah IPv6-only subnet.
   + **Dualstack** — Tetapkan alamat IPv4 dan IPv6 ke antarmuka jaringan endpoint Anda. Opsi ini didukung hanya jika semua subnet yang dipilih memiliki rentang alamat IPv4 dan IPv6.

1. Untuk **grup Keamanan**, pilih grup keamanan yang akan dikaitkan dengan antarmuka jaringan titik akhir untuk titik akhir VPC. Anda harus memilih semua grup keamanan yang dilampirkan ke instans DB Neptunus dan instans EC2 Anda.

1. Untuk **Kebijakan**, pilih **Akses penuh** untuk mengizinkan semua operasi oleh semua prinsipal di semua sumber daya melalui titik akhir VPC. Jika tidak, pilih **Kustom** untuk melampirkan kebijakan titik akhir VPC yang mengontrol izin yang dimiliki kepala sekolah untuk melakukan tindakan pada sumber daya melalui titik akhir VPC. Opsi ini hanya tersedia jika layanan mendukung kebijakan titik akhir VPC. Untuk informasi selengkapnya, lihat [Kebijakan Endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html).

1. (*Opsional*) Untuk menambahkan tag, pilih **Tambahkan tag baru** dan masukkan kunci tag dan nilai tag yang Anda inginkan.

1. Pilih **Buat titik akhir**.

Untuk informasi tentang membuat titik akhir, lihat Titik Akhir [VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) di Panduan Pengguna Amazon VPC. Harap dicatat bahwa Amazon STS VPC Endpoint adalah prasyarat yang diperlukan untuk rantai peran IAM.

Sekarang setelah Anda memberikan akses ke AWS STS titik akhir, Anda dapat mempersiapkan untuk memuat data. Untuk informasi tentang format yang didukung, lihat [Memuat Format Data](bulk-load-tutorial-format.md).

## Merantai peran dalam perintah loader
<a name="bulk-load-tutorial-loader-chain"></a>

Anda dapat menentukan rantai peran saat menjalankan perintah loader dengan menyertakan daftar ARN peran yang dipisahkan koma dalam parameter. `iamRoleArn`

Meskipun sebagian besar Anda hanya perlu memiliki dua peran dalam sebuah rantai, tentu saja mungkin untuk menyatukan tiga atau lebih. Misalnya, perintah loader ini merantai tiga peran:

------
#### [ AWS CLI ]

```
aws neptunedata start-loader-job \
  --endpoint-url https://{{your-neptune-endpoint}}:{{port}} \
  --source "s3://{{(the target bucket name)}}/{{(the target date file name)}}" \
  --format "csv" \
  --iam-role-arn "arn:aws:iam::{{(Account A ID)}}:role/{{(RoleA)}},arn:aws:iam::{{(Account B ID)}}:role/{{(RoleB)}},arn:aws:iam::{{(Account C ID)}}:role/{{(RoleC)}}" \
  --s3-bucket-region "{{us-east-1}}"
```

Untuk informasi selengkapnya, lihat [start-loader-job](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/start-loader-job.html) di Referensi Perintah. AWS CLI 

------
#### [ SDK ]

```
import boto3
from botocore.config import Config

client = boto3.client(
    'neptunedata',
    endpoint_url='https://{{your-neptune-endpoint}}:{{port}}',
    config=Config(read_timeout=None, retries={'total_max_attempts': 1})
)

response = client.start_loader_job(
    source='s3://{{(the target bucket name)}}/{{(the target date file name)}}',
    format='csv',
    iamRoleArn='arn:aws:iam::{{(Account A ID)}}:role/{{(RoleA)}},arn:aws:iam::{{(Account B ID)}}:role/{{(RoleB)}},arn:aws:iam::{{(Account C ID)}}:role/{{(RoleC)}}',
    s3BucketRegion='{{us-east-1}}'
)

print(response)
```

------
#### [ awscurl ]

```
awscurl https://{{your-neptune-endpoint}}:{{port}}/loader \
  --region {{us-east-1}} \
  --service neptune-db \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{
        "source" : "s3://{{(the target bucket name)}}/{{(the target date file name)}}",
        "iamRoleArn" : "arn:aws:iam::{{(Account A ID)}}:role/{{(RoleA)}},arn:aws:iam::{{(Account B ID)}}:role/{{(RoleB)}},arn:aws:iam::{{(Account C ID)}}:role/{{(RoleC)}}",
        "format" : "csv",
        "region" : "us-east-1"
      }'
```

**catatan**  
Contoh ini mengasumsikan bahwa AWS kredenal Anda dikonfigurasi di lingkungan Anda. Ganti {{us-east-1}} dengan Wilayah cluster Neptunus Anda.

------
#### [ curl ]

```
curl -X POST https://{{your-neptune-endpoint}}:{{port}}/loader \
  -H 'Content-Type: application/json' \
  -d '{
        "source" : "s3://{{(the target bucket name)}}/{{(the target date file name)}}",
        "iamRoleArn" : "arn:aws:iam::{{(Account A ID)}}:role/{{(RoleA)}},arn:aws:iam::{{(Account B ID)}}:role/{{(RoleB)}},arn:aws:iam::{{(Account C ID)}}:role/{{(RoleC)}}",
        "format" : "csv",
        "region" : "us-east-1"
      }'
```

------