TransferSpec

Configuration pour exécuter un transfert.

Représentation JSON
{
  "objectConditions": {
    object (ObjectConditions)
  },
  "transferOptions": {
    object (TransferOptions)
  },
  "transferManifest": {
    object (TransferManifest)
  },
  "sourceAgentPoolName": string,
  "sinkAgentPoolName": string,

  // Union field data_sink can be only one of the following:
  "gcsDataSink": {
    object (GcsData)
  },
  "posixDataSink": {
    object (PosixFilesystem)
  }
  // End of list of possible types for union field data_sink.

  // Union field data_source can be only one of the following:
  "gcsDataSource": {
    object (GcsData)
  },
  "awsS3DataSource": {
    object (AwsS3Data)
  },
  "httpDataSource": {
    object (HttpData)
  },
  "posixDataSource": {
    object (PosixFilesystem)
  },
  "azureBlobStorageDataSource": {
    object (AzureBlobStorageData)
  },
  "awsS3CompatibleDataSource": {
    object (AwsS3CompatibleData)
  },
  "hdfsDataSource": {
    object (HdfsData)
  }
  // End of list of possible types for union field data_source.

  // Union field intermediate_data_location can be only one of the following:
  "gcsIntermediateDataLocation": {
    object (GcsData)
  }
  // End of list of possible types for union field intermediate_data_location.
}
Champs
objectConditions

object (ObjectConditions)

Seuls les objets qui répondent à ces conditions sont inclus dans l'ensemble des objets de source de données et de récepteur de données. Les conditions d'objet basées sur la "date et heure de la dernière modification" des objets n'excluent pas les objets d'un récepteur de données.

transferOptions

object (TransferOptions)

Si l'option deleteObjectsUniqueInSink est true et que des conditions d'objet basées sur le temps telles que "heure de la dernière modification" sont spécifiées, la requête échoue avec une erreur INVALID_ARGUMENT.

transferManifest

object (TransferManifest)

Un fichier manifeste fournit une liste d'objets à transférer depuis la source de données. Ce champ pointe vers l'emplacement du fichier manifeste. Sinon, l'ensemble du bucket source est utilisé. ObjectConditions s'applique toujours.

sourceAgentPoolName

string

Indique le nom du pool d'agents associé à la source de données POSIX. Si aucune valeur n'est spécifiée, le nom par défaut est utilisé.

sinkAgentPoolName

string

Indique le nom du pool d'agents associé au point de terminaison de données POSIX. Si aucune valeur n'est spécifiée, le nom par défaut est utilisé.

Champ d'union data_sink. Récepteur d'écriture des données. data_sink ne peut être qu'un des éléments suivants :
gcsDataSink

object (GcsData)

Un collecteur de données Cloud Storage.

posixDataSink

object (PosixFilesystem)

Un collecteur de données de système de fichiers POSIX.

Champ d'union data_source. Source de lecture des données. data_source ne peut être qu'un des éléments suivants :
gcsDataSource

object (GcsData)

Une source de données Cloud Storage.

awsS3DataSource

object (AwsS3Data)

Source de données AWS S3.

httpDataSource

object (HttpData)

Source de données d'URL HTTP.

posixDataSource

object (PosixFilesystem)

Source de données de système de fichiers POSIX.

azureBlobStorageDataSource

object (AzureBlobStorageData)

Source de données Azure Blob Storage.

awsS3CompatibleDataSource

object (AwsS3CompatibleData)

Une source de données compatible avec AWS S3.

hdfsDataSource

object (HdfsData)

Source de données de cluster HDFS.

Champ d'union intermediate_data_location.

intermediate_data_location ne peut être qu'un des éléments suivants :

gcsIntermediateDataLocation

object (GcsData)

Pour les transferts entre systèmes de fichiers, spécifie un bucket Cloud Storage à utiliser comme emplacement intermédiaire pour transférer des données.

Pour en savoir plus, consultez Transférer des données entre des systèmes de fichiers.

PosixFilesystem

Ressource de système de fichiers POSIX.

Représentation JSON
{
  "rootDirectory": string
}
Champs
rootDirectory

string

Chemin d'accès au répertoire racine du système de fichiers.

AwsS3Data

Une ressource AwsS3Data peut être une source de données, mais pas un point de terminaison de données. Dans une ressource AwsS3Data, le nom d'un objet correspond au nom de clé de l'objet S3.

