<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>s3 Archives | Clever Cloud</title>
	<atom:link href="https://www.clever.cloud/blog/tag/s3/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.clever.cloud/blog/tag/s3/</link>
	<description>From Code to Product</description>
	<lastBuildDate>Fri, 06 Dec 2024 09:58:35 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://cdn.clever-cloud.com/uploads/2023/03/cropped-cropped-favicon-32x32.png</url>
	<title>s3 Archives | Clever Cloud</title>
	<link>https://www.clever.cloud/blog/tag/s3/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Avec Devoxx_ion, le panier fait les poches de Sudo</title>
		<link>https://www.clever.cloud/podcast/avec-devoxx_ion-le-panier-fait-les-poches-de-sudo/</link>
					<comments>https://www.clever.cloud/podcast/avec-devoxx_ion-le-panier-fait-les-poches-de-sudo/#respond</comments>
		
		<dc:creator><![CDATA[Horacio Gonzalez]]></dc:creator>
		<pubDate>Fri, 17 May 2024 06:23:45 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[Devoxx]]></category>
		<category><![CDATA[Java 21]]></category>
		<category><![CDATA[s3]]></category>
		<category><![CDATA[Scala3]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?post_type=podcast&#038;p=12234</guid>

					<description><![CDATA[<p><img width="1920" height="1080" src="https://cdn.clever-cloud.com/uploads/2024/05/106.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="106" decoding="async" fetchpriority="high" srcset="https://cdn.clever-cloud.com/uploads/2024/05/106.jpg 1920w, https://cdn.clever-cloud.com/uploads/2024/05/106-300x169.jpg 300w, https://cdn.clever-cloud.com/uploads/2024/05/106-1024x576.jpg 1024w, https://cdn.clever-cloud.com/uploads/2024/05/106-768x432.jpg 768w, https://cdn.clever-cloud.com/uploads/2024/05/106-1536x864.jpg 1536w, https://cdn.clever-cloud.com/uploads/2024/05/106-1368x770.jpg 1368w" sizes="(max-width: 1920px) 100vw, 1920px" /></p><!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://www.youtube.com/watch?v=stSTj2bwi4E">Voir sur Youtube</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:paragraph -->
<p><br>Animé par Horacio Gonzalez - <a href="https://twitter.com/LostInBrittany" target="_blank" rel="noreferrer noopener">@LostInBrittany</a><br>avec la participation de : <br>- David Caussinus - @DCaussinus<br>- Steven Le Roux - @GwinizDu<br>- Antoine Blondeau - @P4ndaFR</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Épisode enregistré le 5 avril 2024</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>👋  Venez discuter avec nous sur <a href="https://twitter.com/clever_cloudFR" target="_blank" rel="noreferrer noopener">@clever_cloudFR</a> pour nous dire ce que vous avez pensé de ce nouvel épisode.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>➡️  Pour découvrir ou réécouter d’anciens épisodes&nbsp;<a href="https://www.clever.cloud/fr/podcast/">c’est par ici</a>&nbsp;!</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Chapitrage et Liens</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>00:00:16 : Introduction et présentation des participants</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:01:50 : How an empty S3 bucket can make your AWS bill explode<br><a href="https://medium.com/@maciej.pocwierz/how-an-empty-s3-bucket-can-make-your-aws-bill-explode-934a383cb8b1" target="_blank" rel="noreferrer noopener">https://medium.com/@maciej.pocwierz/how-an-empty-s3-bucket-can-make-your-aws-bill-explode-934a383cb8b1<br></a><a href="https://twitter.com/QuinnyPig/status/1785311776386727993" target="_blank" rel="noreferrer noopener">https://twitter.com/QuinnyPig/status/1785311776386727993</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:08:56 : Run0 vs Sudo, drama in systemdland<br><a href="https://mastodon.social/@pid_eins/112353324518585654" target="_blank" rel="noreferrer noopener">https://mastodon.social/@pid_eins/112353324518585654</a><br><a href="https://linux.developpez.com/actu/357237/Systemd-v256-presente-run0-Une-alternative-plus-sure-a-sudo-une-nouvelle-approche-de-l-elevation-de-privileges-securisee-visant-a-eliminer-progressivement-les-binaires-SUID-traditionnels/" target="_blank" rel="noreferrer noopener">https://linux.developpez.com/actu/357237/Systemd-v256-presente-run0-Une-alternative-plus-sure-a-sudo-une-nouvelle-approche-de-l-elevation-de-privileges-securisee-visant-a-eliminer-progressivement-les-binaires-SUID-traditionnels/</a><br><a href="https://opensourcesecurity.io/2024/05/05/episode-427-will-run0-replace-sudo/" target="_blank" rel="noreferrer noopener">https://opensourcesecurity.io/2024/05/05/episode-427-will-run0-replace-sudo/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:25:24 : Enregistrements Devoxx: Faire simple, la clé de la durabilité<br><a href="https://www.youtube.com/watch?v=VPV9tMHaaFE" target="_blank" rel="noreferrer noopener">https://www.youtube.com/watch?v=VPV9tMHaaFE</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:35:02 : Enregistrements Devoxx : Les nouveautés de Java 21<br><a href="https://www.youtube.com/watch?v=3Erjl1862Q4" target="_blank" rel="noreferrer noopener">https://www.youtube.com/watch?v=3Erjl1862Q4</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:37:55 : Scala capture checking available in experimental within scala 3.4<br><a href="https://www.scmatters.io/post/capture-checking-in-scala-3-4" target="_blank" rel="noreferrer noopener">https://www.scmatters.io/post/capture-checking-in-scala-3-4</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:46:24 : Toxiproxy<br><a href="https://github.com/Shopify/toxiproxy" target="_blank" rel="noreferrer noopener">https://github.com/Shopify/toxiproxy</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:53:30 : Antithesis<br><a href="https://antithesis.com/blog/deterministic_hypervisor/" target="_blank" rel="noreferrer noopener">https://antithesis.com/blog/deterministic_hypervisor/</a></p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1920" height="1080" src="https://cdn.clever-cloud.com/uploads/2024/05/106.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="106" decoding="async" srcset="https://cdn.clever-cloud.com/uploads/2024/05/106.jpg 1920w, https://cdn.clever-cloud.com/uploads/2024/05/106-300x169.jpg 300w, https://cdn.clever-cloud.com/uploads/2024/05/106-1024x576.jpg 1024w, https://cdn.clever-cloud.com/uploads/2024/05/106-768x432.jpg 768w, https://cdn.clever-cloud.com/uploads/2024/05/106-1536x864.jpg 1536w, https://cdn.clever-cloud.com/uploads/2024/05/106-1368x770.jpg 1368w" sizes="(max-width: 1920px) 100vw, 1920px" /></p><!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://www.youtube.com/watch?v=stSTj2bwi4E">Voir sur Youtube</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:paragraph -->
<p><br>Animé par Horacio Gonzalez - <a href="https://twitter.com/LostInBrittany" target="_blank" rel="noreferrer noopener">@LostInBrittany</a><br>avec la participation de : <br>- David Caussinus - @DCaussinus<br>- Steven Le Roux - @GwinizDu<br>- Antoine Blondeau - @P4ndaFR</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Épisode enregistré le 5 avril 2024</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>👋  Venez discuter avec nous sur <a href="https://twitter.com/clever_cloudFR" target="_blank" rel="noreferrer noopener">@clever_cloudFR</a> pour nous dire ce que vous avez pensé de ce nouvel épisode.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>➡️  Pour découvrir ou réécouter d’anciens épisodes&nbsp;<a href="https://www.clever.cloud/fr/podcast/">c’est par ici</a>&nbsp;!</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Chapitrage et Liens</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>00:00:16 : Introduction et présentation des participants</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:01:50 : How an empty S3 bucket can make your AWS bill explode<br><a href="https://medium.com/@maciej.pocwierz/how-an-empty-s3-bucket-can-make-your-aws-bill-explode-934a383cb8b1" target="_blank" rel="noreferrer noopener">https://medium.com/@maciej.pocwierz/how-an-empty-s3-bucket-can-make-your-aws-bill-explode-934a383cb8b1<br></a><a href="https://twitter.com/QuinnyPig/status/1785311776386727993" target="_blank" rel="noreferrer noopener">https://twitter.com/QuinnyPig/status/1785311776386727993</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:08:56 : Run0 vs Sudo, drama in systemdland<br><a href="https://mastodon.social/@pid_eins/112353324518585654" target="_blank" rel="noreferrer noopener">https://mastodon.social/@pid_eins/112353324518585654</a><br><a href="https://linux.developpez.com/actu/357237/Systemd-v256-presente-run0-Une-alternative-plus-sure-a-sudo-une-nouvelle-approche-de-l-elevation-de-privileges-securisee-visant-a-eliminer-progressivement-les-binaires-SUID-traditionnels/" target="_blank" rel="noreferrer noopener">https://linux.developpez.com/actu/357237/Systemd-v256-presente-run0-Une-alternative-plus-sure-a-sudo-une-nouvelle-approche-de-l-elevation-de-privileges-securisee-visant-a-eliminer-progressivement-les-binaires-SUID-traditionnels/</a><br><a href="https://opensourcesecurity.io/2024/05/05/episode-427-will-run0-replace-sudo/" target="_blank" rel="noreferrer noopener">https://opensourcesecurity.io/2024/05/05/episode-427-will-run0-replace-sudo/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:25:24 : Enregistrements Devoxx: Faire simple, la clé de la durabilité<br><a href="https://www.youtube.com/watch?v=VPV9tMHaaFE" target="_blank" rel="noreferrer noopener">https://www.youtube.com/watch?v=VPV9tMHaaFE</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:35:02 : Enregistrements Devoxx : Les nouveautés de Java 21<br><a href="https://www.youtube.com/watch?v=3Erjl1862Q4" target="_blank" rel="noreferrer noopener">https://www.youtube.com/watch?v=3Erjl1862Q4</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:37:55 : Scala capture checking available in experimental within scala 3.4<br><a href="https://www.scmatters.io/post/capture-checking-in-scala-3-4" target="_blank" rel="noreferrer noopener">https://www.scmatters.io/post/capture-checking-in-scala-3-4</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:46:24 : Toxiproxy<br><a href="https://github.com/Shopify/toxiproxy" target="_blank" rel="noreferrer noopener">https://github.com/Shopify/toxiproxy</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:53:30 : Antithesis<br><a href="https://antithesis.com/blog/deterministic_hypervisor/" target="_blank" rel="noreferrer noopener">https://antithesis.com/blog/deterministic_hypervisor/</a></p>
<!-- /wp:paragraph -->]]></content:encoded>
					
					<wfw:commentRss>https://www.clever.cloud/podcast/avec-devoxx_ion-le-panier-fait-les-poches-de-sudo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Setup a directory listing for an S3 bucket</title>
		<link>https://www.clever.cloud/blog/features/2020/10/08/s3-directory-listing/</link>
		
		<dc:creator><![CDATA[Laurent Doguin]]></dc:creator>
		<pubDate>Thu, 08 Oct 2020 15:35:00 +0000</pubDate>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[cellar]]></category>
		<category><![CDATA[s3]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2020/10/08/s3-directory-listing/</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="directorylistingbanner" decoding="async" srcset="https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner.jpg 1400w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-300x116.jpg 300w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-1024x395.jpg 1024w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-768x296.jpg 768w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-1368x528.jpg 1368w" sizes="(max-width: 1400px) 100vw, 1400px" /></p>Yesterday I had a customer asking me how to make a simple directory listing like you have with apache server, but with the content stored in an S3 bucket. This way they can replace their git lfs + apache setup with something possibly simpler and more suited to binary storage.

<span id="more-2977"></span>

As it turns out it's not that complicated. You need to get the permissions right, and to be aware of a listing option in S3 API. Let's see how to make this work on Clever Cloud.
<h2 id="create-a-cellar-addon">Create a Cellar Addon</h2>
Clever Cloud is a Platform as a Service. We provide many <a href="https://www.clever.cloud/developers/addons/">managed services</a> and one of them is Cellar, our S3 compatible storage. Assuming you already have an account, here's how to create a Cellar add-on.
<h3 id="using-the-cli">Using the CLI</h3>
Assuming you are already using <a href="https://github.com/CleverCloud/clever-tools">clever-tools</a>, all you have to do is run <code>clever addon create cellar-addon --plan S myCellarService</code>.
<h3 id="using-the-web-console">Using the Web Console</h3>
You can login to our console on <code>https://console.clever-cloud.com/</code>. From there click on Create, an add-on and choose Cellar. There is only one plan available since Cellar is billed based on consumption so click next. We have no need to link it to an existing application so click next again, give it a name and click on create.

<video style="margin: 0 auto; display: block;" autoplay="autoplay" loop="loop" width="70%" height="150"><source src="//assets.clever-cloud.com/website/blog/create-cellar.mp4" type="video/mp4" /><source src="//assets.clever-cloud.com/website/blog/create-cellar.webm" type="video/webm" /></video>
<h2 id="setup-a-bucket">Setup a Bucket</h2>
Now that you have your S3 add-on, the easiest way to manage buckets is probably to use <a href="https://s3tools.org/s3cmd">s3cmd</a> or <a href="https://rclone.org/">Rclone</a>. Here's how to create a bucket, make it public and store some files.

First get your configuration file. It's waiting for you on the add-on dashboard. Browse your Cellar add-on from the console, you should see some details and a link to <code>Download a pre-filled s3cfg file.</code>. Download it and place it under your home directory. If you are a linux user it should be <code>~/.s3cfg</code>.

<video style="margin: 0 auto; display: block;" autoplay="autoplay" loop="loop" width="70%" height="150"><source src="//assets.clever-cloud.com/website/blog/get-cellar-conf.mp4" type="video/mp4" /><source src="//assets.clever-cloud.com/website/blog/get-cellar-conf.webm" type="video/webm" /></video>

Now s3cmd will use this configuration. Nothing else to do. Typing <code>s3cmd la</code> list all resources available. If you just created the Cellar add-on, you should see nothing listed. To create your bucket run <code>s3cmd mb s3://your-unique-bucket-name/</code>. The chosen name should be lower case and unique. If I insist on the uniqueness of that name, it's because it can't be already taken by someone else. All buckets are made available by default on <code>http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com</code>. You can see why they have to be unique.

You can also name it after your domain name, and put a CNAME redirection to <code>cellar-c2.services.clever-cloud.com.</code>. This way it will be available from your domain name directly. You will find more information on <a href="https://www.clever.cloud/developers/addons/cellar/">our documenation</a>.

Once you have created your bucket, you are ready to upload your files. Run <code>s3cmd sync ./ s3://your-unique-bucket-name/</code> and the content of the current folder will be automatically updated to your bucket.

By default everything is private so if you browse <code>http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com</code> you should get an XML error saying access denied. To change this and make it readable by everyone, run <code>s3cmd setacl --acl-public s3://your-unique-bucket-name/*</code>. This will grant read access to all anonymous users.

Each file should be accessible separately but you still cannot list the content of the bucket. This is because the bucket itself has to be set to public. Run <code>s3cmd setacl --acl-public s3://your-unique-bucket-name</code> and it will allow you to see the list of objects as XML. You can get a simpler list by adding <code>type-list=2</code> as query param. So by browsing <a href="https://www.clever.cloud/developers/deploy/addon/fs-bucket/">http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com/?type-list=2</a>, you should see something like:
<pre><code class="language-xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"&gt;
&lt;Name&gt;ldoguinbucket&lt;/Name&gt;
&lt;Prefix&gt;&lt;/Prefix&gt;
&lt;MaxKeys&gt;1000&lt;/MaxKeys&gt;
&lt;IsTruncated&gt;false&lt;/IsTruncated&gt;
&lt;Contents&gt;
    &lt;Key&gt;hello.txt&lt;/Key&gt;
    &lt;LastModified&gt;2020-10-05T13:07:08.664Z&lt;/LastModified&gt;
    &lt;ETag&gt;&amp;quot;b1946ac92492d2347c6235b4d2611184&amp;quot;&lt;/ETag&gt;
    &lt;Size&gt;6&lt;/Size&gt;
    &lt;StorageClass&gt;STANDARD&lt;/StorageClass&gt;
    &lt;Owner&gt;
        &lt;ID&gt;cellar_0e275449-c02a-4e07-b100-2e357b532e3b&lt;/ID&gt;
        &lt;DisplayName&gt;cellar_0e275449-c02a-4e07-b100-2e357b532e3b@user_51f7098f-604e-4d9e-8fb6-4026fd1767bb&lt;/DisplayName&gt;
    &lt;/Owner&gt;
    &lt;Type&gt;Normal&lt;/Type&gt;
&lt;/Contents&gt;
&lt;Marker&gt;&lt;/Marker&gt;
&lt;/ListBucketResult&gt;
</code></pre>
You can of course adjust the permissions to your liking. Not everything has to be public. You can make that listing look much better and be actually browsable. Here's how.
<h2 id="add-the-listing">Add the Listing</h2>
As you have seen it's easy to get an XML list of your bucket content. You will find many examples on GitHub of single page HTML that fetch the XML list with an XHR request and then renders it nicely. All you have to do is usually upload that files at the root of your bucket and everything should work.

I have tried with <a href="https://github.com/qoomon/aws-s3-bucket-browser">https://github.com/qoomon/aws-s3-bucket-browser</a> and it works great. Simply clone this repo and upload all the files at the root of your bucket with the public ACL.
<pre><code class="language-bash">git clone https://github.com/qoomon/aws-s3-bucket-browser/ 
s3cmd put --acl-public aws-s3-bucket-browser/favicon.ico s3://your-unique-bucket-name/favicon.ico
s3cmd put --acl-public aws-s3-bucket-browser/index.html s3://your-unique-bucket-name/index.html
s3cmd put --acl-public aws-s3-bucket-browser/logo.png s3://your-unique-bucket-name/logo.png
</code></pre>
<figure><img style="width: 70%; margin: 0 auto; display: block; max-width: 100%;" src="https://cdn.clever-cloud.com/uploads/2021/08/directorylisting.png" alt="S3 directory listing" />
<figcaption>Cellar directory listing</figcaption></figure>
From there you should see a very nice listing when you browse <code>http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com/index.html</code>. Thanks to <a href="https://github.com/qoomon">Bengt Brodersen</a> for providing this :)]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="directorylistingbanner" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner.jpg 1400w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-300x116.jpg 300w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-1024x395.jpg 1024w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-768x296.jpg 768w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-1368x528.jpg 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p>Yesterday I had a customer asking me how to make a simple directory listing like you have with apache server, but with the content stored in an S3 bucket. This way they can replace their git lfs + apache setup with something possibly simpler and more suited to binary storage.

