<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Md. Minhazul Haque</title>
    <description>The latest articles on Forem by Md. Minhazul Haque (@mdminhazulhaque).</description>
    <link>https://forem.com/mdminhazulhaque</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F167950%2F21aea250-a158-4fd5-93fe-845898acf568.jpeg</url>
      <title>Forem: Md. Minhazul Haque</title>
      <link>https://forem.com/mdminhazulhaque</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mdminhazulhaque"/>
    <language>en</language>
    <item>
      <title>MongoDB for MySQL People</title>
      <dc:creator>Md. Minhazul Haque</dc:creator>
      <pubDate>Tue, 04 Aug 2020 14:30:07 +0000</pubDate>
      <link>https://forem.com/mdminhazulhaque/mongodb-for-mysql-people-mb3</link>
      <guid>https://forem.com/mdminhazulhaque/mongodb-for-mysql-people-mb3</guid>
      <description>&lt;p&gt;I am a MySQL guy. I can query MySQL, BigQuery or SQL-like databases for my day to day business. Last week, I faced a challenge where I needed to extract some information from a production MongoDB server that involves aggregation. I had no idea how MongoDB works or how to run CRUD operation on such database. So obviously, I spent my whole weekend in learning MongoDB. In this post I am going to share the MongoDB queries I learnt, and the equivalent MySQL queries as well.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I used MongoDB v3.6, for both daemon and cli, so some functions may not work with your current setup&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Populate Data and Load into MongoDB
&lt;/h2&gt;

&lt;p&gt;I used the following piece of code to scrap my Github profile information into a single JSON file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;json&lt;/span&gt;

&lt;span class="n"&gt;username&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;'mdminhazulhaque'&lt;/span&gt;
&lt;span class="n"&gt;repos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="n"&gt;page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'page'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'type'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'owner'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'per_page'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'https://api.github.com/users/{username}/repos'&lt;/span&gt;\
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;single&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="n"&gt;repos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
            &lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;single&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'name'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="s"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;single&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'description'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="s"&gt;"created_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;single&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'created_at'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="s"&gt;"language"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;single&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'language'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="s"&gt;"stargazers_count"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;single&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'stargazers_count'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;page&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"github.json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"w"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;repos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;indent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then I loaded the JSON data into MongoDB using &lt;code&gt;mongoimport&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mongoimport &lt;span class="nt"&gt;--db&lt;/span&gt; &lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nt"&gt;--collection&lt;/span&gt; repos &lt;span class="nt"&gt;--drop&lt;/span&gt; &lt;span class="nt"&gt;--jsonArray&lt;/span&gt; &lt;span class="nt"&gt;--file&lt;/span&gt; github.json 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One record from the &lt;code&gt;repo&lt;/code&gt; collection looks like the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;mongo 127.0.0.1/local
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.findOne&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="s2"&gt;"_id"&lt;/span&gt; : ObjectId&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"5f1cfca24662cbc419b65e29"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;,
        &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"a-pdf-reader"&lt;/span&gt;,
        &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;"A poppler based pdf reader written in Qt4"&lt;/span&gt;,
        &lt;span class="s2"&gt;"created_at"&lt;/span&gt; : &lt;span class="s2"&gt;"2012-10-07T20:44:48Z"&lt;/span&gt;,
        &lt;span class="s2"&gt;"language"&lt;/span&gt; : &lt;span class="s2"&gt;"C++"&lt;/span&gt;,
        &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt;: null
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's start playing with MongoDB.&lt;/p&gt;

&lt;h2&gt;
  
  
  SELECT
&lt;/h2&gt;

&lt;h3&gt;
  
  
  select * from repos
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.find&lt;span class="o"&gt;({})&lt;/span&gt;

&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : ObjectId&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"5f1cfca24662cbc419b65e2a"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"apt-sync"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at"&lt;/span&gt; : &lt;span class="s2"&gt;"2017-11-19T04:57:23Z"&lt;/span&gt;, &lt;span class="s2"&gt;"language"&lt;/span&gt; : &lt;span class="s2"&gt;"Python"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 0 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : ObjectId&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"5f1cfca24662cbc419b65e2b"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"aws-cli-cheatsheet"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at"&lt;/span&gt; : &lt;span class="s2"&gt;"2020-02-27T16:38:21Z"&lt;/span&gt;, &lt;span class="s2"&gt;"language"&lt;/span&gt; : null, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 52 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : ObjectId&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"5f1cfca24662cbc419b65e2c"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"banglalion-wimax-mac"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at"&lt;/span&gt; : &lt;span class="s2"&gt;"2015-02-25T19:15:48Z"&lt;/span&gt;, &lt;span class="s2"&gt;"language"&lt;/span&gt; : &lt;span class="s2"&gt;"HTML"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 0 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : ObjectId&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"5f1cfca24662cbc419b65e2d"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"annoying-bn-text"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at"&lt;/span&gt; : &lt;span class="s2"&gt;"2019-06-05T17:25:05Z"&lt;/span&gt;, &lt;span class="s2"&gt;"language"&lt;/span&gt; : &lt;span class="s2"&gt;"HTML"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 1 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : ObjectId&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"5f1cfca24662cbc419b65e2e"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"banglalionwimaxapi"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at"&lt;/span&gt; : &lt;span class="s2"&gt;"2018-10-16T13:03:53Z"&lt;/span&gt;, &lt;span class="s2"&gt;"language"&lt;/span&gt; : &lt;span class="s2"&gt;"Python"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 0 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : ObjectId&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"5f1cfca24662cbc419b65e2f"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"bcm-wimax-dkms"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at"&lt;/span&gt; : &lt;span class="s2"&gt;"2017-05-20T18:22:07Z"&lt;/span&gt;, &lt;span class="s2"&gt;"language"&lt;/span&gt; : &lt;span class="s2"&gt;"C"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 0 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : ObjectId&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"5f1cfca24662cbc419b65e30"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"bd-mrp-api"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at"&lt;/span&gt; : &lt;span class="s2"&gt;"2018-12-31T20:26:48Z"&lt;/span&gt;, &lt;span class="s2"&gt;"language"&lt;/span&gt; : &lt;span class="s2"&gt;"Python"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 1 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  select name, description from repos
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.find&lt;span class="o"&gt;({}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;_id:0, name:1, description:1&lt;span class="o"&gt;})&lt;/span&gt;

&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"a-pdf-reader"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;"A poppler based pdf reader written in Qt4"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"apt-sync"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;":gift: Sync APT installed package list across different machines"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"aws-cli-cheatsheet"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;":cloud: AWS CLI + JQ = Make life easier"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"banglalion-wimax-mac"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;":satellite: Banglalion WiMAX on Mac OS X"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"annoying-bn-text"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;"Piss of your friends with awkwardly written Bengali text"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  select name, description from repos limit 2
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.aggregate&lt;span class="o"&gt;([{&lt;/span&gt;&lt;span class="nv"&gt;$project&lt;/span&gt;:&lt;span class="o"&gt;{&lt;/span&gt;_id:0, name:1, description:1&lt;span class="o"&gt;}}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$limit&lt;/span&gt;:5&lt;span class="o"&gt;}])&lt;/span&gt;

&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"a-pdf-reader"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;"A poppler based pdf reader written in Qt4"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"apt-sync"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;":gift: Sync APT installed package list across different machines"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  select name, description from repos order by name
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.find&lt;span class="o"&gt;({}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;_id:0, name:1, description:1&lt;span class="o"&gt;})&lt;/span&gt;.sort&lt;span class="o"&gt;({&lt;/span&gt;name:1&lt;span class="o"&gt;})&lt;/span&gt;

&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"Android-Javascript-Bridge"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;"Android and Javascript two way communication"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"Android-JavascriptInterface-Sample"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;"Call Java (Android) methods from Webview using Javascript"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"Bilai-PnP-Gui"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;":cat2: GUI for Bilai PnP Modems"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"CPPad"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;"Write and run C++ codes, instantly!"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"CSE10Routine"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;"Tabbed routine app"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  select name, stargazers_count from repos order by stargazers_count desc
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.find&lt;span class="o"&gt;({}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;_id:0, name:1, stargazers_count:1&lt;span class="o"&gt;})&lt;/span&gt;.sort&lt;span class="o"&gt;({&lt;/span&gt;stargazers_count:-1&lt;span class="o"&gt;})&lt;/span&gt;

&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"aws-cli-cheatsheet"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 52 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"probhat-osx"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 23 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"PyQt-BPNN"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 22 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"foreach"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 14 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"html-table-to-json"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 12 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  select name, stargazers_count from repos where stargazers_count &amp;gt; 20 order by stargazers_count
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.find&lt;span class="o"&gt;({&lt;/span&gt; stargazers_count: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$gt&lt;/span&gt;: 20&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;_id:0, name:1, stargazers_count:1&lt;span class="o"&gt;})&lt;/span&gt;.sort&lt;span class="o"&gt;({&lt;/span&gt;stargazers_count:-1&lt;span class="o"&gt;})&lt;/span&gt;

&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"aws-cli-cheatsheet"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 52 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"probhat-osx"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 23 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"PyQt-BPNN"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 22 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  select name, stargazers_count from repos where language = "Python"
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.find&lt;span class="o"&gt;({&lt;/span&gt; language: &lt;span class="s2"&gt;"Python"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;_id:0, name:1, stargazers_count:1&lt;span class="o"&gt;})&lt;/span&gt;

