> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# S3-Ausgabe-Bucket

Die Ergebnisse werden als `{jobId}/{name}`-Objekte in einen S3-Bucket geschrieben, der über den Mountpoint for Amazon S3 CSI-Treiber eingebunden wird.

## Bucket erstellen

Erstellen Sie den Bucket in derselben Region wie den Cluster und lassen Sie „Block Public Access“ aktiviert. FineParser löscht Ergebnisse nie. Wenn diese ablaufen sollen, fügen Sie daher eine Lebenszyklusregel hinzu:

```bash theme={null}
aws s3api create-bucket --region <region> --bucket my-fineparser-output \
  --create-bucket-configuration LocationConstraint=<region>

aws s3api put-bucket-lifecycle-configuration --bucket my-fineparser-output \
  --lifecycle-configuration '{"Rules":[{"ID":"expire","Status":"Enabled","Filter":{},"Expiration":{"Days":30}}]}'
```

Lassen Sie in `us-east-1` den Parameter `--create-bucket-configuration` weg.

## Den CSI-Treiber „Mountpoint for Amazon S3“ installieren

Der Treiber bindet den Bucket mit seiner eigenen IAM-Rolle ein. Weisen Sie dieser Rolle die folgende Richtlinie zu:

```json fineparser-s3-policy.json theme={null}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": "arn:aws:s3:::my-fineparser-output"
    },
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:DeleteObject"],
      "Resource": "arn:aws:s3:::my-fineparser-output/*"
    }
  ]
}
```

```bash theme={null}
aws iam create-policy --policy-name FineParserOutputBucket \
  --policy-document file://fineparser-s3-policy.json

eksctl create iamserviceaccount \
  --cluster <cluster> --region <region> \
  --namespace kube-system --name s3-csi-driver-sa \
  --role-name AmazonEKS_S3_CSI_DriverRole --role-only \
  --attach-policy-arn arn:aws:iam::<account>:policy/FineParserOutputBucket \
  --approve

aws eks create-addon --region <region> --cluster-name <cluster> \
  --addon-name aws-mountpoint-s3-csi-driver \
  --service-account-role-arn arn:aws:iam::<account>:role/AmazonEKS_S3_CSI_DriverRole
```

Wenn der Treiber bereits installiert ist, hängen Sie die Richtlinie an seine vorhandene Rolle an. Wenn der Bucket mit einem kundenverwalteten KMS-Schlüssel verschlüsselt ist, erlauben Sie außerdem `kms:GenerateDataKey` und `kms:Decrypt` für diesen Schlüssel. Siehe [Mountpoint for Amazon S3 CSI-Treiber](https://docs.aws.amazon.com/eks/latest/userguide/s3-csi.html).

## Chart konfigurieren

```yaml fineparser-values.yaml theme={null}
storage:
  output:
    s3:
      bucket: my-fineparser-output
  s3:
    region: us-east-2
```

Die Standard-Mount-Optionen sind `allow-delete`, `allow-other`, `uid=65534` und `gid=65534`. Wenn Sie `storage.s3.mountOptions` festlegen, wird diese Liste ersetzt. Behalten Sie diese vier Optionen daher bei. So schreiben Sie beispielsweise unter ein Präfix:

```yaml fineparser-values.yaml theme={null}
storage:
  s3:
    mountOptions: [allow-delete, allow-other, uid=65534, gid=65534, prefix fineparser/]
```

## Eigenen Claim verwenden

Erstellen Sie ein PersistentVolume und einen Claim für den Bucket oder ein anderes `ReadWriteMany`-Volume, und legen Sie `storage.output.existingClaim` fest:

```yaml fineparser-output.yaml theme={null}
apiVersion: v1
kind: PersistentVolume
metadata:
  name: fineparser-output
spec:
  capacity:
    storage: 10Gi
  accessModes: [ReadWriteMany]
  persistentVolumeReclaimPolicy: Retain
  storageClassName: ""
  mountOptions: [allow-delete, allow-other, uid=65534, gid=65534, region us-east-2]
  csi:
    driver: s3.csi.aws.com
    volumeHandle: fineparser-output   # muss unter allen Mountpoint-Volumes des Clusters eindeutig sein
    volumeAttributes:
      bucketName: my-fineparser-output
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: fineparser-output
  namespace: fineparser
spec:
  accessModes: [ReadWriteMany]
  storageClassName: ""
  volumeName: fineparser-output
  resources:
    requests:
      storage: 10Gi
```

```yaml fineparser-values.yaml theme={null}
storage:
  output:
    existingClaim: fineparser-output
```