<span id="more-2977"></span>

As it turns out it's not that complicated. You need to get the permissions right, and to be aware of a listing option in S3 API. Let's see how to make this work on Clever Cloud.
<h2 id="create-a-cellar-addon">Create a Cellar Addon</h2>
Clever Cloud is a Platform as a Service. We provide many <a href="https://www.clever.cloud/developers/addons/">managed services</a> and one of them is Cellar, our S3 compatible storage. Assuming you already have an account, here's how to create a Cellar add-on.
<h3 id="using-the-cli">Using the CLI</h3>
Assuming you are already using <a href="https://github.com/CleverCloud/clever-tools">clever-tools</a>, all you have to do is run <code>clever addon create cellar-addon --plan S myCellarService</code>.
<h3 id="using-the-web-console">Using the Web Console</h3>
You can login to our console on <code>https://console.clever-cloud.com/</code>. From there click on Create, an add-on and choose Cellar. There is only one plan available since Cellar is billed based on consumption so click next. We have no need to link it to an existing application so click next again, give it a name and click on create.

<video style="margin: 0 auto; display: block;" autoplay="autoplay" loop="loop" width="70%" height="150"><source src="//assets.clever-cloud.com/website/blog/create-cellar.mp4" type="video/mp4" /><source src="//assets.clever-cloud.com/website/blog/create-cellar.webm" type="video/webm" /></video>
<h2 id="setup-a-bucket">Setup a Bucket</h2>
Now that you have your S3 add-on, the easiest way to manage buckets is probably to use <a href="https://s3tools.org/s3cmd">s3cmd</a> or <a href="https://rclone.org/">Rclone</a>. Here's how to create a bucket, make it public and store some files.