&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"apt-sync"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 0 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"banglalionwimaxapi"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 0 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"bd-mrp-api"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 1 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"flightaware-cli"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 0 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"html-table-to-json"&lt;/span&gt;, &lt;span class="s2"&gt;"stargazers_count"&lt;/span&gt; : 12 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  select name, description from repos where description like "%cli%"
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.find&lt;span class="o"&gt;({&lt;/span&gt; description: /cli/i &lt;span class="o"&gt;}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;_id:0, name:1, description:1&lt;span class="o"&gt;})&lt;/span&gt;

&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"aws-cli-cheatsheet"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;":cloud: AWS CLI + JQ = Make life easier"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"ClipMonitor"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;"A tiny clip monitor app built with Qt5"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"foreach"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;":repeat: Read lines from file/stdin and execute them as CLI argument"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"kakitangan-cli"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;":briefcase: CLI for Kakitangan app, the online HR Software for Malaysian businesses"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"librs232"&lt;/span&gt;, &lt;span class="s2"&gt;"description"&lt;/span&gt; : &lt;span class="s2"&gt;":paperclip: RS232 Library in C"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  select language, count(*) as count, description from repos group by language order by count
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.aggregate&lt;span class="o"&gt;([{&lt;/span&gt; &lt;span class="nv"&gt;$group&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; _id: &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$language&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;, count: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$sum&lt;/span&gt;: 1 &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$sort&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; count: &lt;span class="nt"&gt;-1&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;}])&lt;/span&gt;

&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"C++"&lt;/span&gt;, &lt;span class="s2"&gt;"count"&lt;/span&gt; : 61 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"Python"&lt;/span&gt;, &lt;span class="s2"&gt;"count"&lt;/span&gt; : 25 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"HTML"&lt;/span&gt;, &lt;span class="s2"&gt;"count"&lt;/span&gt; : 12 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"Java"&lt;/span&gt;, &lt;span class="s2"&gt;"count"&lt;/span&gt; : 12 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"Shell"&lt;/span&gt;, &lt;span class="s2"&gt;"count"&lt;/span&gt; : 10 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  select language, sum(stargazers_count) as stars, description from repos group by language order by stars
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.aggregate&lt;span class="o"&gt;([{&lt;/span&gt; &lt;span class="nv"&gt;$group&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; _id: &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$language&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;, stars: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$sum&lt;/span&gt;: &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$stargazers_count&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$sort&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; stars: &lt;span class="nt"&gt;-1&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;}])&lt;/span&gt;

&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"C++"&lt;/span&gt;, &lt;span class="s2"&gt;"stars"&lt;/span&gt; : 72 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : null, &lt;span class="s2"&gt;"stars"&lt;/span&gt; : 52 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"Python"&lt;/span&gt;, &lt;span class="s2"&gt;"stars"&lt;/span&gt; : 47 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"Shell"&lt;/span&gt;, &lt;span class="s2"&gt;"stars"&lt;/span&gt; : 43 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"HTML"&lt;/span&gt;, &lt;span class="s2"&gt;"stars"&lt;/span&gt; : 19 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  select name, substr(created_at, 0, 4) as created_at_year from repos order by created_at_year desc
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.aggregate&lt;span class="o"&gt;([{&lt;/span&gt;&lt;span class="nv"&gt;$addFields&lt;/span&gt;:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"created_at_year"&lt;/span&gt;:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$substr&lt;/span&gt;:[&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$created_at&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;, 0, 4]&lt;span class="o"&gt;}}}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$project&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;_id:0, name:1, created_at_year:1&lt;span class="o"&gt;}}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$sort&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;created_at_year:-1&lt;span class="o"&gt;}}])&lt;/span&gt;

&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"aws-cli-cheatsheet"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at_year"&lt;/span&gt; : &lt;span class="s2"&gt;"2020"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"gitfolio"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at_year"&lt;/span&gt; : &lt;span class="s2"&gt;"2020"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"messenger-bot"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at_year"&lt;/span&gt; : &lt;span class="s2"&gt;"2020"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"urctl"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at_year"&lt;/span&gt; : &lt;span class="s2"&gt;"2020"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"annoying-bn-text"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at_year"&lt;/span&gt; : &lt;span class="s2"&gt;"2019"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"esp32-mqtt-ir-remote"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at_year"&lt;/span&gt; : &lt;span class="s2"&gt;"2019"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  select substr(created_at, 0, 4)) as year, count(*) as count from repos group by year order by count desc
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.aggregate&lt;span class="o"&gt;([{&lt;/span&gt;&lt;span class="nv"&gt;$addFields&lt;/span&gt;:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"created_at_year"&lt;/span&gt;:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$substr&lt;/span&gt;:[&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$created_at&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;, 0, 4]&lt;span class="o"&gt;}}}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$group&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; _id: &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$created_at_year&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;, count: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$sum&lt;/span&gt;: 1 &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$sort&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; count: &lt;span class="nt"&gt;-1&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;}])&lt;/span&gt;

&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"2015"&lt;/span&gt;, &lt;span class="s2"&gt;"count"&lt;/span&gt; : 41 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"2016"&lt;/span&gt;, &lt;span class="s2"&gt;"count"&lt;/span&gt; : 35 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"2012"&lt;/span&gt;, &lt;span class="s2"&gt;"count"&lt;/span&gt; : 18 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"2014"&lt;/span&gt;, &lt;span class="s2"&gt;"count"&lt;/span&gt; : 14 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"2013"&lt;/span&gt;, &lt;span class="s2"&gt;"count"&lt;/span&gt; : 12 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"_id"&lt;/span&gt; : &lt;span class="s2"&gt;"2019"&lt;/span&gt;, &lt;span class="s2"&gt;"count"&lt;/span&gt; : 10 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  select name, unix_timestamp(str_to_date(created_at, '%Y-%M-%dT%h:%m:%sz')) from repos
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.aggregate&lt;span class="o"&gt;([{&lt;/span&gt;&lt;span class="nv"&gt;$addFields&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$dateFromString&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; dateString: &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$created_at&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;}}}}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$project&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;_id:0, created_at_usec: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$subtract&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$date&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;, new Date&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"1970-01-01"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;, name:1&lt;span class="o"&gt;}}])&lt;/span&gt;

&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"a-pdf-reader"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at_usec"&lt;/span&gt; : NumberLong&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"1349642688000"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"apt-sync"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at_usec"&lt;/span&gt; : NumberLong&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"1511067443000"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"aws-cli-cheatsheet"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at_usec"&lt;/span&gt; : NumberLong&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"1582821501000"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"banglalion-wimax-mac"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at_usec"&lt;/span&gt; : NumberLong&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"1424891748000"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt; : &lt;span class="s2"&gt;"annoying-bn-text"&lt;/span&gt;, &lt;span class="s2"&gt;"created_at_usec"&lt;/span&gt; : NumberLong&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"1559755505000"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  DELETE
&lt;/h2&gt;

&lt;h3&gt;
  
  
  delete from repose where language = "C++"
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.remove&lt;span class="o"&gt;({&lt;/span&gt;language:&lt;span class="s2"&gt;"C++"&lt;/span&gt;&lt;span class="o"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ALTER
&lt;/h2&gt;

&lt;h3&gt;
  
  
  alter table repos drop column created_at
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.update&lt;span class="o"&gt;({}&lt;/span&gt;,&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$unset&lt;/span&gt;:&lt;span class="o"&gt;{&lt;/span&gt;created_at:&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="o"&gt;}})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  alter table repos insert column foo int
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; db.repos.update&lt;span class="o"&gt;({}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$set&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;foo:0&lt;span class="o"&gt;}}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;multi:1&lt;span class="o"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's all for today. Feel free to share if any of the queries can be improved. Thanks for reading.&lt;/p&gt;

</description>
      <category>mongodb</category>
      <category>mysql</category>
      <category>rdbms</category>
      <category>nosql</category>
    </item>
    <item>
      <title>AWS CLI Cheatsheet</title>
      <dc:creator>Md. Minhazul Haque</dc:creator>
      <pubDate>Wed, 15 Apr 2020 11:03:23 +0000</pubDate>
      <link>https://forem.com/mdminhazulhaque/aws-cli-cheatsheet-15f2</link>
      <guid>https://forem.com/mdminhazulhaque/aws-cli-cheatsheet-15f2</guid>
      <description>&lt;h3&gt;
  
  
  🔧 Tools Required
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;aws &lt;a href="https://aws.amazon.com/cli/"&gt;https://aws.amazon.com/cli/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;jq &lt;a href="https://stedolan.github.io/jq/"&gt;https://stedolan.github.io/jq/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ Disclaimer: All Resource, Account, ARN, Hostname etc are generated using &lt;a href="https://faker.readthedocs.io/en/master"&gt;Faker&lt;/a&gt;. They do not match any real user data.&lt;/p&gt;

&lt;h3&gt;
  
  
  📢 Table of Contents
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
EC2

&lt;ul&gt;
&lt;li&gt;List Instance ID, Type and Name&lt;/li&gt;
&lt;li&gt;List Instances with Public IP Address and Name&lt;/li&gt;
&lt;li&gt;List of VPCs and CIDR IP Block&lt;/li&gt;
&lt;li&gt;List of Subnets for a VPC&lt;/li&gt;
&lt;li&gt;List of Security Groups&lt;/li&gt;
&lt;li&gt;Print Security Groups for an Instance&lt;/li&gt;
&lt;li&gt;Edit Security Groups of an Instance&lt;/li&gt;
&lt;li&gt;Print Security Group Rules as FromAddress and ToPort&lt;/li&gt;
&lt;li&gt;Add Rule to Security Group&lt;/li&gt;
&lt;li&gt;Delete Rule from Security Group&lt;/li&gt;
&lt;li&gt;Edit Rules of Security Group&lt;/li&gt;
&lt;li&gt;Delete Security Group&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
S3

