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
- 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:
- Gehe zu IAM > Richtlinien und klicke auf Richtlinie erstellen.
- 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/*"
]
}
]
}
- 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:
- Gehe zu IAM > Richtlinien und klicke auf Richtlinie erstellen.
- Kopiere den folgenden JSON-Inhalt in den Editor:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"rekognition:DetectFaces",
"rekognition:DetectLabels",
"rekognition:CompareFaces"
],
"Resource": "*"
}
]
}
- Klicke auf Weiter und speichere die Policy unter dem Namen
RekognitionAccess.
Benutzer mit Policies verbinden
- Gehe zu IAM > Benutzer, wähle den erstellten Benutzer aus und klicke auf Berechtigungen hinzufügen.
- Wähle die benutzerdefinierten Richtlinien
S3GalleryAccessundRekognitionAccessaus. - 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