First get your configuration file. It's waiting for you on the add-on dashboard. Browse your Cellar add-on from the console, you should see some details and a link to <code>Download a pre-filled s3cfg file.</code>. Download it and place it under your home directory. If you are a linux user it should be <code>~/.s3cfg</code>.

<video style="margin: 0 auto; display: block;" autoplay="autoplay" loop="loop" width="70%" height="150"><source src="//assets.clever-cloud.com/website/blog/get-cellar-conf.mp4" type="video/mp4" /><source src="//assets.clever-cloud.com/website/blog/get-cellar-conf.webm" type="video/webm" /></video>

Now s3cmd will use this configuration. Nothing else to do. Typing <code>s3cmd la</code> list all resources available. If you just created the Cellar add-on, you should see nothing listed. To create your bucket run <code>s3cmd mb s3://your-unique-bucket-name/</code>. The chosen name should be lower case and unique. If I insist on the uniqueness of that name, it's because it can't be already taken by someone else. All buckets are made available by default on <code>http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com</code>. You can see why they have to be unique.

You can also name it after your domain name, and put a CNAME redirection to <code>cellar-c2.services.clever-cloud.com.</code>. This way it will be available from your domain name directly. You will find more information on <a href="https://www.clever.cloud/developers/addons/cellar/">our documenation</a>.

