TransferSpec

Es la configuración para ejecutar una transferencia.

Representación 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.
}
Campos
objectConditions

object (ObjectConditions)

Solo se incluyen en el conjunto de objetos de fuente de datos y de destino de datos los objetos que satisfacen estas condiciones. Las condiciones de los objetos basadas en el "último tiempo de modificación" de los objetos no excluyen los objetos de un receptor de datos.

transferOptions

object (TransferOptions)

Si la opción deleteObjectsUniqueInSink es true y se especifican condiciones de objetos basadas en el tiempo, como "hora de última modificación", la solicitud falla con un error INVALID_ARGUMENT.

transferManifest

object (TransferManifest)

Un archivo de manifiesto proporciona una lista de objetos que se transferirán desde la fuente de datos. Este campo apunta a la ubicación del archivo de manifiesto. De lo contrario, se usa todo el bucket de origen. Se seguirán aplicando ObjectConditions.

sourceAgentPoolName

string

Especifica el nombre del grupo de agentes asociado con la fuente de datos de POSIX. Si no se especifica, se usa el nombre predeterminado.

sinkAgentPoolName

string

Especifica el nombre del grupo de agentes asociado con el receptor de datos de POSIX. Si no se especifica, se usa el nombre predeterminado.

Campo de unión data_sink. El receptor de escritura para los datos data_sink puede ser solo uno de los siguientes:
gcsDataSink

object (GcsData)

Un destino de datos de Cloud Storage

posixDataSink

object (PosixFilesystem)

Un sumidero de datos del sistema de archivos POSIX

Campo de unión data_source. Es la fuente de lectura de los datos. data_source puede ser solo uno de los siguientes:
gcsDataSource

object (GcsData)

Una fuente de datos de Cloud Storage

awsS3DataSource

object (AwsS3Data)

Una fuente de datos de AWS S3.

httpDataSource

object (HttpData)

Una fuente de datos de URL HTTP.

posixDataSource

object (PosixFilesystem)

Una fuente de datos del sistema de archivos POSIX

azureBlobStorageDataSource

object (AzureBlobStorageData)

Una fuente de datos de Azure Blob Storage

awsS3CompatibleDataSource

object (AwsS3CompatibleData)

Una fuente de datos compatible con AWS S3

hdfsDataSource

object (HdfsData)

Una fuente de datos de clúster de HDFS

Campo de unión intermediate_data_location.

intermediate_data_location puede ser una de las siguientes opciones:

gcsIntermediateDataLocation

object (GcsData)

Para las transferencias entre sistemas de archivos, especifica un bucket de Cloud Storage que se usará como ubicación intermedia a través de la cual se transferirán los datos.

Consulta Cómo transferir datos entre sistemas de archivos para obtener más información.

PosixFilesystem

Un recurso del sistema de archivos POSIX.

Representación JSON
{
  "rootDirectory": string
}
Campos
rootDirectory

string

Es la ruta de acceso al directorio raíz del sistema de archivos.

AwsS3Data

Un recurso AwsS3Data puede ser una fuente de datos, pero no un destino de datos. En un recurso AwsS3Data, el nombre de un objeto es el nombre de clave del objeto S3.

Representación 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.
}
Campos
bucketName

string

Obligatorio. Nombre del bucket de S3 (consulta Cómo crear un bucket).

awsAccessKey

object (AwsAccessKey)

Solo entrada. Clave de acceso de AWS que se usa para firmar las solicitudes de API al bucket de S3 de AWS. Los permisos del bucket se deben otorgar al ID de acceso de la clave de acceso de AWS.

Si deseas obtener información sobre nuestra política de retención de datos para credenciales de usuario, consulta Credenciales de usuario.

path

string

Es la ruta de acceso raíz para transferir objetos.

Debe ser una cadena vacía o un nombre de ruta de acceso completo que termine con una barra (/). Este campo se considera un prefijo de objeto. Por lo tanto, por lo general, no debe comenzar con una barra diagonal (/).

roleArn

string

El Amazon Resource Name (ARN) del rol para admitir credenciales temporales a través de AssumeRoleWithWebIdentity. Para obtener más información sobre los ARN, consulta ARN de IAM.

Cuando se proporciona un ARN de rol, el Servicio de transferencia recupera credenciales temporales para la sesión mediante una llamada AssumeRoleWithWebIdentity para el rol proporcionado con el GoogleServiceAccount de este proyecto.

cloudfrontDomain

string

Opcional. El nombre de dominio de distribución de CloudFront que apunta a este bucket para usarlo cuando se recupere

Consulta Cómo transferir desde S3 a través de CloudFront para obtener más información.

Formato: https://{id}.cloudfront.net o cualquier dominio personalizado válido. Debe comenzar con https://.

credentialsSecret

string

Opcional. El nombre del recurso de un Secret en Secret Manager.

Las credenciales de AWS se deben almacenar en Secret Manager en formato JSON:

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

Se debe otorgar roles/secretmanager.secretAccessor a GoogleServiceAccount para el recurso.