Représentation JSON
{
  "bucketName": string,
  "awsAccessKey": {
    object (AwsAccessKey)
  },
  "path": string,
  "roleArn": string,
  "cloudfrontDomain": string,
  "credentialsSecret": string,

  // Union field private_network can be only one of the following:
  "managedPrivateNetwork": boolean
  // End of list of possible types for union field private_network.
}
Champs
bucketName

string

Obligatoire. Nom du bucket S3 (voir Créer un bucket).

awsAccessKey

object (AwsAccessKey)

Uniquement en entrée. Clé d'accès AWS utilisée pour signer les requêtes API envoyées au bucket AWS S3. Les autorisations sur le bucket doivent être accordées à l'ID d'accès de la clé d'accès AWS.

Pour en savoir plus sur nos règles de conservation des données concernant les identifiants des utilisateurs, consultez la section Identifiants utilisateur.

path

string

Chemin d'accès racine pour transférer des objets.

Doit être une chaîne vide ou un nom de chemin d'accès complet se terminant par un "/". Ce champ est traité comme un préfixe d'objet. Par conséquent, il ne doit généralement pas commencer par une barre oblique.

roleArn

string

Nom de ressource Amazon (ARN) du rôle pour prendre en charge les identifiants temporaires via AssumeRoleWithWebIdentity. Pour en savoir plus sur les ARN, consultez la page ARN d'IAM.

Lorsqu'un ARN de rôle est fourni, le service de transfert récupère des identifiants temporaires pour la session à l'aide d'un appel AssumeRoleWithWebIdentity pour le rôle fourni à l'aide de l'GoogleServiceAccount de ce projet.

cloudfrontDomain

string

Facultatif. Nom de domaine de distribution CloudFront pointant vers ce bucket, à utiliser lors de la récupération.

Pour en savoir plus, consultez Transférer des données depuis S3 via CloudFront.

Format: https://{id}.cloudfront.net ou tout domaine personnalisé valide. Doit commencer par https://.

credentialsSecret

string

Facultatif. Nom de la ressource d'un secret dans Secret Manager.

Les identifiants AWS doivent être stockés dans Secret Manager au format JSON:

{ "accessKeyId": "ACCESS_KEY_ID", "secretAccessKey": "SECRET_ACCESS_KEY" }

GoogleServiceAccount doit être accordé à roles/secretmanager.secretAccessor pour la ressource.

Pour en savoir plus, consultez Configurer l'accès à une source: Amazon S3.

Si credentialsSecret est spécifié, ne spécifiez pas roleArn ni awsAccessKey.

Format : projects/{projectNumber}/secrets/{secret_name}

Champ d'union private_network.

private_network ne peut être qu'un des éléments suivants :

managedPrivateNetwork

boolean

Octets de sortie via un réseau privé géré par Google. Ce réseau est partagé entre les autres utilisateurs du service de transfert de stockage.

AwsAccessKey

Clé d'accès AWS (voir Identifiants de sécurité AWS).

Pour en savoir plus sur nos règles de conservation des données concernant les identifiants des utilisateurs, consultez la section Identifiants utilisateur.

Représentation JSON
{
  "accessKeyId": string,
  "secretAccessKey": string
}
Champs
accessKeyId

string

Obligatoire. ID de clé d'accès AWS.

secretAccessKey

string

Obligatoire. Clé d'accès secrète AWS. Ce champ n'est pas renvoyé dans les réponses RPC.

HttpData

Une ressource HttpData spécifie une liste d'objets sur le Web à transférer via HTTP. Les informations des objets à transférer sont contenues dans un fichier référencé par une URL. La première ligne du fichier doit être "TsvHttpData-1.0", qui spécifie le format du fichier. Les lignes suivantes spécifient les informations de la liste d'objets, un objet par entrée de liste. Chaque entrée comporte les champs suivants, séparés par des tabulations:

  • URL HTTP : emplacement de l'objet.

  • Length (Longueur) : taille de l'objet en octets.

  • MD5 : hachage MD5 codé en base64 de l'objet.

Pour obtenir un exemple de fichier TSV valide, consultez Transférer des données à partir d'URL.