Once you have created your bucket, you are ready to upload your files. Run <code>s3cmd sync ./ s3://your-unique-bucket-name/</code> and the content of the current folder will be automatically updated to your bucket.

By default everything is private so if you browse <code>http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com</code> you should get an XML error saying access denied. To change this and make it readable by everyone, run <code>s3cmd setacl --acl-public s3://your-unique-bucket-name/*</code>. This will grant read access to all anonymous users.

Each file should be accessible separately but you still cannot list the content of the bucket. This is because the bucket itself has to be set to public. Run <code>s3cmd setacl --acl-public s3://your-unique-bucket-name</code> and it will allow you to see the list of objects as XML. You can get a simpler list by adding <code>type-list=2</code> as query param. So by browsing <a href="https://www.clever.cloud/developers/deploy/addon/fs-bucket/">http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com/?type-list=2</a>, you should see something like:
<pre><code class="language-xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"&gt;
&lt;Name&gt;ldoguinbucket&lt;/Name&gt;
&lt;Prefix&gt;&lt;/Prefix&gt;
&lt;MaxKeys&gt;1000&lt;/MaxKeys&gt;
&lt;IsTruncated&gt;false&lt;/IsTruncated&gt;
&lt;Contents&gt;
    &lt;Key&gt;hello.txt&lt;/Key&gt;
    &lt;LastModified&gt;2020-10-05T13:07:08.664Z&lt;/LastModified&gt;
    &lt;ETag&gt;&amp;quot;b1946ac92492d2347c6235b4d2611184&amp;quot;&lt;/ETag&gt;
    &lt;Size&gt;6&lt;/Size&gt;
    &lt;StorageClass&gt;STANDARD&lt;/StorageClass&gt;
    &lt;Owner&gt;
        &lt;ID&gt;cellar_0e275449-c02a-4e07-b100-2e357b532e3b&lt;/ID&gt;
        &lt;DisplayName&gt;cellar_0e275449-c02a-4e07-b100-2e357b532e3b@user_51f7098f-604e-4d9e-8fb6-4026fd1767bb&lt;/DisplayName&gt;
    &lt;/Owner&gt;
    &lt;Type&gt;Normal&lt;/Type&gt;
