Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog
Concatenazione di ruoli IAM in Amazon Redshift
Quando si collega un ruolo al cluster, il cluster può assumere tale ruolo per accedere ad Amazon S3, Amazon Athena, AWS Glue e AWS Lambda per conto tuo. Se un ruolo collegato al cluster non ha accesso alle risorse necessarie, è possibile concatenare un altro ruolo, possibilmente appartenente a un altro account. Il cluster quindi può assumere temporaneamente il ruolo concatenato per accedere ai dati. Concatenando i ruoli è anche possibile concedere l'accesso a più account. Ogni ruolo nella catena assume il ruolo successivo nella catena, fino a quando il cluster non assume il ruolo alla fine della catena. Il numero massimo di ruoli IAM che è possibile associare è soggetto a una quota. Per ulteriori informazioni consulta la quota "Cluster di ruoli IAM per Amazon Redshift per accedere ad altri servizi AWS" in Quote per gli oggetti Amazon Redshift.
Nota
Devi specificare i ruoli IAM affinché la catena funzioni correttamente.
Si supponga, ad esempio, che l'Azienda A voglia accedere ai dati in un bucket Amazon S3 che appartiene all'Azienda B. L'Azienda A crea un ruolo del servizio AWS per Amazon Redshift denominato RoleA e lo collega al suo cluster. L'Azienda B crea un ruolo denominato RoleB autorizzato ad accedere ai dati nel bucket dell'Azienda B. Per accedere ai dati nel bucket dell'Azienda B, l'Azienda A esegue un comando COPY con un parametro iam_role che concatena RoleA e RoleB. Per l'intera durata dell'operazione COPY, RoleA assume temporaneamente RoleB per accedere al bucket Amazon S3.
Per concatenare i ruoli, stabilisci una relazione di trust tra di essi. Un ruolo che assume un altro ruolo (ad esempio, RoleA) deve avere una policy di autorizzazioni che gli permette di assumere il ruolo concatenato successivo (ad esempio, RoleB). A sua volta, il ruolo che passa le autorizzazioni (RoleB) deve avere una policy di trust che gli permette di passare le autorizzazioni al ruolo concatenato precedente (RoleA). Per ulteriori informazioni, consultare Utilizzo di ruoli IAM nella Guida per l'utente di IAM.
Il primo ruolo nella catena deve essere un ruolo collegato al cluster. Il primo ruolo e ogni ruolo successivo che assume il ruolo seguente nella catena devono avere una policy che include un'istruzione specifica. Questa istruzione ha l'effetto Allow sull'operazione sts:AssumeRole e l'Amazon Resource Name (ARN) del ruolo successivo in un elemento Resource. Nell'esempio, RoleA ha la policy di autorizzazione seguente che gli permette di assumere RoleB, di proprietà dell'account AWS 210987654321.
Un ruolo che passa a un altro ruolo deve stabilire una relazione di trust con il ruolo che assume il ruolo o con l'account AWS proprietario del ruolo. Nell'esempio, RoleB ha la policy di trust seguente per stabilire una relazione di trust con RoleA.
La policy di attendibilità seguente stabilisce una relazione di attendibilità con il proprietario di RoleA, l'account AWS 123456789012.
Nota
Per limitare l'autorizzazione del concatenamento dei ruoli a utenti specifici, puoi definire una condizione. Per ulteriori informazioni, consulta Limitazione dell'accesso a ruoli IAM.
Quando esegui un comando UNLOAD, COPY, CREATE EXTERNAL FUNCTION o CREATE EXTERNAL SCHEMA, i ruoli vengono concatenati includendo un elenco di ARN di ruoli separati da virgole nel parametro iam_role. Di seguito è illustrata la sintassi per la concatenazione di ruoli nel parametro 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>][,...]';
Nota
L'intera catena di ruoli è racchiusa tra virgolette singole e non deve contenere spazi.
Negli esempi seguenti, RoleA è collegato al cluster che appartiene all'account AWS 123456789012. RoleB, che appartiene all'account 210987654321, dispone dell'autorizzazione per accedere al bucket denominato s3://companyb/redshift/. L'esempio seguente concatena RoleA e RoleB per eseguire il comando UNLOAD per scaricare i dati nel 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';
L'esempio seguente usa il comando COPY per caricare i dati scaricati nell'esempio precedente.
copy venue from 's3://companyb/redshift/venue_pipe_' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
Nell'esempio seguente CREATE EXTERNAL SCHEMA usa ruoli concatenati per assumere il ruolo 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';
Nell'esempio seguente CREATE EXTERNAL FUNCTION usa ruoli concatenati per assumere il ruolo 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';