

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.

# neptune.read ()
<a name="access-graph-opencypher-21-extensions-s3-read"></a>

 Neptune unterstützt ein `CALL` Verfahren `neptune.read` zum Lesen von Daten aus Amazon S3 und zum Ausführen einer OpenCypher-Abfrage (Lesen, Einfügen, Aktualisieren) unter Verwendung der Daten. Die Prozedur gibt jede Zeile in der Datei als deklarierte Ergebnisvariablenzeile zurück. Es verwendet die IAM-Anmeldeinformationen des Anrufers, um auf die Daten in Amazon S3 zuzugreifen. Informationen [Verwaltung der Berechtigungen für neptune.read ()](access-graph-opencypher-21-extensions-s3-read-permissions.md) zum Einrichten der Berechtigungen finden Sie unter. Die AWS Region des Amazon S3 S3-Buckets muss sich in derselben Region befinden, in der sich die Instance befindet. Derzeit werden regionsübergreifende Lesevorgänge nicht unterstützt. 

 **Syntax** 

```
CALL neptune.read(
  {
    source: "string",
    format: "parquet/csv",
    concurrency: 10
  }
)
YIELD row
...
```

**Eingaben**
+  **source** (erforderlich) — Amazon S3 S3-URI zu einem **einzelnen** Objekt. Das Amazon S3 S3-Präfix für mehrere Objekte wird nicht unterstützt. 
+  **Format** (erforderlich) — `parquet` und `csv` werden unterstützt. 
  +  Weitere Informationen zum unterstützten Parquet-Format finden Sie unter[Unterstützte Parquet-Spaltentypen](access-graph-opencypher-21-extensions-s3-read-parquet.md#access-graph-opencypher-21-extensions-s3-read-parquet-column-types). 
  +  Weitere Informationen zum unterstützten CSV-Format finden Sie unter[Ladeformat für openCypher-Daten](bulk-load-tutorial-format-opencypher.md). 
+  **Parallelität** (optional) — Typ: Ganzzahl 0 oder höher. Standard: 0 Gibt die Anzahl der Threads an, die zum Lesen der Datei verwendet werden sollen. Wenn der Wert 0 ist, wird die maximale Anzahl von Threads verwendet, die von der Ressource zulässig ist. Für Parquet wird empfohlen, die Einstellung auf eine bestimmte Anzahl von Zeilengruppen festzulegen. 

**Outputs**

 neptune.read gibt zurück: 
+  **row - Typ: MAP** 
  +  Jede Zeile in der Datei, wobei die Schlüssel die Spalten und die Werte die in jeder Spalte gefundenen Daten sind. 
  +  Sie können auf die Daten jeder Spalte wie bei einer Eigenschaft access (`row.col`) zugreifen. 

## Bewährte Methoden für neptune.read ()
<a name="access-graph-opencypher-21-extensions-s3-read-best-practices"></a>

Neptune S3-Lesevorgänge können speicherintensiv sein. Bitte verwenden Sie Instance-Typen, die sich gut für Produktions-Workloads eignen, wie unter [Instance-Typen für Amazon Neptune auswählen](instance-types.md) beschrieben.

Die Speichernutzung und die Leistung von `neptune.read()` Anfragen werden durch eine Vielzahl von Faktoren wie Dateigröße, Anzahl der Spalten, Anzahl der Zeilen und Dateiformat beeinflusst. Je nach Struktur funktionieren kleine Dateien (z. B. CSV-Dateien mit 100 MB oder weniger, Parquet-Dateien mit 20 MB oder weniger) möglicherweise zuverlässig auf den meisten produktionsgeeigneten Instance-Typen, wohingegen größere Dateien möglicherweise viel Speicherplatz benötigen, den kleinere Instance-Typen nicht bereitstellen können.

Beim Testen dieser Funktion wird empfohlen, mit kleinen Dateien zu beginnen und diese schrittweise zu skalieren, um sicherzustellen, dass Ihr Lese-Workload an Ihre Instance-Größe angepasst werden kann. Wenn Sie feststellen, dass `neptune.read()` Anfragen zu out-of-memory Ausnahmen oder Instanzneustarts führen, sollten Sie erwägen, Ihre Dateien in kleinere Teile aufzuteilen, die Dateikomplexität zu reduzieren oder ein Upgrade auf größere Instance-Typen durchzuführen.

# Beispiele für Abfragen mit Parquet
<a name="access-graph-opencypher-21-extensions-s3-read-parquet"></a>

Die folgende Beispielabfrage gibt die Anzahl der Zeilen in einer bestimmten Parquet-Datei zurück:

```
CALL neptune.read(
  {
    source: "<s3 path>",
    format: "parquet"
  }
)
YIELD row
RETURN count(row)
```

Sie können das Abfragebeispiel mithilfe der `execute-open-cypher-query` Operation in ausführen, AWS CLI indem Sie den folgenden Code ausführen:

```
aws neptunedata execute-open-cypher-query \
--open-cypher-query "CALL neptune.read({source: '<s3 path>', format: 'parquet'}) YIELD row RETURN count(row)" \
--endpoint-url https://my-cluster-name.cluster-abcdefgh1234.us-east-1.neptune.amazonaws.com:8182
```

Eine Abfrage kann flexibel mit Zeilen umgehen, die aus einer Parquet-Datei gelesen werden. Die folgende Abfrage erstellt beispielsweise einen Knoten mit einem Feld, das auf Daten aus der Parquet-Datei festgelegt ist:

```
CALL neptune.read(
  {
    source: "<s3 path>",
    format: "parquet"
  }
)
YIELD row
CREATE (n {someField: row.someCol}) 
RETURN n
```

**Warnung**  
Es wird nicht als gute Praxis angesehen, eine umfangreiche, ergebnisreiche Klausel wie `MATCH(n)` vor einer `CALL` Klausel zu verwenden. Dies würde aufgrund eines Kreuzprodukts zwischen eingehenden Lösungen aus früheren Klauseln und den von neptune.read gelesenen Zeilen zu einer lang andauernden Abfrage führen. Es wird empfohlen, die Abfrage mit neptune.read zu starten. `CALL`

## Unterstützte Parquet-Spaltentypen
<a name="access-graph-opencypher-21-extensions-s3-read-parquet-column-types"></a>

**Parquet-Datentypen:**
+ NULL
+ BOOLEAN
+ FLOAT
+ DOUBLE
+ STRING
+ GANZZAHL MIT VORZEICHEN: UINT8, UINT16, UINT32, UINT64
+ MAP: Unterstützt nur eine Ebene. Unterstützt keine verschachtelten Elemente.
+ LIST: Unterstützt nur eine Ebene. Unterstützt keine verschachtelten Elemente.

**Neptun-spezifische Datentypen:**

Im Gegensatz zu den Eigenschaftsspaltenüberschriften des CSV-Formats müssen die Eigenschaftsspaltenüberschriften des Parquet-Formats nur die Eigenschaftsnamen enthalten, sodass weder die Typnamen noch die Kardinalität erforderlich sind.

Es gibt jedoch einige spezielle Spaltentypen im Parquet-Format, für die Anmerkungen in den Metadaten erforderlich sind, darunter der Typ Beliebig, der Datentyp, der DateTime-Typ und der Geometrietyp. Das folgende Objekt ist ein Beispiel für die erforderliche Metadaten-Anmerkung für Dateien, die Spalten dieser speziellen Typen enthalten:

```
"metadata": {
    "anyTypeColumns": ["UserCol1"],
    "dateTypeColumns": ["UserCol2"],
    "dateTimeTypeColumns": ["UserCol3"],
    "geometryTypeColumns": ["UserCol4"]
}
```

Im Folgenden finden Sie Einzelheiten zur erwarteten Nutzlast im Zusammenhang mit diesen Typen:
+ Der Spaltentyp Beliebig wird in den Benutzerspalten unterstützt. Ein Any-Typ ist ein Typ „syntaktischer Zucker“ für alle anderen Typen, die wir unterstützen. Es ist äußerst nützlich, wenn eine Benutzerspalte mehrere Typen enthält. Die Nutzlast eines Werts vom Typ Any ist eine Liste von JSON-Zeichenfolgen wie folgt:`{"value": "10", "type": "Int"};{"value": "1.0", "type": "Float"}`, die in jeder einzelnen JSON-Zeichenfolge ein Wertfeld und ein Typfeld enthält. Der Kardinalitätswert einer Any-Spalte ist festgelegt, was bedeutet, dass die Spalte mehrere Werte akzeptieren kann. 
  + Neptune unterstützt die folgenden Typen in einem beliebigen Typ: Bool (oder Boolean), Byte, Short, Int, Long,,,, Float UnsignedByte UnsignedShort, Double UnsignedInt UnsignedLong, Date, dateTime, String und Geometry.
  + Der Vektortyp wird in Any Type nicht unterstützt.
  + Verschachtelt Jeder Typ wird nicht unterstützt. Beispiel, `{"value": {"value": "10", "type": "Int"}, "type": "Any"}`.
+ Spalten vom Typ Date und Datetime werden in den Benutzerspalten unterstützt. Die Nutzdaten dieser Spalten müssen als Zeichenketten im XSD-Format oder in einem der folgenden Formate bereitgestellt werden: 
  + yyyy-MM-dd
  + yyyy-MM-DDTHH:mm
  + yyyy-mm-ddthh:mm:ss
  + yyyy-mm-ddthh:mm:ssz
  + yyyy-mm-ddthh:mm:ss.sssz
  + yyyy-mm-ddthh:mm:ss [\$1\$1-] hhmm
  + yyyy-mm-ddthh:mm:ss.sss [\$1\$1-] hhmm
+ In den Benutzerspalten wird der Spaltentyp Geometrie unterstützt. Die Nutzdaten dieser Spalten dürfen nur Geometrie-Primitive des Typs Point enthalten, die als Zeichenketten im WKT-Format (Wellknown Text) bereitgestellt werden. Beispielsweise wäre POINT (30 10) ein gültiger Geometriewert.

## Beispiel für eine Parkett-Ausgabe
<a name="sample-parquet-output"></a>

Bei einer Parquet-Datei wie dieser:

```
<s3 path>

Parquet Type:
    int8     int16       int32             int64              float      double    string
+--------+---------+-------------+----------------------+------------+------------+----------+
|   Byte |   Short |       Int   |                Long  |     Float  |    Double  | String   |
|--------+---------+-------------+----------------------+------------+------------+----------|
|   -128 |  -32768 | -2147483648 | -9223372036854775808 |    1.23456 |    1.23457 | first    |
|    127 |   32767 |  2147483647 |  9223372036854775807 |  nan       |  nan       | second   |
|      0 |       0 |           0 |                    0 | -inf       | -inf       | third    |
|      0 |       0 |           0 |                    0 |  inf       |  inf       | fourth   |
+--------+---------+-------------+----------------------+------------+------------+----------+
```

Hier ist ein Beispiel für die Ausgabe, die von neptune.read mit der folgenden Abfrage zurückgegeben wurde:

```
aws neptunedata execute-open-cypher-query \
--open-cypher-query "CALL neptune.read({source: '<s3 path>', format: 'parquet'}) YIELD row RETURN row" \
--endpoint-url https://my-cluster-name.cluster-abcdefgh1234.us-east-1.neptune.amazonaws.com:8182
```

```
{
 "results": [{
 "row": {
 "Float": 1.23456,
 "Byte": -128,
 "Int": -2147483648,
 "Long": -9223372036854775808,
 "String": "first",
 "Short": -32768,
 "Double": 1.2345678899999999
 }
 }, {
 "row": {
 "Float": "NaN",
 "Byte": 127,
 "Int": 2147483647,
 "Long": 9223372036854775807,
 "String": "second",
 "Short": 32767,
 "Double": "NaN"
 }
 }, {
 "row": {
 "Float": "-INF",
 "Byte": 0,
 "Int": 0,
 "Long": 0,
 "String": "third",
 "Short": 0,
 "Double": "-INF"
 }
 }, {
 "row": {
 "Float": "INF",
 "Byte": 0,
 "Int": 0,
 "Long": 0,
 "String": "fourth",
 "Short": 0,
 "Double": "INF"
 }
 }]
}
```

Derzeit gibt es keine Möglichkeit, einem Datenfeld, das aus einer Parquet-Datei stammt, eine Knoten- oder Kantenbeschriftung zuzuweisen. Es wird empfohlen, die Abfragen in mehrere Abfragen zu partitionieren, eine für jedes Label/jeden Typ.

```
CALL neptune.read({source: '<s3 path>', format: 'parquet'})
 YIELD row 
WHERE row.`~label` = 'airport'
CREATE (n:airport)

CALL neptune.read({source: '<s3 path>', format: 'parquet'})
YIELD row 
WHERE row.`~label` = 'country'
CREATE (n:country)
```

# Beispiele für Abfragen mit CSV
<a name="access-graph-opencypher-21-extensions-s3-read-csv"></a>

In diesem Beispiel gibt die Abfrage die Anzahl der Zeilen in einer bestimmten CSV-Datei zurück:

```
CALL neptune.read(
  {
    source: "<s3 path>",
    format: "csv"
  }
)
YIELD row
RETURN count(row)
```

Sie können das Abfragebeispiel mithilfe der execute-open-cypher-query Operation in ausführen, AWS CLI indem Sie den folgenden Code ausführen:

```
aws neptunedata execute-open-cypher-query \
--open-cypher-query "CALL neptune.read({source: '<s3 path>', format: 'csv'}) YIELD row RETURN count(row)" \
--endpoint-url https://my-cluster-name.cluster-abcdefgh1234.us-east-1.neptune.amazonaws.com:8182
```

Eine Abfrage kann flexibel mit Zeilen umgehen, die aus einer CSV-Datei gelesen werden. Die folgende Abfrage erstellt beispielsweise einen Knoten mit einem Feld, das auf Daten aus einer CSV-Datei festgelegt ist:

```
CALL neptune.read(
  {
    source: "<s3 path>",
    format: "csv"
  }
)
YIELD row
CREATE (n {someField: row.someCol}) 
RETURN n
```

**Warnung**  
Es wird nicht als gute Praxis angesehen, vor einer CALL-Klausel eine umfangreiche Ergebnisklausel wie MATCH (n) zu verwenden. Dies würde aufgrund eines Kreuzprodukts zwischen eingehenden Lösungen aus früheren Klauseln und den von neptune.read gelesenen Zeilen zu einer lang andauernden Abfrage führen. Es wird empfohlen, die Abfrage mit CALL neptune.read zu starten.

## Eigenschaftsspaltenüberschriften
<a name="property-column-headers"></a>

Sie können eine Spalte (`:`) für eine Eigenschaft angeben, indem Sie die folgende Syntax verwenden. Bei den Typnamen muss die Groß- und Kleinschreibung nicht berücksichtigt werden. Wenn ein Doppelpunkt in einem Eigenschaftsnamen vorkommt, muss ihm ein umgekehrter Schrägstrich vorangestellt werden:. `\:`

```
propertyname:type
```

**Anmerkung**  
Leerzeichen, Kommas, Zeilenumbrüche und Zeilenumbrüche sind in den Spaltenüberschriften nicht zulässig, sodass Eigenschaftsnamen diese Zeichen nicht enthalten dürfen.
Sie können eine Spalte für einen Array-Typ festlegen, indem Sie dem Typ `[]` hinzufügen:  

  ```
                          propertyname:type[]
  ```
Edge-Eigenschaften können nur einen einzelnen Wert haben und verursachen einen Fehler, wenn ein Array-Typ oder ein zweiter Wert angegeben ist. Das folgende Beispiel zeigt die Spaltenüberschrift für eine Eigenschaft namens age vom Typ Int:  

  ```
  age:Int
  ```

Für jede Zeile in der Datei ist eine Ganzzahl in dieser Position erforderlich oder sie muss leer sein. Zeichenkettenarrays sind zulässig, aber Zeichenketten in einem Array dürfen das Semikolon (`;`) nicht enthalten, es sei denn, es wird mit einem umgekehrten Schrägstrich () maskiert. `\;`

## Unterstützte CSV-Spaltentypen
<a name="supported-csv-column-types"></a>
+ **BOOL (oder BOOLEAN)** — Zulässige Werte: true, false. Gibt ein boolesches Feld an. Jeder andere Wert als true wird als falsch behandelt.
+ **FLOAT** — Bereich: 32-Bit-Gleitkommazahl nach IEEE 754, einschließlich Infinity, INF, -Infinity, -INF und NaN (). not-a-number
+ **DOUBLE** - Bereich: 64-Bit-IEEE 754-Gleitkommazahl einschließlich Infinity, INF, -Infinity, -INF und NaN (). not-a-number
+ **ZEICHENFOLGE -** 
  + Anführungszeichen sind optional. Kommas, Zeilenumbrüche und Zeilenumbrüche werden automatisch maskiert, wenn sie in einer Zeichenfolge enthalten sind, die von doppelten Anführungszeichen („) umgeben ist. Beispiel: „Hello, World“.
  + Um Anführungszeichen in eine Zeichenfolge in Anführungszeichen einzufügen, können Sie das Anführungszeichen umgehen, indem Sie zwei in einer Reihe verwenden: Beispiel: „Hello „" World" "“.
  + Zeichenkettenarrays sind zulässig, aber Zeichenketten in einem Array dürfen das Semikolon (;) nicht enthalten, es sei denn, es wird mit einem umgekehrten Schrägstrich (\$1;) maskiert).
  + Wenn Sie Zeichenfolgen in einem Array in Anführungszeichen setzen möchten, müssen Sie das gesamte Array mit einem Satz Anführungszeichen versehen. Beispiel: „Zeichenfolge eins; Zeichenfolge 2; Zeichenfolge 3".
