Plusieurs services SystemLink Enterprise requièrent un fournisseur de stockage d'objets.

SystemLink Enterprise supporte les gestionnaires de stockage suivants :
  • Stockage Amazon S3
  • Stockage compatible avec Amazon S3
  • Stockage Blob Azure
Remarque Un fournisseur de stockage d'objets compatible avec Amazon S3 doit implémenter l'intégralité de l'API Amazon S3. Pour en savoir plus, reportez-vous à la section Référence de l'API Amazon S3. Le service Data Frame ne prend pas en charge l'API XML interopérable GCS Amazon S3.

Les paramètres figurant dans les tableaux suivants pour le stockage Amazon S3 et Azure Blob sont partagés entre plusieurs configurations. Ce partage s'effectue grâce à la syntaxe d'ancrage YAML dans les fichiers de valeurs Helm. Cette syntaxe offre un moyen pratique de partager une configuration commune dans l'ensemble de vos fichiers de valeurs. Vous pouvez remplacer ces valeurs par défaut par des valeurs personnalisées individuellement.

Fournisseurs de stockage Amazon S3 et compatibles Amazon S3

Remarque Vous pouvez crypter des objets dans un stockage Amazon S3 via SSE-S3 ou SSE-KMS avec une clé de compartiment. Pour en savoir plus, consultez Protection des données Amazon S3 à l'aide du cryptage.

Définissez la configuration suivante dans votre fichier de configuration Helm aws-supplemental-values.yaml ou storage-values.yaml.

Vous pouvez configurer des références à des secrets dans les fichiers aws-secrets.yaml, storage-secrets.yaml ou directement sur le cluster.

Tableau 33. Paramètres configurables
Paramètres avant la version 2025-07 Paramètres après la version 2025-07 Détails
N'est pas applicable
  • dataframeservice.storage.type
  • fileingestion.storage.type
  • feedservice.storage.type
  • nbexecservice.storage.type
Cette valeur représente le type de stockage du service. Attribuez la valeur s3.
  • dataframeservice.s3.port
  • fileingestion.s3.port
  • feedservice.s3.port
  • nbexecservice.s3.port
  • dataframeservice.storage.s3.port
  • fileingestion.storage.s3.port
  • feedservice.storage.s3.port
  • nbexecservice.storage.s3.port
Cette valeur représente le numéro du port de service du fournisseur de stockage.
  • dataframeservice.s3.host
  • fileingestion.s3.host
  • feedservice.s3.host
  • nbexecservice.s3.host
  • dataframeservice.storage.s3.host
  • fileingestion.storage.s3.host
  • feedservice.storage.s3.host
  • nbexecservice.storage.s3.host
Cette valeur représente le nom d'hôte du service du fournisseur de stockage.
  • dataframeservice.s3.schemeName
  • fileingestion.s3.scheme
  • feedservice.s3.scheme
  • nbexecservice.s3.scheme
  • dataframeservice.storage.s3.schemeName
  • fileingestion.storage.s3.scheme
  • feedservice.storage.s3.scheme
  • nbexecservice.storage.s3.scheme
Cette valeur représente le schéma du service du fournisseur de stockage. Cette valeur est généralement https.
  • dataframeservice.s3.region
  • fileingestion.s3.region
  • feedservice.s3.region
  • nbexecservice.s3.region
  • dataframeservice.storage.s3.region
  • fileingestion.storage.s3.region
  • feedservice.storage.s3.region
  • nbexecservice.storage.s3.region
Cette valeur représente la région AWS où se trouve le compartiment S3.
  • dataframeservice.sldremio.distStorage
Inchangée

Traitez les marqueurs <ATTENTION>.

Ces paramètres configurent le stockage distribué requis pour le service DataFrame.

  • dataframeservice.storage.s3.auth.secretName
  • fileingestion.storage.s3.secretName
  • feedservice.storage.s3.secretName
  • nbexecservice.storage.s3.secretName
Inchangée Nom du secret contenant les identifiants pour se connecter au service du fournisseur de stockage.

À partir de la version 2025-11, fileingestioncdc ajoute les paramètres suivants.

Tableau 34. 2025-11 Libérer les paramètres
Paramètre Détails
fileingestioncdc.highAvailability.storage.s3.port Cette valeur représente le numéro de port du service du fournisseur de stockage.
fileingestioncdc.highAvailability.storage.s3.scheme Cette valeur représente le schéma du service du fournisseur de stockage. Cette valeur est généralement https.

Connexion des services à S3 via IAM

