Come posso configurare un abbonamento AWS Lambda tra più account con un argomento SNS?

4 minuti di lettura
0

Desidero sottoscrivere la mia funzione AWS Lambda a un argomento di Amazon Simple Notification Service (Amazon SNS) in un altro account.

Breve descrizione

Utilizzando la console Amazon SNS, aggiungi un abbonamento AWS Lambda tra più account a un argomento Amazon SNS.

Risoluzione

Prerequisito

Prima di iniziare, assicurati che:

  • la politica delle risorse della funzione Lambda consente a SNS di richiamare la funzione.
  • la politica di accesso agli argomenti SNS consente a Lambda di sottoscrivere l'argomento.

Nota: L'argomento SNS risiede nell'account A e la funzione Lambda risiede nell'account B.

Sottoscrivi una funzione Lambda per più account

Esistono due modi possibili per sottoscrivere una funzione Lambda multiaccount a un argomento SNS:

  • Aggiungi un trigger SNS dalla console Lambda nell'account B
  • Aggiungi l'abbonamento Lambda dalla console SNS nell'account B (l'account con la funzione Lambda)

Crea le risorse

Crea un argomento SNS nell'account A:

  1. Apri la console Amazon SNS, quindi seleziona Argomenti nel pannello di sinistra.
  2. Scegli Crea argomento, seleziona Tipo argomento, quindi inserisci il nome dell'argomento.
  3. Scorri verso il basso e scegli Crea argomento.

Consenti all'account B di eseguire azioni di iscrizione sull'argomento.

  1. Modifica la politica di accesso all'argomento per concedere l'autorizzazione all'account B sns:Subscribe.
  2. Aggiungi la dichiarazione informativa mostrata di seguito e Salva:
{
  "Sid": "Allow-AccountB-To-Subscribe",
  "Effect": "Allow",
  "Principal": {
    "AWS": ""
  },
  "Action": "sns:Subscribe",
  "Resource": ""
}

Nota: Per Principal, sostituire <AccountB> con il tuo numero di account con la funzione Lambda. Per il campo Risorsa, sostituire <SNSTopicARN> con il tuo Amazon Resource Name (ARN) dell'argomento SNS.

Crea una funzione Lambda nell'account B:

  1. Apri la pagina Funzione nella console AWS Lambda.Scegli Crea funzione.
  2. Immetti un Nome della funzione.
  3. Per il ruolo di esecuzione, scegli Crea un nuovo ruolo con autorizzazioni Lambda di base. Lambda crea un ruolo di esecuzione che concede alla funzione il permesso di caricare i log su Amazon CloudWatch.
  4. Scorri verso il basso e scegli il pulsante Crea funzione.

Sottoscrivi una funzione Lambda aggiungendo un trigger sulla console Lambda (opzione 1)

  1. Apri la pagina Funzione nella console AWS Lambda e seleziona la funzione che hai creato in precedenza.
  2. Scegli il pulsante Aggiungi trigger.
  3. Nella pagina di configurazione del trigger, seleziona SNS dall'elenco a discesa.
  4. Nel campo Argomento SNS, incolla l'argomento ARN.
  5. Seleziona il pulsante Aggiungi.

L'argomento SNS nell'account A può ora richiamare la funzione Lambda nell'account B.

Scrivere la configurazione

Esegui il test pubblicando un messaggio nell'argomento SNS.
Nota: Quando aggiungi il trigger dalla console Lambda, Lambda aggiunge automaticamente le autorizzazioni necessarie affinché Amazon SNS possa richiamare la tua funzione Lambda da questo trigger.

Sottoscrivi una funzione Lambda aggiungendo un abbonamento dalla console SNS (opzione 2)

Questa opzione richiede di concedere esplicitamente l'autorizzazione principale del servizio SNS per eseguire l'azione lambda:InvokeFunction.

Consenti al responsabile del servizio SNS di richiamare la funzione Lambda.

Nella pagina funzioni della console Lambda, seleziona la funzione che hai creato in precedenza. Completa i seguenti passaggi:

  1. Scegli la scheda Configurazione, quindi scegli Autorizzazioni.
  2. Scorri verso il basso fino alla sezione Politica basata sulle risorse. Quindi, scegli il pulsante Aggiungi autorizzazioni.
  3. Seleziona AWS Service e scegli SNS dall'elenco a discesa. Quindi, compila i campi:
    Imposta l'ID dell'istruzione su AllowSNSToInvokeFunction
    In Source ARN incolla l'ARN dell'argomento SNS creato in precedenza
    In Action scegli lambda:InvokeFunction
  4. Seleziona Salva.
  5. Crea l'abbonamento SNS per Lambda.

Dall'account B, apri la console Amazon SNS.

  1. Nel pannello di sinistra, scegli Abbonamenti.
  2. Scegli il pulsante Crea abbonamento.
  3. Incolla l'ARN dell'argomento SNS dall'account A nel campo ARN dell'argomento.
  4. Seleziona AWS Lambda dall'elenco a discesa Protocol.
  5. Incolla l'ARN della funzione Lambda nel campo Endpoint
  6. Scorri verso il basso e scegli il pulsante Crea abbonamento.

Nota: Assicurati di iscrivere la tua funzione Lambda all'argomento SNS dall'account AWS con la funzione Lambda (account B). Se provi a creare l'abbonamento dall'account con l'argomento SNS (account A), ricevi il seguente errore:

Error code: AccessDeniedException - Error message: User: arn:aws:sts::XXXXXXX:XXXXXXX/XXXXX/XXXXXX is not authorized to perform: lambda:AddPermission on resource: arn:aws:lambda:region:XXXXXXX:function:XXXXXXX

Informazioni correlate

Utilizzo di AWS Lambda con Amazon Simple Notification Service

Perché ricevo un errore di autorizzazione quando tento di sottoscrivere la mia funzione Lambda al mio argomento Amazon SNS?

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa