@@ -43,6 +43,18 @@ def delete_bucket(bucket_name):
43
43
print ('Bucket {} deleted' .format (bucket .name ))
44
44
45
45
46
+ def enable_default_kms_key (bucket_name , kms_key_name ):
47
+ """Sets a bucket's default KMS key."""
48
+ storage_client = storage .Client ()
49
+ bucket = storage_client .get_bucket (bucket_name )
50
+ bucket .default_kms_key_name = kms_key_name
51
+ bucket .patch ()
52
+
53
+ print ('Set default KMS key for bucket {} to {}.' .format (
54
+ bucket .name ,
55
+ bucket .default_kms_key_name ))
56
+
57
+
46
58
def get_bucket_labels (bucket_name ):
47
59
"""Prints out a bucket's labels."""
48
60
storage_client = storage .Client ()
@@ -143,6 +155,20 @@ def upload_blob(bucket_name, source_file_name, destination_blob_name):
143
155
destination_blob_name ))
144
156
145
157
158
+ def upload_blob_with_kms (bucket_name , source_file_name , destination_blob_name ,
159
+ kms_key_name ):
160
+ """Uploads a file to the bucket, encrypting it with the given KMS key."""
161
+ storage_client = storage .Client ()
162
+ bucket = storage_client .get_bucket (bucket_name )
163
+ blob = bucket .blob (destination_blob_name , kms_key_name = kms_key_name )
164
+ blob .upload_from_filename (source_file_name )
165
+
166
+ print ('File {} uploaded to {} with encryption key {}.' .format (
167
+ source_file_name ,
168
+ destination_blob_name ,
169
+ kms_key_name ))
170
+
171
+
146
172
def download_blob (bucket_name , source_blob_name , destination_file_name ):
147
173
"""Downloads a blob from the bucket."""
148
174
storage_client = storage .Client ()
@@ -277,6 +303,16 @@ def copy_blob(bucket_name, blob_name, new_bucket_name, new_blob_name):
277
303
upload_parser .add_argument ('source_file_name' )
278
304
upload_parser .add_argument ('destination_blob_name' )
279
305
306
+ enable_default_kms_parser = subparsers .add_parser (
307
+ 'enable-default-kms-key' , help = enable_default_kms_key .__doc__ )
308
+ enable_default_kms_parser .add_argument ('kms_key_name' )
309
+
310
+ upload_kms_parser = subparsers .add_parser (
311
+ 'upload-with-kms-key' , help = upload_blob_with_kms .__doc__ )
312
+ upload_kms_parser .add_argument ('source_file_name' )
313
+ upload_kms_parser .add_argument ('destination_blob_name' )
314
+ upload_kms_parser .add_argument ('kms_key_name' )
315
+
280
316
download_parser = subparsers .add_parser (
281
317
'download' , help = download_blob .__doc__ )
282
318
download_parser .add_argument ('source_blob_name' )
@@ -310,6 +346,8 @@ def copy_blob(bucket_name, blob_name, new_bucket_name, new_blob_name):
310
346
311
347
if args .command == 'create-bucket' :
312
348
create_bucket (args .bucket_name )
349
+ if args .command == 'enable-default-kms-key' :
350
+ enable_default_kms_key (args .bucket_name , args .kms_key_name )
313
351
elif args .command == 'delete-bucket' :
314
352
delete_bucket (args .bucket_name )
315
353
if args .command == 'get-bucket-labels' :
@@ -327,6 +365,12 @@ def copy_blob(bucket_name, blob_name, new_bucket_name, new_blob_name):
327
365
args .bucket_name ,
328
366
args .source_file_name ,
329
367
args .destination_blob_name )
368
+ elif args .command == 'upload-with-kms-key' :
369
+ upload_blob_with_kms (
370
+ args .bucket_name ,
371
+ args .source_file_name ,
372
+ args .destination_blob_name ,
373
+ args .kms_key_name )
330
374
elif args .command == 'download' :
331
375
download_blob (
332
376
args .bucket_name ,
0 commit comments