<?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: Balu Rathinam</title>
    <description>The latest articles on DEV Community by Balu Rathinam (@brathinam).</description>
    <link>https://dev.to/brathinam</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%2F3783503%2F882e64a5-ccb2-4f31-a3fb-8f297197e8aa.png</url>
      <title>DEV Community: Balu Rathinam</title>
      <link>https://dev.to/brathinam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/brathinam"/>
    <language>en</language>
    <item>
      <title>Why Migrating SSIS from EC2 to Amazon RDS Is Harder Than It Looks</title>
      <dc:creator>Balu Rathinam</dc:creator>
      <pubDate>Sat, 21 Feb 2026 12:15:00 +0000</pubDate>
      <link>https://dev.to/brathinam/why-migrating-ssis-from-ec2-to-amazon-rds-is-harder-than-it-looks-54d9</link>
      <guid>https://dev.to/brathinam/why-migrating-ssis-from-ec2-to-amazon-rds-is-harder-than-it-looks-54d9</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/towards-data-engineering/why-migrating-ssis-from-ec2-to-amazon-rds-is-harder-than-it-looks-525ea6593c87" rel="noopener noreferrer"&gt;Towards Data Engineering (Medium)&lt;/a&gt;. Canonical link points to Medium.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;A “lift-and-shift” SSIS migration from EC2-hosted SQL Server to Amazon RDS sounds simple on paper: move the database, keep the workflows, and let the managed service handle the rest.&lt;/p&gt;

&lt;p&gt;In practice, the migration changes the ground rules for how SSIS packages execute — especially when your ETL depends on &lt;strong&gt;script components&lt;/strong&gt;, &lt;strong&gt;dynamic file handling&lt;/strong&gt;, and &lt;strong&gt;file-system paths&lt;/strong&gt; that were previously local to the database server.&lt;/p&gt;

&lt;p&gt;This post is a practical case study of what actually made the migration harder than expected, and the design choices that allowed the workflows to keep running with minimal disruption.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Changed (Even Though the ETL “Didn’t”)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1) SSIS feature gaps force an execution-model decision
&lt;/h3&gt;

&lt;p&gt;Some of the SSIS packages relied on &lt;strong&gt;Script Components&lt;/strong&gt; for dynamic column mapping and file-driven logic. Standard Amazon RDS for SQL Server supports SSIS, but these kinds of SSIS script-dependent patterns introduce constraints that expand the scope of changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two approaches emerged:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keep SSIS on EC2, move databases to RDS&lt;/strong&gt;
This can look attractive for minimizing package changes, but it introduces cross-server complexity when packages are invoked from stored procedures and need parameter passing and identity context handled correctly (often pushing you toward linked-server style patterns and execution-context workarounds).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Move to Amazon RDS Custom for SQL Server&lt;/strong&gt;
RDS Custom became the cleaner path because it allowed SSIS installation and restored the needed flexibility for script components and broader integration patterns.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2) File-system assumptions break when storage becomes S3
&lt;/h3&gt;

&lt;p&gt;After addressing SSIS component limitations, the next major friction point was file handling.&lt;/p&gt;

&lt;p&gt;In the EC2 world, packages commonly read/write using &lt;strong&gt;UNC paths&lt;/strong&gt; and server-local folder structures. In the target architecture, &lt;strong&gt;Amazon S3&lt;/strong&gt; becomes the durable storage layer — but SSIS packages aren’t automatically “S3-native,” and simply switching paths can create a large refactor.&lt;/p&gt;

&lt;p&gt;A lift-and-shift-friendly compromise is to map S3-backed storage into the host so packages can keep using familiar folder conventions. One design iteration used &lt;strong&gt;AWS Storage Gateway&lt;/strong&gt; to replicate the original folder structure and reduce changes across packages and job steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  3) The real “gotcha”: execution identity changes by trigger pattern
&lt;/h3&gt;

&lt;p&gt;Not all execution patterns behave the same after migration.&lt;/p&gt;

&lt;p&gt;Packages triggered by &lt;strong&gt;SQL Server Agent jobs&lt;/strong&gt; can run under a controlled identity (proxy/credential), and those patterns worked reliably.&lt;/p&gt;

&lt;p&gt;But when a &lt;strong&gt;web application calls a stored procedure that invokes an SSIS package&lt;/strong&gt; (with variables passed in), the execution can run under the application’s context — and that’s where file-access failures surfaced (e.g., folder not accessible / folder not found) when interacting with the S3-mounted structure.&lt;/p&gt;

&lt;p&gt;The fix wasn’t just “permissions” — it required adjusting the execution model so SSIS ran under the right controlled identity while still supporting on-demand, parameterized execution.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where this goes next
&lt;/h2&gt;

&lt;p&gt;The rest of the article walks through the design iterations, what failed in practice, and the final execution approach that preserved the workflow while aligning with managed-service constraints — including operational improvements like better observability and control around tempdb behavior and resource usage.&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>sqlserver</category>
      <category>aws</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
