<?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>DEV Community: RunsOn</title>
    <description>The latest articles on DEV Community by RunsOn (@runs-on).</description>
    <link>https://dev.to/runs-on</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%2Forganization%2Fprofile_image%2F8242%2Ff77ecf57-890b-4058-b3ec-6a17b01d647f.png</url>
      <title>DEV Community: RunsOn</title>
      <link>https://dev.to/runs-on</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/runs-on"/>
    <language>en</language>
    <item>
      <title>How to verify that VPC traffic to S3 is going through your S3 gateway?</title>
      <dc:creator>Cyril Rohr</dc:creator>
      <pubDate>Fri, 02 Feb 2024 09:42:02 +0000</pubDate>
      <link>https://dev.to/runs-on/how-to-verify-that-vpc-traffic-to-s3-is-going-through-your-s3-gateway-4ab6</link>
      <guid>https://dev.to/runs-on/how-to-verify-that-vpc-traffic-to-s3-is-going-through-your-s3-gateway-4ab6</guid>
      <description>&lt;p&gt;Gateway endpoints for Amazon S3 are a must-have whenever your EC2 instances send and receive traffic from S3, because they allow the traffic to stay within the AWS network, hence better security, bandwidth, throughput, and costs. They can easily be created, and added to your VPC route tables.&lt;/p&gt;

&lt;p&gt;But how do you verify that traffic is indeed going through the S3 gateway, and not crossing the outer internet?&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;traceroute&lt;/code&gt;, you can probe the routes and see whether you are directly hitting the S3 servers (i.e. no intermediate gateway). In this example, the instance is running from a VPC located in &lt;code&gt;us-east-1&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;&lt;span class="nv"&gt;$ &lt;/span&gt;traceroute &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="nt"&gt;-T&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 443 s3.us-east-1.amazonaws.com
traceroute to s3.us-east-1.amazonaws.com &lt;span class="o"&gt;(&lt;/span&gt;52.216.215.72&lt;span class="o"&gt;)&lt;/span&gt;, 30 hops max, 60 byte packets
 1  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
 2  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
 3  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
 4  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
 5  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
 6  52.216.215.72  0.890 ms  0.916 ms  0.892 ms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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;traceroute &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="nt"&gt;-T&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 443 s3.amazonaws.com
traceroute to s3.amazonaws.com &lt;span class="o"&gt;(&lt;/span&gt;52.217.139.232&lt;span class="o"&gt;)&lt;/span&gt;, 30 hops max, 60 byte packets
 1  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
 2  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
 3  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
 4  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
 5  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
 6  52.217.139.232  0.268 ms  0.275 ms  0.252 ms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both outputs produce the expected result, i.e. no intermediary gateway. This is what would happen if you were accessing a bucket located in the &lt;code&gt;us-east-1&lt;/code&gt; region.&lt;/p&gt;

&lt;p&gt;Let's see what happens if we try to access an S3 endpoint located in another zone:&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;traceroute &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="nt"&gt;-T&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 443 s3.eu-west-1.amazonaws.com
traceroute to s3.eu-west-1.amazonaws.com &lt;span class="o"&gt;(&lt;/span&gt;52.218.25.211&lt;span class="o"&gt;)&lt;/span&gt;, 30 hops max, 60 byte packets
 1  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
 2  240.4.88.37  0.275 ms 240.0.52.64  0.265 ms 240.4.88.39  0.215 ms
 3  240.4.88.49  0.205 ms 240.4.88.53  0.231 ms 240.4.88.51  0.206 ms
 4  100.100.8.118  1.369 ms 100.100.6.96  0.648 ms 240.0.52.57  0.233 ms
 5  240.0.228.5  0.326 ms &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
 6  240.0.32.16  0.371 ms 240.0.48.30  0.362 ms &lt;span class="k"&gt;*&lt;/span&gt;
 7  &lt;span class="k"&gt;*&lt;/span&gt; 240.0.228.31  0.251 ms &lt;span class="k"&gt;*&lt;/span&gt;
 8  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
 9  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; 240.0.32.27  0.392 ms
