Upload S3
L'upload vers S3 est adapté pour les traitements par lots (batch) ou lorsque vous préférez déposer des volumes importants de données. Le système Qlower détecte automatiquement les nouveaux fichiers JSON uploadés et lance le traitement de manière asynchrone.
Configuration AWS
Credentials AWS
Lors de la prise en charge de votre partenariat, l'équipe Qlower génère et vous fournit automatiquement :
- AWS_ACCESS_KEY_ID : Identifiant de clé d'accès AWS
- AWS_SECRET_ACCESS_KEY : Clé secrète d'accès AWS
Ces credentials sont spécifiques à votre partenaire et vous permettent d'uploader des fichiers JSON uniquement dans votre bucket dédié.
Les credentials AWS sont générés lors de la mise en place du partenariat. Si vous ne les avez pas reçus, contactez l'équipe Qlower.
Informations nécessaires
Pour effectuer l'upload, vous aurez besoin de :
- Nom du bucket S3 : Format
ql-loader-{environnement}-{partnername}prodpour l'environnement de productionstgpour l'environnement de staging- Exemple :
ql-loader-prod-qlowerouql-loader-stg-mypartner
- Clés d'accès AWS : Access Key ID et Secret Access Key (fournies par l'équipe Qlower lors de la prise en charge)
- Région AWS : Région où se trouve le bucket (ex:
eu-west-1)
Préparation des données JSON
Structure de base
Les données JSON doivent respecter la structure définie dans la section Structure des données JSON. Elles doivent contenir au minimum :
- En-tête : Informations d'identification (voir Structure des données JSON)
- Sections de données : Déclarants, Propriétés, Transactions, Documents, Associés
Exemple de structure minimale
{
"inigPtynm": "votre-partenaire-id",
"apiKey": "votre-cle-api",
"creDtTm": "2024-01-15T10:30:00+01:00",
"versionId": "2.0",
"declarants": [],
"transactions": [],
"properties": [],
"documents": []
}
Points importants
- Le champ
creDtTmdoit être au format ISO 8601 avec le fuseau horaire - Le
versionIddoit être"2.0"pour les loaders 2.0 - Tous les champs obligatoires de l'en-tête doivent être présents
- Les tableaux peuvent être vides si aucune donnée n'est à transmettre
Implémentation
JavaScript / Node.js
npm install @aws-sdk/client-s3
const { S3Client, PutObjectCommand } = require("@aws-sdk/client-s3");
const s3Client = new S3Client({
region: "eu-west-1",
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
},
});
const loaderData = {
inigPtynm: "qlower",
apiKey: "votre-cle-api",
creDtTm: new Date().toISOString(),
versionId: "2.0",
declarants: [],
properties: [],
transactions: [],
};
const bucketName = "ql-loader-stg-qlower"; // ou 'prod' pour production
const fileName = `loader-${Date.now()}.json`;
await s3Client.send(
new PutObjectCommand({
Bucket: bucketName,
Key: fileName,
Body: JSON.stringify(loaderData),
ContentType: "application/json",
})
);
Python
pip install boto3
import json
import os
import boto3
from datetime import datetime
s3_client = boto3.client(
's3',
region_name='eu-west-1',
aws_access_key_id=os.environ.get('AWS_ACCESS_KEY_ID'),
aws_secret_access_key=os.environ.get('AWS_SECRET_ACCESS_KEY')
)
loader_data = {
'inigPtynm': 'qlower',
'apiKey': 'votre-cle-api',
'creDtTm': datetime.now().isoformat(),
'versionId': '2.0',
'declarants': [],
'properties': [],
'transactions': []
}
bucket_name = 'ql-loader-stg-qlower' # ou 'prod' pour production
file_name = f'loader-{int(datetime.now().timestamp() * 1000)}.json'
s3_client.put_object(
Bucket=bucket_name,
Key=file_name,
Body=json.dumps(loader_data),
ContentType='application/json'
)
Notifications
Une fois le fichier JSON uploadé sur S3, le système Qlower détecte automatiquement le nouveau fichier, lance le traitement de manière asynchrone et envoie une notification par email avec les résultats du traitement.