Ansichten:
Sie können die JSON-Konfiguration bearbeiten, die verwendet wird, wenn Sie Ereignisweiterleitung zu Amazon SNS-Themen aktiviert haben. Sie definiert, welche Bedingungen ein Ereignis erfüllen muss, um in ein Thema veröffentlicht zu werden. Die Konfigurationssprache ist nach Amazon's Policy-Sprache für SNS modelliert.
Jedes Feld wird unten angegeben. Die grundlegende SNS-Konfiguration sieht folgendermaßen aus:
{
  "Version": "2014-09-24",
  "Statement": [statement1, statement2, ...]
}
Beispiele finden Sie unter Beispiel für die SNS-Konfiguration.

Version

Das Version-Element gibt die Version der Konfigurationssprache an.
Hinweis
Hinweis
Der einzige derzeit gültige Wert von "Version" ist der String "2014-09-24".
"Version": "2014-09-24",

Erklärung

Das Erklärung-Element ist ein Array von einzelnen Anweisungen. Jede einzelne Anweisung ist ein eigenständiges JSON-Objekt, das das SNS-Thema angibt, an das gesendet werden soll, wenn ein Ereignis bestimmte Bedingungen erfüllt.
"Statement": [{...}, {...}, ...]
Eine einzelne Anweisung hat die Form:
{
  "Topic": "destination topic",
  "Condition": {conditions event must meet to be published to the destination topic}
}

Thema

Das Topic-Element muss der Amazon Resource Name des SNS-Themas sein, an das veröffentlicht werden soll.
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic"

Bedingung:

Das !!Condition!!-Element ist der komplexeste Teil der Konfiguration. Es enthält eine oder mehrere Bedingungen, die ein Ereignis erfüllen muss, um im Thema veröffentlicht zu werden.
Jede Bedingung kann ein oder mehrere Schlüssel-Wert-Paare haben, die das Ereignis erfüllen muss (oder nicht erfüllen muss, je nach Art der Bedingung), um in das Thema aufgenommen zu werden. Schlüssel sind jede gültige Ereigniseigenschaft. (Für Ereigniseigenschaften siehe Ereignisse im JSON-Format). Gültige Werte variieren je nach Schlüssel. Einige Schlüssel unterstützen mehrere Werte.
"Condition": {
  "ConditionName": {
    "key1": [value1, value2],
    "key2": value3
  },
  "ConditionName2": {
    "key3": [value4]
  },
  ...
}
Gültige Bedingungsnamen und deren Syntax werden unten beschrieben.

Bool

Die Bool-Bedingung führt einen Booleschen Abgleich durch. Um übereinzustimmen, muss ein Ereignis eine Eigenschaft mit dem gewünschten Booleschen Wert haben. Wenn die Eigenschaft im Ereignis existiert, aber selbst kein Boolescher Wert ist, wird die Eigenschaft wie folgt getestet:
  • Zahlen, die gleich 0 sind, werden als falsch bewertet. Zahlen, die nicht gleich 0 sind, werden als wahr bewertet.
  • Leere Zeichenfolgen und die speziellen Zeichenfolgen "false" und "0" werden als falsch ausgewertet. Andere Zeichenfolgen werden als wahr ausgewertet.
  • Jeder andere Eigenschaftswert in einem Ereignis kann nicht in einen Booleschen Wert umgewandelt werden und wird nicht übereinstimmen.
Erlaubt mehrere Werte? Nein
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, die eine "DetectOnly"-Eigenschaft mit dem Wert false haben:
{   
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "Bool": {
          "DetectOnly": false
        }
      }
    }
  ]
}

Existiert

Die Exists-Bedingung prüft auf das Vorhandensein oder Nichtvorhandensein einer Eigenschaft in einem Ereignis. Der Wert der Eigenschaft wird nicht berücksichtigt.
Erlaubt mehrere Werte? Nein
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn das Ereignis die Eigenschaft "Schweregrad" hat, aber nicht die Eigenschaft "Titel":
{    
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "Exists": {
          "Severity": true,
          "Title": false
        }
      }
    }
  ]
}

IpAdresse

Die IpAddress-Bedingung prüft, ob der Wert einer Ereigniseigenschaft eine IP-Adresse in einem Bereich im CIDR-Format ist oder genau einer einzelnen IP-Adresse entspricht.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn das Ereignis die Eigenschaft "DestinationIP" mit einer IP-Adresse im Bereich 10.0.1.0/24 oder zu 10.0.0.5 hat:
{   
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "IpAddress": {
          "DestinationIP": ["10.0.1.0/24", "10.0.0.5"]
        }
      }
    }
  ]
}

KeineIpAdresse

Die NotIpAddress-Bedingung prüft, ob der Wert einer Ereigniseigenschaft keine IP-Adresse in einem der angegebenen IP-Adressbereiche ist.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn das Ereignis die Eigenschaft "DestinationIP" mit einer IP-Adresse hat, die nicht im Bereich 10.0.0.0/8 liegt:
{   
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "NotIpAddress": {
          "DestinationIP": "10.0.0.0/8"
        }
      }
    }
  ]
}