&lt;ul&gt;
&lt;li&gt;List Buckets&lt;/li&gt;
&lt;li&gt;List Files in a Bucket&lt;/li&gt;
&lt;li&gt;Create Bucket&lt;/li&gt;
&lt;li&gt;Delete Bucket&lt;/li&gt;
&lt;li&gt;Download S3 Object to Local&lt;/li&gt;
&lt;li&gt;Upload Local File as S3 Object&lt;/li&gt;
&lt;li&gt;Delete S3 Object&lt;/li&gt;
&lt;li&gt;Download Bucket to Local&lt;/li&gt;
&lt;li&gt;Upload Local Directory to Bucket&lt;/li&gt;
&lt;li&gt;Share S3 Object without Public Access&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
API Gateway

&lt;ul&gt;
&lt;li&gt;List of API Gateway IDs and Names&lt;/li&gt;
&lt;li&gt;List of API Gateway Keys&lt;/li&gt;
&lt;li&gt;List API Gateway Domain Names&lt;/li&gt;
&lt;li&gt;List of Resources for API Gateway&lt;/li&gt;
&lt;li&gt;Find Lambda for API Gateway Resource&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
ELB

&lt;ul&gt;
&lt;li&gt;List of ELB Hostnames&lt;/li&gt;
&lt;li&gt;List of ELB ARNs&lt;/li&gt;
&lt;li&gt;List of ELB Target Group ARNs&lt;/li&gt;
&lt;li&gt;Find Instances for a Target Group&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
RDS

&lt;ul&gt;
&lt;li&gt;List of DB Clusters&lt;/li&gt;
&lt;li&gt;List of DB Instances&lt;/li&gt;
&lt;li&gt;Take DB Instance Snapshot&lt;/li&gt;
&lt;li&gt;Take DB Cluster Snapshot&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
ElastiCache

&lt;ul&gt;
&lt;li&gt;List of ElastiCache Machine Type and Name&lt;/li&gt;
&lt;li&gt;List of ElastiCache Replication Groups&lt;/li&gt;
&lt;li&gt;List of ElastiCache Snapshots&lt;/li&gt;
&lt;li&gt;Create ElastiCache Snapshot&lt;/li&gt;
&lt;li&gt;Delete ElastiCache Snapshot&lt;/li&gt;
&lt;li&gt;Scale Up/Down ElastiCache Replica&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
Lambda

&lt;ul&gt;
&lt;li&gt;List of Lambda Functions, Runtime and Memory&lt;/li&gt;
&lt;li&gt;List of Lambda Layers&lt;/li&gt;
&lt;li&gt;List of Source Event for Lambda&lt;/li&gt;
&lt;li&gt;Download Lambda Code&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
Cloudwatch

&lt;ul&gt;
&lt;li&gt;List of CloudWatch Alarms and Status&lt;/li&gt;
&lt;li&gt;Create Alarm for EC2 High CPUUtilization&lt;/li&gt;
&lt;li&gt;Create Alarm for EC2 High StatusCheckFailed_Instance&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
Route53

&lt;ul&gt;
&lt;li&gt;List Domains&lt;/li&gt;
&lt;li&gt;List Records for a Domain (Zone)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
SNS

&lt;ul&gt;
&lt;li&gt;List of SNS Topics&lt;/li&gt;
&lt;li&gt;List of SNS Topic and related Subscriptions&lt;/li&gt;
&lt;li&gt;Publish to SNS Topic&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
DynamoDB

&lt;ul&gt;
&lt;li&gt;List of DynamoDB Tables&lt;/li&gt;
&lt;li&gt;Get All Items from a Table&lt;/li&gt;
&lt;li&gt;Get Item Count from a Table&lt;/li&gt;
&lt;li&gt;Get Item using Key&lt;/li&gt;
&lt;li&gt;Get Specific Fields from an Item&lt;/li&gt;
&lt;li&gt;Delete Item using Key&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
SQS

&lt;ul&gt;
&lt;li&gt;List Queues&lt;/li&gt;
&lt;li&gt;Create Queue&lt;/li&gt;
&lt;li&gt;Count Messages in Queue&lt;/li&gt;
&lt;li&gt;Send Message&lt;/li&gt;
&lt;li&gt;Receive Message&lt;/li&gt;
&lt;li&gt;Delete Message&lt;/li&gt;
&lt;li&gt;Purge Queue&lt;/li&gt;
&lt;li&gt;Delete Queue&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
CloudFront

&lt;ul&gt;
&lt;li&gt;List of CloudFront Distributions and Origins&lt;/li&gt;
&lt;li&gt;Create Cache Invalidation&lt;/li&gt;
&lt;li&gt;Check Cache Invalidation Status&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
Amplify

&lt;ul&gt;
&lt;li&gt;List of Amplify Apps and Source Repository&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
Cognito

&lt;ul&gt;
&lt;li&gt;List of User Pool IDs and Names&lt;/li&gt;
&lt;li&gt;List of Phone and Email of All Users&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
IAM User

&lt;ul&gt;
&lt;li&gt;List of UserId and UserName&lt;/li&gt;
&lt;li&gt;Get Single User&lt;/li&gt;
&lt;li&gt;Add User&lt;/li&gt;
&lt;li&gt;Delete User&lt;/li&gt;
&lt;li&gt;List Access Keys for User&lt;/li&gt;
&lt;li&gt;Delete Access Key for User&lt;/li&gt;
&lt;li&gt;Activate/Deactivate Access Key for User&lt;/li&gt;
&lt;li&gt;Generate New Access Key for User&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
IAM Group

&lt;ul&gt;
&lt;li&gt;List Groups&lt;/li&gt;
&lt;li&gt;Add/Delete Groups&lt;/li&gt;
&lt;li&gt;List of Policies and ARNs&lt;/li&gt;
&lt;li&gt;List of User/Group/Roles for a Policy&lt;/li&gt;
&lt;li&gt;List Policies for a Group&lt;/li&gt;
&lt;li&gt;Add Policy to a Group&lt;/li&gt;
&lt;li&gt;Add User to a Group&lt;/li&gt;
&lt;li&gt;Remove User from a Group&lt;/li&gt;
&lt;li&gt;List Users in a Group&lt;/li&gt;
&lt;li&gt;List Groups for a User&lt;/li&gt;
&lt;li&gt;Attach/Detach Policy to a Group&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ℹ️ Pro Tip!
&lt;/h3&gt;

&lt;p&gt;👉 If you have multiple AWS Accounts, you can use bash alias like the following. So you no longer need to pass &lt;code&gt;--profile&lt;/code&gt; to &lt;code&gt;aws&lt;/code&gt; tool.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;alias &lt;/span&gt;aws-prod&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"aws --profile work-prod"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;aws-dev&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"aws --profile work-dev"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;aws-self&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"aws --profile personal"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;aws&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"aws --profile work-dev"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;👉 To format &lt;code&gt;aws&lt;/code&gt; command output into tables, you can pipe output to &lt;code&gt;column -t&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# aws ec2 describe-instances | jq ...
i-0f112d652ecf13dac c3.x2large fisher.com
i-0b3b5128445a332db t2.nano robinson.com

# aws ec2 describe-instances | jq ... | column -t
i-0f112d652ecf13dac  c3.x2large  fisher.com
i-0b3b5128445a332db  t2.nano     robinson.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  EC2
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List Instance ID, Type and Name
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-instances | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Reservations[].Instances[]|.InstanceId+" "+.InstanceType+" "+(.Tags[] | select(.Key == "Name").Value)'&lt;/span&gt;
i-0f112d652ecf13dac  c3.xlarge  fisher.com
i-0b3b5128445a332db  t2.nano    robinson.com
i-0d1c1cf4e980ac593  t2.micro   nolan.com
i-004ee6b792c3b6914  t2.nano    grimes-green.net
i-00f11e8e33c971058  t2.nano    garrett.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List Instances with Public IP Address and Name
&lt;/h4&gt;