Attribuez un rôle IAM pour connecter les services à Amazon S3. Configurez les comptes de service et les annotations de rôle IAM dans votre fichier de valeurs Helm.

Remarque À partir de la version 2026-03, SystemLink a obsolète AWS_WEB_IDENTITY_TOKEN. SystemLink a conservé les fonctions du jeton en tant qu'alias d'AWS_IAM. Utilisez AWS_IAM comme type d'authentification S3 pour l'authentification basée sur les rôles IAM.
  • Créez un compte service pour chaque service en définissant serviceAccount.create: true dans votre fichier de valeurs Helm.
    Remarque Les services Flink ne requièrent pas cette configuration. L'opérateur Flink gère le compte service.
  • Créez une stratégie IAM avec la déclaration suivante :
    "Action": [
      "s3:PutObject",
      "s3:ListBucket",
      "s3:GetObject",
      "s3:DeleteObject",
      "s3:AbortMultipartUpload"
    ],
    "Effect": "Allow",
    "Resource": [
      "<s3_bucket_ARN>/*",
      "<s3_bucket_ARN>"
    ]
    Remarque L'espace réservé <s3_bucket_ARN> représente le nom de ressource Amazon pour le compartiment S3 du service.
  • Créer un rôle IAM qui applique la nouvelle stratégie IAM.
    Remarque La plupart des rôles IAM utilisent la convention de nom suivante : <release-name>-<service-name>-role. Par exemple, systemlink-feedservice-role. Les services Flink partagent la même configuration que l'opérateur Flink et utilisent : <release-name>-flink-role.
Remarque N'incluez les annotations de compte service suivantes que si vous utilisez IRSA. L'identité de pod ne requiert pas ces annotations.
Tableau 35. Configurations de service
Service Configuration
Service de ressource CDC
assetservicecdc:
  highAvailability:
    storage:
      s3:
        authType: "AWS_IAM"
flinkoperator:
  flink-kubernetes-operator:
    jobServiceAccount:
      annotations:
        eks.amazonaws.com/role-arn: "arn:aws:iam::<account-id>:role/<release-name>-flink-role"
Service DataFrame
dataframeservice:
  storage:
    s3:
      authType: "AWS_IAM"
  serviceAccount:
    annotations:
      eks.amazonaws.com/role-arn: "arn:aws:iam::<account-id>:role/<release-name>-dataframeservice-role"
dataframeservice:
  sldremio:
    distStorage:
      aws:
        authentication: "metadata"
Remarque À partir de la version 2026-05, Dremio prend en charge l’identité de pod EKS pour le stockage distribué. Pour utiliser l'identité de pod, définissez sldremio.distStorage.aws.authentication sur podIdentity au lieu de métadonnées.
dataframeservice:
  sldremio:
    storage:
      s3:
        authType: "EC2_METADATA"
        roleArn: "arn:aws:iam::<account-id>:role/<release-name>-dataframeservice-role"

Pour des étapes de configuration IAM Dremio supplémentaires, reportez-vous à Configurer l'authentification Dremio pour S3.

Service de flux
feedservice:
  storage:
    s3:
      authType: "AWS_IAM"
  serviceAccount:
    annotations:
      eks.amazonaws.com/role-arn: "arn:aws:iam::<account-id>:role/<release-name>-feedservice-role"
Service d'ingestion de fichiers
fileingestion:
  storage:
    s3:
      authType: "AWS_IAM"
  serviceAccount:
    annotations:
      eks.amazonaws.com/role-arn: "arn:aws:iam::<account-id>:role/<release-name>-fileingestion-role"
Ingestion de fichiers CDC
fileingestioncdc:
  highAvailability:
    storage:
      s3:
        authType: "AWS_IAM"
flinkoperator:
    flink-kubernetes-operator:
      jobServiceAccount:
        annotations:
          eks.amazonaws.com/role-arn: "arn:aws:iam::<account-id>:role/<release-name>-flink-role"
Service d'exécution de notebook
nbexecservice:
  storage:
    s3:
      authType: "AWS_IAM"
  serviceAccount:
    annotations:
      eks.amazonaws.com/role-arn: "arn:aws:iam::<account-id>:role/<release-name>-executions-role"
Service système CDC
systemscdc:
  highAvailability:
    storage:
      s3:
        authType: "AWS_IAM"
flinkoperator:
  flink-kubernetes-operator:
    jobServiceAccount:
      annotations:
        eks.amazonaws.com/role-arn: "arn:aws:iam::<account-id>:role/<release-name>-flink-role"

Configuration de l'authentification Dremio pour S3

