To ensure high quality and to be consistent with our other Cloud libraries, the documentation for Storage Transfer Service is now using the Cloud Client Libraries instead of the Google API Client Libraries. See Client libraries explained for more information about the two options.
The Google API Client Library continues to receive updates, but is no longer referenced in the documentation.
This guide covers the main differences as they apply to using Storage Transfer Service, and provides instructions on updating your clients when migrating to the Cloud Client Library.
Java
Updating dependencies
To switch to the new library, replace your dependency on
google-api-services-storagetransfer
with google-cloud-storage-transfer
.
<dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-storage-transfer</artifactId> <version>0.2.3</version> </dependency>
If you are using Gradle without BOM, add this to your dependencies:
implementation 'com.google.cloud:google-cloud-storage-transfer:0.2.3'
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>libraries-bom</artifactId>
<version>24.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage-transfer</artifactId>
</dependency>
For the most part, code can be pretty easily converted from the API Client Library to the Cloud Client Library. The following are some key differences between the two Java clients
Client instantiation
The Cloud Client Library reduces a lot of the boilerplate associated with client instantiation by handling it behind the scenes.
API Client Library
GoogleCredentials credential = GoogleCredentials.getApplicationDefault();
if (credential.createScopedRequired()) {
credential = credential.createScoped(StoragetransferScopes.all());
}
Storagetransfer storageTransfer = new Storagetransfer.Builder(Utils.getDefaultTransport(),
Utils.getDefaultJsonFactory(), new HttpCredentialsAdapter(credential))
.build();
Cloud Client Library
StorageTransferServiceClient storageTransfer = StorageTransferServiceClient.create();
Builders for model classes
Model classes in the Cloud Client Library use builders instead of constructors.
API Client Library
TransferJob transferJob =
new TransferJob()
.setStatus("ENABLED");
Cloud Client Library
TransferJob transferJob =
TransferJob.newBuilder()
.setStatus(Status.ENABLED)
.build();
List operations return iterables
List operations in the Cloud Client Library return simple iterables instead of the paginated results in the API Client Library.
API Client Library
public class StoragetransferExample {
public static void main(String args[]) throws IOException, GeneralSecurityException {
Storagetransfer storagetransferService = createStoragetransferService();
Storagetransfer.TransferJobs.List request = storagetransferService.transferJobs().list();
ListTransferJobsResponse response;
do {
response = request.execute();
if (response.getTransferJobs() == null) {
continue;
}
for (TransferJob transferJob : response.getTransferJobs()) {
System.out.println(transferJob);
}
request.setPageToken(response.getNextPageToken());
} while (response.getNextPageToken() != null);
}
public static Storagetransfer createStoragetransferService()
throws IOException, GeneralSecurityException {
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
GoogleCredential credential = GoogleCredential.getApplicationDefault();
}
return new Storagetransfer.Builder(httpTransport, jsonFactory, credential)
.build();
}
}
Cloud Client Library
public class StoragetransferExample {
public static void main(String args[]) throws Exception {
StorageTransferServiceClient storageTransfer = StorageTransferServiceClient.create();
ListTransferJobsRequest request = ListTransferJobsRequest.newBuilder().build();
for (TransferJob job : client.listTransferJobs(request).iterateAll()) {
System.out.println(job);
}
}
}
Sample comparisons
Here, we include the old API Client Library samples, compared to their equivalent samples using the Cloud Client Library. If you used these samples before, you can use this comparison to understand how to move your code to the new Cloud Client Library.
Transfer from Amazon S3
API Client Library
Cloud Client Library
Transfer to nearline
API Client Library
Cloud Client Library
Check latest transfer operation
API Client Library
Cloud Client Library
Python
Updating dependencies
To use the new library, add a dependency on google-cloud-storage-transfer
.
This will be used instead of the discovery client from
google-api-python-client
.
pip install --upgrade google-cloud-storage-transfer
Client instantiation
Use the storage_transfer
module instead of googleapiclient.discovery
.
API Client Library
Cloud Client Library
Sample comparisons
To illustrate the differences between the two libraries, here are the old API Client Samples side-by-side with their equivalents in the Cloud Client Library.
Transfer from Amazon S3
API Client Library
Cloud Client Library
Transfer to nearline
API Client Library
Cloud Client Library
Note the import of google.protobuf.duration_pb2.Duration
.
Check latest transfer operation
API Client Library
Cloud Client Library
Note the use of storage_transfer.TransferOperation.deserialize