TransferSpec

用于运行转移的配置。

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.
}
字段
objectConditions

object (ObjectConditions)

只有满足这些对象条件的对象才会包含在数据源和数据接收器对象集中。基于对象的“上次修改时间”的对象条件不会排除数据接收器中的对象。

transferOptions

object (TransferOptions)

如果选项 deleteObjectsUniqueInSinktrue,并且指定了基于时间的对象条件(例如“上次修改时间”),则请求将失败并显示 INVALID_ARGUMENT 错误。

transferManifest

object (TransferManifest)

清单文件提供要从数据源传输的对象列表。此字段指向清单文件的位置。否则,系统会使用整个来源存储分区。ObjectConditions 仍然适用。

sourceAgentPoolName

string

指定与 Posix 数据源关联的代理池名称。如果未指定,则使用默认名称。

sinkAgentPoolName

string

指定与 Posix 数据接收器关联的代理池名称。如果未指定,则使用默认名称。

联合字段 data_sink。数据的写入接收器。data_sink 只能是下列其中一项:
gcsDataSink

object (GcsData)

Cloud Storage 数据接收器。

posixDataSink

object (PosixFilesystem)

POSIX 文件系统数据接收器。

联合字段 data_source。数据的读取来源。data_source 只能是下列其中一项:
gcsDataSource

object (GcsData)

Cloud Storage 数据源。

awsS3DataSource

object (AwsS3Data)

AWS S3 数据源。

httpDataSource

object (HttpData)

HTTP 网址数据源。

posixDataSource

object (PosixFilesystem)

POSIX 文件系统数据源。

azureBlobStorageDataSource

object (AzureBlobStorageData)

Azure Blob Storage 数据源。

awsS3CompatibleDataSource

object (AwsS3CompatibleData)

与 AWS S3 兼容的数据源。

hdfsDataSource

object (HdfsData)

HDFS 集群数据源。

联合字段 intermediate_data_location

intermediate_data_location 只能是下列其中一项:

gcsIntermediateDataLocation

object (GcsData)

对于文件系统之间的转移,指定要用作中间位置的 Cloud Storage 存储分区,以便通过该位置转移数据。

如需了解详情,请参阅在文件系统之间转移数据

PosixFilesystem

POSIX 文件系统资源。

JSON 表示法
{
  "rootDirectory": string
}
字段
rootDirectory

string

文件系统的根目录路径。

AwsS3Data

AwsS3Data 资源可以是数据源,但不能是数据接收器。在 AwsS3Data 资源中,对象的名称是 S3 对象的键名称。

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.
}
字段
bucketName

string

必需。S3 存储分区名称(请参阅创建存储分区)。

awsAccessKey

object (AwsAccessKey)

仅限输入。用于对发送到 AWS S3 存储分区的 API 请求进行签名的 AWS 访问密钥。必须向 AWS 访问密钥的访问 ID 授予对存储分区的权限。

如需了解我们的用户凭据数据保留政策,请参阅用户凭据

path

string

用于转移对象的根路径。

必须是空字符串或以“/”结尾的完整路径名称。此字段会被视为对象前缀。因此,它通常不应以“/”开头。

roleArn

string

通过 AssumeRoleWithWebIdentity 支持临时凭据的角色的 Amazon 资源名称 (ARN)。如需详细了解 ARN,请参阅 IAM ARN

提供角色 ARN 后,Transfer Service 会使用此项目的 GoogleServiceAccount 对所提供的角色发出 AssumeRoleWithWebIdentity 调用,以提取会话的临时凭据。

cloudfrontDomain

string

可选。指向此存储分区的 CloudFront 分发网域名称,用于提取时使用。

如需了解详情,请参阅通过 CloudFront 从 S3 转移

格式:https://{id}.cloudfront.net 或任何有效的自定义网域。必须以 https:// 开头。

credentialsSecret

string

可选。Secret Manager 中 Secret 的资源名称。

AWS 凭据必须以 JSON 格式存储在 Secrets Manager 中:

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

必须向 GoogleServiceAccount 授予相应资源的 roles/secretmanager.secretAccessor

如需了解详情,请参阅配置对来源的访问权限:Amazon S3