Lorsque vous transférez des données à partir d'une liste d'URL, tenez compte des points suivants:

  • Lorsqu'un objet situé sur http(s)://hostname:port/<URL-path> est transféré vers un collecteur de données, son nom est <hostname>/<URL-path>.

  • Si la taille spécifiée d'un objet ne correspond pas à la taille réelle de l'objet extrait, l'objet n'est pas transféré.

  • Si le hachage MD5 spécifié ne correspond pas à celui calculé à partir des octets transférés, le transfert de l'objet échoue.

  • Assurez-vous que chaque URL spécifiée est accessible au public. Par exemple, dans Cloud Storage, vous pouvez partager un objet publiquement et obtenir un lien vers celui-ci.

  • Le service de transfert de stockage respecte les règles robots.txt et exige que le serveur HTTP source prenne en charge les requêtes Range et renvoie un en-tête Content-Length dans chaque réponse.

  • ObjectConditions n'a aucun effet lors du filtrage des objets à transférer.

Représentation JSON
{
  "listUrl": string
}
Champs
listUrl

string

Obligatoire. URL qui pointe vers le fichier qui stocke les entrées de la liste d'objets. Ce fichier doit autoriser l'accès public. Actuellement, seules les URL avec les schémas HTTP et HTTPS sont acceptées.

AzureBlobStorageData

Une ressource AzureBlobStorageData peut être une source de données, mais pas un point de terminaison de données. Une ressource AzureBlobStorageData représente un conteneur Azure. Le compte de stockage détermine le point de terminaison Azure. Dans une ressource AzureBlobStorageData, le nom d'un blob correspond au nom de clé de l'objet blob Azure Blob Storage.

Représentation JSON
{
  "storageAccount": string,
  "azureCredentials": {
    object (AzureCredentials)
  },
  "container": string,
  "path": string,
  "credentialsSecret": string
}
Champs
storageAccount

string

Obligatoire. Nom du compte Azure Storage.

azureCredentials

object (AzureCredentials)

Obligatoire. Uniquement en entrée. Identifiants utilisés pour authentifier les requêtes API envoyées à Azure.

Pour en savoir plus sur nos règles de conservation des données concernant les identifiants des utilisateurs, consultez la section Identifiants utilisateur.

container

string

Obligatoire. Conteneur à transférer depuis le compte Azure Storage.

path

string

Chemin d'accès racine pour transférer des objets.

Doit être une chaîne vide ou un nom de chemin d'accès complet se terminant par un "/". Ce champ est traité comme un préfixe d'objet. Par conséquent, il ne doit généralement pas commencer par une barre oblique.

credentialsSecret

string

Facultatif. Nom de la ressource d'un secret dans Secret Manager.

Le jeton Azure SAS doit être stocké dans Secret Manager au format JSON:

{ "sasToken" : "SAS_TOKEN" }

GoogleServiceAccount doit être accordé à roles/secretmanager.secretAccessor pour la ressource.

Pour en savoir plus, consultez Configurer l'accès à une source: Microsoft Azure Blob Storage.

Si credentialsSecret est spécifié, ne spécifiez pas azureCredentials.

Format : projects/{projectNumber}/secrets/{secret_name}

AzureCredentials

Identifiants Azure

Pour en savoir plus sur nos règles de conservation des données concernant les identifiants des utilisateurs, consultez la section Identifiants utilisateur.

Représentation JSON
{
  "sasToken": string
}
Champs
sasToken

string

Obligatoire. Signature d'accès partagé (SAP) Azure

Pour en savoir plus sur les signatures d'accès partagé, consultez la section Accorder un accès limité aux ressources Azure Storage à l'aide de signatures d'accès partagé (SAP).

AwsS3CompatibleData

Une ressource AwsS3CompatibleData.

Représentation JSON
{
  "bucketName": string,
  "path": string,
  "endpoint": string,
  "region": string,

  // Union field data_provider can be only one of the following:
  "s3Metadata": {
    object (S3CompatibleMetadata)
  }
  // End of list of possible types for union field data_provider.
}
Champs
bucketName

string

Obligatoire. Spécifie le nom du bucket.

path

string

Spécifie le chemin d'accès racine pour transférer des objets.

Doit être une chaîne vide ou un nom de chemin d'accès complet se terminant par un "/". Ce champ est traité comme un préfixe d'objet. Par conséquent, il ne doit généralement pas commencer par une barre oblique.

endpoint

string

Obligatoire. Spécifie le point de terminaison du service de stockage.

region

string

Spécifie la région à utiliser pour signer les requêtes. Vous pouvez laisser ce champ vide si les requêtes doivent être signées avec une région vide.

