

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    
    <meta name="description" content="Apache Ozone Documentation">

    <title>Documentation for Apache Ozone</title>

    
    <link href="../css/bootstrap.min.css" rel="stylesheet">

    
    <link href="../css/ozonedoc.css" rel="stylesheet">

  </head>


<body>

  
<nav class="navbar navbar-inverse navbar-fixed-top">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#sidebar" aria-expanded="false" aria-controls="navbar">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a href="../index.html" class="navbar-left ozone-logo">
        <img src="../ozone-logo-small.png"/>
      </a>
      <a class="navbar-brand hidden-xs" href="../index.html">
        Apache Ozone/HDDS documentation
      </a>
      <a class="navbar-brand visible-xs-inline" href="#">Apache Ozone</a>
    </div>
    <div id="navbar" class="navbar-collapse collapse">
      <ul class="nav navbar-nav navbar-right">
        <li><a href="https://github.com/apache/hadoop-ozone">Source</a></li>
        <li><a href="https://hadoop.apache.org">Apache Hadoop</a></li>
        <li><a href="https://apache.org">ASF</a></li>
      </ul>
    </div>
  </div>
</nav>


  <div class="wrapper">
  <div class="container-fluid">
    <div class="row">
      
<div class="col-sm-2 col-md-2 sidebar" id="sidebar">
  <ul class="nav nav-sidebar">
    
    
        
            <li class="">
                
                   <a href="../index.html">
                

                    
                    <span>Overview</span>
                </a>
            </li>
        
    
        
            <li class="">
                
                   <a href="../start.html">
                

                    
                    <span>Getting Started</span>
                </a>
            </li>
        
    
        
            <li class="">
                <a href="../concept.html">
                    
                    <span>Architecture</span>
                </a>
                <ul class="nav">
                    
                        <li class="">
                           
                           <a href="../concept/overview.html">Overview</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../concept/ozonemanager.html">Ozone Manager</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../concept/storagecontainermanager.html">Storage Container Manager</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../concept/containers.html">Containers</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../concept/datanodes.html">Datanodes</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../concept/recon.html">Recon</a>
                           
                        </li>
                    
                </ul>
            </li>
        
    
        
            <li class="">
                <a href="../feature.html">
                    
                    <span>Features</span>
                </a>
                <ul class="nav">
                    
                        <li class="">
                           
                           <a href="../feature/ha.html">High Availability</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/topology.html">Topology awareness</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/quota.html">Quota in Ozone</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/recon.html">Recon Server</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/observability.html">Observability</a>
                           
                        </li>
                    
                </ul>
            </li>
        
    
        
            <li class="">
                <a href="../interface.html">
                    
                    <span>Client Interfaces</span>
                </a>
                <ul class="nav">
                    
                        <li class="">
                           
                           <a href="../interface/ofs.html">Ofs (Hadoop compatible)</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../interface/o3fs.html">O3fs (Hadoop compatible)</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../interface/s3.html">S3 Protocol</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../interface/cli.html">Command Line Interface</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../interface/reconapi.html">Recon API</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../interface/javaapi.html">Java API</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../interface/csi.html">CSI Protocol</a>
                           
                        </li>
                    
                </ul>
            </li>
        
    
        
            <li class="">
                <a href="../security.html">
                    
                    <span>Security</span>
                </a>
                <ul class="nav">
                    
                        <li class="">
                           
                           <a href="../security/secureozone.html">Securing Ozone</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../security/securingtde.html">Transparent Data Encryption</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../security/gdpr.html">GDPR in Ozone</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../security/securingdatanodes.html">Securing Datanodes</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../security/securingozonehttp.html">Securing HTTP</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../security/securings3.html">Securing S3</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../security/securityacls.html">Ozone ACLs</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../security/securitywithranger.html">Apache Ranger</a>
                           
                        </li>
                    
                </ul>
            </li>
        
    
        
            <li class="">
                
                   <a href="../tools.html">
                

                    
                    <span>Tools</span>
                </a>
            </li>
        
    
        
            <li class="">
                
                   <a href="../recipe.html">
                

                    
                    <span>Recipes</span>
                </a>
            </li>
        
    
    <li><a href="../design.html"><span><b>Design docs</b></span></a></li>
    <li class="visible-xs"><a href="#">References</a>
    <ul class="nav">
        <li><a href="https://github.com/apache/hadoop"><span class="glyphicon glyphicon-new-window" aria-hidden="true"></span> Source</a></li>
        <li><a href="https://hadoop.apache.org"><span class="glyphicon glyphicon-new-window" aria-hidden="true"></span> Apache Hadoop</a></li>
        <li><a href="https://apache.org"><span class="glyphicon glyphicon-new-window" aria-hidden="true"></span> ASF</a></li>
    </ul></li>
  </ul>

