4.6 AWS S3 & Amazon Rekognition

In diesem Abschnitt wird beschrieben, wie die AWS-Services S3 und Rekognition für das Projekt integriert wurden. Diese Services ermöglichen das Speichern und Analysieren von Bildern in der Cloud.


Einrichtung von AWS Service User

  1. Erstellen eines IAM-Benutzers
    • Logge dich in die AWS-Konsole ein.
    • Gehe zu IAM > Benutzer und erstelle einen neuen Benutzer mit Programmatic Access.
    • Weise dem Benutzer die folgenden benutzerdefinierten Policies zu (siehe unten).

Policy für S3

Die folgende benutzerdefinierte Policy gewährt Zugriff auf den S3-Bucket msvc-gallery. Der Zugriff ist auf die notwendigen Aktionen wie Hochladen, Abrufen und Löschen von Objekten beschränkt:

  1. Gehe zu IAM > Richtlinien und klicke auf Richtlinie erstellen.
  2. Kopiere den folgenden JSON-Inhalt in den Editor:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": [
        "arn:aws:s3:::msvc-gallery",
        "arn:aws:s3:::msvc-gallery/*"
      ]
    }
  ]
}
  1. Klicke auf Weiter und speichere die Policy unter dem Namen S3GalleryAccess.

Policy für Amazon Rekognition

Die folgende benutzerdefinierte Policy gewährt Zugriff auf die benötigten Funktionen von Amazon Rekognition, wie Gesichts- und Labelerkennung:

  1. Gehe zu IAM > Richtlinien und klicke auf Richtlinie erstellen.
  2. Kopiere den folgenden JSON-Inhalt in den Editor:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rekognition:DetectFaces",
        "rekognition:DetectLabels",
        "rekognition:CompareFaces"
      ],
      "Resource": "*"
    }
  ]
}
  1. Klicke auf Weiter und speichere die Policy unter dem Namen RekognitionAccess.

Benutzer mit Policies verbinden

  1. Gehe zu IAM > Benutzer, wähle den erstellten Benutzer aus und klicke auf Berechtigungen hinzufügen.
  2. Wähle die benutzerdefinierten Richtlinien S3GalleryAccess und RekognitionAccess aus.
  3. Speichere die Änderungen.

Integration in Kubernetes

ConfigMap

Die AWS-Konfigurationsdaten wie Region und S3-Bucket-Name werden in einer Kubernetes ConfigMap gespeichert:

Datei: backend-config.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: backend-config
  namespace: eventgallery
data:
  DATABASE_URI: "mysql+pymysql://root:root@eventgallery-db:3306/eventgallery"
  AWS_REGION: "eu-central-1"
  S3_BUCKET: "msvc-gallery"

Secret

Sensible Informationen wie Access Keys und Secrets werden in einem Kubernetes Secret gespeichert:

Datei: backend-secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: backend-secret
  namespace: eventgallery
type: Opaque
data:
  S3_KEY: <BASE64_ENCODED_ACCESS_KEY>
  S3_SECRET: <BASE64_ENCODED_SECRET_ACCESS_KEY>
  AWS_REKOGNITION_KEY: <BASE64_ENCODED_REKOGNITION_KEY>
  AWS_REKOGNITION_SECRET: <BASE64_ENCODED_REKOGNITION_SECRET>

Hinweis: Base64-kodierte Werte können mit folgendem Befehl erstellt werden:

echo -n "ACCESS_KEY" | base64
echo -n "SECRET_ACCESS_KEY" | base64