如果指定了 credentialsSecret,请勿指定 roleArnawsAccessKey

格式:projects/{projectNumber}/secrets/{secret_name}

联合字段 private_network

private_network 只能是下列其中一项:

managedPrivateNetwork

boolean

通过 Google 管理的专用网络传出的字节数。此网络由 Storage Transfer Service 的其他用户共享。

AwsAccessKey

AWS 访问密钥(请参阅 AWS 安全凭据)。

如需了解我们的用户凭据数据保留政策,请参阅用户凭据

JSON 表示法
{
  "accessKeyId": string,
  "secretAccessKey": string
}
字段
accessKeyId

string

必需。AWS 访问密钥 ID。

secretAccessKey

string

必需。AWS 私有访问密钥。RPC 响应中不会返回此字段。

HttpData

HttpData 资源用于指定要通过 HTTP 传输的 Web 上对象的列表。要转移的对象的信息包含在网址引用的文件中。文件中的第一行必须为 "TsvHttpData-1.0",用于指定文件的格式。后续行指定对象列表的信息,每条列表条目对应一个对象。每个条目都包含以下以制表符分隔的字段:

  • HTTP 网址 - 对象的位置。

  • 长度 - 对象的大小(以字节为单位)。

  • MD5 - 对象的 Base64 编码 MD5 哈希。

如需查看有效 TSV 文件的示例,请参阅从网址传输数据

根据网址列表转移数据时,请注意以下事项:

  • 当位于 http(s)://hostname:port/<URL-path> 的对象转移到数据接收器后,该对象在数据接收器中的名称为 <hostname>/<URL-path>

  • 如果对象的指定大小与提取的对象的实际大小不符,系统将不会转移该对象。

  • 如果指定的 MD5 与从传输的字节计算得出的 MD5 不匹配,则对象传输会失败。

  • 确保您指定的每个网址均可公开访问。例如,在 Cloud Storage 中,您可以公开共享对象并获取共享链接。

  • Storage Transfer Service 遵循 robots.txt 规则,并要求源 HTTP 服务器支持 Range 请求,并在每个响应中返回 Content-Length 标头。

  • 过滤要传输的对象时,ObjectConditions 没有任何影响。

JSON 表示法
{
  "listUrl": string
}
字段
listUrl

string

必需。指向存储对象列表条目的文件的网址。此文件必须允许公开访问。目前,仅支持使用 HTTP 和 HTTPS 架构的网址。

AzureBlobStorageData

AzureBlobStorageData 资源可以是数据源,但不能是数据接收器。AzureBlobStorageData 资源代表一个 Azure 容器。存储账号决定了 Azure 端点。在 AzureBlobStorageData 资源中,blob 的名称是 Azure Blob Storage blob 的键名称

JSON 表示法
{
  "storageAccount": string,
  "azureCredentials": {
    object (AzureCredentials)
  },
  "container": string,
  "path": string,
  "credentialsSecret": string
}
字段
storageAccount

string

必需。Azure Storage 账号的名称。

azureCredentials

object (AzureCredentials)

必需。仅限输入。用于对向 Azure 发出的 API 请求进行身份验证的凭据。

如需了解我们的用户凭据数据保留政策,请参阅用户凭据

container

string

必需。要从 Azure Storage 账号中转移的容器。

path

string

用于转移对象的根路径。

必须是空字符串或以“/”结尾的完整路径名称。此字段会被视为对象前缀。因此,它通常不应以“/”开头。

credentialsSecret

string

可选。Secret Manager 中 Secret 的资源名称。

Azure SAS 令牌必须以 JSON 格式存储在 Secret Manager 中:

{ "sasToken" : "SAS_TOKEN" }

必须向 GoogleServiceAccount 授予相应资源的 roles/secretmanager.secretAccessor

如需了解详情,请参阅配置对来源的访问权限:Microsoft Azure Blob Storage

如果指定了 credentialsSecret,请勿指定 azureCredentials

格式:projects/{projectNumber}/secrets/{secret_name}

AzureCredentials

Azure 凭据

如需了解我们的用户凭据数据保留政策,请参阅用户凭据

JSON 表示法
{
  "sasToken": string
}
字段
sasToken

string

必需。Azure 共享访问签名 (SAS)。