&lt;p&gt;👉 Tip: You can directly put this to your &lt;code&gt;/etc/hosts&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-instances &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'Reservations[*].Instances[?not_null(PublicIpAddress)]'&lt;/span&gt; | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.[][]|.PublicIpAddress+" "+(.Tags[]|select(.Key=="Name").Value)'&lt;/span&gt;
223.64.72.64    fisher.com
198.82.207.161  robinson.com
182.139.20.233  nolan.com
153.134.83.44   grimes-green.net
202.32.63.121   garrett.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of VPCs and CIDR IP Block
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-vpcs | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Vpcs[]|.VpcId+" "+(.Tags[]|select(.Key=="Name").Value)+" "+.CidrBlock'&lt;/span&gt;
vpc-0d1c1cf4e980ac593  frontend-vpc  10.0.0.0/16
vpc-00f11e8e33c971058  backend-vpc   172.31.0.0/16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of Subnets for a VPC
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-subnets &lt;span class="nt"&gt;--filter&lt;/span&gt; &lt;span class="nv"&gt;Name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;vpc-id,Values&lt;span class="o"&gt;=&lt;/span&gt;vpc-0d1c1cf4e980ac593 | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Subnets[]|.SubnetId+" "+.CidrBlock+" "+(.Tags[]|select(.Key=="Name").Value)'&lt;/span&gt;
subnet-0dae5d4daa47fe4a2  10.0.128.0/20  Public Subnet 1
subnet-0641a25faccb01f0f  10.0.32.0/19   Private Subnet 2
subnet-09fb8038641f1f36f  10.0.0.0/19    Private Subnet 1
subnet-02a63c67684d8deed  10.0.144.0/20  Public Subnet 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of Security Groups
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-security-groups | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.SecurityGroups[]|.GroupId+" "+.GroupName'&lt;/span&gt;
sg-02a63c67684d8deed  backend-db
sg-0dae5d4daa47fe4a2  backend-redis
sg-0a56bff7b12264282  frontend-lb
sg-0641a25faccb01f0f  frontend-https
sg-09fb8038641f1f36f  internal-ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Print Security Groups for an Instance
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-instances &lt;span class="nt"&gt;--instance-ids&lt;/span&gt; i-0dae5d4daa47fe4a2 | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Reservations[].Instances[].SecurityGroups[]|.GroupId+" "+.GroupName'&lt;/span&gt;
sg-02a63c67684d8deed  backend-db
sg-0dae5d4daa47fe4a2  backend-redis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Edit Security Groups of an Instance
&lt;/h4&gt;

&lt;p&gt;👉 You have to provide existing Security Group IDs as well&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 modify-instance-attribute &lt;span class="nt"&gt;--instance-id&lt;/span&gt; i-0dae5d4daa47fe4a2 &lt;span class="nt"&gt;--groups&lt;/span&gt; sg-02a63c67684d8deed sg-0dae5d4daa47fe4a2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Print Security Group Rules as FromAddress and ToPort
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-security-groups &lt;span class="nt"&gt;--group-ids&lt;/span&gt; sg-02a63c67684d8deed | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.SecurityGroups[].IpPermissions[]|. as $parent|(.IpRanges[].CidrIp+" "+($parent.ToPort|tostring))'&lt;/span&gt;
223.64.72.64/32    3306
198.82.207.161/32  3306
168.244.58.160/32  3306
202.0.149.202/32   3306
212.143.80.102/32  3306
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Add Rule to Security Group
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 authorize-security-group-ingress &lt;span class="nt"&gt;--group-id&lt;/span&gt; sg-02a63c67684d8deed &lt;span class="nt"&gt;--protocol&lt;/span&gt; tcp &lt;span class="nt"&gt;--port&lt;/span&gt; 443 &lt;span class="nt"&gt;--cidr&lt;/span&gt; 35.0.0.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Delete Rule from Security Group
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 revoke-security-group-ingress &lt;span class="nt"&gt;--group-id&lt;/span&gt; sg-02a63c67684d8deed &lt;span class="nt"&gt;--protocol&lt;/span&gt; tcp &lt;span class="nt"&gt;--port&lt;/span&gt; 443 &lt;span class="nt"&gt;--cidr&lt;/span&gt; 35.0.0.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Edit Rules of Security Group
&lt;/h4&gt;