+ **DATE, DATETIME** — Die Datetime-Werte können entweder im XSD-Format oder in einem der folgenden Formate bereitgestellt werden: 
  + yyyy-MM-dd
  + yyyy-MM-DDTHH:mm
  + yyyy-mm-ddthh:mm:ss
  + yyyy-mm-ddthh:mm:ssz
  + yyyy-mm-ddthh:mm:ss.sssz
  + yyyy-mm-ddthh:mm:ss [\$1\$1-] hhmm
  + yyyy-mm-ddthh:mm:ss.sss [\$1\$1-] hhmm
+ **GANZZAHL MIT VORZEICHEN -** 
  + Byte: -128 bis 127
  + Kurz: -32768 bis 32767
  + Int: -2^31 bis 2^31-1
  + Lang: -2^63 bis 2^63-1

**Neptun-spezifische Spaltentypen:**
+ In den Benutzerspalten wird der Spaltentyp Any unterstützt. Ein Any-Typ ist ein Typ „syntaktischer Zucker“ für alle anderen Typen, die wir unterstützen. Es ist äußerst nützlich, wenn eine Benutzerspalte mehrere Typen enthält. Die Nutzlast eines Werts vom Typ Any ist eine Liste von JSON-Zeichenfolgen wie folgt:`{"value": "10", "type": "Int"};{"value": "1.0", "type": "Float"}`, die in jeder einzelnen JSON-Zeichenfolge ein Wertfeld und ein Typfeld enthält. Die Spaltenüberschrift eines beliebigen Typs lautet PropertyName:Any. Der Kardinalitätswert einer Any-Spalte ist festgelegt, was bedeutet, dass die Spalte mehrere Werte akzeptieren kann. 
  + Neptune unterstützt die folgenden Typen in einem beliebigen Typ: Bool (oder Boolean), Byte, Short, Int, Long,,,, Float UnsignedByte UnsignedShort, Double UnsignedInt UnsignedLong, Date, dateTime, String und Geometry.
  + Der Vektortyp wird in Any Type nicht unterstützt.
  + Verschachtelt Jeder Typ wird nicht unterstützt. Beispiel, `{"value": {"value": "10", "type": "Int"}, "type": "Any"}`.
