<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Tools on zoph.me</title>
    <link>/tags/tools/</link>
    <description>Recent content in Tools on zoph.me</description>
    <image>
      <title>zoph.me</title>
      <url>https://zoph.me/posts/resources/images/code-social.png</url>
      <link>https://zoph.me/posts/resources/images/code-social.png</link>
    </image>
    <generator>Hugo -- 0.148.2</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 04 Apr 2026 07:37:00 +0200</lastBuildDate>
    <atom:link href="/tags/tools/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Speeding Up IAMTrail: One Boto3 Process Instead of 1,500 CLI Invocations</title>
      <link>/posts/2026-04-04-iamtrail-optim/</link>
      <pubDate>Sat, 04 Apr 2026 07:37:00 +0200</pubDate>
      <guid>/posts/2026-04-04-iamtrail-optim/</guid>
      <description>&lt;h2 id=&#34;the-46-minute-problem&#34;&gt;The 46-Minute Problem&lt;/h2&gt;
&lt;p&gt;The IAMTrail detection engine fetches ~1,500 AWS managed IAM policies every run. The original approach was pure bash:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34; id=&#34;hl-0-1&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#hl-0-1&#34;&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;hl-0-2&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#hl-0-2&#34;&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;hl-0-3&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#hl-0-3&#34;&gt;3&lt;/a&gt;
&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;hl-0-4&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#hl-0-4&#34;&gt;4&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws iam list-policies --output json &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    jq -cr &lt;span class=&#34;s1&#34;&gt;&amp;#39;...&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    xargs -P &lt;span class=&#34;m&#34;&gt;16&lt;/span&gt; -n3 sh -c &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;      &lt;span class=&#34;s1&#34;&gt;&amp;#39;aws iam get-policy-version --policy-arn $1 --version-id $2 | jq --indent 4 . &amp;gt; &amp;#34;policies/$3&amp;#34;&amp;#39;&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Looks fine, right? Except each iteration spawns a full AWS CLI process. That means a fresh Python runtime, boto3 import, credential resolution, one single HTTP call, then exit. Times 1,500.&lt;/p&gt;</description>
    </item>
    <item>
      <title>IAMTrail.com: The AWS Managed Policy Archive (Evolved from MAMIP)</title>
      <link>/posts/2025-10-23-mamip-compagnion-website/</link>
      <pubDate>Thu, 23 Oct 2025 13:37:00 +0200</pubDate>
      <guid>/posts/2025-10-23-mamip-compagnion-website/</guid>
      <description>&lt;h2 id=&#34;-the-origins&#34;&gt;📜 The Origins&lt;/h2&gt;
&lt;p&gt;Back in 2019, &lt;a href=&#34;https://twitter.com/0xdabbad00&#34;&gt;Scott Piper&lt;/a&gt; started a GitHub repository to track changes to AWS Managed Policies. It was a simple setup, manually triggered but it worked well and was incredibly useful. Using &lt;code&gt;git diff&lt;/code&gt; or the Github.com UI, Scott and the community could easily see how policies evolved over time.&lt;/p&gt;
&lt;p&gt;At that time, AWS didn&amp;rsquo;t publicly share the changes made to managed policies by the various &amp;ldquo;two-pizza&amp;rdquo; product teams inside AWS.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
