diff options
author | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
---|---|---|
committer | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
commit | 4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch) | |
tree | ee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/boto3/examples/s3.rst | |
parent | cc961e04ba734dd72309fb548a2f97d67d578813 (diff) | |
download | gn-ai-master.tar.gz |
Diffstat (limited to '.venv/lib/python3.12/site-packages/boto3/examples/s3.rst')
-rw-r--r-- | .venv/lib/python3.12/site-packages/boto3/examples/s3.rst | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/boto3/examples/s3.rst b/.venv/lib/python3.12/site-packages/boto3/examples/s3.rst new file mode 100644 index 00000000..ec562383 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/boto3/examples/s3.rst @@ -0,0 +1,185 @@ +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('amzn-s3-demo-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='amzn-s3-demo-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('amzn-s3-demo-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 = 'amzn-s3-demo-bucket' + 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 = 'amzn-s3-demo-bucket' + 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( + "amzn-s3-demo-bucket", "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='amzn-s3-demo-bucket') + + 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) |