+ In den Benutzerspalten wird der Spaltentyp Geometrie unterstützt. Die Nutzdaten dieser Spalten dürfen nur Geometrie-Primitive des Typs Point enthalten, die als Zeichenketten im WKT-Format (Wellknown Text) bereitgestellt werden. Beispielsweise wäre POINT (30 10) ein gültiger Geometriewert.

## Beispiel für eine CSV-Ausgabe
<a name="sample-csv-output"></a>

Angesichts der folgenden CSV-Datei:

```
<s3 path>
colA:byte,colB:short,colC:int,colD:long,colE:float,colF:double,colG:string
-128,-32768,-2147483648,-9223372036854775808,1.23456,1.23457,first
127,32767,2147483647,9223372036854775807,nan,nan,second
0,0,0,0,-inf,-inf,third
0,0,0,0,inf,inf,fourth
```

Dieses Beispiel zeigt die Ausgabe, die von neptune.read mit der folgenden Abfrage zurückgegeben wurde:

```
aws neptunedata execute-open-cypher-query \
--open-cypher-query "CALL neptune.read({source: '<s3 path>', format: 'csv'}) YIELD row RETURN row" \
--endpoint-url https://my-cluster-name.cluster-abcdefgh1234.us-east-1.neptune.amazonaws.com:8182
```