&lt;p&gt;👉 You have to provide All IP Ranges as well&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 update-security-group-rule-descriptions-ingress &lt;span class="nt"&gt;--group-id&lt;/span&gt; sg-02a63c67684d8deed &lt;span class="nt"&gt;--ip-permissions&lt;/span&gt; &lt;span class="s1"&gt;'ToPort=443,IpProtocol=tcp,IpRanges=[{CidrIp=202.171.186.133/32,Description=Home}]'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Delete Security Group
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 delete-security-group &lt;span class="nt"&gt;--group-id&lt;/span&gt; sg-02a63c67684d8deed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  S3
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List Buckets
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;ls
&lt;/span&gt;2020-01-28 18:49:50 customer-data-primary
2020-01-28 18:50:22 customer-data-backup
2020-01-28 18:50:54 wordpress-cdn
2020-01-28 18:52:25 backend-artifacts-20200220-deployment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List Files in a Bucket
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;ls &lt;/span&gt;wordpress-cdn/wp-content/uploads/2019/10/04/
2019-10-04 15:02:02     133557 amazing-content.jpg
2019-10-04 15:02:02       2986 amazing-content-103x50.jpg
2019-10-04 15:02:02       5640 amazing-content-120x120.jpg
2019-10-04 15:02:02       7924 amazing-content-150x150.jpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Create Bucket
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 mb s3://my-awesome-new-bucket
make_bucket: my-awesome-new-bucket
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Delete Bucket
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 rb s3://my-awesome-new-bucket &lt;span class="nt"&gt;--force&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Download S3 Object to Local
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;cp &lt;/span&gt;s3://my-awesome-new-bucket &lt;span class="nb"&gt;.&lt;/span&gt;
download: ./backup.tar from s3://my-awesome-new-bucket/backup.tar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Upload Local File as S3 Object
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;cp &lt;/span&gt;backup.tar s3://my-awesome-new-bucket
upload: ./backup.tar to s3://my-awesome-new-bucket/backup.tar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Delete S3 Object
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;rm &lt;/span&gt;s3://my-awesome-new-bucket/secret-file.gz &lt;span class="nb"&gt;.&lt;/span&gt;
delete: s3://my-awesome-new-bucket/secret-file.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Download Bucket to Local
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;sync &lt;/span&gt;s3://my-awesome-new-bucket/ /media/Passport-Ultra/Backup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Upload Local Directory to Bucket
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;sync&lt;/span&gt; /home/minhaz/Downloads s3://my-awesome-new-bucket/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Share S3 Object without Public Access
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 presign s3://my-awesome-new-bucket/business-reports.pdf &lt;span class="nt"&gt;--expires-in&lt;/span&gt; 3600
https://my-awesome-new-bucket.s3.amazonaws.com/business-reports.pdf?AWSAccessKeyId&lt;span class="o"&gt;=&lt;/span&gt;AKISUENSAKSIEUAA&amp;amp;Expires&lt;span class="o"&gt;=&lt;/span&gt;1582876994&amp;amp;Signature&lt;span class="o"&gt;=&lt;/span&gt;kizOEA93kaIHw7uv25wSFIKLmAx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  API Gateway
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List of API Gateway IDs and Names
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws apigateway get-rest-apis | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.items[] | .id+" "+.name'&lt;/span&gt;
5e3221cf8  backend-api
69ef7d4c8  frontend-api
bb1e3c281  partner-api
f99796943  internal-crm-api
ee86b4cde  import-data-api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of API Gateway Keys
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws apigateway get-api-keys | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.items[] | .id+" "+.name'&lt;/span&gt;
ee86b4cde   backend-api-key
69ef7d4c8   partner-api-key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List API Gateway Domain Names
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws apigateway get-domain-names | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.items[] | .domainName+" "+.regionalDomainName'&lt;/span&gt;
backend-api.mdminhazulhaque.io   d-ee86b4cde.execute-api.ap-southeast-1.amazonaws.com
frontend-api.mdminhazulhaque.io  d-bb1e3c281.execute-api.ap-southeast-1.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of Resources for API Gateway
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws apigateway get-resources &lt;span class="nt"&gt;--rest-api-id&lt;/span&gt; ee86b4cde  | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.items[] | .id+" "+.path'&lt;/span&gt;
ee86b4cde  /&lt;span class="o"&gt;{&lt;/span&gt;proxy+&lt;span class="o"&gt;}&lt;/span&gt;
69ef7d4c8  /
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Find Lambda for API Gateway Resource
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws apigateway get-integration &lt;span class="nt"&gt;--rest-api-id&lt;/span&gt; ee86b4cde &lt;span class="nt"&gt;--resource-id&lt;/span&gt; 69ef7d4c8 &lt;span class="nt"&gt;--http-method&lt;/span&gt; GET | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.uri'&lt;/span&gt;
arn:aws:lambda:ap-southeast-1:987654321:function:backend-api-function-5d4daa47fe4a2:live/invocations
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  ELB
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List of ELB Hostnames
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws elbv2 describe-load-balancers &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'LoadBalancers[*].DNSName'&lt;/span&gt;  | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'to_entries[] | .value'&lt;/span&gt;
frontend-lb-1220186848339.ap-southeast-1.elb.amazonaws.com
backend-lb-6208709163457.ap-southeast-1.elb.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of ELB ARNs
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws elbv2 describe-load-balancers | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.LoadBalancers[] | .LoadBalancerArn'&lt;/span&gt;
arn:aws:elasticloadbalancing:ap-southeast-1:987654321:loadbalancer/app/frontend-lb/1220186848339
arn:aws:elasticloadbalancing:ap-southeast-1:987654321:loadbalancer/app/backend-lb/6208709163457
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of ELB Target Group ARNs
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws elbv2 describe-target-groups | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.TargetGroups[] | .TargetGroupArn'&lt;/span&gt;
arn:aws:elasticloadbalancing:ap-southeast-1:987654321:targetgroup/frontend/b6da07d35
arn:aws:elasticloadbalancing:ap-southeast-1:987654321:targetgroup/backend/97ad3b13c
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Find Instances for a Target Group
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws elbv2 describe-target-health &lt;span class="nt"&gt;--target-group-arn&lt;/span&gt; arn:aws:elasticloadbalancing:ap-southeast-1:987654321:targetgroup/wordpress-ph/88f517d6b5326a26 | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.TargetHealthDescriptions[] | .Target.Id'&lt;/span&gt;
i-0b3b5128445a332db
i-0d1c1cf4e980ac593
i-00f11e8e33c971058
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  RDS
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List of DB Clusters
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws rds describe-db-clusters | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.DBClusters[] | .DBClusterIdentifier+" "+.Endpoint'&lt;/span&gt;
backend-prod   backend-prod.cluster-b6da07d35.ap-southeast-1.rds.amazonaws.com
internal-prod  internal-dev.cluster-b6da07d35.ap-southeast-1.rds.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of DB Instances
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws rds describe-db-instances | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.DBInstances[] | .DBInstanceIdentifier+" "+.DBInstanceClass+" "+.Endpoint.Address'&lt;/span&gt;
backend-dev   db.t3.medium  backend-prod.b6da07d35.ap-southeast-1.rds.amazonaws.com
internal-dev  db.t2.micro   internal-dev.b6da07d35.ap-southeast-1.rds.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Take DB Instance Snapshot
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws rds create-db-snapshot &lt;span class="nt"&gt;--db-snapshot-identifier&lt;/span&gt; backend-dev-snapshot-0001 &lt;span class="nt"&gt;--db-instance-identifier&lt;/span&gt; backend-dev
aws rds describe-db-snapshots &lt;span class="nt"&gt;--db-snapshot-identifier&lt;/span&gt; backend-dev-snapshot-0001 &lt;span class="nt"&gt;--db-instance-identifier&lt;/span&gt; general
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Take DB Cluster Snapshot
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws rds create-db-cluster-snapshot &lt;span class="nt"&gt;--db-cluster-snapshot-identifier&lt;/span&gt; backend-prod-snapshot-0002 &lt;span class="nt"&gt;--db-cluster-identifier&lt;/span&gt; backend-prod
aws rds describe-db-cluster-snapshots &lt;span class="nt"&gt;--db-cluster-snapshot-identifier&lt;/span&gt; backend-prod-snapshot-0002 &lt;span class="nt"&gt;--db-cluster-identifier&lt;/span&gt; backend-prod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  ElastiCache
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List of ElastiCache Machine Type and Name
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws elasticache describe-cache-clusters | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.CacheClusters[] | .CacheNodeType+" "+.CacheClusterId'&lt;/span&gt;
cache.t2.micro  backend-login-hk
cache.t2.micro  backend-login-vn
cache.t2.micro  backend-login-sg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of ElastiCache Replication Groups
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws elasticache describe-replication-groups | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.ReplicationGroups[] | .ReplicationGroupId+" "+.NodeGroups[].PrimaryEndpoint.Address'&lt;/span&gt;
backend-login-hk backend-login-hk.6da35.ng.0001.apse1.cache.amazonaws.com
backend-login-vn backend-login-vn.6da35.ng.0001.apse1.cache.amazonaws.com
backend-login-sg backend-login-sg.6da35.ng.0001.apse1.cache.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of ElastiCache Snapshots
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws elasticache describe-snapshots | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Snapshots[] | .SnapshotName'&lt;/span&gt;
automatic.backend-login-hk-2020-02-27-00-27
automatic.backend-login-vn-2020-02-27-00-27
automatic.backend-login-sg-2020-02-27-00-27
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Create ElastiCache Snapshot
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws elasticache create-snapshot &lt;span class="nt"&gt;--snapshot-name&lt;/span&gt; backend-login-hk-snap-0001 &lt;span class="nt"&gt;--replication-group-id&lt;/span&gt; backend-login-hk &lt;span class="nt"&gt;--cache-cluster-id&lt;/span&gt; backend-login-hk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Delete ElastiCache Snapshot
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws elasticache delete-snapshot &lt;span class="nt"&gt;--snapshot-name&lt;/span&gt; backend-login-hk-snap-0001
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Scale Up/Down ElastiCache Replica
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws elasticache increase-replica-count &lt;span class="nt"&gt;--replication-group-id&lt;/span&gt; backend-login-hk &lt;span class="nt"&gt;--apply-immediately&lt;/span&gt;
aws elasticache decrease-replica-count &lt;span class="nt"&gt;--replication-group-id&lt;/span&gt; backend-login-hk &lt;span class="nt"&gt;--apply-immediately&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Lambda
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List of Lambda Functions, Runtime and Memory
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws lambda list-functions | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Functions[] | .FunctionName+" "+.Runtime+" "+(.MemorySize|tostring)'&lt;/span&gt;
backend-api-function           nodejs8.10  512
backend-signup-email-function  nodejs10.x  128
partner-api-8XJAP1VVLYA7       python3.7   128
marketing-promo-sqs-function   nodejs10.x  128
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of Lambda Layers
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws lambda list-layers | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Layers[] | .LayerName'&lt;/span&gt;
imagemagik-layer
django-layer
nodejs-extra-layer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of Source Event for Lambda
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws lambda list-event-source-mappings | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.EventSourceMappings[] | .FunctionArn+" "+.EventSourceArn'&lt;/span&gt;
arn:aws:lambda:function:backend-api-function           arn:aws:dynamodb:table/prod-user-list/stream
arn:aws:lambda:function:backend-signup-email-function  arn:aws:dynamodb:table/prod-user-email/stream
arn:aws:lambda:function:partner-api-8XJAP1VVLYA7       arn:aws:sqs:partner-input-msg-queue
arn:aws:lambda:function:marketing-promo-sqs-function   arn:aws:sqs:promo-input-msg-queue
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Download Lambda Code
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws lambda get-function &lt;span class="nt"&gt;--function-name&lt;/span&gt; DynamoToSQS | jq &lt;span class="nt"&gt;-r&lt;/span&gt; .Code.Location
https://awslambda-ap-se-1-tasks.s3.ap-southeast-1.amazonaws.com/snapshots/987654321/backend-api-function-1fda0de7-a751-4586-bf64-5601a410c170
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Cloudwatch
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List of CloudWatch Alarms and Status
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws cloudwatch describe-alarms | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.MetricAlarms[] | .AlarmName+" "+.Namespace+" "+.StateValue'&lt;/span&gt;
backend-autoscale  AWS/EC2             OK
backend-lb         AWS/ApplicationELB  OK
partner-hk         AWS/ECS             ALARM
partner-vn         AWS/ECS             ALARM
partner-sg         AWS/ECS             ALARM
userdata-read      AWS/DynamoDB        OK
userdata-write     AWS/DynamoDB        OK
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Create Alarm for EC2 High CPUUtilization
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws cloudwatch put-metric-alarm &lt;span class="nt"&gt;--alarm-name&lt;/span&gt; high-cpu-usage &lt;span class="nt"&gt;--alarm-description&lt;/span&gt; &lt;span class="s2"&gt;"Alarm when CPU exceeds 70 percent"&lt;/span&gt; &lt;span class="nt"&gt;--metric-name&lt;/span&gt; CPUUtilization &lt;span class="nt"&gt;--namespace&lt;/span&gt; AWS/EC2 &lt;span class="nt"&gt;--statistic&lt;/span&gt; Average &lt;span class="nt"&gt;--period&lt;/span&gt; 300 &lt;span class="nt"&gt;--threshold&lt;/span&gt; 70 &lt;span class="nt"&gt;--comparison-operator&lt;/span&gt; GreaterThanThreshold  &lt;span class="nt"&gt;--dimensions&lt;/span&gt; &lt;span class="s2"&gt;"Name=InstanceId,Value=i-123456789"&lt;/span&gt; &lt;span class="nt"&gt;--evaluation-periods&lt;/span&gt; 2 &lt;span class="nt"&gt;--alarm-actions&lt;/span&gt; arn:aws:sns:ap-southeast-1:987654321:System-Alerts &lt;span class="nt"&gt;--unit&lt;/span&gt; Percent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Create Alarm for EC2 High StatusCheckFailed_Instance
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws cloudwatch put-metric-alarm &lt;span class="nt"&gt;--alarm-name&lt;/span&gt; EC2-StatusCheckFailed-AppServer &lt;span class="nt"&gt;--alarm-description&lt;/span&gt; &lt;span class="s2"&gt;"EC2 StatusCheckFailed for AppServer"&lt;/span&gt; &lt;span class="nt"&gt;--metric-name&lt;/span&gt; StatusCheckFailed_Instance &lt;span class="nt"&gt;--namespace&lt;/span&gt; AWS/EC2 &lt;span class="nt"&gt;--statistic&lt;/span&gt; Average &lt;span class="nt"&gt;--period&lt;/span&gt; 60 &lt;span class="nt"&gt;--threshold&lt;/span&gt; 0 &lt;span class="nt"&gt;--comparison-operator&lt;/span&gt; GreaterThanThreshold  &lt;span class="nt"&gt;--dimensions&lt;/span&gt; &lt;span class="s2"&gt;"Name=InstanceId,Value=i-123456789"&lt;/span&gt; &lt;span class="nt"&gt;--evaluation-periods&lt;/span&gt; 3 &lt;span class="nt"&gt;--alarm-actions&lt;/span&gt; arn:aws:sns:ap-southeast-1:987654321:System-Alerts &lt;span class="nt"&gt;--unit&lt;/span&gt; Count
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Route53
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List Domains
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws route53 list-hosted-zones | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.HostedZones[]|.Id+" "+.Name'&lt;/span&gt;
/hostedzone/ZEB1PAH4U mysite.com.
/hostedzone/ZQUOHGH3G yoursite.com.
/hostedzone/ZEADEA0CO staywith.us.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List Records for a Domain (Zone)
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws route53 list-resource-record-sets &lt;span class="nt"&gt;--hosted-zone-id&lt;/span&gt; /hostedzone/ZEB1PAH4U | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.ResourceRecordSets[]| if (.AliasTarget!=null) then .Type+" "+.Name+" "+.AliasTarget.DNSName else .Type+" "+.Name+" "+.ResourceRecords[].Value end'&lt;/span&gt;
A      mysite.com.              dualstack.mysite-lb-967522168.ap-southeast-1.elb.amazonaws.com.
A      mysite.com.              11.22.33.44
TXT    _amazonses.mysite.com.   6c6d761371f0480bbe60de0df275b550
A      test.mysite.com.         55.66.77.88
CNAME  www.mysite.com.          mysite.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  SNS
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List of SNS Topics
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws sns list-topics | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Topics[] | .TopicArn'&lt;/span&gt;
arn:aws:sns:ap-southeast-1:987654321:backend-api-monitoring
arn:aws:sns:ap-southeast-1:987654321:dynamodb-count-check
arn:aws:sns:ap-southeast-1:987654321:partner-integration-check
arn:aws:sns:ap-southeast-1:987654321:autoscale-notifications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of SNS Topic and related Subscriptions
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws sns list-subscriptions | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Subscriptions[] | .TopicArn+" "+.Protocol+" "+.Endpoint'&lt;/span&gt;
arn:aws:sns:ap-southeast-1:autoscale-notifications    lambda  arn:aws:lambda:function:autoscale-function
arn:aws:sns:ap-southeast-1:backend-api-monitoring     email   alert@mdminhazulhaque.io
arn:aws:sns:ap-southeast-1:dynamodb-count-check       email   alert@mdminhazulhaque.io
arn:aws:sns:ap-southeast-1:partner-integration-check  lambda  arn:aws:lambda:function:partner-function
arn:aws:sns:ap-southeast-1:autoscale-notifications    lambda  arn:aws:lambda:function:autoscale-function
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Publish to SNS Topic
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws sns publish &lt;span class="nt"&gt;--topic-arn&lt;/span&gt; arn:aws:sns:ap-southeast-1:987654321:backend-api-monitoring &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--message&lt;/span&gt; &lt;span class="s2"&gt;"Panic!!!"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--subject&lt;/span&gt; &lt;span class="s2"&gt;"The API is down!!!"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  DynamoDB
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List of DynamoDB Tables
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws dynamodb list-tables | jq &lt;span class="nt"&gt;-r&lt;/span&gt; .TableNames[]
userdata_hk
userdata_vn
userdata_sg
providers
events
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Get All Items from a Table
&lt;/h4&gt;