Dremio requiert une authentification pour deux chemins de stockage S3.

  • Stockage des données — Le compartiment DataFrame Service S3 qui stocke les données de table. Dremio accède à ce compartiment via les métadonnées d'instance EC2 en assumant le rôle IAM du service DataFrame.
  • Stockage distribué — Un bucket S3 séparé utilisé par Dremio pour la coordination des requêtes et la mise en cache. À partir de la version 2026-05, NI recommande d’authentifier le stockage distribué via l’identité de pod EKS. Pour les versions antérieures ou lorsque l'identité du pod n'est pas disponible, utilisez l'authentification par métadonnées EC2.
Remarque NI recommande d'utiliser des compartiments S3 séparés pour le stockage des données et le stockage distribué. NI recommande un accès limité pour chaque rôle IAM.
Remarque Lorsque vous changez la valeur de dataframeservice.sldremio.storage.s3.authType, vous devez réinitialiser Dremio après avoir appliqué la mise à jour. Cette exigence ne s'applique pas aux premières installations. Pour en savoir plus, reportez-vous à Réinitialisation de Dremio.

Effectuez les étapes suivantes pour configurer l'authentification Dremio.

  1. Assurez-vous que la politique de confiance pour le rôle IAM DataFrame Service respecte les deux principes suivants.
    • L'agent d'identité de pod EKS (pods.eks.amazonaws.com) doit avoir l'autorisation sts:AssumeRole et l'autorisation sts:TagSession.
    • Le rôle de groupe de nœuds EC2 qui exécute les pods Dremio doit avoir l'autorisation sts:AssumeRole.
    Remarque Le rôle DataFrame Service requiert le rôle de groupe de nœuds EC2 en tant que principal de confiance. Dremio accède au bucket DataFrame Service S3 en assumant ce rôle via l'authentification des métadonnées EC2. Si vous avez créé le rôle DataFrame Service après Connecting Services to S3 through IAM, mettez à jour la politique de confiance pour inclure le rôle de groupe de nœuds EC2 ARN.
  2. Accordez au groupe de nœuds EC2 qui exécute des pods Dremio l'autorisation d'assumer le rôle IAM du service DataFrame. Pour accorder cette autorisation, ajoutez la déclaration suivante à la stratégie de rôle du groupe de nœuds.
    {
      "Action": [
        "sts:AssumeRole"
      ],
      "Effect": "Allow",
      "Resource": "<dataframeservice_role_ARN>"
    }
  3. Définissez dataframeservice.storage.s3.authType sur AWS_IAM.
  4. Définissez dataframeservice.sldremio.storage.s3.authType sur EC2_METADATA.
  5. Définissez dataframeservice.sldremio.storage.s3.roleArn sur le ARN de rôle IAM du service DataFrame.
  6. Configurez l'authentification de stockage distribué en utilisant l'une des options suivantes.
    Tableau 36. Options de configuration de l'authentification de stockage distribué
    Option Étapes
    Identité de pod EKS
    Remarque NI recommande cette option
    1. Créez un rôle IAM de stockage distribué Dremio.
      1. Créez une stratégie IAM avec les déclarations suivantes :

        Ajoutez une instruction pour permettre la découverte globale du compartiment S3.

        {
          "Action": [
            "s3:GetBucketLocation",
            "s3:ListAllMyBuckets"
          ],
          "Effect": "Allow",
          "Resource": "arn:aws:s3:::*"
        }

        Ajoutez une instruction pour autoriser l'accès au compartiment de stockage distribué.

        {
          "Action": [
            "s3:ListBucket",
            "s3:ListMultipartUploadParts",
            "s3:ListBucketMultipartUploads",
            "s3:AbortMultipartUpload",
            "s3:PutObject",
            "s3:GetObject",
            "s3:DeleteObject"
          ],
          "Effect": "Allow",
          "Resource": [
            "<distributed_storage_bucket_ARN>",
            "<distributed_storage_bucket_ARN>/*"
          ]
        }
      2. Créez le rôle IAM avec une politique de confiance qui autorise l'agent d'identité de pod EKS (pods.eks.amazonaws.com) avec les autorisations sts:AssumeRole et sts:TagSession.
      3. Joignez la politique IAM au rôle.
    2. Créez des associations d'identité de pod EKS entre le rôle de stockage distribué Dremio, le compte de service dremio-coordinator et le compte de service dremio-executor.
    3. Définissez dataframeservice.sldremio.distStorage.aws.authentication sur podIdentity.
    Métadonnées EC2
    Remarque Utilisez cette option lorsque l'identité du pod n'est pas disponible
    1. Ajoutez une déclaration à la politique de rôle pour le groupe de nœuds EC2 afin de permettre la découverte globale du bucket S3.
      {
        "Action": [
          "s3:GetBucketLocation",
          "s3:ListAllMyBuckets"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::*"
      }
    2. Ajoutez une instruction à la stratégie de rôle du groupe de nœuds EC2 pour autoriser l'accès au compartiment de stockage distribué.

      {
        "Action": [
          "s3:ListBucket",
          "s3:ListMultipartUploadParts",
          "s3:ListBucketMultipartUploads",
          "s3:AbortMultipartUpload",
          "s3:PutObject",
          "s3:GetObject",
          "s3:DeleteObject"
        ],
        "Effect": "Allow",
        "Resource": [
          "<distributed_storage_bucket_ARN>",
          "<distributed_storage_bucket_ARN>/*"
        ]
      }
      Remarque Si le bucket DataFrame Service S3 et le bucket de stockage distribué Dremio sont identiques, utilisez le même bucket ARN dans les domaines suivants.
      • La politique de rôle du service DataFrame.
      • Les déclarations précédentes.
    3. Définissez dataframeservice.sldremio.distStorage.aws.authentication sur métadonnées.
  7. Si vos compartiments S3 utilisent le cryptage SSE-KMS, assurez-vous que les rôles suivants ont les autorisations kms:GenerateDataKey et kms:Decrypt sur la clé KMS.
    • Rôle IAM du service DataFrame
    • Rôle de stockage distribué Dremio
      Remarque Si votre authentification de stockage distribué utilise des métadonnées EC2, définissez le rôle du groupe de nœuds EC2.
  8. Supprimez la configuration de clé d'accès Dremio S3 des secrets lors de l'utilisation de l'authentification basée sur IAM.

Pour des raisons de sécurité, NI recommande d'exécuter Dremio sur un groupe de nœuds dédié.

Remarque Si Dremio partage un groupe de nœuds avec d'autres charges de travail. Ces charges de travail peuvent accéder aux mêmes informations d'identification de profil d'instance EC2 via les métadonnées du nœud. Utilisez un groupe de nœuds dédié pour limiter l'accès des informations d'identification aux charges de travail Dremio.

Pour utiliser l'authentification de métadonnées EC2 à partir de pods, vous devez avoir une limite de saut IMDS (Instance Metadata Service) supérieure à 1. Une limite de saut supérieure ou égale à 2 permet aux pods de récupérer les informations d'identification en plus du nœud.

Remarque Ce paramètre est pertinent sur les nœuds Amazon EKS qui utilisent AL2023, où la limite de saut par défaut peut empêcher les pods d'accéder aux informations d'identification IMDS. Pour en savoir plus, reportez-vous à Considérations relatives à l'accès IMDS.

Connexion des services à S3 à l'aide de clés d'accès

Connectez vos services à S3 via des clés d'accès dans les cas suivants.

Remarque N'utilisez l'authentification par clé d'accès que si votre système requiert des informations d'identification statiques.
  • Fournisseurs de stockage compatibles S3 : seul Amazon S3 supporte l'authentification basée sur les rôles IAM. Pour les autres fournisseurs compatibles S3, utilisez l'authentification par clé d'accès.
  • Déploiements AWS sans configuration de rôle IAM : si l'identité de pod et IRSA ne sont pas disponibles, vous pouvez utiliser l'authentification par clé d'accès.
Tableau 37. Configurations de fichiers pour les clés d'accès
Configuration Description
Fichier de valeurs

Dans votre fichier systemlink-values.yaml ou aws-supplemental-values.yaml, spécifiez les paramètres de connexion S3 et la référence secrète.

feedservice:
  storage:
    s3:
      secretName: "feeds-s3-credentials"
      accessKeyIdName: "aws-access-key-id"
      accessKeyName: "aws-secret-access-key"
      authType: "ACCESS_KEY"
      bucket: "systemlink-feeds"
      scheme: "https://"
      host: "s3.amazonaws.com"
      port: 443
      region: "us-east-1"
Fichier secret

Dans votre fichier systemlink-secrets.yaml ou aws-secrets.yaml, fournissez les informations d'identification d'accès.

feedservice:
  secrets:
    s3:
      accessKeyId: "<your-access-key-id>"
      accessKey: "<your-secret-access-key>"

Le même modèle s'applique aux autres services lorsque l'authentification IAM n'est pas disponible.

Remarque Lors d'un déploiement sur AWS avec Amazon S3, NI recommande d'utiliser l'authentification IAM là où elle est supportée pour améliorer la sécurité et la gestion des informations d'identification.

Fournisseurs de Stockage Blob Azure

Remarque Pour le compte de stockage utilisé par le service Data Frame, vous devez désactiver la suppression réversible d'objets blob et l'espace de noms hiérarchique.

Définissez la configuration suivante dans votre fichier de configuration Helm azure-supplemental-values.yaml ou storage-values.yaml.

Vous pouvez configurer des références à des secrets dans le fichier azure-secrets.yaml, le fichier storage-secrets.yaml ou directement sur le cluster.

Tableau 38. Paramètres configurables
Paramètres à partir de la version 2025-07 Détails
  • dataframeservice.storage.type
  • fileingestion.storage.type
  • fileingestioncdc.highAvailability.storage.type
  • feedservice.storage.type
  • nbexecservice.storage.type

Cette valeur représente le type de stockage du service. Attribuez la valeur azur.

  • dataframeservice.storage.azure.blobApiHost
  • fileingestion.storage.azure.blobApiHost
  • fileingestioncdc.highAvailability.storage.azure.blobApiHost
  • feedservice.storage.azure.blobApiHost
  • nbexecservice.storage.azure.blobApiHost

Cette valeur représente l'hôte du stockage Blob Azure sans le nom du compte. Par exemple, vous pouvez attribuer la valeur blob.core.windows.net ou blob.core.usgovcloudapi.net.

Si votre stockage n'utilise pas le port par défaut, ajoutez le port à la fin de l'hôte. Par exemple, blob.core.windows.net:1234.

  • dataframeservice.storage.azure.dataLakeApiHost

Cette valeur représente l'hôte et le port du stockage Azure Data Lake auquel se connecter sans le nom de compte. Par exemple, vous pouvez définir la valeur à dfs.core.windows.net.

Si votre stockage n'utilise pas le port par défaut, ajoutez le port à la fin de l'hôte. Par exemple : dfs.core.windows.net:1234.

  • dataframeservice.storage.azure.accountName
  • fileingestion.storage.azure.accountName
  • fileingestioncdc.highAvailability.storage.azure.accountName
  • feedservice.storage.azure.accountName
  • nbexecservice.storage.azure.accountName

Cette valeur représente le compte de stockage de votre service. NI recommande d'utiliser différents comptes de stockage pour différents services.

Connexion des services au stockage Azure Blob

Pour configurer l'authentification Azure Blob Storage, vous devez configurer le fichier de valeurs et le fichier de secrets.

Configurez l'authentification Azure Blob Storage en utilisant le fichier de valeurs et le fichier de secrets.

Dans votre fichier azure-supplemental-values.yaml ou storage-values.yaml, spécifiez les paramètres de stockage Azure.

feedservice:
  storage:
    type: "azure"
    azure:
      accountName: "<your-azure-storage-account-name>"
      blobApiHost: "blob.core.windows.net"

Dans votre fichier azure-secrets.yaml, fournissez les informations d'identification d'accès.

feedservice:
  secrets:
    azure:
      accessKey: "<your-azure-storage-access-key>"

Il en va de même pour les autres services.

Limites et considérations financières pour le stockage de fichiers

Pour ajuster les limites et les coûts des services de stockage de fichiers, reportez-vous aux configurations suivantes.

Tableau 39. Considérations relatives au stockage de fichiers
Considération Configuration
Réduire les coûts de stockage.
Pour supprimer les chargements en plusieurs parties incomplets, attribuez la configuration appropriée à votre service. Si vous utilisez Amazon S3, attribuez la valeur AbortIncompleteMultipartUpload à vos compartiments S3.
Remarque Le stockage Azure supprime automatiquement les blocs non validés au bout de sept jours. Pour les autres fournisseurs compatibles S3, reportez-vous à la documentation du fournisseur.
Ajuster le nombre de fichiers qu'un seul utilisateur peut télécharger par seconde.

Configurez la valeur fileingestion.rateLimits.upload.

Par défaut, la valeur est de 3 fichiers par seconde et par utilisateur. En équilibrant la charge entre les répliques, la vitesse effective est supérieure à la vitesse spécifiée.

Ajuster la taille de fichier maximale que les utilisateurs peuvent télécharger.

Configurez la valeur fileingestion.uploadLimitGB.

Par défaut, cette valeur est de 2 Go.

Ajuster le nombre de requêtes simultanées qu'un seul duplicata peut servir pour ingérer des données.

Configurez la valeur dataframeservice.rateLimits.ingestion.requestLimit.