```
{
  "results": [{
      "row": {
        "colD": -9223372036854775808,
        "colC": -2147483648,
        "colE": 1.23456,
        "colB": -32768,
        "colF": 1.2345699999999999,
        "colG": "first",
        "colA": -128
      }
    }, {
      "row": {
        "colD": 9223372036854775807,
        "colC": 2147483647,
        "colE": "NaN",
        "colB": 32767,
        "colF": "NaN",
        "colG": "second",
        "colA": 127
      }
    }, {
      "row": {
        "colD": 0,
        "colC": 0,
        "colE": "-INF",
        "colB": 0,
        "colF": "-INF",
        "colG": "third",
        "colA": 0
      }
    }, {
      "row": {
        "colD": 0,
        "colC": 0,
        "colE": "INF",
        "colB": 0,
        "colF": "INF",
        "colG": "fourth",
        "colA": 0
      }
    }]
}
```

Derzeit gibt es keine Möglichkeit, einem Datenfeld, das aus einer CSV-Datei stammt, eine Knoten- oder Kantenbeschriftung zuzuweisen. Es wird empfohlen, die Abfragen in mehrere Abfragen zu partitionieren, eine für jedes Label/jeden Typ.

```
CALL neptune.read({source: '<s3 path>', format: 'csv'})
 YIELD row 
WHERE row.`~label` = 'airport'
CREATE (n:airport)

CALL neptune.read({source: '<s3 path>', format: 'csv'})
YIELD row 
WHERE row.`~label` = 'country'
CREATE (n:country)
```

