

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Herstellen einer Verbindung mit Kustomer
<a name="connecting-to-data-kustomer"></a>

Kustomer ist eine leistungsstarke Plattform für Kundenerlebnisse, die alles, was Sie benötigen, um Ihre Kunden besser bedienen zu können, in einem easy-to-use Tool vereint.

**Topics**
+ [AWS Glue Unterstützung für Kustomer](kustomer-support.md)
+ [Richtlinien, welche die API-Vorgänge für die Erstellung und Verwendung von Verbindungen enthalten](kustomer-configuring-iam-permissions.md)
+ [Konfigurieren von Kustomer](kustomer-configuring.md)
+ [Konfiguration von Kustomer-Verbindungen](kustomer-configuring-connections.md)
+ [Lesen aus Kustomer-Entitäten](kustomer-reading-from-entities.md)
+ [Kustomer-Verbindungsoptionen](kustomer-connection-options.md)
+ [Einschränkungen von Kustomer](kustomer-connection-limitations.md)

# AWS Glue Unterstützung für Kustomer
<a name="kustomer-support"></a>

AWS Glue unterstützt Kustomer wie folgt:

**Als Quelle unterstützt?**  
Ja. Sie können AWS Glue ETL-Jobs verwenden, um Daten von Kustomer abzufragen.

**Als Ziel unterstützt?**  
Nein.

**Unterstützte Kustomer-API-Versionen**  
Die folgenden Kustomer-API-Versionen werden unterstützt:
+ v1

# Richtlinien, welche die API-Vorgänge für die Erstellung und Verwendung von Verbindungen enthalten
<a name="kustomer-configuring-iam-permissions"></a>

Die folgende Beispielrichtlinie beschreibt die erforderlichen AWS IAM-Berechtigungen für das Erstellen und Verwenden von Verbindungen. Wenn Sie eine neue Rolle erstellen, erstellen Sie eine Richtlinie, die Folgendes enthält:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

Wenn Sie die oben genannte Methode nicht verwenden möchten, verwenden Sie alternativ die folgenden verwalteten IAM-Richtlinien:
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole)— Gewährt Zugriff auf Ressourcen, die verschiedene AWS Glue Prozesse benötigen, um in Ihrem Namen ausgeführt zu werden. Zu diesen Ressourcen gehören AWS Glue Amazon S3, IAM, CloudWatch Logs und Amazon EC2. Wenn Sie die in dieser Richtlinie angegebene Benennungskonvention für Ressourcen einhalten, verfügen AWS Glue Prozesse über die erforderlichen Berechtigungen. Diese Richtlinie wird typischerweise mit Rollen verknüpft, die bei der Definition von Crawlern, Aufträgen und Entwicklungsendpunkten angegeben werden.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)— Gewährt vollen Zugriff auf AWS Glue Ressourcen, wenn eine Identität, der die Richtlinie zugeordnet ist, die AWS Managementkonsole verwendet. Wenn Sie die Namenskonvention für Ressourcen befolgen, die in dieser Richtlinie angegeben sind, haben Benutzer alle Konsolenfunktionalitäten. Diese Richtlinie wird normalerweise Benutzern der AWS Glue Konsole zugewiesen.

# Konfigurieren von Kustomer
<a name="kustomer-configuring"></a>

Bevor Sie Daten von Kustomer AWS Glue an unterstützte Ziele übertragen können, müssen Sie die folgenden Anforderungen erfüllen:

## Mindestanforderungen
<a name="kustomer-configuring-min-requirements"></a>

