{"id":72802,"date":"2017-11-09T08:00:18","date_gmt":"2017-11-09T16:00:18","guid":{"rendered":""},"modified":"2025-01-22T15:46:16","modified_gmt":"2025-01-22T23:46:16","slug":"s3cmd-amazon-s3-compatible-apps-azure-storage","status":"publish","type":"post","link":"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/","title":{"rendered":"Using s3cmd and other Amazon S3-compatible apps with Azure Blob Storage"},"content":{"rendered":"\n<p>Object storage is one of the core services offered by cloud platforms, as it allows developers to store any kind of unstructured data, conveniently and flexibly. Even if you&#8217;re not a developer, there are countless apps, libraries and tools that you can integrate in your daily workflow to leverage object storage on the cloud, for example for backups or just to store your data in a safe, reliable place.<\/p>\n\n\n\n<p>Microsoft Azure provides excellent object storage with\u202f<strong><a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/storage\/blobs\/\">Azure Blob Storage<\/a><\/strong>, which offers unmatched durability, virtually infinite capacity and multiple tiers of storage, all at very convenient rates. However, because Azure Blob Storage was developed before the world decided to \u201cstandardize\u201d on the S3 APIs, the two use different interfaces, and so most applications and libraries designed to work with Amazon S3 do not support Azure out-of-the-box. Many third-party and open source apps, libraries and tools are built to take advantage of S3, including very popular tools like <a href=\"https:\/\/github.com\/s3tools\/s3cmd\">s3cmd<\/a>; not all of them have built-in support for Azure Blob Storage, however.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"enter-minio\">Enter Minio<\/h2>\n\n\n\n<p>The solution is incredibly simple, and it&#8217;s a free, lightweight, open source app called <strong><a href=\"https:\/\/minio.io\/\">Minio<\/a><\/strong>: an object storage server that exposes S3-compatible APIs. Minio&#8217;s main goal was to simply expose local storage as object storage, but recently the developers have implemented a gateway feature that allows proxying requests to \u2014 you guessed it \u2014 Azure Blob Storage.<\/p>\n\n\n\n<p>In short, Minio allows us to convert Azure Blob Storage APIs to Amazon S3! Best of all: Minio itself is very lightweight (written in Golang), and it&#8217;s available as a Docker container.<\/p>\n\n\n\n<p>Running Minio as a Docker container is really simple:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n$ docker run -p 9000:9000 \\\n    -e \"MINIO_ACCESS_KEY=azureaccountname\" \\\n    -e \"MINIO_SECRET_KEY=azureaccountkey\" \\\n    minio\/minio gateway azure\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"minio-on-web-apps-on-linux\">Minio on Web Apps on Linux<\/h2>\n\n\n\n<p>Minio is a self-hosted solution, which means that you will need a server to run it. Thanks to Minio developers publishing Docker containers, however, a very simple and cost-effective solution is to use <strong><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/app-service\/containers\/app-service-linux-intro\">Azure Web Apps on Linux<\/a><\/strong> and <strong>custom container support<\/strong>.<\/p>\n\n\n\n<p>To deploy Minio on an Azure Web App, follow these simple steps. You will need the <a href=\"https:\/\/docs.microsoft.com\/en-us\/cli\/azure\/install-azure-cli\">Azure CLI 2.0<\/a> (or &#8220;az cli&#8221;) installed on your machine, and, of course, an Azure subscription (or a <a href=\"https:\/\/azure.microsoft.com\/en-us\/free\/open-source\/\">free trial<\/a>).<\/p>\n\n\n\n<p>If you haven&#8217;t done it already, log in to Azure using the CLI with this command, then follow the instructions on the terminal to authenticate using the web browser:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n$ az login\n<\/pre><\/div>\n\n\n<p>The first thing we need to do is to create a <strong>Resource Group<\/strong>, which is nothing but a logical grouping unit where all of our Azure resources are deployed:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n$ az group create --name \"Minio\" --location \"WestUS\"\n<\/pre><\/div>\n\n\n<p>Next, we will create the actual <strong>Blob Storage Account<\/strong> in which our data will be stored; you can skip this if you already have a Storage Account that you want to use. There are multiple tiers of storage (hot vs cool), and multiple levels of redundancy (LRS, GRS, RA-GRS); for an explanation of the different options, I&#8217;m better off referring you to the <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/storage\/storage-blob-storage-tiers\">official documentation<\/a>. In this example, we&#8217;re using a &#8220;Blob Storage Account&#8221; (a new kind of Storage Account that offers hot and cool storage, and lower rates for both), in LRS (Locally Redundant Storage: data is replicated 3 times within the same Azure datacenter) and &#8220;cool&#8221; tier (data is always online, but retrievals are charged a small fee per GB). Note that we&#8217;re adding two recurring parameters for the Resource Group and location as well. The full list of options for the command below is in the <a href=\"https:\/\/docs.microsoft.com\/en-us\/cli\/azure\/storage\/account#create\">CLI reference<\/a>. Lastly, remember that the name of the storage account has to be <em>globally<\/em> unique.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n$ az storage account create \\\n    --name \"aleminiostorage\" \\\n    --kind BlobStorage \\\n    --sku Standard_LRS \\\n    --access-tier Cool \\\n    --resource-group \"Minio\" \\\n    --location \"WestUS\"\n<\/pre><\/div>\n\n\n<p>After the account is created, we need to get the <strong>Account Key<\/strong>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n$ az storage account show-connection-string \\\n    --name \"aleminiostorage\" \\\n    --resource-group \"Minio\"\n# Output\n{\n  \"connectionString\": \"DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=aleminiostorage;AccountKey=rOduFZr22jJ+...\"\n}\n<\/pre><\/div>\n\n\n<p>The Account Key is at the end of the <code>connectionString<\/code> parameter (in bold above, truncated), and it&#8217;s a base64-encoded string. Take note of that, as we&#8217;ll need it in the next steps.<\/p>\n\n\n\n<p>It&#8217;s now time to deploy Minio to the <strong>Web App on Linux<\/strong>. First, we need to create an App Service Plan, which represents the managed VM(s) that will serve our app; after that, we&#8217;re creating a Web App inside it. We&#8217;re picking a &#8220;B1&#8221; (Basic 1) tier, which should be enough to run our lightweight Minio app; note also the <code>--is-linux<\/code> flag, to create a Linux-based Web App. As in the case of the storage account, the name of the Web App (<code>aleminio<\/code> in the example below) has to be globally unique too. We&#8217;re also configuring the Web App to run the <code>minio\/minio<\/code> image from Docker Hub.<\/p>\n\n\n\n<p>Note: Traffic between your Azure Web App and the Azure Storage Account is free of charge, for as long as the two are in the same Azure Region.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n# Create the App Service Plan\n$ az appservice plan create \\\n    --name \"MinioAppPlan\" \\\n    --is-linux \\\n    --sku B1 \\\n    --resource-group \"Minio\" \\\n    --location \"WestUS\"\n# Create the Web App configured with the minio\/minio container\n$ az webapp create \\\n    --name \"aleminio\" \\\n    --deployment-container-image-name \"minio\/minio\" \\\n    --plan \"MinioAppPlan\" \\\n    --resource-group \"Minio\"\n<\/pre><\/div>\n\n\n<p>The Web App on Linux should now be up and running, at the URL <em>webappname<\/em>.azurewebsites.net &#8211; in my example, <code>https:\/\/aleminio.azurewebsites.net<\/code>.<\/p>\n\n\n\n<p>On the last step, let&#8217;s configure Minio on the Web App. First, we need to pass the configuration as environmental variables, similarly to what we did with the <code>-e<\/code> flag in the Docker run command above. We then need to tell the Web App what command to execute on the Docker container to start Minio in gateway mode.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n# Environmental variables\n# The value for MINIO_ACCESS_KEY is the name of the Storage Account\n# Fill MINIO_SECRET_KEY with the Storage Account Key instead\n$ az webapp config appsettings set \\\n    --settings \"MINIO_ACCESS_KEY=aleminiostorage\" \"MINIO_SECRET_KEY=rOduFZr22jJ+...\" \"PORT=9000\" \\\n    --name \"aleminio\" \\\n    --resource-group \"Minio\"\n# Startup command\n$ az webapp config set \\\n    --startup-file \"gateway azure\" \\\n    --name \"aleminio\" \\\n    --resource-group \"Minio\"\n<\/pre><\/div>\n\n\n<p>We\u2019re done! Give the Web App a few seconds to start, then you\u2019ll have your <strong>Minio Amazon S3-compatible gateway working<\/strong>!<\/p>\n\n\n\n<p>Configure your <strong>client apps\/libraries<\/strong> with the following settings:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>S3 endpoint: <code>https:\/\/webappname.azurewebsites.net<\/code>, replacing <em>webappname<\/em> with the name of your Web App (and note the use of https)<\/li>\n\n\n\n<li>Access Key: the name of your Azure Blob Storage Account; in the example above, <em>aleminiostorage<\/em><\/li>\n\n\n\n<li>Secret Key: the Account Key of your Azure Blob Storage Account<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"s3cmd\">s3cmd<\/h2>\n\n\n\n<p>As an example, let&#8217;s configure s3cmd to use our own Minio server.<\/p>\n\n\n\n<p>Download the <a href=\"https:\/\/github.com\/s3tools\/s3cmd\/releases\">s3cmd<\/a> binary from GitHub and extract it somewhere.<\/p>\n\n\n\n<p>Note: make sure you&#8217;re using s3cmd 2.0.1 or higher, as previous releases have issues with Minio as gateway to Azure Storage. Likewise, please make sure you&#8217;re using Minio 2017-10-27 or higher.<\/p>\n\n\n\n<p>Create then a file named <code>~\/.s3cfg<\/code> to configure s3cmd:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n# Setup endpoint: hostname of the Web App\nhost_base = aleminio.azurewebsites.net\nhost_bucket = aleminio.azurewebsites.net\n# Leave as default\nbucket_location = us-east-1\nuse_https = True\n# Setup access keys\n# Access Key = Azure Storage Account name\naccess_key =  aleminiostorage\n# Secret Key = Azure Storage Account Key\nsecret_key = rOduFZr22jJ+...\n# Use S3 v4 signature APIs\nsignature_v2 = False\n<\/pre><\/div>\n\n\n<p>You should be able to use s3cmd now! Some examples:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n# Create a bucket\n$ .\/s3cmd mb s3:\/\/testbucket\nBucket 's3:\/\/testbucket\/' created\n# List all buckets\n$ .\/s3cmd ls s3:\/\/\n2017-06-12 19:58  s3:\/\/testbucket\n# Uplaod some files\n$ .\/s3cmd put photos\/* s3:\/\/testbucket\n<\/pre><\/div>\n\n\n<p>That&#8217;s it! Now it&#8217;s your turn to play with Minio on Azure. From deploying apps on Azure that wouldn&#8217;t work with our object storage before, to using s3cmd with Azure Blob Storage for backups, it&#8217;s now possible, and easy to do.<\/p>\n\n\n\n<p>Questions or comments? Let me know in the comments.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Object storage is one of the core services offered by cloud platforms, as it allows developers to store any kind of unstructured data, conveniently and flexibly.<\/p>\n","protected":false},"author":5562,"featured_media":95487,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"msxcm_post_with_no_image":false,"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[2272,166],"content-type":[340],"topic":[2241],"programming-languages":[2258],"coauthors":[2315],"class_list":["post-72802","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-microsoft","tag-azure","content-type-tutorials-and-demos","topic-cloud","programming-languages-golang","review-flag-1593580428-734","review-flag-1593580419-521","review-flag-1593580771-946","review-flag-1-1593580432-963","review-flag-2-1593580437-411","review-flag-3-1593580442-169","review-flag-alway-1593580310-39","review-flag-free-1593619513-693","review-flag-integ-1593580288-449","review-flag-lever-1593580265-989","review-flag-new-1593580248-669","review-flag-vm-1593580807-312"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Using s3cmd and other Amazon S3-compatible apps with Azure Blob Storage | Microsoft Open Source Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using s3cmd and other Amazon S3-compatible apps with Azure Blob Storage | Microsoft Open Source Blog\" \/>\n<meta property=\"og:description\" content=\"Object storage is one of the core services offered by cloud platforms, as it allows developers to store any kind of unstructured data, conveniently and flexibly.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Open Source Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-11-09T16:00:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-22T23:46:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Julian_07.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1170\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Alessandro Segala\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:site\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alessandro Segala\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/\"},\"author\":[{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/alessandro-segala\/\",\"@type\":\"Person\",\"@name\":\"Alessandro Segala\"}],\"headline\":\"Using s3cmd and other Amazon S3-compatible apps with Azure Blob Storage\",\"datePublished\":\"2017-11-09T16:00:18+00:00\",\"dateModified\":\"2025-01-22T23:46:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/\"},\"wordCount\":1067,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Julian_07.webp\",\"keywords\":[\"Microsoft\",\"Microsoft Azure\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/\",\"name\":\"Using s3cmd and other Amazon S3-compatible apps with Azure Blob Storage | Microsoft Open Source Blog\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Julian_07.webp\",\"datePublished\":\"2017-11-09T16:00:18+00:00\",\"dateModified\":\"2025-01-22T23:46:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#primaryimage\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Julian_07.webp\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Julian_07.webp\",\"width\":1170,\"height\":640},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/opensource.microsoft.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using s3cmd and other Amazon S3-compatible apps with Azure Blob Storage\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"name\":\"Microsoft Open Source Blog\",\"description\":\"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability\",\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\",\"name\":\"Microsoft Open Source Blog\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":259,\"height\":194,\"caption\":\"Microsoft Open Source Blog\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/OpenAtMicrosoft\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using s3cmd and other Amazon S3-compatible apps with Azure Blob Storage | Microsoft Open Source Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/","og_locale":"en_US","og_type":"article","og_title":"Using s3cmd and other Amazon S3-compatible apps with Azure Blob Storage | Microsoft Open Source Blog","og_description":"Object storage is one of the core services offered by cloud platforms, as it allows developers to store any kind of unstructured data, conveniently and flexibly.","og_url":"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/","og_site_name":"Microsoft Open Source Blog","article_published_time":"2017-11-09T16:00:18+00:00","article_modified_time":"2025-01-22T23:46:16+00:00","og_image":[{"width":1170,"height":640,"url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Julian_07.png","type":"image\/png"}],"author":"Alessandro Segala","twitter_card":"summary_large_image","twitter_creator":"@OpenAtMicrosoft","twitter_site":"@OpenAtMicrosoft","twitter_misc":{"Written by":"Alessandro Segala","Est. reading time":"5 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#article","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/"},"author":[{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/alessandro-segala\/","@type":"Person","@name":"Alessandro Segala"}],"headline":"Using s3cmd and other Amazon S3-compatible apps with Azure Blob Storage","datePublished":"2017-11-09T16:00:18+00:00","dateModified":"2025-01-22T23:46:16+00:00","mainEntityOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/"},"wordCount":1067,"commentCount":4,"publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Julian_07.webp","keywords":["Microsoft","Microsoft Azure"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/","url":"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/","name":"Using s3cmd and other Amazon S3-compatible apps with Azure Blob Storage | Microsoft Open Source Blog","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#primaryimage"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Julian_07.webp","datePublished":"2017-11-09T16:00:18+00:00","dateModified":"2025-01-22T23:46:16+00:00","breadcrumb":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#primaryimage","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Julian_07.webp","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Julian_07.webp","width":1170,"height":640},{"@type":"BreadcrumbList","@id":"https:\/\/opensource.microsoft.com\/blog\/2017\/11\/09\/s3cmd-amazon-s3-compatible-apps-azure-storage\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/opensource.microsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using s3cmd and other Amazon S3-compatible apps with Azure Blob Storage"}]},{"@type":"WebSite","@id":"https:\/\/opensource.microsoft.com\/blog\/#website","url":"https:\/\/opensource.microsoft.com\/blog\/","name":"Microsoft Open Source Blog","description":"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability","publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/opensource.microsoft.com\/blog\/#organization","name":"Microsoft Open Source Blog","url":"https:\/\/opensource.microsoft.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":259,"height":194,"caption":"Microsoft Open Source Blog"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/OpenAtMicrosoft"]}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Open Source Blog","distributor_original_site_url":"https:\/\/opensource.microsoft.com\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/72802","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/users\/5562"}],"replies":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=72802"}],"version-history":[{"count":3,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/72802\/revisions"}],"predecessor-version":[{"id":96915,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/72802\/revisions\/96915"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media\/95487"}],"wp:attachment":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=72802"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/post_tag?post=72802"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/content-type?post=72802"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/topic?post=72802"},{"taxonomy":"programming-languages","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/programming-languages?post=72802"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/coauthors?post=72802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}