# Verwaltung der Berechtigungen für neptune.read ()
<a name="access-graph-opencypher-21-extensions-s3-read-permissions"></a>

## Erforderliche IAM-Richtlinien
<a name="access-graph-opencypher-21-extensions-s3-read-permissions-iam"></a>

Um OpenCypher-Abfragen auszuführen, die verwenden`neptune.read()`, müssen Sie über die entsprechenden Berechtigungen für den Zugriff auf Daten in Ihrer Neptune-Datenbank verfügen. Schreibgeschützte Abfragen erfordern die Aktion. `ReadDataViaQuery` Abfragen, die Daten ändern, erfordern `WriteDataViaQuery` Einfügungen oder `DeleteDataViaQuery` Löschungen. Im folgenden Beispiel werden alle drei Aktionen für den angegebenen Cluster gewährt.

Darüber hinaus benötigen Sie Berechtigungen für den Zugriff auf den S3-Bucket, der Ihre Datendateien enthält. Die Neptunes3Access-Richtlinienerklärung gewährt die erforderlichen S3-Berechtigungen:
+ **`s3:ListBucket`**: Erforderlich, um das Vorhandensein eines Buckets und den Inhalt der Liste zu überprüfen.
+ **`s3:GetObject`**: Erforderlich, um auf das angegebene Objekt zuzugreifen, damit sein Inhalt zur Integration in OpenCypher-Abfragen gelesen werden kann.