&lt;p&gt;❗ This command will stream ALL items untill SIGINT is sent&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws dynamodb scan &lt;span class="nt"&gt;--table-name&lt;/span&gt; events 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Get Item Count from a Table
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws dynamodb scan &lt;span class="nt"&gt;--table-name&lt;/span&gt; events &lt;span class="nt"&gt;--select&lt;/span&gt; COUNT | jq .ScannedCount
726119
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Get Item using Key
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws dynamodb get-item &lt;span class="nt"&gt;--table-name&lt;/span&gt; events &lt;span class="nt"&gt;--key&lt;/span&gt; &lt;span class="s1"&gt;'{"email": {"S": "admin@mdminhazulhaque.io"}}'&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;"Item"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="s2"&gt;"email"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="s2"&gt;"S"&lt;/span&gt;: &lt;span class="s2"&gt;"admin@mdminhazulhaque.io"&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;,
        &lt;span class="s2"&gt;"created_at"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="s2"&gt;"N"&lt;/span&gt;: &lt;span class="s2"&gt;"1554780667296"&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;,
        &lt;span class="s2"&gt;"event_type"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="s2"&gt;"S"&lt;/span&gt;: &lt;span class="s2"&gt;"DISPATCHED"&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Get Specific Fields from an Item
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws dynamodb get-item &lt;span class="nt"&gt;--table-name&lt;/span&gt; events &lt;span class="nt"&gt;--key&lt;/span&gt; &lt;span class="s1"&gt;'{"email": {"S": "admin@mdminhazulhaque.io"}}'&lt;/span&gt; &lt;span class="nt"&gt;--attributes-to-get&lt;/span&gt; event_type
&lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;"Item"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="s2"&gt;"event_type"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="s2"&gt;"S"&lt;/span&gt;: &lt;span class="s2"&gt;"DISPATCHED"&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Delete Item using Key
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws dynamodb delete-item &lt;span class="nt"&gt;--table-name&lt;/span&gt; events &lt;span class="nt"&gt;--key&lt;/span&gt; &lt;span class="s1"&gt;'{"email": {"S": "admin@mdminhazulhaque.io"}}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  SQS
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List Queues
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws sqs list-queues | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.QueueUrls[]'&lt;/span&gt;
https://ap-southeast-1.queue.amazonaws.com/987654321/public-events.fifo
https://ap-southeast-1.queue.amazonaws.com/987654321/user-signup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Create Queue
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws sqs create-queue &lt;span class="nt"&gt;--queue-name&lt;/span&gt; public-events.fifo | jq &lt;span class="nt"&gt;-r&lt;/span&gt; .QueueUrl
https://ap-southeast-1.queue.amazonaws.com/987654321/public-events.fifo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Count Messages in Queue
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws sqs get-queue-attributes &lt;span class="nt"&gt;--queue-url&lt;/span&gt; https://ap-southeast-1.queue.amazonaws.com/987654321/public-events.fifo | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Attributes | .QueueArn + " " + .ApproximateNumberOfMessages'&lt;/span&gt;
arn:aws:sqs:ap-southeast-1:987654321:events.fifo 42
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Send Message
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws sqs send-message &lt;span class="nt"&gt;--queue-url&lt;/span&gt; https://ap-southeast-1.queue.amazonaws.com/987654321/public-events.fifo &lt;span class="nt"&gt;--message-body&lt;/span&gt; Hello
&lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;"MD5OfMessageBody"&lt;/span&gt;: &lt;span class="s2"&gt;"37b51d194a7513e45b56f6524f2d51f2"&lt;/span&gt;,
    &lt;span class="s2"&gt;"MessageId"&lt;/span&gt;: &lt;span class="s2"&gt;"4226398e-bab0-4bee-bf5a-8e7ae18c855a"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Receive Message
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws sqs receive-message &lt;span class="nt"&gt;--queue-url&lt;/span&gt; https://ap-southeast-1.queue.amazonaws.com/987654321/public-events.fifo | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Messages[] | .Body'&lt;/span&gt;
Hello
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Delete Message
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws sqs delete-message &lt;span class="nt"&gt;--queue-url&lt;/span&gt; https://ap-southeast-1.queue.amazonaws.com/987654321/public-events.fifo &lt;span class="nt"&gt;--receipt-handle&lt;/span&gt; &lt;span class="s2"&gt;"AQEBpqKLxNb8rIOn9ykSeCkKebNzn0BrEJ3Cg1RS6MwID2t1oYHCnMP06GnuVZGzt7kpWXZ5ieLQ=="&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Purge Queue
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws sqs purge-queue &lt;span class="nt"&gt;--queue-url&lt;/span&gt; https://ap-southeast-1.queue.amazonaws.com/987654321/public-events.fifo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Delete Queue
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws sqs delete-queue &lt;span class="nt"&gt;--queue-url&lt;/span&gt; https://ap-southeast-1.queue.amazonaws.com/987654321/public-events.fifo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  CloudFront
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List of CloudFront Distributions and Origins
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws cloudfront list-distributions | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.DistributionList.Items[] | .DomainName+" "+.Origins.Items[0].DomainName'&lt;/span&gt;
d9d5bb1e3c281f.cloudfront.net  frontend-prod-hk.s3.amazonaws.com
d12b09e8a0a996.cloudfront.net  frontend-prod-vn.s3.amazonaws.com
db64e7e9b3cc22.cloudfront.net  frontend-prod-sg.s3.amazonaws.com
d5e3221cf8b921.cloudfront.net  cdn.mdminhazulhaque.io
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Create Cache Invalidation
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws cloudfront create-invalidation &lt;span class="nt"&gt;--distribution-id&lt;/span&gt; D12B09E8A0A996  &lt;span class="nt"&gt;--path&lt;/span&gt; /blog/&lt;span class="se"&gt;\*&lt;/span&gt; /blog/assets/&lt;span class="se"&gt;\*&lt;/span&gt; | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Invalidation.Id'&lt;/span&gt;
IALJ5AL93ZD79
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Check Cache Invalidation Status
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws cloudfront get-invalidation &lt;span class="nt"&gt;--distribution-id&lt;/span&gt; D12B09E8A0A996 &lt;span class="nt"&gt;--id&lt;/span&gt; IALJ5AL93ZD79 | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Invalidation.Status'&lt;/span&gt;
Completed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Amplify
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List of Amplify Apps and Source Repository
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws amplify list-apps | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.apps[] | .name+" "+.defaultDomain+" "+.repository'&lt;/span&gt;
fe-vn  d9d5bb1e3c281f.amplifyapp.com  https://bitbucket.org/aws/frontend-vn
fe-hk  db64e7e9b3cc22.amplifyapp.com  https://bitbucket.org/aws/frontend-hk
fe-sg  d5e3221cf8b921.amplifyapp.com  https://bitbucket.org/aws/frontend-sg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Cognito
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List of User Pool IDs and Names
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws cognito-idp list-user-pools &lt;span class="nt"&gt;--max-results&lt;/span&gt; 60 | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.UserPools[] | .Id+" "+.Name'&lt;/span&gt;
ap-southeast-1_b6da07d35 prod-users
ap-southeast-1_b6da07d34 dev-users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of Phone and Email of All Users
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws cognito-idp list-users &lt;span class="nt"&gt;--user-pool-id&lt;/span&gt; ap-southeast-1_b6da07d35 | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Users[].Attributes | from_entries | .sub + " " + .phone_number + " " + .email'&lt;/span&gt;
585fb96e-525c-4f9b-9d41-865d2dffde9b +601122334455 admin@mdminhazulhaque.io
71f2778c-8e21-4775-94dc-e363c77d1ae1 +601122334455 foo@bar.com
8fc1882e-e661-49db-88e6-45d370bc352a +601122334455 cli@aws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  IAM User
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List of UserId and UserName
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam list-users | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Users[]|.UserId+" "+.UserName'&lt;/span&gt;
AIDAZBWIOJIQFOLNBXXCVSUQ kaiser
AIDAZCTWYVXYOKSHVWXPYPLR thornton
AIDAZUYALCGFQJENBCZFJTVX maldonado
AIDAZKQAFIGQJWOKKSKRBLGE key
AIDAZXUDGQVQCEWBFGIJOWWY nelson
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Get Single User
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam get-user &lt;span class="nt"&gt;--user-name&lt;/span&gt; kaiser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Add User
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam create-user &lt;span class="nt"&gt;--user-name&lt;/span&gt; audit-temp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Delete User
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam delete-user &lt;span class="nt"&gt;--user-name&lt;/span&gt; audit-temp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List Access Keys for User
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam list-access-keys &lt;span class="nt"&gt;--user-name&lt;/span&gt; audit-temp | jq &lt;span class="nt"&gt;-r&lt;/span&gt; .AccessKeyMetadata[].AccessKeyId
AKIABWIOJIQFOLNBXXCVSUQ
AKIACTWYVXYOKSHVWXPYPLR
AKIAUYALCGFQJENBCZFJTVX
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Delete Access Key for User
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam delete-access-key &lt;span class="nt"&gt;--user-name&lt;/span&gt; audit-temp &lt;span class="nt"&gt;--access-key-id&lt;/span&gt; AKIABWIOJIQFOLNBXXCVSUQ
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Activate/Deactivate Access Key for User
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam update-access-key &lt;span class="nt"&gt;--status&lt;/span&gt; Inactive &lt;span class="nt"&gt;--user-name&lt;/span&gt; audit-temp &lt;span class="nt"&gt;--access-key-id&lt;/span&gt; AKIABWIOJIQFOLNBXXCVSUQ
aws iam update-access-key &lt;span class="nt"&gt;--status&lt;/span&gt; Active   &lt;span class="nt"&gt;--user-name&lt;/span&gt; audit-temp &lt;span class="nt"&gt;--access-key-id&lt;/span&gt; AKIABWIOJIQFOLNBXXCVSUQ
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Generate New Access Key for User
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam create-access-key &lt;span class="nt"&gt;--user-name&lt;/span&gt; audit-temp | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.AccessKey | .AccessKeyId+" "+.SecretAccessKey'&lt;/span&gt;
AKIABWIOJIQFOLNBXXCVSUQ p9ge02ebLX9jobdQKmfikRqCiEw3HBylwHyXq0z
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  IAM Group
&lt;/h2&gt;
&lt;h4&gt;
  
  
  List Groups
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam list-groups | jq &lt;span class="nt"&gt;-r&lt;/span&gt; .Groups[].GroupName
developers
administrators
testers
marketing-ro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Add/Delete Groups
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam create-group &lt;span class="nt"&gt;--group-name&lt;/span&gt; business-ro
aws iam delete-group &lt;span class="nt"&gt;--group-name&lt;/span&gt; business-ro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of Policies and ARNs
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam list-policies               | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Policies[]|.PolicyName+" "+.Arn'&lt;/span&gt;
aws iam list-policies &lt;span class="nt"&gt;--scope&lt;/span&gt; AWS   | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Policies[]|.PolicyName+" "+.Arn'&lt;/span&gt;
aws iam list-policies &lt;span class="nt"&gt;--scope&lt;/span&gt; Local | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.Policies[]|.PolicyName+" "+.Arn'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List of User/Group/Roles for a Policy
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam list-entities-for-policy &lt;span class="nt"&gt;--policy-arn&lt;/span&gt; arn:aws:iam::987654321:policy/Marketing-ReadOnly
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List Policies for a Group
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam list-attached-group-policies &lt;span class="nt"&gt;--group-name&lt;/span&gt; business-ro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Add Policy to a Group
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws iam attach-group-policy --group-name business-ro --policy-arn arn:aws:iam::aws:policy/DynamoDBReadOnlyAccess
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Add User to a Group
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam add-user-to-group &lt;span class="nt"&gt;--group-name&lt;/span&gt; business-ro &lt;span class="nt"&gt;--user-name&lt;/span&gt; marketing-michael
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Remove User from a Group
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam remove-user-from-group &lt;span class="nt"&gt;--group-name&lt;/span&gt; business-ro &lt;span class="nt"&gt;--user-name&lt;/span&gt; marketing-alice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List Users in a Group
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam get-group &lt;span class="nt"&gt;--group-name&lt;/span&gt; business-ro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  List Groups for a User
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam list-groups-for-user &lt;span class="nt"&gt;--user-name&lt;/span&gt; qa-bob
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Attach/Detach Policy to a Group
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws iam detach-group-policy &lt;span class="nt"&gt;--group-name&lt;/span&gt; business-ro &lt;span class="nt"&gt;--policy-arn&lt;/span&gt; arn:aws:iam::aws:policy/DynamoDBFullAccess
aws iam attach-group-policy &lt;span class="nt"&gt;--group-name&lt;/span&gt; business-ro &lt;span class="nt"&gt;--policy-arn&lt;/span&gt; arn:aws:iam::aws:policy/DynamoDBFullAccess
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Feel free to star it, fork it or send pull request!&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/mdminhazulhaque"&gt;
        mdminhazulhaque
      &lt;/a&gt; / &lt;a href="https://github.com/mdminhazulhaque/aws-cli-cheatsheet"&gt;
        aws-cli-cheatsheet
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ☁️ AWS CLI + JQ = Make life easier
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h3&gt;
🔧 Tools Required&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;aws &lt;a href="https://aws.amazon.com/cli/" rel="nofollow"&gt;https://aws.amazon.com/cli/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;jq &lt;a href="https://stedolan.github.io/jq/" rel="nofollow"&gt;https://stedolan.github.io/jq/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;⚠️ Disclaimer: All Resource, Account, ARN, Hostname etc are generated using &lt;a href="https://faker.readthedocs.io/en/master" rel="nofollow"&gt;Faker&lt;/a&gt;. They do not match any real user data.&lt;/p&gt;
&lt;h3&gt;
📢 Table of Contents&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#ec2"&gt;EC2&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#list-instance-id-type-and-name"&gt;List Instance ID, Type and Name&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#list-instances-with-public-ip-address-and-name"&gt;List Instances with Public IP Address and Name&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#list-of-vpcs-and-cidr-ip-block"&gt;List of VPCs and CIDR IP Block&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#list-of-subnets-for-a-vpc"&gt;List of Subnets for a VPC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#list-of-security-groups"&gt;List of Security Groups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#print-security-groups-for-an-instance"&gt;Print Security Groups for an Instance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#edit-security-groups-of-an-instance"&gt;Edit Security Groups of an Instance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#print-security-group-rules-as-fromaddress-and-toport"&gt;Print Security Group Rules as FromAddress and ToPort&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#add-rule-to-security-group"&gt;Add Rule to Security Group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#delete-rule-from-security-group"&gt;Delete Rule from Security Group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#edit-rules-of-security-group"&gt;Edit Rules of Security Group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#delete-security-group"&gt;Delete Security Group&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#s3"&gt;S3&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#list-buckets"&gt;List Buckets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#list-files-in-a-bucket"&gt;List Files in a Bucket&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#create-bucket"&gt;Create Bucket&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#delete-bucket"&gt;Delete Bucket&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#download-s3-object-to-local"&gt;Download S3 Object to Local&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#upload-local-file-as-s3-object"&gt;Upload Local File as S3 Object&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#delete-s3-object"&gt;Delete S3 Object&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#download-bucket-to-local"&gt;Download Bucket to Local&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#upload-local-directory-to-bucket"&gt;Upload Local Directory to Bucket&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#share-s3-object-without-public-access"&gt;Share S3 Object without Public Access&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#api-gateway"&gt;API Gateway&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://raw.githubusercontent.com/mdminhazulhaque/aws-cli-cheatsheet/master/#list-of-api-gateway-ids-and-names"&gt;List of API Gateway IDs&lt;/a&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/mdminhazulhaque/aws-cli-cheatsheet"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



