

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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 Redshift
<a name="authorizing-redshift-service-chaining-roles"></a>

Saat Anda melampirkan peran ke klaster, klaster Anda dapat mengambil peran tersebut untuk mengakses Amazon S3, Amazon Athena AWS Glue, AWS Lambda dan atas nama Anda. Jika peran yang dilampirkan ke klaster Anda tidak memiliki akses ke sumber daya yang diperlukan, Anda dapat merantai peran lain, mungkin milik akun lain. Cluster Anda kemudian sementara mengasumsikan peran berantai untuk mengakses data. Anda juga dapat memberikan akses lintas akun dengan merantai peran. Setiap peran dalam rantai mengasumsikan peran berikutnya dalam rantai, sampai cluster mengambil peran di akhir rantai. Jumlah maksimum peran IAM yang dapat Anda kaitkan tunduk pada kuota. Untuk informasi selengkapnya, lihat kuota “Peran IAM klaster untuk Amazon Redshift untuk mengakses layanan AWS lain” di. [Kuota untuk objek Amazon Redshift](amazon-redshift-limits.md#amazon-redshift-limits-quota) 

**catatan**  
Anda harus menentukan peran IAM agar rantai berfungsi dengan benar.

Misalnya, Perusahaan A ingin mengakses data dalam bucket Amazon S3 milik Perusahaan B. Perusahaan A menciptakan peran AWS layanan untuk Amazon Redshift `RoleA` bernama dan menempelkannya ke klaster mereka. Perusahaan B membuat peran bernama `RoleB` yang diizinkan untuk mengakses data di bucket Perusahaan B. Untuk mengakses data dalam bucket B Perusahaan, Perusahaan A menjalankan perintah COPY menggunakan `iam_role` parameter yang berantai `RoleA` dan`RoleB`. Selama operasi COPY, untuk `RoleA` sementara mengasumsikan `RoleB` untuk mengakses bucket Amazon S3. 

Untuk peran rantai, Anda membangun hubungan kepercayaan antara peran. Peran yang mengasumsikan peran lain (misalnya,`RoleA`) harus memiliki kebijakan izin yang memungkinkannya mengambil peran berantai berikutnya (misalnya,). `RoleB` Pada gilirannya, peran yang meneruskan izin (`RoleB`) harus memiliki kebijakan kepercayaan yang memungkinkannya meneruskan izinnya ke peran berantai sebelumnya (). `RoleA` Untuk informasi selengkapnya, lihat [Menggunakan peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) di Panduan Pengguna IAM. 

Peran pertama dalam rantai harus menjadi peran yang melekat pada cluster. Peran pertama, dan setiap peran berikutnya yang mengambil peran berikutnya dalam rantai, harus memiliki kebijakan yang mencakup pernyataan tertentu. Pernyataan ini memiliki `Allow` efek pada `sts:AssumeRole ` tindakan dan Nama Sumber Daya Amazon (ARN) dari peran berikutnya dalam suatu `Resource` elemen. Dalam contoh kami, `RoleA` memiliki kebijakan izin berikut yang memungkinkannya untuk berasumsi`RoleB`, dimiliki oleh AWS akun`210987654321`. 

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

****  

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

------

Peran yang beralih ke peran lain harus membangun hubungan kepercayaan dengan peran yang mengambil peran atau dengan AWS akun yang memiliki peran tersebut. Dalam contoh kami, `RoleB` memiliki kebijakan kepercayaan berikut 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"
      }
    }
  ]
}
```

------

Kebijakan kepercayaan berikut menetapkan hubungan kepercayaan dengan pemilik`RoleA`, AWS akun`123456789012`.

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

****  

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

------

**catatan**  
Untuk membatasi otorisasi rantai peran untuk pengguna tertentu, tentukan kondisi. Untuk informasi selengkapnya, lihat [Membatasi akses ke peran IAM](authorizing-redshift-service-database-users.md).

Saat menjalankan perintah UNLOAD, COPY, CREATE EXTERNAL FUNCTION, atau CREATE EXTERNAL SCHEMA, Anda merantai peran dengan menyertakan daftar peran yang dipisahkan koma dalam ARNs parameter. `iam_role` Berikut ini menunjukkan sintaks untuk peran rantai dalam parameter. `iam_role` 

```
unload ('select * from venue limit 10') 
to 's3://acmedata/redshift/venue_pipe_'
IAM_ROLE 'arn:aws:iam::<aws-account-id-1>:role/<role-name-1>[,arn:aws:iam::<aws-account-id-2>:role/<role-name-2>][,...]';
```

**catatan**  
Seluruh rantai peran tertutup dalam tanda kutip tunggal dan tidak boleh berisi spasi.

Dalam contoh berikut, `RoleA` dilampirkan ke cluster milik AWS akun`123456789012`. `RoleB`, yang termasuk dalam akun`210987654321`, memiliki izin untuk mengakses bucket bernama`s3://companyb/redshift/`. Contoh rantai berikut `RoleA` dan `RoleB` untuk MEMBONGKAR data ke bucket s3://companyb/redshift/. 

```
unload ('select * from venue limit 10') 
to 's3://companyb/redshift/venue_pipe_'
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
```

Contoh berikut menggunakan perintah COPY untuk memuat data yang diturunkan dalam contoh sebelumnya.

```
copy venue 
from 's3://companyb/redshift/venue_pipe_'
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
```

Dalam contoh berikut, CREATE EXTERNAL SCHEMA menggunakan peran berantai untuk mengambil peran. `RoleB`

```
create external schema spectrumexample from data catalog 
database 'exampledb' region 'us-west-2' 
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
```

Dalam contoh berikut, CREATE EXTERNAL FUNCTION menggunakan peran berantai untuk mengambil peran`RoleB`.

```
create external function lambda_example(varchar)
returns varchar
volatile
lambda 'exampleLambdaFunction'
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
```