Wenn Ihr S3-Bucket serverseitige Verschlüsselung mit verwendet AWS KMS, müssen Sie auch KMS-Berechtigungen gewähren. Die KMSAccess Neptunes3-Richtlinienerklärung ermöglicht es Neptune, Daten zu entschlüsseln und Datenschlüssel zu generieren, wenn auf verschlüsselte S3-Objekte zugegriffen wird. Die Bedingung schränkt den KMS-Betrieb auf Anfragen ein, die von S3- und RDS-Diensten in Ihrer Region stammen.
+ **`kms:Decrypt`**: Erforderlich, um das verschlüsselte Objekt zu entschlüsseln, damit seine Daten von Neptune gelesen werden können.
+ **`kms:GenerateDataKey`**: Wird auch von der S3-API benötigt, die zum Abrufen von zu lesenden Objekten verwendet wird.

```
{
  "Sid": "NeptuneQueryAccess",
  "Effect": "Allow",
  "Action": [
      "neptune-db:ReadDataViaQuery",
      "neptune-db:WriteDataViaQuery",
      "neptune-db:DeleteDataViaQuery"
  ],
  "Resource": "arn:aws:neptune-db:<REGION>:<AWS_ACCOUNT_ID>:<CLUSTER_RESOURCE_ID>/*"
},
{
  "Sid": "NeptuneS3Access",
  "Effect": "Allow",
  "Action": [
      "s3:ListBucket",
      "s3:GetObject"
  ],
  "Resource": [
      "arn:aws:s3:::neptune-read-bucket",
      "arn:aws:s3:::neptune-read-bucket/*"
  ]
},
{
  "Sid": "NeptuneS3KMSAccess",
  "Effect": "Allow",
  "Action": [
      "kms:Decrypt",
      "kms:GenerateDataKey"
  ],
  "Resource": "arn:aws:kms:<REGION>:<AWS_ACCOUNT_ID>:key/<KEY_ID>",
  "Condition": {
      "StringEquals": {
        "kms:ViaService": [
            "s3.<REGION>.amazonaws.com",
            "rds.<REGION>.amazonaws.com"
        ]
      }
  }
}
```