</div>

      <div class="col-sm-10 col-sm-offset-2 col-md-10 col-md-offset-2 main">



        <div class="col-md-9">
            <nav aria-label="breadcrumb">
                <ol class="breadcrumb">
                  <li class="breadcrumb-item"><a href="../index.html">Home</a></li>
                  <li class="breadcrumb-item" aria-current="page"><a href="../recipe.html">Recipes</a></li>
                  <li class="breadcrumb-item active" aria-current="page">Access Ozone object store with Amazon Boto3 client</li>
                </ol>
              </nav>

          

<div class="pull-right">
    
    
    
</div>


          <div class="col-md-9">
            <h1>Access Ozone object store with Amazon Boto3 client</h1>

            <!---
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<p>This recipe shows how Ozone object store can be accessed from Boto3 client. Following apis were verified:</p>
<ul>
<li>Create bucket</li>
<li>List bucket</li>
<li>Head bucket</li>
<li>Delete bucket</li>
<li>Upload file</li>
<li>Download file</li>
<li>Delete objects(keys)</li>
<li>Head object</li>
<li>Multipart upload</li>
</ul>
<h2 id="requirements">Requirements</h2>
<p>You will need a higher version of Python3 for your Boto3 client as Boto3 installation requirement indicates at here:
<a href="https://boto3.amazonaws.com/v1/documentation/api/latest/index.html">https://boto3.amazonaws.com/v1/documentation/api/latest/index.html</a></p>
<h2 id="obtain-resource-to-ozone">Obtain resource to Ozone</h2>
<p>You may reference Amazon Boto3 documentation regarding the creation of &lsquo;s3&rsquo; resources at here:
<a href="https://boto3.amazonaws.com/v1/documentation/api/latest/guide/resources.html">https://boto3.amazonaws.com/v1/documentation/api/latest/guide/resources.html</a></p>
<pre><code>s3 = boto3.resource('s3',
                    endpoint_url='http://localhost:9878',
                    aws_access_key_id='testuser/scm@EXAMPLE.COM',
                    aws_secret_access_key='c261b6ecabf7d37d5f9ded654b1c724adac9bd9f13e247a235e567e8296d2999'
)    
'endpoint_url' is pointing to Ozone s3 endpoint.
</code></pre>
<h2 id="obtain-client-to-ozone-via-session">Obtain client to Ozone via session</h2>
<p>You may reference Amazon Boto3 documentation regarding session at here:
<a href="https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html">https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html</a></p>
<pre><code>Create a session
    session = boto3.session.Session()

Obtain s3 client to Ozone via session:

    s3_client = session.client(
        service_name='s3',
        aws_access_key_id='testuser/scm@EXAMPLE.COM',
        aws_secret_access_key='c261b6ecabf7d37d5f9ded654b1c724adac9bd9f13e247a235e567e8296d2999',
        endpoint_url='http://localhost:9878',
    )
    'endpoint_url' is pointing to Ozone s3 endpoint.

In our code sample below, we're demonstrating the usage of both s3 and s3_client.
</code></pre>
<p>There are multiple ways to configure Boto3 client credentials if you&rsquo;re connecting to a secured cluster. In these cases,
the above lines of passing &lsquo;aws_access_key_id&rsquo; and &lsquo;aws_secret_access_key&rsquo; when creating Ozone s3 client shall be skipped.</p>
<p>Please refer to Boto3 documentation for details at here:
<a href="https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html">https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html</a></p>
<h3 id="create-a-bucket">Create a bucket</h3>
<pre><code>response = s3_client.create_bucket(Bucket='bucket1')
print(response)
</code></pre>
<p>This will create a bucket &lsquo;bucket1&rsquo; in Ozone volume &lsquo;s3v&rsquo;.</p>
<h3 id="list-buckets">List buckets</h3>
<pre><code>response = s3_client.list_buckets()
print('Existing buckets:')
for bucket in response['Buckets']:
    print(f'  {bucket[&quot;Name&quot;]}')