NumericEquals

Die NumericEquals-Bedingung prüft, ob der numerische Wert einer Ereigniseigenschaft einem oder mehreren gewünschten Werten entspricht. Wenn die Eigenschaft im Ereignis existiert, aber selbst kein numerischer Wert ist, wird die Eigenschaft wie folgt getestet:
  • Zeichenfolgen werden in Zahlen umgewandelt. Zeichenfolgen, die nicht in Zahlen umgewandelt werden können, stimmen nicht überein.
  • Jeder andere Eigenschaftswert in einem Ereignis kann nicht in eine Zahl umgewandelt werden und wird nicht übereinstimmen.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn das Ereignis die Eigenschaft "Protokoll" mit dem Wert 6 oder 17 hat:
{    
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "NumericEquals": {
          "Protocol": [6, 17]
        }
      }
    }
  ]
}

NumericNotEquals

Die NumericNotEquals-Bedingung prüft, ob der Zahlenwert einer Ereigniseigenschaft nicht einem der unerwünschten Werte entspricht.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn die Eigenschaft "Protokoll" ungleich 6 ist und die Eigenschaft "Risiko" ungleich 2 oder 3 ist:
{   
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "NumericNotEquals": {
          "Protocol": 6,
          "Risk" : [2, 3]
        }
      }
    }
  ]
}

NumericGreaterThan

Die NumericGreaterThan-Bedingung prüft, ob der numerische Wert einer Ereigniseigenschaft strikt größer als ein gewünschter Wert ist. Wenn die Eigenschaft im Ereignis existiert, aber selbst kein numerischer Wert ist, wird sie in eine Zahl umgewandelt, wie bei NumericEquals beschrieben.
Erlaubt mehrere Werte? Nein
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn das Ereignis die Eigenschaft "Protokoll" mit einem Wert größer als 6 hat:
{   
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "NumericGreaterThan": {
          "Protocol": 6
        }
      }
    }
  ]
}

NumericGreaterThanEquals

Die NumericGreaterThanEquals-Bedingung prüft, ob der numerische Wert einer Ereigniseigenschaft größer oder gleich einem gewünschten Wert ist. Wenn die Eigenschaft im Ereignis existiert, aber selbst kein numerischer Wert ist, wird sie in eine Zahl umgewandelt, wie bei NumericEquals beschrieben.
Erlaubt mehrere Werte? Nein
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn das Ereignis die Eigenschaft "Nummer" mit einem Wert größer oder gleich 600 hat:
{   
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "NumericGreaterThanEquals": {
          "Number": 600
        }
      }
    }
  ]
}

NumericLessThan

Die NumericLessThan-Bedingung prüft, ob der numerische Wert einer Ereigniseigenschaft strikt kleiner als ein gewünschter Wert ist. Wenn die Eigenschaft im Ereignis existiert, aber selbst kein numerischer Wert ist, wird sie in eine Zahl umgewandelt, wie bei NumericEquals beschrieben.
Erlaubt mehrere Werte? Nein
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn das Ereignis die Eigenschaft "Nummer" mit einem Wert größer als 1000 hat:
{    
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "NumericLessThan": {
          "Number": 1000
        }
      }
    }
  ]
}

NumericLessThanEquals

Die NumericLessThanEquals-Bedingung prüft, ob der numerische Wert einer Ereigniseigenschaft kleiner oder gleich einem gewünschten Wert ist. Wenn die Eigenschaft im Ereignis existiert, aber selbst kein numerischer Wert ist, wird sie in eine Zahl umgewandelt, wie bei NumericEquals beschrieben.
Erlaubt mehrere Werte? Nein
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn das Ereignis die Eigenschaft "Nummer" mit einem Wert kleiner oder gleich 500 hat:
{    
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "NumericLessThanEquals": {
          "Number": 500
        }
      }
    }
  ]
}

StringEquals

Die StringEquals-Bedingung prüft, ob der Zeichenfolgenwert einer Ereigniseigenschaft genau gleich oder mehr gewünschte Werte ist.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn das Ereignis die Eigenschaft "EventType" gleich "SystemEvent" und die Eigenschaft "TargetType" gleich "User" oder "Role" hat:
{   
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "StringEquals": {
          "EventType": ["SystemEvent"],
          "TargetType" : ["User", "Role"]
        }
      }
    }
  ]
}

StringNichtGleich

Die StringNotEquals-Bedingung prüft, ob der Zeichenfolgenwert einer Ereigniseigenschaft keinem unerwünschten Satz von Werten entspricht.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn das Ereignis die Eigenschaft "EventType" ungleich "PacketLog" oder "IntegrityEvent" hat:
{
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "StringNotEquals": {
          "EventType": ["PacketLog", "IntegrityEvent"]
        }
      }
    }
  ]
}

StringEqualsIgnoreCase

Die StringEqualsIgnoreCase-Bedingung ist dieselbe wie die StringEquals-Bedingung, außer dass der Zeichenfolgenvergleich ohne Berücksichtigung der Groß- und Kleinschreibung erfolgt.

StringNotEqualsIgnoreCase