Consulta Configura el acceso a una fuente: Amazon S3 para obtener más información.

Si se especifica credentialsSecret, no especifiques roleArn ni awsAccessKey.

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

Campo de unión private_network.

private_network puede ser una de las siguientes opciones:

managedPrivateNetwork

boolean

Bytes de salida a través de una red privada administrada por Google Esta red se comparte con otros usuarios del Servicio de transferencia de almacenamiento.

AwsAccessKey

Clave de acceso de AWS (consulta Credenciales de seguridad de AWS).

Si deseas obtener información sobre nuestra política de retención de datos para credenciales de usuario, consulta Credenciales de usuario.

Representación JSON
{
  "accessKeyId": string,
  "secretAccessKey": string
}
Campos
accessKeyId

string

Obligatorio. ID de clave de acceso de AWS.

secretAccessKey

string

Obligatorio. Clave de acceso secreta de AWS Este campo no se muestra en las respuestas de RPC.

HttpData

Un recurso HttpData especifica una lista de objetos en la Web que se transferirán a través de HTTP. La información de los objetos que se transferirán se encuentra en un archivo al que hace referencia una URL. La primera línea del archivo debe ser "TsvHttpData-1.0", que especifica el formato del archivo. Las líneas posteriores especifican la información de la lista de objetos, un objeto por entrada de lista. Cada entrada tiene los siguientes campos separados por tabulaciones:

  • URL HTTP: Es la ubicación del objeto.

  • Longitud: Es el tamaño del objeto en bytes.

  • MD5: Es el hash MD5 codificado en base64 del objeto.

Para ver un ejemplo de un archivo TSV válido, consulta Cómo transferir datos desde URLs.

Cuando transfieras datos según una lista de URLs, ten en cuenta lo siguiente:

  • Cuando un objeto ubicado en http(s)://hostname:port/<URL-path> se transfiere a un destino de datos, el nombre del objeto en el destino de datos es <hostname>/<URL-path>.

  • Si el tamaño especificado de un objeto no coincide con el tamaño real del objeto recuperado, no se transferirá.

  • Si el MD5 especificado no coincide con el MD5 calculado a partir de los bytes transferidos, la transferencia del objeto fallará.

  • Asegúrate de que cada URL que especifiques sea de acceso público. Por ejemplo, en Cloud Storage, puedes compartir un objeto de forma pública y obtener su vínculo.

  • El servicio de transferencia de almacenamiento obedece las reglas de robots.txt y requiere que el servidor HTTP de origen admita solicitudes Range y muestre un encabezado Content-Length en cada respuesta.

  • ObjectConditions no tiene efecto cuando se filtran los objetos que se transferirán.

Representación JSON
{
  "listUrl": string
}
Campos
listUrl

string

Obligatorio. Es la URL que dirige al archivo que almacena las entradas de la lista de objetos. Este archivo debe permitir el acceso público. Actualmente, solo se admiten URLs con esquemas HTTP y HTTPS.

AzureBlobStorageData

Un recurso AzureBlobStorageData puede ser una fuente de datos, pero no un destino de datos. Un recurso AzureBlobStorageData representa un contenedor de Azure. La cuenta de almacenamiento determina el extremo de Azure. En un recurso AzureBlobStorageData, el nombre de un blob es el nombre de clave del blob de Azure Blob Storage.

Representación JSON
{
  "storageAccount": string,
  "azureCredentials": {
    object (AzureCredentials)
  },
  "container": string,
  "path": string,
  "credentialsSecret": string
}
Campos
storageAccount

string

Obligatorio. El nombre de la cuenta de Azure Storage.

azureCredentials

object (AzureCredentials)

Obligatorio. Solo entrada. Credenciales que se usan para autenticar solicitudes de API a Azure.

Si deseas obtener información sobre nuestra política de retención de datos para credenciales de usuario, consulta Credenciales de usuario.

container

string

Obligatorio. Es el contenedor que se transferirá desde la cuenta de Azure Storage.

path

string

Es la ruta de acceso raíz para transferir objetos.

Debe ser una cadena vacía o un nombre de ruta de acceso completo que termine con una barra (/). Este campo se considera un prefijo de objeto. Por lo tanto, por lo general, no debe comenzar con una barra diagonal (/).

credentialsSecret

string

Opcional. El nombre del recurso de un Secret en Secret Manager.

El token SAS de Azure se debe almacenar en Secret Manager en formato JSON:

{ "sasToken" : "SAS_TOKEN" }

Se debe otorgar roles/secretmanager.secretAccessor a GoogleServiceAccount para el recurso.

Consulta Configura el acceso a una fuente: Microsoft Azure Blob Storage para obtener más información.

Si se especifica credentialsSecret, no especifiques azureCredentials.

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

AzureCredentials

Credenciales de Azure

Si deseas obtener información sobre nuestra política de retención de datos para credenciales de usuario, consulta Credenciales de usuario.

Representación JSON
{
  "sasToken": string
}
Campos
sasToken

string

Obligatorio. Firma de acceso compartido (SAS) de Azure.