如需详细了解 SAS,请参阅使用共享访问签名 (SAS) 授予对 Azure Storage 资源的有限访问权限

AwsS3CompatibleData

AwsS3CompatibleData 资源。

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.
}
字段
bucketName

string

必需。指定存储分区的名称。

path

string

指定用于传输对象的根路径。

必须是空字符串或以“/”结尾的完整路径名称。此字段会被视为对象前缀。因此,它通常不应以“/”开头。

endpoint

string

必需。指定存储服务的端点。

region

string

指定用于对请求签名的区域。如果请求应使用空区域进行签名,则可以将此字段留空。

联合字段 data_provider。指定与 S3 兼容的数据提供程序的元数据。每个提供程序都可能包含一些不适用于所有与 S3 兼容的数据提供程序的属性。如果未指定,则默认使用 S3CompatibleMetadata。data_provider 只能是下列其中一项:
s3Metadata

object (S3CompatibleMetadata)

与 S3 兼容的元数据。

S3CompatibleMetadata

S3CompatibleMetadata 包含适用于与 S3 兼容的数据提供程序基本类型的元数据字段。

JSON 表示法
{
  "authMethod": enum (AuthMethod),
  "requestModel": enum (RequestModel),
  "protocol": enum (NetworkProtocol),
  "listApi": enum (ListApi)
}
字段
authMethod

enum (AuthMethod)

指定存储服务使用的身份验证和授权方法。如果未指定,转移服务将尝试确定要使用的正确身份验证方法。

requestModel

enum (RequestModel)

指定用于调用存储服务的 API 请求模型。如果未指定,则使用 RequestModel 的默认值 REQUEST_MODEL_VIRTUAL_HOSTED_STYLE。

protocol

enum (NetworkProtocol)

指定代理的网络协议。如果未指定,则使用 NetworkProtocol NETWORK_PROTOCOL_HTTPS 的默认值。

listApi

enum (ListApi)

用于发现对象的 Listing API。如果未指定,转移服务将尝试确定要使用的正确 API。

AuthMethod

存储服务使用的身份验证和授权方法。

枚举
AUTH_METHOD_UNSPECIFIED 未指定 AuthMethod。
AUTH_METHOD_AWS_SIGNATURE_V4 使用 AWS SigV4 进行身份验证请求。
AUTH_METHOD_AWS_SIGNATURE_V2 使用 AWS SigV2 的身份验证请求。

RequestModel

API 的请求模型。

枚举
REQUEST_MODEL_UNSPECIFIED 未指定 RequestModel。
REQUEST_MODEL_VIRTUAL_HOSTED_STYLE 使用虚拟托管样式执行请求。示例:https://bucket-name.s3.region.amazonaws.com/key-name
REQUEST_MODEL_PATH_STYLE 使用路径样式执行请求。示例:https://s3.region.amazonaws.com/bucket-name/key-name

NetworkProtocol

用于访问存储服务的代理网络协议。

枚举
NETWORK_PROTOCOL_UNSPECIFIED 未指定 NetworkProtocol。
NETWORK_PROTOCOL_HTTPS 使用 HTTPS 执行请求。
NETWORK_PROTOCOL_HTTP 不建议:此方法会以明文形式发送数据。这仅适用于封闭网络或公开数据。使用 HTTP 执行请求。

ListApi

用于发现对象的 Listing API。

枚举
LIST_API_UNSPECIFIED 未指定 ListApi。
LIST_OBJECTS_V2 使用 ListObjectsV2 API 执行列出操作。
LIST_OBJECTS 旧版 ListObjects API。

HdfsData

HdfsData 资源用于指定 HDFS 实体(例如集群)中的路径。所有集群专用设置(例如名称节点和端口)都配置在处理请求的传输代理上,因此 HdfsData 仅包含传输中数据的根路径。

JSON 表示法
{
  "path": string
}
字段
path

string

用于传输文件的根路径。

TransferManifest

指定清单的位置。

JSON 表示法
{
  "location": string
}
字段
location

string

指定 Cloud Storage 中清单的路径。用于转移的 Google 管理的服务账号必须对此对象具有 storage.objects.get 权限。路径示例如 gs://bucketName/path/manifest.csv