Die StringNotEqualsIgnoreCase-Bedingung ist dieselbe wie die StringNotEquals-Bedingung, außer dass die Zeichenfolgenübereinstimmung ohne Berücksichtigung der Groß- und Kleinschreibung erfolgt.

StringLike

Die StringLike-Bedingung prüft, ob der Zeichenfolgenwert einer Ereigniseigenschaft gleich oder mehr gewünschte Werte enthält, wobei die gewünschten Werte das Platzhalterzeichen '*' enthalten können, um eine beliebige Anzahl von Zeichen zu entsprechen, oder '?' um ein einzelnes Zeichen zu entsprechen. Zeichenfolgenvergleiche sind groß- und kleinschreibungssensitiv.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn das Ereignis die Eigenschaft "Titel" hat, die den String "Benutzer" oder "Rolle" enthält:
{   
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "StringLike": {
          "Title": ["\*User\*", "\*Role\*"]
        }
      }
    }
  ]
}

StringNotLike

Die StringNotLike-Bedingung prüft, ob der Zeichenfolgenwert einer Ereigniseigenschaft nicht mit einem der unerwünschten Werte übereinstimmt, wobei die Werte das Platzhalterzeichen '*' enthalten können, um eine beliebige Anzahl von Zeichen zu entsprechen, oder '?' für ein einzelnes Zeichen. Zeichenfolgenvergleiche sind groß- und kleinschreibungssensitiv.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die alle Ereignisse außer dem Ereignis "Systemeinstellungen gespeichert" veröffentlicht:
{    
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "StringNotLike": {
          "Title":"System Settings Saved"
        }
      }
    }
  ]
}
Das nächste Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn das Ereignis die Eigenschaft "Titel" hat, die nicht mit "Benutzer" beginnt und nicht mit "Erstellt" endet:
{    
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "StringNotLike": {
          "Title": ["User\*", "\*Created"]
        }
      }
    }
  ]
}

Mehrere Anweisungen vs. mehrere Bedingungen

Wenn Sie mehrere Anweisungen für dasselbe SNS-Thema erstellen, werden diese Anweisungen so bewertet, als ob sie durch "oder" verbunden wären. Wenn eine Anweisung mehrere Bedingungen enthält, werden diese Bedingungen so bewertet, als ob sie durch "und" verbunden wären.

Mehrere Anweisungen

Dies ist ein Beispiel dafür, was man nicht tun sollte. Die erste Aussage besagt, dass alle Ereignisse außer "Systemeinstellungen gespeichert" weitergeleitet werden sollen. Die zweite Aussage besagt, dass alle "Systemeinstellungen gespeichert"-Ereignisse weitergeleitet werden sollen. Das Ergebnis ist, dass alle Ereignisse weitergeleitet werden, da jedes Ereignis entweder die Bedingung in der ersten Aussage oder oder die in der zweiten Aussage erfüllt:
{   
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "StringNotLike" : {
          "Title" : "System Settings Saved"
        }
      }
    },
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "StringLike" : {
          "Title" : "System Settings Saved"
        }
      }
    }
  ]
}

Mehrere Bedingungen

Dies ist ein weiteres Beispiel dafür, was man nicht tun sollte. Die erste Bedingung besagt, dass alle Ereignisse weitergeleitet werden sollen, außer "Systemeinstellungen gespeichert". Die zweite Bedingung besagt, dass alle "Systemeinstellungen gespeichert"-Ereignisse weitergeleitet werden sollen. Das Ergebnis ist, dass keine Ereignisse weitergeleitet werden, da keine Ereignisse sowohl die Bedingung in der ersten Aussage und als auch die in der zweiten Aussage erfüllen:
{   
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "StringNotLike" : {
          "Title" : "System Settings Saved"
    	 },
        "StringLike" : {
          "Title" : "System Settings Saved"
        }
      }
    }
  ]
}

Beispielkonfigurationen für SNS

Diese Konfigurationen senden übereinstimmende Ereignisse für einige spezifische Szenarien. Weitere Ereigniseigenschaftsnamen und -werte, die Sie zur Filterung von SNS-Themen verwenden können, finden Sie unter Ereignisse im JSON-Format.

Senden Sie alle kritischen Ereignisse zur Eindringprävention an ein SNS-Thema

{   
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
      "Condition": {
        "NumericEquals": {
          "Severity": 4
        },
        "StringEquals" : {
          "EventType" : "PayloadLog"
        }
      }
    }
  ]
}

Verschiedene Ereignisse an verschiedene SNS-Themen senden

Dieses Beispiel zeigt, wie alle Systemereignisse an ein Thema und alle Integritätsüberwachungsereignisse an ein anderes Thema gesendet werden.
{   
  "Version": "2014-09-24",
  "Statement": [
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:systemEventsTopic",
      "Condition": {
        "StringEquals" : {
          "EventType" : "SystemEvent"
        }
      }
    },
    {
      "Topic": "arn:aws:sns:us-east-1:012345678901:integrityTopic",
      "Condition": {
        "StringEquals" : {
          "EventType" : "IntegrityEvent"
        }
      }
    }
  ]
}