10  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
11  &lt;span class="k"&gt;*&lt;/span&gt; 242.0.154.49  1.321 ms &lt;span class="k"&gt;*&lt;/span&gt;
12  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; 52.93.28.131  1.491 ms
13  &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; 100.100.6.108  1.286 ms
14  100.92.212.7  67.909 ms 52.218.25.211  67.356 ms  67.929 ms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see, the route is completely different, and as expected does not hit straight to the S3 endpoint.&lt;/p&gt;

&lt;p&gt;TL;DR: make sure your route tables are correct, and only point to S3 buckets located in the same region.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html"&gt;Gateway endpoints for Amazon S3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>s3</category>
      <category>aws</category>
      <category>vpc</category>
    </item>
    <item>
      <title>Introducing RunsOn: 10x cheaper GitHub Action runners</title>
      <dc:creator>Cyril Rohr</dc:creator>
      <pubDate>Tue, 23 Jan 2024 12:37:39 +0000</pubDate>
      <link>https://dev.to/runs-on/introducing-runson-10x-cheaper-github-action-runners-51dl</link>
      <guid>https://dev.to/runs-on/introducing-runson-10x-cheaper-github-action-runners-51dl</guid>
      <description>&lt;p&gt;Let's face it, sometimes you need faster execution of your GitHub Action workflows.&lt;/p&gt;

&lt;p&gt;I've worked for a few companies where the full test suite runtime was greater than 20min, and this is not good for developer feedback.&lt;/p&gt;

&lt;p&gt;The usual fix here is to deploy faster self-hosted runners, but then this means you must ensure that those runners stay online, regularly patched, and sufficiently used to justify their cost.&lt;/p&gt;

&lt;p&gt;Wouldn't it be nice if you could spawn self-hosted runners on demand, with a large choice of CPU/RAM configurations, and for cheap? This is what &lt;a href="https://runs-on.com"&gt;RunsOn&lt;/a&gt; provides, with up to 10x cheaper runners, and the widest choice of runner types on the market.&lt;/p&gt;

&lt;p&gt;RunsOn can be installed in your own AWS account, which means there is no middleman between your workflows and your runner. It also supports both x64 and arm64 architecture, and is a one-line change from your current workflow files.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- runs-on: ubuntu-latest
&lt;/span&gt;&lt;span class="gi"&gt;+ runs-on: runs-on,runner=16cpu-linux,image=ubuntu22-full-x64
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Whenever a new workflow starts, a runner is automatically provisioned, and will be terminated as soon as the workflow ends. You only pay the per-minute cost of the runner, and you can easily track your costs in your AWS Cost Explorer page.&lt;/p&gt;

&lt;p&gt;Some quick pricing comparison:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;runner&lt;/th&gt;
&lt;th&gt;cpu&lt;/th&gt;
&lt;th&gt;$/min (spot)&lt;/th&gt;
&lt;th&gt;$/min (github)&lt;/th&gt;
&lt;th&gt;GitHub vs RunsOn&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;1cpu-linux&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0.0008&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;2cpu-linux&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0.0011&lt;/td&gt;
&lt;td&gt;0.008&lt;/td&gt;
&lt;td&gt;7x more expensive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;4cpu-linux&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0.0022&lt;/td&gt;
&lt;td&gt;0.016&lt;/td&gt;
&lt;td&gt;7x more expensive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;8cpu-linux&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;0.0035&lt;/td&gt;
&lt;td&gt;0.032&lt;/td&gt;
&lt;td&gt;9x more expensive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;16cpu-linux&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;0.0068&lt;/td&gt;
&lt;td&gt;0.064&lt;/td&gt;
&lt;td&gt;9x more expensive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;32cpu-linux&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;0.0132&lt;/td&gt;
&lt;td&gt;0.128&lt;/td&gt;
&lt;td&gt;10x more expensive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;48cpu-linux&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;td&gt;0.0170&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;64cpu-linux&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;0.0196&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The cost is fully open, can be installed in one click thanks to a cloudformation template, and a license only costs $250 once. Find out more at &lt;a href="https://runs-on.com"&gt;https://runs-on.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>githubactions</category>
      <category>cicd</category>
      <category>github</category>
    </item>
  </channel>
</rss>
