Tutorial: Accesso alle AWS risorse di più account in Step Functions - AWS Step Functions

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tutorial: Accesso alle AWS risorse di più account in Step Functions

Con il supporto per l'accesso tra account in Step Functions, puoi condividere risorse configurate in diversi modi Account AWS. In questo tutorial, ti illustreremo il processo di accesso a una funzione Lambda multiaccount definita in un account chiamato Production. Questa funzione viene richiamata da una macchina a stati in un account chiamato Development. In questo tutorial, l'account Development viene definito account di origine e l'account di produzione è l'account di destinazione contenente il IAM ruolo di destinazione.

Per iniziare, nella definizione Task dello stato, si specifica il IAM ruolo di destinazione che la macchina a stati deve assumere prima di richiamare la funzione Lambda tra account. Quindi, modifica la politica di fiducia nel IAM ruolo di destinazione per consentire all'account di origine di assumere temporaneamente il ruolo di destinazione. Inoltre, per chiamare la AWS risorsa, definisci le autorizzazioni appropriate nel IAM ruolo di destinazione. Infine, aggiorna il ruolo di esecuzione dell'account di origine per specificare l'autorizzazione richiesta per assumere il ruolo di destinazione.

È possibile configurare la macchina a stati in modo che assuma IAM il ruolo di accesso alle risorse da più fonti Account AWS. Tuttavia, una macchina a stati può assumere un solo IAM ruolo alla volta in base alla definizione Task dello stato.

Nota

Attualmente, AWS SDK l'integrazione tra regioni e l'accesso alle AWS risorse tra regioni non sono disponibili in Step Functions.

Prerequisiti

  • Questo tutorial utilizza l'esempio di una funzione Lambda per dimostrare come configurare l'accesso tra account. Puoi usare qualsiasi altra AWS risorsa, ma assicurati di aver configurato la risorsa in un account diverso.

    Importante

    IAMi ruoli e le politiche basate sulle risorse delegano l'accesso tra account solo all'interno di una singola partizione. Ad esempio, si supponga di disporre di un account nella regione Stati Uniti occidentali (California settentrionale) nella partizione aws standard. Hai anche un account nella regione Cina (Pechino) nella partizione aws-cn. Non è possibile utilizzare una policy basata sulle risorse Amazon S3 nel tuo account nella regione Cina (Pechino) per consentire l'accesso agli utenti del tuo account aws standard.

  • Prendi nota dell'Amazon Resource Name (ARN) della risorsa per più account in un file di testo. Più avanti in questo tutorial, lo fornirai ARN nella definizione dello Task stato della tua macchina a stati. Di seguito è riportato un esempio di funzione Lambda: ARN

    arn:aws:lambda:us-east-2:123456789012:function:functionName
  • Assicurati di aver creato il IAM ruolo di destinazione che la macchina a stati deve assumere.

Passaggio 1: aggiorna la definizione dello stato dell'attività per specificare il ruolo di destinazione

TaskNello stato del flusso di lavoro, aggiungi un Credentials campo contenente l'identità che la macchina a stati deve assumere prima di richiamare la funzione Lambda tra account.

La procedura seguente mostra come accedere a una funzione Lambda tra account denominata. Echo Puoi chiamare qualsiasi AWS risorsa seguendo questi passaggi.

  1. Apri la console Step Functions e scegli Crea macchina a stati.

  2. Nella pagina Scegli il metodo di creazione, scegli Progetta visivamente il tuo flusso di lavoro e mantieni tutte le selezioni predefinite.

  3. Per aprire Workflow Studio, scegli Avanti.

  4. Nella scheda Azioni, trascina uno Task stato sull'area di disegno. Questo richiama la funzione Lambda tra account diversi che utilizza questo stato. Task

  5. Nella scheda Configurazione, procedi come segue:

    1. Rinomina lo stato in. Cross-account call

    2. Per Nome funzione, scegliete Inserisci il nome della funzione, quindi immettete la funzione Lambda ARN nella casella. Ad esempio arn:aws:lambda:us-east-2:111122223333:function:Echo.

    3. Per Fornisci IAM ruolo ARN, specifica il IAM ruolo ARN di destinazione. Ad esempio arn:aws:iam::111122223333:role/LambdaRole.

      Suggerimento

      In alternativa, puoi anche specificare un percorso di riferimento a una coppia chiave-valore esistente nell'JSONinput dello stato che contiene il IAM ruolo. ARN A tale scopo, scegliete Get IAM role ARN at runtime from state input. Per un esempio di specificazione di un valore utilizzando un percorso di riferimento, consultaSpecificazione come ruolo JSONPath IAM ARN.

  6. Scegli Next (Successivo).

  7. Nella pagina Rivedi codice generato, scegli Avanti.

  8. Nella pagina Specificare le impostazioni della macchina a stati, specificate i dettagli per la nuova macchina a stati, come il nome, le autorizzazioni e il livello di registrazione.

  9. Scegli Create state machine (Crea macchina a stati).

  10. Annota il IAM ruolo della macchina a stati ARN e della macchina a stati ARN in un file di testo. Dovrai fornirli ARNs nella politica di fiducia dell'account di destinazione.

La definizione Task dello stato dovrebbe ora essere simile alla definizione seguente.

{ "StartAt": "Cross-account call", "States": { "Cross-account call": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Credentials": { "RoleArn": "arn:aws:iam::111122223333:role/LambdaRole" }, "Parameters": { "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:Echo", }, "End": true } } }

Passaggio 2: aggiorna la politica di fiducia del ruolo di destinazione

Il IAM ruolo deve esistere nell'account di destinazione ed è necessario modificarne la politica di attendibilità per consentire all'account di origine di assumere temporaneamente questo ruolo. Inoltre, puoi controllare chi può assumere il IAM ruolo di destinazione.

Dopo aver creato la relazione di trust, un utente dell'account di origine può utilizzare l'AssumeRoleAPIoperazione AWS Security Token Service (AWS STS). Questa operazione fornisce credenziali di sicurezza temporanee che consentono l'accesso alle AWS risorse in un account di destinazione.

  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione della console, scegli Ruoli, quindi utilizza la casella di ricerca per cercare il IAM ruolo di destinazione. Ad esempio LambdaRole.

  3. Seleziona la scheda Relazioni di attendibilità

  4. Scegli Modifica politica di fiducia e incolla la seguente politica di fiducia. Assicurati di sostituire il Account AWS numero e il IAM ruoloARN. Il sts:ExternalId campo controlla ulteriormente chi può assumere il ruolo. Il nome della macchina a stati deve includere solo i caratteri AWS Security Token Service AssumeRole API supportati. Per ulteriori informazioni, vedere AssumeRolenella Guida di AWS Security Token Service APIriferimento.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ExecutionRole" // The source account's state machine execution role ARN }, "Condition": { // Control which account and state machine can assume the target IAM role "StringEquals": { "sts:ExternalId": "arn:aws:states:us-east-1:123456789012:stateMachine:testCrossAccount" //// ARN of the state machine that will assume the role. } } } ] }
  5. Tieni aperta questa finestra e procedi al passaggio successivo per ulteriori azioni.

Passaggio 3: aggiungi l'autorizzazione richiesta nel ruolo di destinazione

Le autorizzazioni nelle IAM politiche determinano se una richiesta specifica è consentita o negata. Il IAM ruolo di destinazione deve disporre dell'autorizzazione corretta per richiamare la funzione Lambda.

  1. Scegli la scheda Autorizzazioni.

  2. Scegli Aggiungi autorizzazioni, quindi seleziona Crea policy inline.

  3. Scegli la JSONscheda e sostituisci il contenuto esistente con la seguente autorizzazione. Assicurati di sostituire la tua funzione Lambda. ARN

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:Echo" // The cross-account AWS resource being accessed } ] }
  4. Scegli Verifica policy.

  5. Nella pagina Rivedi la politica, inserisci un nome per l'autorizzazione, quindi scegli Crea politica.

Passaggio 4: Aggiungere l'autorizzazione nel ruolo di esecuzione per assumere il ruolo di destinazione

Step Functions non genera automaticamente la AssumeRolepolicy per tutte le integrazioni di servizi tra account. È necessario aggiungere l'autorizzazione richiesta nel ruolo di esecuzione della macchina a stati per consentirle di assumere un IAM ruolo di destinazione in uno o più ruoli. Account AWS

  1. Apri il ruolo di esecuzione della tua macchina a stati nella IAM console all'indirizzo https://console.aws.amazon.com/iam/. Per farlo:

    1. Apri la macchina a stati che hai creato nel passaggio 1 nell'account di origine.

    2. Nella pagina dei dettagli della macchina a stati, scegli IAMil ruolo ARN.

  2. Nella scheda Autorizzazioni, scegli Aggiungi autorizzazioni, quindi scegli Crea politica in linea.

  3. Scegli la JSONscheda e sostituisci il contenuto esistente con la seguente autorizzazione. Assicurati di sostituire la tua funzione Lambda. ARN

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/LambdaRole" // The target role to be assumed } ] }
  4. Scegli Verifica policy.

  5. Nella pagina Rivedi la politica, inserisci un nome per l'autorizzazione, quindi scegli Crea politica.