Champ d'union data_provider. Spécifie les métadonnées du fournisseur de données compatible avec S3. Chaque fournisseur peut contenir des attributs qui ne s'appliquent pas à tous les fournisseurs de données compatibles avec S3. Si cette valeur n'est pas spécifiée, S3CompatibleMetadata est utilisé par défaut. data_provider ne peut être qu'un des éléments suivants :
s3Metadata

object (S3CompatibleMetadata)

Métadonnées compatibles avec S3.

S3CompatibleMetadata

S3CompatibleMetadata contient les champs de métadonnées qui s'appliquent aux types de base de fournisseurs de données compatibles avec S3.

Représentation JSON
{
  "authMethod": enum (AuthMethod),
  "requestModel": enum (RequestModel),
  "protocol": enum (NetworkProtocol),
  "listApi": enum (ListApi)
}
Champs
authMethod

enum (AuthMethod)

Spécifie la méthode d'authentification et d'autorisation utilisée par le service de stockage. Si cette valeur n'est pas spécifiée, le service de transfert tente de déterminer la méthode d'authentification appropriée.

requestModel

enum (RequestModel)

Spécifie le modèle de requête d'API utilisé pour appeler le service de stockage. Si cette option n'est pas spécifiée, la valeur par défaut de RequestModel REQUEST_MODEL_VIRTUAL_HOSTED_STYLE est utilisée.

protocol

enum (NetworkProtocol)

Spécifie le protocole réseau de l'agent. Si cette option n'est pas spécifiée, la valeur par défaut de NetworkProtocol NETWORK_PROTOCOL_HTTPS est utilisée.

listApi

enum (ListApi)

API Listing à utiliser pour découvrir des objets. Si aucune valeur n'est spécifiée, le service de transfert tente de déterminer la bonne API à utiliser.

AuthMethod

Méthode d'authentification et d'autorisation utilisée par le service de stockage.

Enums
AUTH_METHOD_UNSPECIFIED AuthMethod n'est pas spécifié.
AUTH_METHOD_AWS_SIGNATURE_V4 Authentifier les requêtes avec AWS SigV4
AUTH_METHOD_AWS_SIGNATURE_V2 Requêtes d'authentification avec AWS SigV2

RequestModel

Modèle de requête de l'API.

Enums
REQUEST_MODEL_UNSPECIFIED RequestModel n'est pas spécifié.
REQUEST_MODEL_VIRTUAL_HOSTED_STYLE Effectuez des requêtes à l'aide du style d'hébergement virtuel. Exemple: https://nom-bucket.s3.région.amazonaws.com/nom-clé
REQUEST_MODEL_PATH_STYLE Effectuez des requêtes avec le style de chemin. Exemple: https://s3.région.amazonaws.com/nom-bucket/nom-clé

NetworkProtocol

Protocole réseau de l'agent pour accéder au service de stockage.

Enums
NETWORK_PROTOCOL_UNSPECIFIED NetworkProtocol n'est pas spécifié.
NETWORK_PROTOCOL_HTTPS Effectuez des requêtes à l'aide de HTTPS.
NETWORK_PROTOCOL_HTTP Non recommandé: cette méthode envoie les données en texte clair. Cette méthode n'est appropriée que sur un réseau fermé ou pour des données accessibles publiquement. Effectuez des requêtes à l'aide de HTTP.

ListApi

API Listing à utiliser pour découvrir des objets.

Enums
LIST_API_UNSPECIFIED ListApi n'est pas spécifié.
LIST_OBJECTS_V2 Effectuez la liste à l'aide de l'API ListObjectsV2.
LIST_OBJECTS Ancienne API ListObjects.

HdfsData

Une ressource HdfsData spécifie un chemin d'accès dans une entité HDFS (par exemple, un cluster). Tous les paramètres spécifiques au cluster, tels que les nœuds de noms et les ports, sont configurés sur les agents de transfert qui gèrent les requêtes. HdfsData ne contient donc que le chemin d'accès racine aux données dans notre transfert.

Représentation JSON
{
  "path": string
}
Champs
path

string

Chemin d'accès racine pour transférer des fichiers.

TransferManifest

Indique l'emplacement du fichier manifeste.

Représentation JSON
{
  "location": string
}
Champs
location

string

Spécifie le chemin d'accès au fichier manifeste dans Cloud Storage. Le compte de service géré par Google pour le transfert doit disposer de l'autorisation storage.objects.get pour cet objet. Exemple de chemin d'accès : gs://bucketName/path/manifest.csv.