</description>
      <category>aws</category>
      <category>jq</category>
      <category>devops</category>
    </item>
    <item>
      <title>Kakitangan CLI for Malaysian Users</title>
      <dc:creator>Md. Minhazul Haque</dc:creator>
      <pubDate>Tue, 20 Aug 2019 06:14:43 +0000</pubDate>
      <link>https://forem.com/mdminhazulhaque/kakitangan-cli-for-malaysian-users-4ck4</link>
      <guid>https://forem.com/mdminhazulhaque/kakitangan-cli-for-malaysian-users-4ck4</guid>
      <description>&lt;p&gt;Hello everyone, it's Minhaz. This is my first post in dev.to.&lt;/p&gt;

&lt;p&gt;For the last 2 months, I have been working with a command line version of &lt;a href="https://www.kakitangan.com/platform.html"&gt;Kakitangan&lt;/a&gt; is an online HR Software for Malaysian businesses that helps handle payroll, claims, benefits, leave and more.&lt;/p&gt;

&lt;p&gt;The project can be found at &lt;a href="https://github.com/mdminhazulhaque/kakitangan-cli"&gt;mdminhazulhaque/kakitangan-cli&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Why CLI Version?
&lt;/h1&gt;

&lt;p&gt;You can ask me why I made this CLI version although they have a nice web and mobile version. Well, people like me prefer CLI than GUI. Also, I wanted to learn how Python module works. So I decided to turn this into a pet project.&lt;/p&gt;

