@@ -77,6 +77,13 @@ message AzureCredentials {
77
77
// the `updated` property of Cloud Storage objects, the `LastModified` field
78
78
// of S3 objects, and the `Last-Modified` header of Azure blobs.
79
79
//
80
+ // For S3 objects, the `LastModified` value is the time the object begins
81
+ // uploading. If the object meets your "last modification time" criteria,
82
+ // but has not finished uploading, the object is not transferred. See
83
+ // [Transfer from Amazon S3 to Cloud
84
+ // Storage](https://cloud.google.com/storage-transfer/docs/create-transfers/agentless/s3#transfer_options)
85
+ // for more information.
86
+ //
80
87
// Transfers with a [PosixFilesystem][google.storagetransfer.v1.PosixFilesystem]
81
88
// source or destination don't support `ObjectConditions`.
82
89
message ObjectConditions {
@@ -306,6 +313,26 @@ message AwsS3Data {
306
313
// Storage blob's key
307
314
// name](https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata#blob-names).
308
315
message AzureBlobStorageData {
316
+ // The identity of an Azure application through which Storage Transfer Service
317
+ // can authenticate requests using Azure workload identity federation.
318
+ //
319
+ // Storage Transfer Service can issue requests to Azure Storage through
320
+ // registered Azure applications, eliminating the need to pass credentials to
321
+ // Storage Transfer Service directly.
322
+ //
323
+ // To configure federated identity, see
324
+ // [Configure access to Microsoft Azure
325
+ // Storage](https://cloud.google.com/storage-transfer/docs/source-microsoft-azure#option_3_authenticate_using_federated_identity).
326
+ message FederatedIdentityConfig {
327
+ // Required. The client (application) ID of the application with federated
328
+ // credentials.
329
+ string client_id = 1 [(google.api.field_behavior ) = REQUIRED ];
330
+
331
+ // Required. The tenant (directory) ID of the application with federated
332
+ // credentials.
333
+ string tenant_id = 2 [(google.api.field_behavior ) = REQUIRED ];
334
+ }
335
+
309
336
// Required. The name of the Azure Storage account.
310
337
string storage_account = 1 [(google.api.field_behavior ) = REQUIRED ];
311
338
@@ -349,6 +376,15 @@ message AzureBlobStorageData {
349
376
//
350
377
// Format: `projects/{project_number}/secrets/{secret_name}`
351
378
string credentials_secret = 7 [(google.api.field_behavior ) = OPTIONAL ];
379
+
380
+ // Optional. Federated identity config of a user registered Azure application.
381
+ //
382
+ // If `federated_identity_config` is specified, do not specify
383
+ // [azure_credentials][google.storagetransfer.v1.AzureBlobStorageData.azure_credentials]
384
+ // or
385
+ // [credentials_secret][google.storagetransfer.v1.AzureBlobStorageData.credentials_secret].
386
+ FederatedIdentityConfig federated_identity_config = 8
387
+ [(google.api.field_behavior ) = OPTIONAL ];
352
388
}
353
389
354
390
// An HttpData resource specifies a list of objects on the web to be
@@ -393,8 +429,9 @@ message AzureBlobStorageData {
393
429
// effect when filtering objects to transfer.
394
430
message HttpData {
395
431
// Required. The URL that points to the file that stores the object list
396
- // entries. This file must allow public access. Currently, only URLs with
397
- // HTTP and HTTPS schemes are supported.
432
+ // entries. This file must allow public access. The URL is either an
433
+ // HTTP/HTTPS address (e.g. `https://example.com/urllist.tsv`) or a Cloud
434
+ // Storage path (e.g. `gs://my-bucket/urllist.tsv`).
398
435
string list_url = 1 [(google.api.field_behavior ) = REQUIRED ];
399
436
}
400
437
@@ -585,7 +622,7 @@ message TransferOptions {
585
622
}
586
623
587
624
// When to overwrite objects that already exist in the sink. The default is
588
- // that only objects that are different from the source are ovewritten . If
625
+ // that only objects that are different from the source are overwritten . If
589
626
// true, all objects in the sink whose name matches an object in the source
590
627
// are overwritten with the source object.
591
628
bool overwrite_objects_already_existing_in_sink = 1 ;
@@ -963,7 +1000,7 @@ message Schedule {
963
1000
// [schedule_end_date][google.storagetransfer.v1.Schedule.schedule_end_date],
964
1001
// `end_time_of_day` specifies the end date and time for starting new transfer
965
1002
// operations. This field must be greater than or equal to the timestamp
966
- // corresponding to the combintation of
1003
+ // corresponding to the combination of
967
1004
// [schedule_start_date][google.storagetransfer.v1.Schedule.schedule_start_date]
968
1005
// and
969
1006
// [start_time_of_day][google.storagetransfer.v1.Schedule.start_time_of_day],
@@ -1058,6 +1095,23 @@ message TransferJob {
1058
1095
// The ID of the Google Cloud project that owns the job.
1059
1096
string project_id = 3 ;
1060
1097
1098
+ // Optional. The user-managed service account to which to delegate service
1099
+ // agent permissions. You can grant Cloud Storage bucket permissions to this
1100
+ // service account instead of to the Transfer Service service agent.
1101
+ //
1102
+ // Format is
1103
+ // `projects/-/serviceAccounts/ACCOUNT_EMAIL_OR_UNIQUEID`
1104
+ //
1105
+ // Either the service account email
1106
+ // (`SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com`) or the unique
1107
+ // ID (`123456789012345678901`) are accepted in the string. The `-`
1108
+ // wildcard character is required; replacing it with a project ID is invalid.
1109
+ //
1110
+ // See
1111
+ // https://cloud.google.com//storage-transfer/docs/delegate-service-agent-permissions
1112
+ // for required permissions.
1113
+ string service_account = 18 [(google.api.field_behavior ) = OPTIONAL ];
1114
+
1061
1115
// Transfer specification.
1062
1116
TransferSpec transfer_spec = 4 ;
1063
1117
@@ -1312,7 +1366,7 @@ message LoggingConfig {
1312
1366
// Deleting objects at the source or the destination.
1313
1367
DELETE = 2 ;
1314
1368
1315
- // Copying objects to Google Cloud Storage .
1369
+ // Copying objects to the destination .
1316
1370
COPY = 3 ;
1317
1371
}
1318
1372
@@ -1328,6 +1382,11 @@ message LoggingConfig {
1328
1382
// `LoggableAction` terminated in an error state. `FAILED` actions are
1329
1383
// logged as [ERROR][google.logging.type.LogSeverity.ERROR].
1330
1384
FAILED = 2 ;
1385
+
1386
+ // The `COPY` action was skipped for this file. Only supported for
1387
+ // agent-based transfers. `SKIPPED` actions are
1388
+ // logged as [INFO][google.logging.type.LogSeverity.INFO].
1389
+ SKIPPED = 3 ;
1331
1390
}
1332
1391
1333
1392
// Specifies the actions to be logged. If empty, no logs are generated.
0 commit comments