## Wichtige Voraussetzungen
<a name="access-graph-opencypher-21-extensions-s3-read-permissions-prerequisites"></a>

Diese Berechtigungen und Voraussetzungen gewährleisten die sichere und zuverlässige Integration von S3-Daten in OpenCypher-Abfragen bei gleichzeitiger Aufrechterhaltung angemessener Zugriffskontrollen und Datenschutzmaßnahmen.
+ **IAM-Authentifizierung**: Diese Funktion wird nur für Neptune-Cluster mit aktivierter IAM-Authentifizierung unterstützt. Unter [Sichern Ihrer Amazon Neptune Neptune-Datenbank](security.md) finden Sie detaillierte Anweisungen zum Erstellen von Clustern mit IAM-Authentifizierung und zum Herstellen einer Verbindung zu diesen.
+ **VPC-Endpunkt**:
  + Ein VPC-Endpunkt vom Typ Gateway für Amazon S3 ist erforderlich, damit Neptune mit Amazon S3 kommunizieren kann.
  + Um eine benutzerdefinierte AWS KMS Verschlüsselung in der Abfrage zu verwenden, ist ein VPC-Endpunkt vom Typ Interface für AWS KMS erforderlich, mit dem Neptune kommunizieren kann. AWS KMS
  + Detaillierte Anweisungen zur Konfiguration dieses Endpunkts finden Sie unter [Erstellen des Amazon S3 S3-VPC-Endpunkts](bulk-load-tutorial-IAM.md).