&lt;h1&gt;
  
  
  How To Use It?
&lt;/h1&gt;

&lt;p&gt;I am currently working to distribute this via &lt;code&gt;setuptools&lt;/code&gt;. Before that, you can download the repo and execute the &lt;code&gt;kakitangan.py&lt;/code&gt; as the main file. The default commands are given below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kakitangan.py --help
Usage: kakitangan.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  aboutme      Shows personal information as Kakitangan user
  colleagues   Shows colleagues' leaves
  holidays     Shows holidays
  loadleaves   Fetches all calendar information from Kakitangan server
  login        Login and save authorization token in disk
  logout       Logs out by clearing authorization token from disk
  myleaves     Shows user's leaves
  myleavestat  The user's leave statistics
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First, you have to log in, right? You have to pass the username/email via &lt;code&gt;-u&lt;/code&gt; option. The password will be prompted and will be invisible as you type it. The password can also be passed via &lt;code&gt;-p&lt;/code&gt; option but I tell you not to do so. Your password will be stored in &lt;code&gt;.bash_history&lt;/code&gt; which would be a serious security issue.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kakitangan.py login -u john.doe@dream.job
Password: **********
Login success

$ kakitangan.py login -u john.doe@dream.job -p 1234567890
Login success
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your password is correct and you have an internet connection, you are supposed to see the &lt;code&gt;Login success&lt;/code&gt; message. Use the &lt;code&gt;aboutme&lt;/code&gt; option to see your basic info.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kakitangan.py aboutme
---------------------  -------------------------------
Email                  john.doe@dream.job
Official Full Name     John Doe
Nationality            Bangladesh
Highest Qualification  Bachelors Degree
SOCSO Account          1234567890
Bank Account           1234567890
Bank Account Type      saving
Bank Account Name      AABBCCDD
Income Tax Account     1234567890
Salary                 1234567890
Preferred Name         John
Sex                    Male
Marital Status         married
Active                 True
Birth Date             1994-01-23
Phone                  1234567890
NRIC Number            1234567890
Passport Number        BB12345678
Employee ID            1000
Joined                 1970-01-01
Manager                boss@dream.job
Position               DevOps
Department             Tech
Location               Kuala Lumpur
---------------------  -------------------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's enough for you I guess. Let's move to the leave calendar which is the best feature of Kakitangan. Before executing any calendar related command, you have to download the full calendar from Kakitangan server. &lt;code&gt;loadleaves&lt;/code&gt; option will do it for you.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kakitangan.py loadleaves
Updated leave database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After doing so, you will find 3 new JSON files in &lt;code&gt;~/.config/kakitangan-cli&lt;/code&gt; named &lt;code&gt;load_calendar.json&lt;/code&gt;, &lt;code&gt;load_colleagues.json&lt;/code&gt; and &lt;code&gt;load_holiday_event.json&lt;/code&gt;. This 3 calendar holds data for yourself, your colleagues, and holidays respectively.&lt;/p&gt;

&lt;p&gt;Now you are ready to get your colleagues' leave summary. The &lt;code&gt;colleagues&lt;/code&gt; command takes several parameters.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Usage: kakitangan.py colleagues [OPTIONS]

  Shows colleagues' leaves

Options:
  -a, --all          Show past leaves also
  -t, --today        Show leaves only on today
  -u, --untill TEXT  Show leaves upto date
  -s, --since TEXT   Show leaves from date
  -d, --date TEXT    Show leaves on specific date
  --help             Show this message and exit.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By default, it will show leaves AFTER the current date. You can see all leaves with &lt;code&gt;-a&lt;/code&gt; parameter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kakitangan.py colleagues
---------------  --------------
2019-06-03  Abdul Doe (Annual)
            Alice Begum (Marriage Leave)
2019-06-04  Abdul Doe (CarryForward)
            Charlie Ahmed (Annual)
            Foo Bin Bar (Annual)
            Alice Begum (Sick)
2019-06-10  Foo Bin Bar (Sick)
            Bob Mia (Birthday Leave)
2019-06-11  Bob Mia (Sick)
2019-06-12  Bob Mia (Sick)
2019-06-13  Bob Mia (Annual)
2019-06-14  Clara Khatun (Annual)
            Bob Mia (Annual)
2019-06-15  Clara Khatun (CarryForward)
2019-06-16  Clara Khatun (CarryForward)
2019-06-17  Clara Khatun (Annual)
            Bob Mia (Replacement)
2019-06-18  Bob Mia (Annual)
---------------  --------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is possible to see who are on leave on a specific date. Just pass the date in &lt;code&gt;YYYY-MM-DD&lt;/code&gt; format with &lt;code&gt;-d&lt;/code&gt; parameter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kakitangan.py colleagues -d 2019-06-10
---------------  -----------
2019-06-10  Foo Bin Bar (Sick)
            Bob Mia (Birthday Leave)
---------------  -----------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You might want to filter colleagues within specific date range. Just use the &lt;code&gt;-s&lt;/code&gt; (since) and &lt;code&gt;-u&lt;/code&gt; (until) parameter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kakitangan.py colleagues -s 2019-06-15 -u 2019-06-17
---------------  ------------
2019-06-15  Clara Khatun (Annual)
2019-06-16  Clara Khatun (Annual)
2019-06-17  Clara Khatun (Annual)
            Bob Mia (Annual)
---------------  ------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similar to the leave calendar, you can check your holidays too. Use the &lt;code&gt;holidays&lt;/code&gt; option for this purpose.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kakitangan.py holidays 
---------------  ----------------------------
2019-06-05  Hari Raya Aidilfitri
2019-06-06  Hari Raya Aidilfitri Holiday
2019-08-11  Hari Raya Haji
2019-08-12  Hari Raya Haji
2019-08-31  Merdeka Day
2019-09-01  Awal Muharram
2019-09-02  Awal Muharram
2019-09-09  Agong's Birthday
2019-09-16  Malaysia Day
2019-10-27  Deepavali
2019-10-28  Deepavali
2019-11-09  Prophet Muhammad's birthday
2019-12-25  Christmas
---------------  ----------------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As I said earlier, filtering hides old leaves/events. So you have to pass &lt;code&gt;-a&lt;/code&gt; to see full holiday list.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kakitangan.py holidays -a
---------------  ---------------------------------------------------------
2015-01-01  New Year
2015-01-02  New Year
2015-01-03  New Year
...
2017-06-25  Hari Raya Aidilfitri
2017-06-26  Hari Raya Aidilfitri
2017-06-27  Hari Raya Aidilfitri
...
2019-10-27  Deepavali
2019-10-28  Deepavali
2019-11-09  Prophet Muhammad's birthday
2019-12-25  Christmas
---------------  ---------------------------------------------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Okay, you want to check your own leaves, right? You can! Use &lt;code&gt;myleaves&lt;/code&gt; with &lt;code&gt;-a&lt;/code&gt; parameter if you want to see the old leaves too.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kakitangan.py myleaves -a
---------------  -----------
2019-02-28  Sick
2019-03-12  Sick
2019-03-21  Annual
2019-05-17  Annual (PM)
2019-05-21  Annual
2019-05-22  Annual
2019-05-23  Annual
2019-05-24  Annual
---------------  -----------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you need to know your leave statistics, I have added a command named &lt;code&gt;myleavestat&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kakitangan.py myleavestat
----------------------------  -----------------
Compassionate            10/10
Annual                   25/50 (25 used)
Sick                     15/30 (15 used)
Paternity                10/10
Hospitalization          30/60 (30 used)
Replacement              1/1
Birthday Leave           1/1
Annual Leave Additional  5/5
CarryForward             5/5
Unpaid Leave             10/10
Bonus Leave              1/1
Exam/Study Leave         5/5
----------------------------  -----------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Going back home? Don't want anyone to sneak into your Kakitangan account? You can log out anytime. It's easy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kakitangan.py logout
Confirm logout? [Y/N]: Y
Logged out
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Please review, post issues, star or commit changes. Thanks.&lt;/p&gt;

</description>
      <category>python</category>
      <category>kakitangan</category>
      <category>github</category>
    </item>
  </channel>
</rss>