Die folgenden Anforderungen sind Mindestanforderungen:
+ Sie haben ein Konto bei Kustomer, das die Daten enthält, die Sie übertragen möchten. 
+ In den Einstellungen für Ihr Konto haben Sie einen API-Schlüssel erstellt. Weitere Informationen finden Sie unter [Erstellen eines API-Schlüssels](#kustomer-configuring-creating-an-api-key).
+ Sie geben den API-Schlüssel für an, AWS Glue während Sie die Verbindung herstellen.

Wenn Sie diese Anforderungen erfüllen, können Sie eine Verbindung AWS Glue zu Ihrem Kundenkonto herstellen.

## Erstellen eines API-Schlüssels
<a name="kustomer-configuring-creating-an-api-key"></a>

Um einen API-Schlüssel zu erstellen, mit dem Sie eine Verbindung für den Kustomer-Connector in AWS Glue Studio herstellen, gehen Sie wie folgt vor:

1. Melden Sie sich mit [Ihren Anmeldeinformationen beim Kustomer-Dashboard](https://amazon-appflow.kustomerapp.com/login) an.

1. Wählen Sie auf der linken Seite das Symbol **Einstellungen** aus.

1. Erweitern Sie das Drop-down-Menü **Sicherheit** und wählen Sie **API-Schlüssel** aus.

1. Wählen Sie auf der Seite zur Erstellung des API-Schlüssels oben rechts die Option **API-Schlüssel hinzufügen** aus.

1. Machen Sie die obligatorischen Eingaben für den API-Schlüssel, der erstellt wird.
   + Name: Ein beliebiger Name für Ihren API-Schlüssel.
   + Rollen: 'org' muss ausgewählt werden, damit der Kustomer funktioniert APIs .
   + Läuft ab (in Tagen): Die Anzahl der Tage, für die der API-Schlüssel gültig sein soll. Sie können den Wert **Läuft nie ab** beibehalten, wenn er für Ihren Anwendungsfall geeignet ist.

1. Wählen Sie **Erstellen** aus.

1. Speichern Sie den Wert des API-Schlüssels (Token) zur weiteren Verwendung, um eine Verbindung für den Kustomer-Connector in AWS Glue Studio herzustellen.

# Konfiguration von Kustomer-Verbindungen
<a name="kustomer-configuring-connections"></a>

Konfigurieren einer Kustomer-Verbindung:

1. Erstellen Sie in AWS Secrets Manager ein Secret mit den folgenden Details:

   1. Für die kundenseitig verwaltete verbundene App muss das Geheimnis das Verbrauchergeheimnis der verbundenen App mit `apiKey` als Schlüssel enthalten.

   1. Hinweis: Sie müssen ein Geheimnis für Ihre Verbindungen in erstellen AWS Glue.

1. Erstellen Sie in AWS Glue Glue Studio eine Verbindung unter **Datenverbindungen**, indem Sie die folgenden Schritte ausführen:

   1. Wählen Sie unter **Verbindungen** die Option **Verbindung erstellen** aus.

   1. Wählen Sie bei der Auswahl einer **Datenquelle** Kustomer aus.

   1. Wählen Sie die AWS IAM-Rolle aus, die die folgenden Aktionen übernehmen AWS Glue kann und über Berechtigungen verfügt:

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1. Wählen Sie `secretName` die aus, in die Sie für diese Verbindung die Token einfügen AWS Glue möchten.

   1. Wählen Sie die Netzwerkoptionen aus, wenn Sie Ihr Netzwerk verwenden möchten.

1. Erteilen Sie der mit Ihrem AWS Glue Job verknüpften IAM-Rolle `secretName` Leserechte.

# Lesen aus Kustomer-Entitäten
<a name="kustomer-reading-from-entities"></a>

**Voraussetzung**

Ein Kustomer-Objekt, aus dem Sie lesen möchten. Sie benötigen den Objektnamen wie Marken oder Karten. Die folgende Tabelle zeigt die unterstützten Entitäten.

**Unterstützte Entitäten für Quelle**:


| Entität | Kann gefiltert werden | Unterstützt Limit | Unterstützt „Sortieren nach“ | Unterstützt „\$1 auswählen“ | Unterstützt Partitionierung | 
| --- | --- | --- | --- | --- | --- | 
| Marken | Nein | Ja | Nein | Ja | Nein | 
| Karten | Nein | Ja | Nein | Ja | Nein | 
| Chat-Einstellungen | Nein | Nein | Nein | Ja | Nein | 
| Unternehmen | Ja | Ja | Ja | Ja | Ja | 
| Konversationen | Ja | Ja | Ja | Ja | Ja | 
| Kunden | Ja | Ja | Ja | Ja | Ja | 
| Kundensuchanfragen angeheftet | Nein | Ja | Nein | Ja | Nein | 
| Kundensuchanfragen Position | Nein | Nein | Nein | Ja | Nein | 
| E-Mail-Hooks | Nein | Ja | Nein | Ja | Nein | 
| Web-Hooks | Nein | Ja | Nein | Ja | Nein | 
| KB-Artikel | Nein | Ja | Nein | Ja | Nein | 
| KB-Kategorien | Nein | Ja | Nein | Ja | Nein | 
| KB-Formulare | Nein | Ja | Nein | Ja | Nein | 
| KB-Routen | Nein | Ja | Nein | Ja | Nein | 
| KB-Tags | Nein | Ja | Nein | Ja | Nein | 
| KB-Vorlagen | Nein | Ja | Nein | Ja | Nein | 
| KB-Themes | Nein | Ja | Nein | Ja | Nein | 
| Klassen | Nein | Ja | Nein | Ja | Nein | 
| KViews | Nein | Ja | Nein | Ja | Nein | 
| Nachrichten | Ja | Ja | Ja | Ja | Ja | 
| Hinweise | Ja | Ja | Ja | Ja | Ja | 
| Benachrichtigungen | Nein | Ja | Nein | Ja | Nein | 

**Beispiel:**

```
Kustomer_read = glueContext.create_dynamic_frame.from_options(
    connection_type="kustomer",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "brands",
        "API_VERSION": "v1"
    }
```

## Kustomer-Entitäts- und Felddetails
<a name="kustomer-reading-from-entities-field-details"></a>

Weitere Informationen zu den Entitäten und Felddetails finden Sie unter:
+ [Marken](https://api.kustomerapp.com/v1/brands)
+ [Karten](https://api.kustomerapp.com/v1/cards)
+ [Chat-Einstellungen](https://api.kustomerapp.com/v1/chat/settings)
+ [Unternehmen](https://api.kustomerapp.com/v1/companies)
+ [Konversationen](https://api.kustomerapp.com/v1/conversations)
+ [Kunden](https://api.kustomerapp.com/v1/customers)
+ [Kundensuchanfragen angeheftet](https://api.kustomerapp.com/v1/customers/searches/pinned)
+ [Kundensuchanfragen Positionen](https://api.kustomerapp.com/v1/customers/searches/positions)
+ [Hooks E-Mail](https://api.kustomerapp.com/v1/hooks/email)
+ [Hooks Web](https://api.kustomerapp.com/v1/hooks/web)
+ [KB-Artikel](https://api.kustomerapp.com/v1/kb/articles)
+ [KB-Kategorien](https://api.kustomerapp.com/v1/kb/categories)
+ [KB-Formulare]( https://api.kustomerapp.com/v1/kb/forms)
+ [KB-Routen](https://api.kustomerapp.com/v1/kb/routes)
+ [KB-Tags](https://api.kustomerapp.com/v1/kb/tags)
+ [KB-Vorlagen](https://api.kustomerapp.com/v1/kb/templates)
+ [KB-Themes](https://api.kustomerapp.com/v1/kb/themes)
+ [Klassen](https://api.kustomerapp.com/v1/klasses)
+ [K-Ansichten](https://api.kustomerapp.com/v1/kviews)
+ [Nachrichten](https://api.kustomerapp.com/v1/messages)
+ [Hinweise](https://api.kustomerapp.com/v1/notes)
+ [Benachrichtigungen](https://api.kustomerapp.com/v1/notifications)

Kustomer-API v1

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/kustomer-reading-from-entities.html)

## Partitionieren von Abfragen
<a name="kustomer-reading-from-partitioning"></a>

**Feldbasierte Partitionierung**

Sie können die zusätzlichen Spark-Optionen `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` und `NUM_PARTITIONS` angeben, wenn Sie Parallelität in Spark nutzen möchten. Mit diesen Parametern wird die ursprüngliche Abfrage in `NUM_PARTITIONS` Unterabfragen aufgeteilt, die von Spark-Aufgaben gleichzeitig ausgeführt werden können.
+ `PARTITION_FIELD`: der Name des Feldes, das zur Partitionierung der Abfrage verwendet werden soll.
+ `LOWER_BOUND`: ein **inklusiver** Untergrenzwert des ausgewählten Partitionsfelds.

  Für das DateTime Feld akzeptieren wir den Wert im ISO-Format.

  Beispiel für gültigen Wert:

  ```
  "2023-01-15T11:18:39.205Z"
  ```
+ `UPPER_BOUND`: ein **exklusiver** Obergrenzwert des ausgewählten Partitionsfelds.
+ `NUM_PARTITIONS`: Die Anzahl an Partitionen.

Details zur Unterstützung von Feldern für die entitätsbezogene Partitionierung sind in der folgenden Tabelle aufgeführt.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/kustomer-reading-from-entities.html)

Beispiel:

```
Kustomer_read = glueContext.create_dynamic_frame.from_options(
    connection_type="kustomer",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "conversation",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "createdAt"
        "LOWER_BOUND": "2023-01-15T11:18:39.205Z"
        "UPPER_BOUND": "2023-02-15T11:18:39.205Z"
        "NUM_PARTITIONS": "2"
    }
```

# Kustomer-Verbindungsoptionen
<a name="kustomer-connection-options"></a>

Im Folgenden sind Verbindungsoptionen für Kustomer aufgeführt:
+ `ENTITY_NAME` (Zeichenfolge) – (Erforderlich) Zum Lesen verwendet. Der Name Ihres Objekts in Kustomer.
+ `API_VERSION` (Zeichenfolge) – (Erforderlich) Zum Lesen verwendet. Version der Kustomer-REST-API, die Sie verwenden möchten.
+ `SELECTED_FIELDS` (Liste<Zeichenfolge>) – Standard: leer(SELECT \$1). Zum Lesen verwendet. Spalten, die Sie für das Objekt auswählen möchten.
+ `FILTER_PREDICATE`(Zeichenfolge) – Standard: leer. Zum Lesen verwendet. Muss das Spark-SQL-Format aufweisen.
+ `QUERY`(Zeichenfolge) – Standard: leer Zum Lesen verwendet. Vollständige Spark-SQL-Abfrage.
+ `PARTITION_FIELD`(Zeichenfolge) – Zum Lesen verwendet. Feld, das zur Partitionierung der Abfrage verwendet werden soll.
+ `LOWER_BOUND`(Zeichenfolge) – Zum Lesen verwendet. Ein inklusiver Untergrenzwert des ausgewählten Partitionsfelds.
+ `UPPER_BOUND`(Zeichenfolge) – Zum Lesen verwendet. Ein exklusiver Obergrenzwert des ausgewählten Partitionsfelds. 
+ `NUM_PARTITIONS`(Ganzzahl) – Standard: 1. Zum Lesen verwendet. Anzahl der zu lesenden Partitionen.
+ `INSTANCE_URL` (Zeichenfolge) – (Erforderlich) Zum Lesen verwendet. URL der Kustomer-Instance.

# Einschränkungen von Kustomer
<a name="kustomer-connection-limitations"></a>

Im Folgenden finden Sie Einschränkungen oder Hinweise für Kustomer:
+ Die Entität `Customer Searches` wird nicht unterstützt, da in der Kustomer-API-Dokumentation kein Endpunkt für sie deklariert wurde.
+ Die Filterung und inkrementelle Übertragung auf der Entität `Klasses` wird nicht unterstützt.
+ „Sortieren nach“ kann für mehrere zutreffende Felder in einer einzigen Anfrage unterstützt werden.

  Jedoch wurde beobachtet, dass sich die „Sortieren nach“-Funktion für mehrere Felder bei einigen Kombinationen auf der SaaS-Seite inkonsistent verhält. Das Verhalten ist unvorhersehbar, da es „n“ Kombinationen geben könnte, die zu falschen Sortierergebnissen führen. Beispiel:

  Für die Entität `Customers` führt das Sortieren nach `progressiveStatus desc, name asc` nicht zum richtigen sortierten Ergebnis. Es wird nur anhand der `progressiveStatus`-Reihenfolge sortiert. Wenn ein solches Verhalten beobachtet wird, können Sie ein einzelnes Feld verwenden, nach dem sortiert werden soll.
+ „Sortieren nach“ im Feld „id“ wird nur von den Entitäten `Conversations` und `Messages` als Abfrageparameter unterstützt. Zum Beispiel: https://api.kustomerapp.com/v1/ Gespräche? sort=desc (Sortiert die Ergebnisse nach 'id' in absteigender Reihenfolge.)

  Darüber hinaus wird jeder andere Filter oder jede Bestellung in einem anderen Feld in einen POST-Anforderungstext übersetzt, dessen API-Endpunkt POST https://api.kustomerapp.com/v1/ customers/search lautet. Um die Unterstützung der Sortierung nach 'id' in `Conversations` und zu ermöglichen`Messages`, sollte entweder nur „Nach ID bestellen“ vorhanden sein oder ein beliebiger anderer Filter and/or „Sortieren nach“ in einem anderen zutreffenden Feld.
+ Kustomer ermöglicht das Abrufen von maximal 10 000 Datensätzen, unabhängig davon, ob es sich um eine gefilterte oder eine ungefilterte Anfrage handelt. Aufgrund dieser Einschränkung kommt es bei jeder Entität, die mehr als 10 000 Datensätze umfasst, zu Datenverlust. Es gibt zwei mögliche Workarounds, mit denen Sie dieses Problem teilweise beheben können:
  + Wenden Sie Filter an, um eine bestimmte Gruppe von Datensätzen abzurufen.
  + Wenn mehr als 10 000 Datensätze mit einem angewendeten Filter vorhanden sind, wenden Sie einen aufeinanderfolgenden Filterwert in einer neuen nachfolgenden Anfrage an oder wenden Sie Bereiche in Filtern an. Beispiel: 

    Der Filterausdruck der ersten Anfrage: `modifiedAt >= 2022-03-15T05:26:23.000Z and modifiedAt < 2023-03-15T05:26:23.000Z`.

    Gehen Sie davon aus, dass dadurch das Limit von 10 000 Datensätzen ausgeschöpft ist.

    Eine weitere Anfrage kann mit diesem Filterausdruck ausgelöst werden: `modifiedAt >= 2023-03-15T05:26:23.000Z`.
+ Als SaaS-Verhalten unterstützt der Operator `CONTAINS` in Kustomer nur die Übereinstimmung mit vollständigen Wörtern und keine Teilübereinstimmungen innerhalb eines Wortes. Beispiel: „body CONTAINS ‚test record‘“ findet einen Datensatz, der „test“ im Feld „body“ enthält. „body CONTAINS 'test'“ entspricht jedoch keinem Datensatz, der '' im testAnotherRecord Feld 'body' enthält.