Spaces:
Paused
Paused
List objects in an Amazon S3 bucket | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
The following example shows how to use an Amazon S3 bucket resource to list | |
the objects in the bucket. | |
.. code-block:: python | |
import boto3 | |
s3 = boto3.resource('s3') | |
bucket = s3.Bucket('my-bucket') | |
for obj in bucket.objects.all(): | |
print(obj.key) | |
List top-level common prefixes in Amazon S3 bucket | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
This example shows how to list all of the top-level common prefixes in an | |
Amazon S3 bucket: | |
.. code-block:: python | |
import boto3 | |
client = boto3.client('s3') | |
paginator = client.get_paginator('list_objects') | |
result = paginator.paginate(Bucket='my-bucket', Delimiter='/') | |
for prefix in result.search('CommonPrefixes'): | |
print(prefix.get('Prefix')) | |
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(RestoreRequest={'Days': 1}) | |
# 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) | |
Uploading/downloading files using SSE KMS | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
This example shows how to use SSE-KMS to upload objects using | |
server side encryption with a key managed by KMS. | |
We can either use the default KMS master key, or create a | |
custom key in AWS and use it to encrypt the object by passing in its | |
key id. | |
With KMS, nothing else needs to be provided for getting the | |
object; S3 already knows how to decrypt the object. | |
.. code-block:: python | |
import boto3 | |
import os | |
BUCKET = 'your-bucket-name' | |
s3 = boto3.client('s3') | |
keyid = '<the key id>' | |
print("Uploading S3 object with SSE-KMS") | |
s3.put_object(Bucket=BUCKET, | |
Key='encrypt-key', | |
Body=b'foobar', | |
ServerSideEncryption='aws:kms', | |
# Optional: SSEKMSKeyId | |
SSEKMSKeyId=keyid) | |
print("Done") | |
# Getting the object: | |
print("Getting S3 object...") | |
response = s3.get_object(Bucket=BUCKET, | |
Key='encrypt-key') | |
print("Done, response body:") | |
print(response['Body'].read()) | |
Uploading/downloading files using SSE Customer Keys | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
This example shows how to use SSE-C to upload objects using | |
server side encryption with a customer provided key. | |
First, we'll need a 32 byte key. For this example, we'll | |
randomly generate a key but you can use any 32 byte key | |
you want. Remember, you must the same key to download | |
the object. If you lose the encryption key, you lose | |
the object. | |
Also note how we don't have to provide the SSECustomerKeyMD5. | |
Boto3 will automatically compute this value for us. | |
.. code-block:: python | |
import boto3 | |
import os | |
BUCKET = 'your-bucket-name' | |
KEY = os.urandom(32) | |
s3 = boto3.client('s3') | |
print("Uploading S3 object with SSE-C") | |
s3.put_object(Bucket=BUCKET, | |
Key='encrypt-key', | |
Body=b'foobar', | |
SSECustomerKey=KEY, | |
SSECustomerAlgorithm='AES256') | |
print("Done") | |
# Getting the object: | |
print("Getting S3 object...") | |
# Note how we're using the same ``KEY`` we | |
# created earlier. | |
response = s3.get_object(Bucket=BUCKET, | |
Key='encrypt-key', | |
SSECustomerKey=KEY, | |
SSECustomerAlgorithm='AES256') | |
print("Done, response body:") | |
print(response['Body'].read()) | |
Downloading a specific version of an S3 object | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
This example shows how to download a specific version of an | |
S3 object. | |
.. code-block:: python | |
import boto3 | |
s3 = boto3.client('s3') | |
s3.download_file( | |
"bucket-name", "key-name", "tmp.txt", | |
ExtraArgs={"VersionId": "my-version-id"} | |
) | |
Filter objects by last modified time using JMESPath | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
This example shows how to filter objects by last modified time | |
using JMESPath. | |
.. code-block:: python | |
import boto3 | |
s3 = boto3.client("s3") | |
s3_paginator = s3.get_paginator('list_objects_v2') | |
s3_iterator = s3_paginator.paginate(Bucket='your-bucket-name') | |
filtered_iterator = s3_iterator.search( | |
"Contents[?to_string(LastModified)>='\"2022-01-05 08:05:37+00:00\"'].Key" | |
) | |
for key_data in filtered_iterator: | |
print(key_data) | |