Para obtener más información sobre SAS, consulta Conceder acceso limitado a los recursos de Azure Storage mediante firmas de acceso compartido (SAS).

AwsS3CompatibleData

Un recurso AwsS3CompatibleData.

Representación 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.
}
Campos
bucketName

string

Obligatorio. Especifica el nombre del bucket.

path

string

Especifica la ruta de acceso raíz para transferir objetos.

Debe ser una cadena vacía o un nombre de ruta de acceso completo que termine con una barra (/). Este campo se considera un prefijo de objeto. Por lo tanto, por lo general, no debe comenzar con una barra diagonal (/).

endpoint

string

Obligatorio. Especifica el extremo del servicio de almacenamiento.

region

string

Especifica la región con la que se deben firmar las solicitudes. Se puede dejar en blanco si las solicitudes deben firmarse con una región vacía.

Campo de unión data_provider. Especifica los metadatos del proveedor de datos compatible con S3. Cada proveedor puede contener algunos atributos que no se aplican a todos los proveedores de datos compatibles con S3. Si no se especifica, se usa S3CompatibleMetadata de forma predeterminada. data_provider puede ser solo uno de los siguientes:
s3Metadata

object (S3CompatibleMetadata)

Metadatos compatibles con S3

S3CompatibleMetadata

S3CompatibleMetadata contiene los campos de metadatos que se aplican a los tipos básicos de proveedores de datos compatibles con S3.

Representación JSON
{
  "authMethod": enum (AuthMethod),
  "requestModel": enum (RequestModel),
  "protocol": enum (NetworkProtocol),
  "listApi": enum (ListApi)
}
Campos
authMethod

enum (AuthMethod)

Especifica el método de autenticación y autorización que usa el servicio de almacenamiento. Si no se especifica, el servicio de transferencia intentará determinar el método de autenticación correcto para usar.

requestModel

enum (RequestModel)

Especifica el modelo de solicitud a la API que se usa para llamar al servicio de almacenamiento. Si no se especifica, se usa el valor predeterminado de RequestModel REQUEST_MODEL_VIRTUAL_HOSTED_STYLE.

protocol

enum (NetworkProtocol)

Especifica el protocolo de red del agente. Si no se especifica, se usa el valor predeterminado de NetworkProtocol NETWORK_PROTOCOL_HTTPS.

listApi

enum (ListApi)

La API de Listing que se usará para descubrir objetos. Si no se especifica, el servicio de transferencia intentará determinar la API correcta para usar.

AuthMethod

Es el método de autenticación y autorización que usa el servicio de almacenamiento.

Enums
AUTH_METHOD_UNSPECIFIED No se especificó AuthMethod.
AUTH_METHOD_AWS_SIGNATURE_V4 Solicitudes de autenticación con AWS SigV4
AUTH_METHOD_AWS_SIGNATURE_V2 Solicitudes de autenticación con AWS SigV2

RequestModel

El modelo de solicitud de la API.

Enums
REQUEST_MODEL_UNSPECIFIED No se especificó RequestModel.
REQUEST_MODEL_VIRTUAL_HOSTED_STYLE Realiza solicitudes con el estilo de alojamiento virtual. Ejemplo: https://bucket-name.s3.region.amazonaws.com/key-name
REQUEST_MODEL_PATH_STYLE Realiza solicitudes con el estilo de ruta de acceso. Ejemplo: https://s3.región.amazonaws.com/nombre-bucket/nombre-clave

NetworkProtocol

Es el protocolo de red del agente para acceder al servicio de almacenamiento.

Enums
NETWORK_PROTOCOL_UNSPECIFIED No se especificó NetworkProtocol.
NETWORK_PROTOCOL_HTTPS Realiza solicitudes con HTTPS.
NETWORK_PROTOCOL_HTTP No se recomienda: Esta opción envía datos en texto simple. Esto solo es adecuado dentro de una red cerrada o para datos disponibles públicamente. Realiza solicitudes con HTTP.

ListApi

La API de Listing que se usará para descubrir objetos.

Enums
LIST_API_UNSPECIFIED No se especificó ListApi.
LIST_OBJECTS_V2 Realiza la enumeración con la API de ListObjectsV2.
LIST_OBJECTS API heredada de ListObjects.

HdfsData

Un recurso HdfsData especifica una ruta dentro de una entidad de HDFS (p.ej., un clúster). Toda la configuración específica del clúster, como los nombres de nodos y los puertos, se configura en los agentes de transferencia que atienden las solicitudes, por lo que HdfsData solo contiene la ruta de acceso raíz a los datos de nuestra transferencia.

Representación JSON
{
  "path": string
}
Campos
path

string

Es la ruta de acceso raíz para transferir archivos.

TransferManifest

Especifica dónde se encuentra el manifiesto.

Representación JSON
{
  "location": string
}
Campos
location

string

Especifica la ruta de acceso al manifiesto en Cloud Storage. La cuenta de servicio administrada por Google para la transferencia debe tener permiso storage.objects.get para este objeto. Un ejemplo de ruta es gs://bucketName/path/manifest.csv.