Direkt zum Inhalt

Wie verwende ich eine IAM-Rolle, um ein Amazon-SNS-Thema von einer kontoübergreifenden Amazon-EC2-Instance aus zu veröffentlichen?

Lesedauer: 3 Minute
0

Ich möchte ein Amazon Simple Notification Service (Amazon SNS)-Thema von einer Amazon Elastic Compute Cloud (Amazon EC2)-Instance in einem anderen AWS-Konto veröffentlichen. Ich möchte eine AWS Identity and Access Management (IAM)-Rolle für eine EC2-Instance verwenden, die ein öffentliches Subnetz verwendet.

Lösung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Das Konto mit der Instance konfigurieren

Gehe wie folgt vor:

  1. Erstelle eine IAM-Richtlinie mit Berechtigungen zur Veröffentlichung im SNS-Thema. Beispiel für eine Richtlinie:
    {  "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "VisualEditor0",
          "Effect": "Allow",
          "Action": "sns:Publish",
          "Resource": "arn:aws:sns:us-east-1:123456789012:cross-account-ec2-sns"
        }
      ]
    }
    Hinweis: Ersetze us-east-1 durch deine AWS-Region und 123456789012 durch deine Konto-ID.
  2. Erstelle eine IAM-Rolle für die Instance mit einem Namen, der cross-acc-ec2-sns-publish-role ähnelt. Füge anschließend die Richtlinie an die IAM-Rolle an.
  3. Starte eine Instance in einem öffentlichen Subnetz mit Internetzugang.

Die Instance die IAM-Rolle anfügen

Gehe wie folgt vor:

  1. Öffne die Amazon-EC2-Konsole.
  2. Wähle im Navigationsbereich Instances.
  3. Wähle deine Instance aus, z. B. cross-acc-ec2-sns-publish-role, und wähle dann Aktionen aus.
  4. Wähle Sicherheit und dann IAM-Rolle ändern aus.
  5. Wähle die IAM-Rolle aus, die du erstellt hast, und wähle dann Speichern.

Hinweis: Informationen zur Behebung von Problemen mit der Instance-Internetverbindung findest du unter Warum kann meine Amazon-EC2-Instance nicht über ein Internet-Gateway auf das Internet zugreifen?

Das Konto mit dem SNS-Thema konfigurieren

Gehe wie folgt vor, um ein SNS-Thema zu erstellen und Berechtigungen hinzuzufügen, damit die Amazon-EC2-IAM-Rolle die Aktion Publish ausführen kann:

  1. Erstelle ein SNS-Thema mit einem Namen, der cross-account-ec2-sns ähnelt.
  2. Abonniere einen Endpunkt für das Thema und bestätige dann das Abonnement
  3. Öffne die Amazon-SNS-Konsole.
  4. Wähle im Navigationsbereich Themen aus und wähle dann das SNS-Thema aus, in dem du veröffentlichen möchtest.
  5. Wähle die Registerkarte Zugriffsrichtlinie aus.
  6. Wähle unter Details die Option Bearbeiten aus.
  7. Erweitere den Abschnitt Zugriffsrichtlinie und gib dann die folgende SNS-Zugriffsrichtlinie ein:
    {
        "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"
            }
        ]
    }
    Hinweis: Ersetze us-east-1 durch deine Region, 123456789012 durch deine Konto-ID und 111122223333 durch die IAM-Benutzer-ID.
  8. Wähle Änderungen speichern aus.

Die Benachrichtigung von der Instance veröffentlichen und die Konfiguration testen

Gehe wie folgt vor:

  1. Öffne die Amazon-EC2-Konsole mit dem Konto, das die Instance hat.
  2. Stelle eine Verbindung zur Instance her. Informationen zu Windows-Instances findest du unter Mithilfe von RDP eine Verbindung zur Windows-Instance herstellen. Informationen zu Linux-Instances findest du unter Mithilfe von SSH eine Verbindung zur Linux-Instance herstellen.
  3. Führe den folgenden AWS-CLI-Befehl publish aus, um eine Testabfrage auszuführen:
    aws sns publish --topic-arn "arn:aws:sns:us-east-1:123456789012:cross-account-ec2-sns" --message "test" --region us-east-1
    
    Hinweis: Ersetze us-east-1 durch deine Region und 123456789012 durch deine Konto-ID.
AWS OFFICIALAktualisiert vor einem Jahr