S3 garage
Garage S3: presigned URLs для KYC-документов.
Конфиг из passwords.yaml¶
| Ключ | Dev default | Назначение |
|---|---|---|
s3Endpoint |
https://s3.1-wallet.app/ |
URL Garage S3 endpoint |
s3Region |
1-wallet |
Регион (произвольный для Garage) |
s3Bucket |
kyc-data |
Бакет для KYC-документов и аватаров |
s3AccessKey |
— | Access key Garage |
s3SecretKey |
— | Secret key Garage |
pathStyle: true — Garage не поддерживает virtual-hosted style.
Операции¶
| Операция | HTTP метод | Кто вызывает | Зачем |
|---|---|---|---|
generatePresignedUploadUrl |
PUT presigned | StorageEndpoint.generateUploadUrl |
Клиент загружает KYC-документ напрямую в Garage |
confirmUpload |
LIST (listObjects) | StorageEndpoint.confirmUpload |
Проверка что файл действительно загружен (Garage не реализует statObject/GetObjectAcl) |
getDownloadUrl |
GET (прямой URL) | AdminKycEndpoint.getKycRecord, getKycDetails |
Оператор просматривает документы в Admin Panel |
deleteFile |
DELETE | Сервис удаления пользователя | Удаление объектов из S3 |
Presigned upload URL действует 3600 секунд по умолчанию.
getDownloadUrl возвращает прямой публичный URL вида scheme://host:port/bucket/key — не presigned. Доступ контролируется политиками бакета Garage.
[PLAN] PDPA gap¶
Hard-delete пользователя (deleteUserAccount) не удаляет S3-объекты в бакете kyc-data. Ключи хранятся в kyc_verification.documentFrontUrl, documentBackUrl, selfieUrl. Необходим дополнительный шаг StorageService.deleteFile для соответствия PDPA (right to erasure).