Connecteur Amazon S3

Modifié

Vous avez besoin d'un compte AWS pour utiliser le connecteur Amazon S3.

Le connecteur Amazon S3 récupère le contenu d'un fichier stocké dans un compartiment AWS S3.

Il existe deux manières d'authentifier et d'autoriser une telle requête sur la plateforme Opendatasoft : rôle IAM et signature AWS v4. Si cette dernière est plus simple à mettre en place, nous recommandons la première car elle vous permet de configurer un accès plus fin aux ressources de votre compte AWS.

Méthode d'authentification par rôle IAM

Créer la connexion

Dans votre backoffice, cliquez sur Catalogue > Connexions et cliquez sur le bouton Créer une connexion.

Sélectionnez le type de connexion Amazon S3 et choisissez la méthode d'authentification par rôle IAM.

Choisissez la région du bucket à laquelle vous souhaitez accéder et cliquez sur Valider.

Notez que la connexion est créée mais n'est pas valide. C'est parce que la connexion n'est pas encore autorisée à assumer un rôle sur votre compte AWS.

Nous allons résoudre ce problème en créant un rôle sur votre compte AWS et mettre à jour la connexion avec l'ARN (Amazon Resource Name) qui est l'identifiant de ce rôle.

Créez le rôle dans votre compte AWS à l'aide de la console AWS

Accédez au compte AWS responsable du bucket hébergeant le fichier que vous souhaitez télécharger sur la plateforme.

Accédez à services -> IAM ou recherchez « IAM » dans la barre de recherche.

Dans le menu de navigation de gauche, accédez à Rôles et cliquez sur le bouton Créer un rôle dans le coin supérieur droit.

Nous allons maintenant créer le rôle qui autorisera le compte AWS externe Opendatasoft de votre connexion à accéder à votre bucket.

Comme dans ce qui suit, sélectionnez l'entité de confiance « Compte AWS ». Sélectionnez ensuite « un autre compte AWS » et remplissez le champ « ID de compte » avec le "ods_aws_account_id" renvoyé dans la connexion nouvellement créée.

Dans l'option, cliquez sur Exiger un identifiant externe et copiez-collez le "external_id" de la connexion dans le champ.

Cliquez sur Suivant.

Cela générera un objet d'identité de confiance comme celui-ci qui permettra au compte externe avec le numéro de compte 000000000000 d'assumer le rôle en utilisant l'ID externe ods-mvdomain-2fa5c43c-35bf-4e1a-8da5-45f7cd8b4f6c.

{
 "Version": "2012-10-17",
 "Statement": [
 {
 "Effect": "Allow",
 "Principal": {
 "AWS": "arn:aws:iam::000000000000:root"
 },
 "Action": "sts:AssumeRole",
 "Condition": {
 "StringEquals": {
 "sts:ExternalId": "ods-mvdomain-2fa5c43c-35bf-4e1a-8da5-45f7cd8b4f6c"
 }
 }
 }
 ]
 }

Vous pouvez désormais associer n’importe quelle autorisation à ce rôle. Cependant, nous vous conseillons de donner l'autorisation minimale pour accéder aux fichiers de votre bucket.

Pour ce faire, vous pouvez créer une stratégie personnalisée pour implémenter une autorisation à granularité précise. Par exemple, la stratégie suivante donne uniquement accès au fichier test.csv dans le compartiment S3 mybucket.

{
 "Version": "2012-10-17",
 "Statement": [
 {
 "Effect": "Allow",
 "Action": ["s3:GetObject"],
 "Resource": "arn:aws:s3:::mybucket/test.csv"
 }
 ]
 }

Vous trouverez plusieurs exemples de stratégies dans la documentation AWS : Exemples de stratégies d'utilisateurs et de rôles - Amazon Simple Storage Service.

Cliquez ensuite sur Suivant.

Donnez un titre à votre rôle. Vous pouvez également fournir une description et des balises.

Cliquez sur Créer un rôle dans le coin inférieur droit.

Vous devriez être redirigé vers la liste des rôles.

Mettre à jour la connexion avec l'ARN du rôle

Dans la liste des rôles de votre console AWS (c'est-à-dire Service IAM et Rôle dans le menu de navigation de gauche), cliquez sur votre rôle nouvellement créé.

Vous trouverez l'ARN du rôle au centre de l'écran. Il doit contenir votre numéro de compte AWS et le nom de votre rôle (par exemple, arn:aws:iam::061258320951:role/ODSRoleAuthMyDomain).

Copiez l'ARN de votre rôle, mettez à jour votre connexion Amazon S3 invalide que vous avez créée précédemment avec cet ARN et validez.

La plateforme vérifiera que la connexion est valide en interrogeant votre compte AWS.

Si l'API renvoie l'erreur suivante ODS AWS account is not authorized to assume the role identified by role_arn, vérifiez que l'ARN du rôle est le bon et que le rôle est bien configuré.

La connexion devrait maintenant être valide et prête à être utilisée.

Méthode par clé d'accès

Notez que cette option est disponible, mais qu'elle n'est pas recommandée par AWS.

  1. Choisissez une option:

  • Si vous souhaitez créer un jeu de données, cliquez sur Catalogue > Jeux de données et cliquez sur le bouton Nouveau jeu de données.

  • Si vous souhaitez ajouter une source à un jeu de données existant, cliquez sur Catalogue > Jeux de données et sélectionnez le jeu de données souhaité. Cliquez ensuite sur Ajouter une source.

  1. Dans l'assistant qui s'ouvre, sélectionnez "Amazon S3" sous la section "Configurer un service distant".

  2. Sélectionnez une connexion Amazon S3 existante ou créez une nouvelle connexion.

  3. Si vous souhaitez créer une nouvelle connexion, remplissez les informations suivantes :

  • URL

  • Région

  • Clé d'accès

  • Clé d'accès secrète

  • En-têtes (facultatif)

  1. Dans l'écran d'aperçu affichant les 20 premiers enregistrements du fichier, définissez la configuration source.

  2. Configurez les informations sur le jeu de données ou utilisez les valeurs pré-remplies :

  • Dans le champ Nom du jeu de données, entrez le titre de ce jeu de données.

  • Dans le champ Identifiant technique du jeu de données, saisissez un identifiant explicite pour ce jeu de données.

NB: Pour configurer une source OVH S3, utilisez le virtual-hosted-style et le nom du fichier auquel vous souhaitez accéder.

Exemple :

  • Virtual-hosted-style: https://waterbucket.s3.bhs.io.cloud.ovh.net/

  • Nom du fichier : fruits.csv

  • URL à fournir à ODS : https://waterbucket.s3.bhs.io.cloud.ovh.net/fruits.csv