</code></pre>
<p>This will list all buckets in Ozone volume &lsquo;s3v&rsquo;.</p>
<h3 id="head-a-bucket">Head a bucket</h3>
<pre><code>response = s3_client.head_bucket(Bucket='bucket1')
print(response)
</code></pre>
<p>This will head bucket &lsquo;bucket1&rsquo; in Ozone volume &lsquo;s3v&rsquo;.</p>
<h3 id="delete-a-bucket">Delete a bucket</h3>
<pre><code>response = s3_client.delete_bucket(Bucket='bucket1')
print(response)
</code></pre>
<p>This will delete the bucket &lsquo;bucket1&rsquo; from Ozone volume &lsquo;s3v&rsquo;.</p>
<h3 id="upload-a-file">Upload a file</h3>
<pre><code>response = s3.Bucket('bucket1').upload_file('./README.md','README.md')
print(response)
</code></pre>
<p>This will upload &lsquo;README.md&rsquo; to Ozone creates a key &lsquo;README.md&rsquo; in volume &lsquo;s3v&rsquo;.</p>
<h3 id="download-a-file">Download a file</h3>
<pre><code>response = s3.Bucket('bucket1').download_file('README.md', 'download.md')
print(response)
</code></pre>
<p>This will download &lsquo;README.md&rsquo; from Ozone volume &lsquo;s3v&rsquo; to local and create a file with name &lsquo;download.md&rsquo;.</p>
<h3 id="head-an-object">Head an object</h3>
<pre><code>response = s3_client.head_object(Bucket='bucket1', Key='README.md')
print(response)
</code></pre>
<p>This will head object &lsquo;README.md&rsquo; from Ozone volume &lsquo;s3v&rsquo; in the bucket &lsquo;bucket1&rsquo;.</p>
<h3 id="delete-objects">Delete Objects</h3>
<pre><code>response = s3_client.delete_objects(
    Bucket='bucket1',
    Delete={
        'Objects': [
            {
                'Key': 'README4.md',
            },
            {
                'Key': 'README3.md',
            },
        ],
        'Quiet': False,
    },
)
</code></pre>
<p>This will delete objects &lsquo;README3.md&rsquo; and &lsquo;README4.md&rsquo; from Ozone volume &lsquo;s3v&rsquo; in bucket &lsquo;bucket1&rsquo;.</p>
<h3 id="multipart-upload">Multipart upload</h3>
<pre><code>response = s3_client.create_multipart_upload(Bucket='bucket1', Key='key1')
print(response)
uid=response['UploadId']
print(uid)

response = s3_client.upload_part_copy(
    Bucket='bucket1',
    CopySource='/bucket1/maven.gz',
    Key='key1',
    PartNumber=1,
    UploadId=str(uid)
)
print(response)
etag1=response.get('CopyPartResult').get('ETag')
print(etag1)

response = s3_client.upload_part_copy(
    Bucket='bucket1',
    CopySource='/bucket1/maven1.gz',
    Key='key1',
    PartNumber=2,
    UploadId=str(uid)
)
print(response)
etag2=response.get('CopyPartResult').get('ETag')
print(etag2)

response = s3_client.complete_multipart_upload(
    Bucket='bucket1',
    Key='key1',
    MultipartUpload={
        'Parts': [
            {
                'ETag': str(etag1),
                'PartNumber': 1,
            },
            {
                'ETag': str(etag2),
                'PartNumber': 2,
            },
        ],
    },
    UploadId=str(uid),
)
print(response)
</code></pre>
<p>This will use &lsquo;maven.gz&rsquo; and &lsquo;maven1.gz&rsquo; as copy source from Ozone volume &lsquo;s3v&rsquo; to create a new object &lsquo;key1&rsquo;
in Ozone volume &lsquo;s3v&rsquo;. Please note &lsquo;ETag&rsquo;s is required and important for the call.</p>


          
          <a class="btn  btn-success btn-lg" href="../recipe/prometheus.html">Next >></a>
          
          </div>

        </div>
      </div>
    </div>
  </div>
    <div class="push"></div>
  </div>

  

<footer class="footer">
  <div class="container">
    <span class="small text-muted">
      Version: 1.1.0, Last Modified: March 2, 2021 <a class="hide-child link primary-color" href="https://github.com/apache/ozone/commit/b07162b5cea577a2c785cc93fb6953c8628fbf5f">b07162b5c</a>
    </span>
  </div>
</footer>



<script src="../js/jquery-3.5.1.min.js"></script>
<script src="../js/ozonedoc.js"></script>
<script src="../js/bootstrap.min.js"></script>


</body>

</html>