diff --git a/boto3/data/s3/2006-03-01/resources-1.json b/boto3/data/s3/2006-03-01/resources-1.json index 1665c3ac86..1045b86155 100644 --- a/boto3/data/s3/2006-03-01/resources-1.json +++ b/boto3/data/s3/2006-03-01/resources-1.json @@ -846,6 +846,15 @@ { "target": "Key", "source": "identifier", "name": "Key" } ] } + }, + "RestoreObject": { + "request": { + "operation": "RestoreObject", + "params": [ + { "target": "Bucket", "source": "identifier", "name": "BucketName" }, + { "target": "Key", "source": "identifier", "name": "Key" } + ] + } } }, "batchActions": { @@ -1013,6 +1022,15 @@ { "target": "Key", "source": "identifier", "name": "Key" } ] } + }, + "RestoreObject": { + "request": { + "operation": "RestoreObject", + "params": [ + { "target": "Bucket", "source": "identifier", "name": "BucketName" }, + { "target": "Key", "source": "identifier", "name": "Key" } + ] + } } }, "batchActions": { diff --git a/boto3/examples/s3.rst b/boto3/examples/s3.rst index 366a4b7c08..7d3befa78d 100644 --- a/boto3/examples/s3.rst +++ b/boto3/examples/s3.rst @@ -12,3 +12,33 @@ the objects in the bucket. bucket = s3.Bucket('my-bucket') for obj in bucket.objects.all(): print(obj.key) + + +Restore Glacier objects in an Amazon S3 bucket +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The following example shows how to initiate restoration of glacier objects in +an Amazon S3 bucket, determine if a restoration is on-going, and determine if a +restoration is finished. + +.. code-block:: python + + import boto3 + + s3 = boto3.resource('s3') + bucket = s3.Bucket('glacier-bucket') + for obj_sum in bucket.objects.all(): + obj = s3.Object(obj_sum.bucket_name, obj_sum.key) + if obj.storage_class == 'GLACIER': + # Try to restore the object if the storage class is glacier and + # the object does not have a completed or ongoing restoration + # request. + if obj.restore is None: + print('Submitting restoration request: %s' % obj.key) + obj.restore_object() + # Print out objects whose restoration is on-going + elif 'ongoing-request="true"' in obj.restore: + print('Restoration in-progress: %s' % obj.key) + # Print out objects whose restoration is complete + elif 'ongoing-request="false"' in obj.restore: + print('Restoration complete: %s' % obj.key)