Salta al contenuto

Come posso utilizzare un ruolo IAM per pubblicare un topic Amazon SNS da un'istanza Amazon EC2 multi-account?

3 minuti di lettura
0

Desidero pubblicare un topic Amazon Simple Notification Service (Amazon SNS) da un'istanza Amazon Elastic Compute Cloud (Amazon EC2) in un altro account AWS. Desidero utilizzare un ruolo AWS Identity and Access Management (AWS IAM) per un'istanza EC2 che utilizza una sottorete pubblica.

Risoluzione

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Configura l'account con l'istanza

Completa i seguenti passaggi:

  1. Crea una policy IAM con le autorizzazioni per la pubblicazione sul topic SNS. Esempio di policy:
    {  "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "VisualEditor0",
          "Effect": "Allow",
          "Action": "sns:Publish",
          "Resource": "arn:aws:sns:us-east-1:123456789012:cross-account-ec2-sns"
        }
      ]
    }
    Nota: sostituisci us-east-1 con la tua Regione AWS e 123456789012 con l'ID del tuo account.
  2. Crea un ruolo IAM per l'istanza con un nome simile a cross-acc-ec2-sns-publish-role. Quindi collega la policy al ruolo IAM.
  3. Avvia un'istanza in una sottorete pubblica con accesso a Internet.

Associa il ruolo IAM all'istanza

Completa i seguenti passaggi:

  1. Apri la console Amazon EC2.
  2. Nel pannello di navigazione, scegli Istanze.
  3. Scegli l'istanza, ad esempio cross-acc-ec2-sns-publish-role, quindi scegli Operazioni.
  4. Seleziona Sicurezza, quindi scegli Modifica il ruolo IAM.
  5. Seleziona il ruolo IAM che hai creato, quindi scegli Salva.

Nota: per risolvere i problemi di connessione Internet dell'istanza, consulta Perché la mia istanza Amazon EC2 non può accedere a Internet tramite un gateway Internet?

Configura l'account con il topic SNS

Completa i passaggi seguenti per creare un topic SNS e aggiungere le autorizzazioni in modo da consentire al ruolo IAM di Amazon EC2 di eseguire l'operazione Publish:

  1. Crea un topic SNS con un nome simile a cross-account-ec2-sns.
  2. Sottoscrivi il topic con un endpoint, quindi conferma la sottoscrizione
  3. Apri la console Amazon SNS.
  4. Nel pannello di navigazione, scegli Argomenti, quindi scegli il topic SNS su cui desideri pubblicare.
  5. Scegli la scheda Policy di accesso.
  6. Alla voce Dettagli, scegli Modifica.
  7. Espandi la sezione Policy di accesso, quindi inserisci la seguente policy di accesso per SNS:
    {
        "Version": "2008-10-17",
        "Id": "__default_policy_ID",
        "Statement": [
            {
                "Sid": "__default_statement_ID",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "*"
                },
                "Action": [
                    "SNS:GetTopicAttributes",
                    "SNS:SetTopicAttributes",
                    "SNS:AddPermission",
                    "SNS:RemovePermission",
                    "SNS:DeleteTopic",
                    "SNS:Subscribe",
                    "SNS:Publish",
                    "SNS:Receive"
                ],
                "Resource": "arn:aws:sns:us-east-1: 123456789012:cross-account-ec2-sns",
                "Condition": {
                    "StringEquals": {
                        "AWS:SourceOwner": "123456789012"
                    }
                }
            },
            {
                "Sid": "grant-65864586-publish-and-listsubscriptionsbytopic",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam:: 111122223333:role/cross-acc-ec2-sns-role"
                },
                "Action": [
                    "sns:Publish",
                    "sns:ListSubscriptionsByTopic"
                ],
                "Resource": "arn:aws:sns:us-east-1:123456789012:cross-account-ec2-sns"
            }
        ]
    }
    Nota: sostituisci us-east-1 con la tua Regione, 123456789012 con l'ID del tuo account e 111122223333 con l'ID dell'utente IAM.
  8. Scegli Salva le modifiche.

Pubblica la notifica dall'istanza e verifica la configurazione

Completa i seguenti passaggi:

  1. Apri la console Amazon EC2 con l'account che contiene l'istanza.
  2. Connettiti all'istanza. Per le istanze Windows, consulta Connessione all’istanza Windows con il protocollo RDP. Per le istanze Linux, consulta Connessione a un’istanza Linux tramite SSH.
  3. Esegui questo comando AWS CLI publish per eseguire una query di prova:
    aws sns publish --topic-arn "arn:aws:sns:us-east-1:123456789012:cross-account-ec2-sns" --message "test" --region us-east-1
    
    Nota: sostituisci us-east-1 con la tua Regione e 123456789012 con l'ID del tuo account.