&lt;/Contents&gt;
&lt;Marker&gt;&lt;/Marker&gt;
&lt;/ListBucketResult&gt;
</code></pre>
You can of course adjust the permissions to your liking. Not everything has to be public. You can make that listing look much better and be actually browsable. Here's how.
<h2 id="add-the-listing">Add the Listing</h2>
As you have seen it's easy to get an XML list of your bucket content. You will find many examples on GitHub of single page HTML that fetch the XML list with an XHR request and then renders it nicely. All you have to do is usually upload that files at the root of your bucket and everything should work.

I have tried with <a href="https://github.com/qoomon/aws-s3-bucket-browser">https://github.com/qoomon/aws-s3-bucket-browser</a> and it works great. Simply clone this repo and upload all the files at the root of your bucket with the public ACL.
<pre><code class="language-bash">git clone https://github.com/qoomon/aws-s3-bucket-browser/ 
s3cmd put --acl-public aws-s3-bucket-browser/favicon.ico s3://your-unique-bucket-name/favicon.ico
s3cmd put --acl-public aws-s3-bucket-browser/index.html s3://your-unique-bucket-name/index.html
s3cmd put --acl-public aws-s3-bucket-browser/logo.png s3://your-unique-bucket-name/logo.png
</code></pre>
<figure><img style="width: 70%; margin: 0 auto; display: block; max-width: 100%;" src="https://cdn.clever-cloud.com/uploads/2021/08/directorylisting.png" alt="S3 directory listing" />
<figcaption>Cellar directory listing</figcaption></figure>
From there you should see a very nice listing when you browse <code>http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com/index.html</code>. Thanks to <a href="https://github.com/qoomon">Bengt Brodersen</a> for providing this :)]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>S3 Storage “Clever Cloud Cellar” Emerges from Beta</title>
		<link>https://www.clever.cloud/blog/features/2016/03/02/introducing-cellar-s3-compatible-storage/</link>
		
		<dc:creator><![CDATA[Clément Nivolle]]></dc:creator>
		<pubDate>Wed, 02 Mar 2016 15:32:00 +0000</pubDate>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[addon]]></category>
		<category><![CDATA[feature]]></category>
		<category><![CDATA[s3]]></category>
		<category><![CDATA[storage]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2016/03/02/introducing-cellar-s3-compatible-storage/</guid>

					<description><![CDATA[<p><img width="1398" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/cellar-banner-1.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="cellar banner 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/cellar-banner-1.jpg 1398w, https://cdn.clever-cloud.com/uploads/2021/08/cellar-banner-1-300x116.jpg 300w, https://cdn.clever-cloud.com/uploads/2021/08/cellar-banner-1-1024x396.jpg 1024w, https://cdn.clever-cloud.com/uploads/2021/08/cellar-banner-1-768x297.jpg 768w, https://cdn.clever-cloud.com/uploads/2021/08/cellar-banner-1-1368x528.jpg 1368w" sizes="auto, (max-width: 1398px) 100vw, 1398px" /></p><p>Storing files and assets on Clever Cloud just got easier. After a year of beta testing, we’re proud to release Cellar: a S3-compatible file storage API.</p>
<p>Cellar is faster, cheaper and more reliable thanks to its distributed architecture.</p>
<p>If you’re using FS buckets or storing files in your database, switching to Cellar will make your life easier: files can be directly uploaded to and downloaded from Cellar, without ever going through your application. This way you can handle large files without a hassle.</p>
<span id="more-2865"></span>

<p>Cellar is perfect for:</p>
<ul>
<li>user avatars</li>
<li>large files (images, videos)</li>
</ul>
<h2 id="pricing">Pricing</h2>
<p><strong>Storage</strong></p>
<ul>
<li>First 100MB   Free</li>
<li>First 1TB   € 20.48 / TB / mo</li>
<li>First 25TB    € 15.36 / TB / mo</li>
<li>First 50TB    € 10.24 / TB / mo</li>
</ul>
<p><strong>Traffic (outbound)</strong></p>
<ul>
<li>First 100MB   Free</li>
<li>First 10TB    € 0.09 / GB / mo</li>
<li>First 40TB    € 0.07 / GB / mo</li>
</ul>
<h2 id="getting-started-with-cellar-and-s3cmd">Getting started with Cellar and s3cmd</h2>
<p>Create a new Cellar addon in the Clever Cloud console. From the addon dashboard, you will be able to get your access credentials, as well as to download a s3cmd configuration file to manage your files on Cellar.</p>
<h3 id="create-a-bucket">Create a bucket</h3>
<p>In cellar, files are stored in buckets, accessible under bucket-name.cellar.services.clever-cloud.com. To start using cellar, you first have to create a bucket for your files.</p>
<p>You can create a bucket with s3cmd (make sure you have saved the s3cmd configuration file under ~/.s3cfg).</p>
<pre><code>s3cmd mb s3://my-bucket
</code></pre>
<h3 id="upload-a-file">Upload a file</h3>
<pre><code class="language-bash"># private file
s3cmd put my-private-file.jpg s3://my-bucket/my-private-file.jpg

# publicly accessible file
s3cmd put -P my-public-file.jpg s3://my-bucket/my-public-file.jpg
</code></pre>
<h3 id="using-cellar-from-node-js">Using Cellar from Node JS</h3>
<p>You can use Cellar from any S3-compatible SDK (including the official AWS SDKs) or directly through its REST API.</p>
<pre><code class="language-javascript">require fs from &#39;fs&#39;;
require AWS from &#39;aws-sdk&#39;;

// Initialize Cellar Credentials
AWS.config.update({accessKeyId: &#39;&lt;access key&gt;&#39;, secretAccessKey: &#39;&lt;access secret&gt;&#39;});
const ep = new AWS.Endpoint(&#39;cellar.services.clever-cloud.com&#39;);
const s3 = new AWS.S3({ endpoint: ep });


// Upload a file to Cellar
const body = fs.createReadStream(&#39;./my-file.jpg&#39;);
s3.putObject({Bucket: &#39;my-bucket&#39;, Key: &#39;my-file.jpg&#39;, Body: body}, (err, data) =&gt; {
  if (err) console.error(err);
  else console.log(&quot;Successfully uploaded data to my-bucket/my-file.jpg&quot;);
});

// Get an access URL for a private file
s3.getSignedUrl(&#39;getObject&#39;, {Bucket: &#39;my-bucket&#39;, Key: &#39;my-private-file&#39;}, (err, url) =&gt; {
  if(err) console.log(err);
  else console.log(&quot;The URL is&quot;, url);
});
</code></pre>
<h2 id="more-information">More information</h2>
<p>Clever Cloud Cellar is backed by the rock solid Riak Simple Storage (aka Riak S2) from Basho.</p>
<p>Talk about cloud file storage: <a href="https://clementd-files.cellar.services.clever-cloud.com/uploads/cellar-ht.html">slides from our CTO</a> Documentation: <a href="https://www.clever.cloud/developers/addons/cellar/">www.clever.cloud/developers/addons/cellar/</a></p>
<p>Using Cellar from Node.js with AWS SDK: <a href="http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-examples.html#Amazon_Simple_Storage_Service__Amazon_S3_">SDK documentation</a></p>
<p>Cellar&#39;s S3 compatible API: <a href="http://docs.basho.com/riakcs/latest/references/apis/storage/s3/">Riak S2 API documentation</a></p>
]]></description>
										<content:encoded><![CDATA[<p><img width="1398" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/cellar-banner-1.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="cellar banner 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/cellar-banner-1.jpg 1398w, https://cdn.clever-cloud.com/uploads/2021/08/cellar-banner-1-300x116.jpg 300w, https://cdn.clever-cloud.com/uploads/2021/08/cellar-banner-1-1024x396.jpg 1024w, https://cdn.clever-cloud.com/uploads/2021/08/cellar-banner-1-768x297.jpg 768w, https://cdn.clever-cloud.com/uploads/2021/08/cellar-banner-1-1368x528.jpg 1368w" sizes="auto, (max-width: 1398px) 100vw, 1398px" /></p><p>Storing files and assets on Clever Cloud just got easier. After a year of beta testing, we’re proud to release Cellar: a S3-compatible file storage API.</p>
<p>Cellar is faster, cheaper and more reliable thanks to its distributed architecture.</p>
<p>If you’re using FS buckets or storing files in your database, switching to Cellar will make your life easier: files can be directly uploaded to and downloaded from Cellar, without ever going through your application. This way you can handle large files without a hassle.</p>
<span id="more-2865"></span>

<p>Cellar is perfect for:</p>
<ul>
<li>user avatars</li>
<li>large files (images, videos)</li>
</ul>
<h2 id="pricing">Pricing</h2>
<p><strong>Storage</strong></p>
<ul>
<li>First 100MB   Free</li>
<li>First 1TB   € 20.48 / TB / mo</li>
<li>First 25TB    € 15.36 / TB / mo</li>
<li>First 50TB    € 10.24 / TB / mo</li>
</ul>
<p><strong>Traffic (outbound)</strong></p>
<ul>
<li>First 100MB   Free</li>
<li>First 10TB    € 0.09 / GB / mo</li>
<li>First 40TB    € 0.07 / GB / mo</li>
</ul>
<h2 id="getting-started-with-cellar-and-s3cmd">Getting started with Cellar and s3cmd</h2>
<p>Create a new Cellar addon in the Clever Cloud console. From the addon dashboard, you will be able to get your access credentials, as well as to download a s3cmd configuration file to manage your files on Cellar.</p>
<h3 id="create-a-bucket">Create a bucket</h3>
<p>In cellar, files are stored in buckets, accessible under bucket-name.cellar.services.clever-cloud.com. To start using cellar, you first have to create a bucket for your files.</p>
<p>You can create a bucket with s3cmd (make sure you have saved the s3cmd configuration file under ~/.s3cfg).</p>
<pre><code>s3cmd mb s3://my-bucket
</code></pre>
<h3 id="upload-a-file">Upload a file</h3>
<pre><code class="language-bash"># private file
s3cmd put my-private-file.jpg s3://my-bucket/my-private-file.jpg

# publicly accessible file
s3cmd put -P my-public-file.jpg s3://my-bucket/my-public-file.jpg
</code></pre>
<h3 id="using-cellar-from-node-js">Using Cellar from Node JS</h3>
<p>You can use Cellar from any S3-compatible SDK (including the official AWS SDKs) or directly through its REST API.</p>
<pre><code class="language-javascript">require fs from &#39;fs&#39;;
require AWS from &#39;aws-sdk&#39;;

// Initialize Cellar Credentials
AWS.config.update({accessKeyId: &#39;&lt;access key&gt;&#39;, secretAccessKey: &#39;&lt;access secret&gt;&#39;});
const ep = new AWS.Endpoint(&#39;cellar.services.clever-cloud.com&#39;);
const s3 = new AWS.S3({ endpoint: ep });


// Upload a file to Cellar
const body = fs.createReadStream(&#39;./my-file.jpg&#39;);
s3.putObject({Bucket: &#39;my-bucket&#39;, Key: &#39;my-file.jpg&#39;, Body: body}, (err, data) =&gt; {
  if (err) console.error(err);
  else console.log(&quot;Successfully uploaded data to my-bucket/my-file.jpg&quot;);
});

// Get an access URL for a private file
s3.getSignedUrl(&#39;getObject&#39;, {Bucket: &#39;my-bucket&#39;, Key: &#39;my-private-file&#39;}, (err, url) =&gt; {
  if(err) console.log(err);
  else console.log(&quot;The URL is&quot;, url);
});
</code></pre>
<h2 id="more-information">More information</h2>
<p>Clever Cloud Cellar is backed by the rock solid Riak Simple Storage (aka Riak S2) from Basho.</p>
<p>Talk about cloud file storage: <a href="https://clementd-files.cellar.services.clever-cloud.com/uploads/cellar-ht.html">slides from our CTO</a> Documentation: <a href="https://www.clever.cloud/developers/addons/cellar/">www.clever.cloud/developers/addons/cellar/</a></p>
<p>Using Cellar from Node.js with AWS SDK: <a href="http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-examples.html#Amazon_Simple_Storage_Service__Amazon_S3_">SDK documentation</a></p>
<p>Cellar&#39;s S3 compatible API: <a href="http://docs.basho.com/riakcs/latest/references/apis/storage/s3/">Riak S2 API documentation</a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
