<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AWS Archives | Cloudar</title>
	<atom:link href="https://cloudar.be/tag/aws/feed/" rel="self" type="application/rss+xml" />
	<link>https://cloudar.be/tag/aws/</link>
	<description>100% Focus On AWS // 100% Customer Obsession</description>
	<lastBuildDate>Tue, 08 Sep 2026 08:46:36 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>
	<item>
		<title>Broadcom just removed the VDDK. Here is how you still get from VMware to AWS.</title>
		<link>https://cloudar.be/awsblog/broadcom-just-removed-the-vddk-here-is-how-you-still-get-from-vmware-to-aws/</link>
		
		<dc:creator><![CDATA[Tom De Blende]]></dc:creator>
		<pubDate>Tue, 08 Sep 2026 08:18:39 +0000</pubDate>
				<category><![CDATA[AWS Blog]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Broadcom]]></category>
		<category><![CDATA[MGN]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[VMware]]></category>
		<guid isPermaLink="false">https://cloudar.be/?p=22825</guid>

					<description><![CDATA[<p>Broadcom pulled the public VDDK downloads on 25 August 2026, which breaks AWS MGN agentless replication for any new install. Here is what still works, with the concrete AWS paths off vSphere.</p>
<p>The post <a href="https://cloudar.be/awsblog/broadcom-just-removed-the-vddk-here-is-how-you-still-get-from-vmware-to-aws/">Broadcom just removed the VDDK. Here is how you still get from VMware to AWS.</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>On 25 August 2026, the public download pages for the VMware Virtual Disk Development Kit disappeared. Every URL on developer.broadcom.com that used to serve a VDDK tarball now returns a 404 or a JSON error, tested from multiple regions. There was no deprecation notice, no transition period, no archive and no replacement. Customers who opened support cases have been told, in writing, that the VDDK is no longer available for use or download, and that Broadcom maintains its SDKs for authorised technology alliance partners building backup and recovery software.</p>
<p>If you have never heard of the VDDK, that is normal. It is a C library, not a product. It is also the component that lets software outside the hypervisor open a VMDK and read blocks out of it. Combined with Changed Block Tracking, it is what makes agentless migration and agentless backup possible at all. Take it away and a large part of the tooling that reads VMware disks from the outside stops being installable.</p>
<p>Plenty of platforms are affected. This post is only about one of them: AWS. If you are running vSphere and you have been telling yourself that the migration project can wait another budget cycle, this is the part where the calculation changes.</p>
<h2>What actually broke on the AWS side</h2>
<p>AWS Transform MGN, still widely known as AWS Application Migration Service, offers two replication methods for VMware sources.</p>
<p><strong>Agentless snapshot-based replication</strong> runs through the MGN vCenter Client, a software bundle you install on a dedicated Linux VM inside your vSphere environment. It discovers your VMs through vCenter, then for each replication run it takes a VMware snapshot, uses CBT to work out which blocks changed, and reads those blocks with the VDDK before shipping them to AWS.</p>
<p>The VDDK is not bundled with the client. It cannot be, because the licence forbids redistribution. You supply it yourself. The AWS documentation is explicit about the version:</p>
<blockquote><p>You must log in to your Broadcomm account and download VDDK 7.0.3.3 to the VM on which the MGN vCenter Client is installed. VDDK 7.0.3.3 must be used, regardless of the vCenter version used.</p></blockquote>
<p>The installer takes it as a parameter, <code class="" data-line="">--vddk-path</code>, pointing at the tarball on local disk.</p>
<p>That is the whole problem in one line. VDDK 7.0.3.3 is a 7.0 line release. The 7.x downloads were already unreliable before August, and now the entire download tree is gone. As of writing, that documentation page is unchanged and still tells you to go and fetch a file that cannot be fetched. AWS has published nothing about the change: no bulletin, no what&#8217;s-new post, no documentation update. So a customer starting a greenfield agentless deployment today follows the runbook, hits a dead link at step four, and has no official guidance telling them why.</p>
<p><strong>Agent-based replication</strong> installs the AWS Replication Agent inside the guest OS. It reads blocks through its own kernel-level driver, talks directly to a replication server in your staging subnet, and never touches the VDDK, vCenter or VMware snapshots. Nothing about it changed on 25 August.</p>
<p>Two things follow from that, and they matter more than the headlines suggest.</p>
<p>First, the practical damage on AWS is narrower than on platforms whose only migration path was VDDK-based. AWS&#8217;s own FAQ has said for years that agent-based replication is the default recommendation for all use cases, with agentless reserved for the exceptions: security policy that forbids installing agents, or an OS the agent does not support. The supported operating system lists for the two methods are in fact identical, so in practice the exception is almost always the policy one. Broadcom removed AWS&#8217;s fallback, not its main road.</p>
<p>Second, &#8220;narrower&#8221; is not &#8220;none&#8221;. If you are the organisation whose change board does not allow third-party agents in the guest, or you inherited an estate where nobody has working credentials for a few hundred VMs, agentless was the answer and it is now gone for new installs.</p>
<p>One nuance worth stating plainly because we have not seen AWS confirm it: an existing vCenter Client installation already has the VDDK on disk, and the client auto-updates itself independently of the VDDK. Running replications are not expected to break. But rebuild that VM, move to a new AWS account, or add a second vCenter environment, and you are back at the 404. Treat every existing vCenter Client as a single point of failure you can no longer reprovision.</p>
<h2>Four routes to AWS that do not need a download from Broadcom</h2>
<h3>1. Agent-based MGN, deployed at scale with the MGN connector</h3>
<p>The reflex objection to agent-based migration is that somebody has to log into every VM. That was true a few years ago. It is not the current state of the tooling, and this is the single most useful thing to know if the VDDK removal is what pushed you into a decision.</p>
<p>The MGN connector is a Linux VM in your source environment, registered to AWS through a Systems Manager hybrid activation, that pushes the replication agent out to your source servers for you. You give it network reachability to the sources and a set of source credentials in AWS Secrets Manager, and it handles prerequisite validation, installation on both Windows and Linux, and post-install verification. Installation of the connector itself takes a couple of minutes and is a one-time task per source environment. AWS Transform will now generate the IAM roles, the hybrid activation code and the ready-to-run install command for you through its console flow, or hand you a CloudFormation template if you would rather own the IAM yourself.</p>
<p>For the servers the connector cannot reach, the manual install is a single command. On Linux:</p>
<pre><code class="language-bash" data-line="">wget -O ./aws-replication-installer-init \
  https://aws-application-migration-service-eu-west-1.s3.eu-west-1.amazonaws.com/latest/linux/aws-replication-installer-init

chmod +x aws-replication-installer-init

sudo ./aws-replication-installer-init \
  --region eu-west-1 \
  --user-provided-id vm-prod-app-014 \
  --no-replication \
  --no-prompt
</code></pre>
<p>Two flags earn their keep on a large migration. <code class="" data-line="">--user-provided-id</code> sets the identifier MGN uses to recognise the server consistently, which is also what AWS Transform keys on when it maps your inventory into wave plans, so set it at install time rather than trying to reconcile later. <code class="" data-line="">--no-replication</code> installs without starting the data flow, which lets you pre-stage agents across hundreds of servers and then switch on replication wave by wave instead of saturating your uplink and your MGN quotas on day one.</p>
<p>Validate the installer hash before you push it estate-wide. It is published per region alongside the binary.</p>
<p>What you need in place, and what tends to be the actual project work rather than the agent install:</p>
<ul>
<li>Outbound TCP 443 from every source server to the regional MGN endpoint, and TCP 1500 to the replication servers in your staging subnet. PrivateLink over Direct Connect or Site-to-Site VPN if the data must not cross the internet.</li>
<li>A staging area subnet with routing to S3, since the replication server fetches its own components from there. This is the single most common cause of a replication that installs cleanly and then stalls.</li>
<li>Root or administrator on each guest. The Linux installer creates an <code class="" data-line="">aws-replication</code> user and adds it to sudoers, and fails if it cannot.</li>
<li>Kernel headers on the Linux guests matching the running kernel.</li>
</ul>
<p>The compensation for the extra guest-level work is real: continuous block-level replication rather than periodic snapshot shipping, which means a cutover window measured in minutes instead of waiting for a final snapshot to complete, and no VMware snapshots sitting on your production datastores slowing disk performance during the whole migration.</p>
<h3>2. The cached tarball, with a caveat you should not skip</h3>
<p>If someone in your organisation still has <code class="" data-line="">VMware-vix-disklib-7.0.3.3-*.tar.gz</code> on a build host, a backup appliance or an old runbook attachment, it will still work. The installer only wants a path. Checksums for the 7.0 and 8.0 lines are recoverable from cached copies of the portal, so verify what you hold rather than trusting the filename.</p>
<p>The caveat: Broadcom&#8217;s own wording to customers is that the VDDK is no longer available for use or download. Not just download. We are not lawyers and this is not legal advice, but if your plan depends on a cached copy of a proprietary library whose vendor has just told customers it is not available for use, that is a question for your legal team before it becomes a question for your auditor. Ask it now, not the week before cutover.</p>
<h3>3. Offline export through VM Import/Export</h3>
<p>This is the path that needs no VDDK and no agent at all. Export the VM from vSphere as an OVA or a stream-optimised VMDK using vCenter&#8217;s own export function or OVF Tool, upload it to S3, and import it as an AMI:</p>
<pre><code class="language-bash" data-line="">aws ec2 import-image \
  --disk-containers Format=ova,UserBucket=&quot;{S3Bucket=my-import-bucket,S3Key=vms/app014.ova}&quot;
</code></pre>
<p>You need an IAM service role named <code class="" data-line="">vmimport</code> with a trust policy for <code class="" data-line="">vmie.amazonaws.com</code> and permissions on the source bucket and on EC2. Supported input formats are OVA, VMDK, VHD, VHDX and raw.</p>
<p>Be honest with yourself about what this path costs before you make it the plan for more than a handful of servers:</p>
<ul>
<li>No CBT, so every attempt is a full copy. A failed import is a full re-copy.</li>
<li>Staging storage for the exports, on-premises and in S3, sized for your largest VMs.</li>
<li>Real downtime, because you export a powered-off or quiesced VM and there is no delta sync afterwards.</li>
<li>Genuine limitations. VMs using Raw Device Mapping are not supported, only VMDK disk images. Encrypted volumes are not supported. Dual-boot configurations are not supported. Neither is the VMware SEsparse delta-file format, nor arm64. Machines that got where they are through a physical-to-virtual conversion are not supported. There is a defined supported-OS matrix and older or unusual guests fall outside it.</li>
</ul>
<p>VM Import/Export is a good tool for a controlled set of appliances and stragglers. It is not a replacement for a replication-based migration of a few hundred workloads, and anyone who tells you otherwise has not tried it at that scale.</p>
<h3>4. Stop moving the VM</h3>
<p>The uncomfortable observation in a lot of migration assessments is that a meaningful slice of the estate should not be rehosted at all. A file server becomes Amazon FSx or S3 with DataSync doing the copy. A SQL Server or Oracle instance becomes an RDS instance with AWS DMS handling the load and change data capture. An application server that was built by hand in 2016 gets rebuilt from a pipeline, which is faster than debugging why its agent will not install.</p>
<p>None of those paths care about the VDDK, because none of them read the virtual disk. If your agentless plan just died, this is a good moment to re-run the assessment and ask which VMs you were only lifting because lifting looked cheap.</p>
<h2>What to do in the next two weeks</h2>
<ol>
<li><strong>Inventory what you hold.</strong> Search your build hosts, backup appliances and documentation attachments for VDDK tarballs. Checksum them. Treat them as assets with an expiry date, and get the licensing question in front of legal.</li>
<li><strong>Check whether you actually have an existing vCenter Client.</strong> If yes, freeze it. No rebuilds, no account moves, no second environment, until you have a tested alternative.</li>
<li><strong>Test the agent on your hardest 5 percent.</strong> Not your easy Linux fleet. The 2012 R2 box nobody logs into, the appliance with a vendor-locked OS, the VM whose kernel headers are missing. Those are the servers that will decide whether agent-based works for you, and you want to know in September, not in March.</li>
<li><strong>Exercise the OVA path once, deliberately.</strong> Export one real VM, import it, boot it, log in. A fallback you have never run is not a fallback.</li>
<li><strong>Put the date on the wall.</strong> General support for vSphere 8 ends on 11 October 2027, with technical guidance running to 2029. That is your outer bound, and it is closer than it looks once you subtract assessment, network design, wave planning and testing.</li>
</ol>
<h2>The pattern is the point</h2>
<p>Broadcom is reportedly bringing back a refreshed vSphere Standard aimed at smaller estates, discussed in interviews at VMware Explore rather than announced from a stage, with details promised in October. Read alongside the VDDK removal, the two moves are hard to reconcile as a coherent retention strategy. One says come back, the smaller edition is being looked after. The other quietly removes a dependency that the entire third-party exit ecosystem was built on, with no notice and no replacement.</p>
<p>Whatever the intent, the operational conclusion is the same. The technical routes off vSphere are being narrowed, not widened, and they are being narrowed without warning. The VDDK went away on a Tuesday. Nothing says the next dependency will give you more notice.</p>
<p>If you are going to leave, the cost of leaving is lowest while you still have working tooling, a supported hypervisor version, and time to test. That window is not open indefinitely.</p>
<h2>Where Cloudar fits</h2>
<p>We have done this often enough to know which parts of a VMware to AWS migration are the hard parts, and the disk copy is rarely one of them. The hard parts are the dependency mapping nobody documented, the network translation, the wave sequencing, the servers that resist every automated approach, and the operational handover afterwards. We work through those with AWS Transform and MGN where they fit, and around them where they do not.</p>
<p>If the VDDK removal has just invalidated your migration plan, or if it has made you realise you did not have one, <a href="https://cloudar.be/services-solutions/aws-migration-expertise-guidance/">our AWS migration practice</a> is the place to start. We are an AWS Premier Partner and Migration Competency partner based in Belgium, and we would rather assess your estate honestly than sell you a lift-and-shift you will regret.</p>
<p>For the strategic side of the same question, why the timing of your VMware exit matters as much as the mechanics, see <a href="https://cloudar.be/awsblog/leaving-vmware-is-a-question-of-timing/">Leaving VMware is a question of timing</a>.</p>
<p><em>All AWS documentation references were verified on 8 September 2026. AWS had published no guidance on the VDDK removal at that point, and the MGN vCenter Client requirements page still instructed customers to download VDDK 7.0.3.3 from Broadcom.</em></p>
<p>The post <a href="https://cloudar.be/awsblog/broadcom-just-removed-the-vddk-here-is-how-you-still-get-from-vmware-to-aws/">Broadcom just removed the VDDK. Here is how you still get from VMware to AWS.</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Back to on-prem?</title>
		<link>https://cloudar.be/awsblog/back-to-on-prem/</link>
		
		<dc:creator><![CDATA[Tom De Blende]]></dc:creator>
		<pubDate>Sun, 07 Jun 2026 12:14:49 +0000</pubDate>
				<category><![CDATA[AWS Blog]]></category>
		<category><![CDATA[Cost Optimization]]></category>
		<category><![CDATA[FinOps]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[DevOps]]></category>
		<guid isPermaLink="false">https://cloudar.be/?p=22733</guid>

					<description><![CDATA[<p>For years, the playbook looked like this: take your existing workloads and move them to the cloud. Lift &#38; shift. Fast, manageable, low risk. For many organisations, it was a logical first step: migrate without having to rethink everything at once. The problem? For most organisations, it delivered exactly what you&#8217;d expect when you relocate [&#8230;]</p>
<p>The post <a href="https://cloudar.be/awsblog/back-to-on-prem/">Back to on-prem?</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p id="ember897" class="ember-view reader-text-block__paragraph">For years, the playbook looked like this: take your existing workloads and move them to the cloud. Lift &amp; shift. Fast, manageable, low risk. For many organisations, it was a logical first step: migrate without having to rethink everything at once.</p>
<p id="ember898" class="ember-view reader-text-block__paragraph">The problem? For most organisations, it delivered exactly what you&#8217;d expect when you relocate an existing environment to a new address: the same bottlenecks, the same inefficiencies, the same complexity. Just with a monthly invoice attached. Fast forward to today.</p>
<p id="ember900" class="ember-view reader-text-block__paragraph"><strong>The invoice as a symptom</strong></p>
<p id="ember901" class="ember-view reader-text-block__paragraph">The appeal of lift &amp; shift is understandable. No fundamental architecture changes. Limited impact on running applications. Minimal business disruption. A fast time-to-cloud that was easy to sell internally. For a specific type of workload &#8211; end-of-life systems or legacy environments you&#8217;rewinding down in the short term &#8211; it&#8217;s still a legitimate tactic today. Especially if it lets you shut down an entire data centre. But as a migration strategy, it&#8217;s postponement, not a real solution.</p>
<p id="ember902" class="ember-view reader-text-block__paragraph">On-prem systems were designed for a world of fixed capacity. Servers run continuously whether the load justifies it or not. Redundancy lives in hardware, not in design. The economic logic of cloud is precisely the opposite: you pay for what you use and scale to what you need. That partnership between IT and Finance has a name: FinOps. The discipline that ties cloud spending to actual business value. Bringing an on-prem architecture to the cloud unchanged means importing the inefficiencies of the old model into an environment that was never built for them. And paying for that continuously.</p>
<p id="ember903" class="ember-view reader-text-block__paragraph">In practice, this means: virtual machines running 24/7 when the workload doesn&#8217;t require it (<em>idle resources</em>), storage not tiered by access frequency, and applications moving data unnecessarily between regions or availability zones, each generating data transfer costs. Without FinOpsdiscipline, no one in the organisation has a clear picture of what the cloud actually costs per application, per team, or per business unit.</p>
<p id="ember904" class="ember-view reader-text-block__paragraph">The result is an invoice that runs higher than the data centre you left, with less flexibility than you expected. Not because cloud is too expensive. But because you never made the shift from ‘infrastructure in the cloud’ to ‘cloud-native architecture with cost accountability’.On-prem doesn&#8217;t fix that. It just moves the problem and adds five-to-seven-year hardware depreciation cycles to the books. The costs become slightly less visible, but you&#8217;ll feel them regardless. Especially as hardware prices keep climbing due to supply constraints.</p>
<p id="ember905" class="ember-view reader-text-block__paragraph"><strong>KarmAI</strong></p>
<p id="ember906" class="ember-view reader-text-block__paragraph">For years, the architectural debt of lift &amp; shift was a slow-burning problem. Systems ran, bills were higher than expected, but business carried on. AI has changed that. Not gradually, but abruptly.</p>
<p id="ember907" class="ember-view reader-text-block__paragraph">AI workloads require infrastructure that is fundamentally different from what classic enterprise applications need. Data must be accessible easily and at scale, not locked in legacy storage structures that were once migrated one-to-one. Integration with managed services like Amazon Bedrockworks better when your environment is built on cloud-native standards. AI workloads also have a volatile cost profile: a training job or inference spike can consume more in hours than a classic application does in a month. Without FinOps mechanisms to monitor, cap, and allocate those spikes, you lose all control over your AI budget.</p>
<p id="ember908" class="ember-view reader-text-block__paragraph">But that&#8217;s only the short-term pain. Because organisations that did lift &amp; shift also migrated their data mess along with everything else. No proper classification, no clear ownership, no consistent structure. For classic applications, that was annoying but manageable. For AI, it&#8217;s fatal. You can&#8217;tfine-tune a language model on unstructured data scattered across poorly managed cloud systems. You can&#8217;t build a RAG architecture if you don&#8217;t know where your data lives or what its quality is.</p>
<p id="ember909" class="ember-view reader-text-block__paragraph">Organisations that are serious about AI are being forced to revisit their cloud architecture anyway. What once looked like a technical problem has become a strategic delay&#8230; right at the moment AI is starting to make the competitive difference. And organisations that now decide to return to on-prem entirely will only widen that gap.</p>
<p id="ember910" class="ember-view reader-text-block__paragraph"><strong>On-prem is capitulation</strong></p>
<p id="ember911" class="ember-view reader-text-block__paragraph">Organisations considering cloud repatriation today are asking themselves the wrong question. Because the discussion isn&#8217;t really about cloud versus on-prem. It&#8217;s about focus and resource allocation: what does your organisation actually need, and are you capable of managing it well?</p>
<p id="ember912" class="ember-view reader-text-block__paragraph">Is it five to midnight for some organisations? Yes. But for those who commit to a cloud-native approach, it will become clear that cloud was the right choice all along. And that anyone thinking about repatriation today will find there&#8217;s still a great deal of cloud potential left untapped.</p>
<p id="ember913" class="ember-view reader-text-block__paragraph">If the cloud hasn&#8217;t delivered on its original promises, it&#8217;s usually because the architecture never became truly cloud-native. Data that was never properly structured. FinOps discipline that was never built in: no centralised cost reporting, no shared accountability between IT and business, no culture where teams think about the cost of what they build and run. And a mindset that carried on-prem patterns into an environment where they don&#8217;t belong.</p>
<p id="ember914" class="ember-view reader-text-block__paragraph">You don&#8217;t solve those problems by switching environments. You solve them by acknowledging them and addressing them. And that can absolutely be done in the cloud&#8230; if you&#8217;re willing to do it differently this time.</p>
<p>The post <a href="https://cloudar.be/awsblog/back-to-on-prem/">Back to on-prem?</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Hidden Cost of Convenience</title>
		<link>https://cloudar.be/awsblog/the-hidden-cost-of-convenience/</link>
		
		<dc:creator><![CDATA[Tom De Blende]]></dc:creator>
		<pubDate>Fri, 17 Oct 2025 11:23:39 +0000</pubDate>
				<category><![CDATA[MSP]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Managed Services]]></category>
		<guid isPermaLink="false">https://cloudar.be/?p=22650</guid>

					<description><![CDATA[<p>When choosing an AWS Managed Service Provider (MSP), most organizations focus on immediate benefits: faster deployment, expert guidance, and managed operations. But there&#8217;s a critical question that often gets overlooked until it&#8217;s too late: What happens when you want to leave? In the AWS ecosystem, MSPs take vastly different approaches when building customer-specific landing zones [&#8230;]</p>
<p>The post <a href="https://cloudar.be/awsblog/the-hidden-cost-of-convenience/">The Hidden Cost of Convenience</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>When choosing an AWS Managed Service Provider (MSP), most organizations focus on immediate benefits: faster deployment, expert guidance, and managed operations. But there&#8217;s a critical question that often gets overlooked until it&#8217;s too late: <strong>What happens when you want to leave?</strong></p>
<p>In the AWS ecosystem, MSPs take vastly different approaches when building customer-specific landing zones and cloud management platforms. Some approaches preserve your freedom and flexibility. Others quietly build the walls of a gilded cage.</p>
<h1><strong>The Two Paths: Open Standards vs. Proprietary Platforms</strong></h1>
<h2><em><strong>The Open Approach: AWS Landing Zone Accelerator (LZA)</strong></em></h2>
<p>AWS Landing Zone Accelerator represents the gold standard for customer independence. As an open-source solution built on AWS CDK and CloudFormation, we deploy LZA to provide several critical advantages:</p>
<ul>
<li><strong>Complete transparency</strong>: All infrastructure is defined as code that you can read, understand, and modify</li>
<li><strong>No licensing fees</strong>: Open-source with no proprietary components</li>
<li><strong>AWS-maintained</strong>: Continuously updated by AWS to keep up to date with new services and features</li>
<li><strong>Industry standard configuration:</strong> With multiple documented sample configurations, you do not need to start from scratch.</li>
<li><strong>Full customer ownership</strong>: Deployed directly into your environment with complete access to the Infrastructure as Code</li>
<li><strong>Exit-ready from day one</strong>: If you ever want to manage it yourself or switch MSPs, you own your landing zone configuration</li>
</ul>
<p>At Cloudar, we&#8217;ve built an entire landing zone practice around LZA precisely because we believe customers should never feel trapped. Your AWS foundation should be an asset you own, not a chain that binds you to any single provider.</p>
<h2><em><strong>The Proprietary Approach: Custom Orchestration Platforms</strong></em></h2>
<p>In contrast, many MSPs have developed proprietary cloud management platforms that create significant lock-in. These are often marketed as &#8220;revolutionary&#8221; or &#8220;next-generation&#8221; platforms that promise to make cloud management easier with &#8220;just a few simple clicks&#8221; or web-based portals that abstract away complexity.</p>
<p>The convenience is real. The long-term cost is hidden.</p>
<p>Here&#8217;s what proprietary platforms typically involve:</p>
<ul>
<li><strong>Black box deployment</strong>: Resources are created through proprietary tooling that abstracts away the underlying infrastructure</li>
<li><strong>Dependency on custom APIs</strong>: Your operations become dependent on the MSP&#8217;s platform rather than native AWS tools</li>
<li><strong>Limited portability</strong>: Moving to another MSP or bringing management in-house requires re-platforming</li>
<li><strong>Knowledge gap</strong>: Your team never develops deep expertise in AWS native tools because they&#8217;re shielded by the abstraction layer</li>
<li><strong>Commercial leverage</strong>: The MSP knows that switching costs are high, affecting pricing negotiations and service quality over time</li>
</ul>
<h1><strong>The Lock-in Mechanisms You Need to Watch For</strong></h1>
<ol>
<li><strong> Custom Landing Zones Without Source Code Access</strong></li>
</ol>
<p>Some MSPs deploy your resources using &#8220;their&#8221; landing zone—a pre-configured multi-account setup built with proprietary Infrastructure as Code that remains their intellectual property. When you want to leave, you inherit an AWS environment you don&#8217;t fully understand, configured by tools you can&#8217;t access.</p>
<p><strong>The Cloudar difference</strong>: We can deploy LZA directly into your AWS accounts. Every CloudFormation stack, every configuration file, every security baseline—you have access to it all.</p>
<ol start="2">
<li><strong> Web-Based Orchestrators That Become Operational Chokepoints</strong></li>
</ol>
<p>Fancy web portals that let you &#8220;deploy with one click&#8221; sound appealing. Until you realize that every operational change must flow through the MSP&#8217;s platform. Want to modify a VPC? You&#8217;re dependent on their UI. Need to adjust security groups? Better hope their platform supports your use case.</p>
<p>These orchestrators create <strong>operational lock-in</strong>: You can&#8217;t effectively operate your AWS environment without the MSP&#8217;s tooling. You&#8217;ve traded AWS complexity for MSP dependency.</p>
<ol start="3">
<li><strong> &#8220;Simplified&#8221; Interfaces That Hide AWS Reality</strong></li>
</ol>
<p>Abstraction layers that promise to &#8220;make AWS easy&#8221; can create a dangerous gap between what you think you&#8217;re deploying and what&#8217;s actually running in your account. When problems arise—and they always do—you discover that your team doesn&#8217;t understand the actual AWS infrastructure because they&#8217;ve only interacted with it through the MSP&#8217;s simplified interface.</p>
<h1><strong>The Real-World Impact of Lock-in</strong></h1>
<p><strong>Scenario 1: The Price Increase</strong></p>
<p>Your MSP announces a 30% price increase. With an LZA you own and open standards, you have options: negotiate from a position of strength, bring management in-house, or transition to another MSP in months. With a proprietary platform, you&#8217;re looking at risky and arduous re-platforming work—and your MSP knows it.</p>
<p><strong>Scenario 2: The Service Quality Decline</strong></p>
<p>Your MSP gets acquired. The new parent company shifts focus, key engineers leave, and service quality drops. With an open approach, you can transition smoothly. With lock-in, you&#8217;re stuck enduring declining service while planning an expensive migration.</p>
<p><strong>Scenario 3: The Strategic Pivot</strong></p>
<p>Your company wants to build internal cloud expertise and eventually self-manage. With LZA, your team can learn standard AWS tools and practices from day one. When you&#8217;re ready to transition, you already have the skills and the code. With proprietary platforms, your team has learned the MSP&#8217;s tools, not AWS—setting your in-house capability building back by years.</p>
<p><strong>Scenario 4: The Platform Limitation</strong></p>
<p>Your business needs evolve, and you need to implement a complex AWS architecture that isn&#8217;t supported by your MSP&#8217;s platform. You&#8217;re now in the worst position: paying for a platform that constrains you, unable to use native AWS capabilities, and facing the choice between living with limitations or undertaking an expensive re-platforming project.</p>
<h1><strong>How to Evaluate Your Current or Prospective MSP</strong></h1>
<p>Ask these critical questions:</p>
<ol>
<li><strong>&#8220;What landing zone solution do you use?&#8221;</strong>
<ul>
<li>Red flag: &#8220;Our proprietary solution&#8221; or vague answers. Subscription based landing zones (yes they exist!).</li>
<li>Green flag: &#8220;your own AWS Landing Zone Accelerator&#8221; or &#8220;a per-customer AWS Control Tower with Customizations for Control Tower&#8221;</li>
</ul>
</li>
<li><strong>&#8220;What happens to our infrastructure if we terminate the contract?&#8221;</strong>
<ul>
<li>Red flag: Vague answers about &#8220;transition planning&#8221; or &#8220;it depends&#8221;</li>
<li>Green flag: &#8220;You keep everything—we&#8217;ll help with knowledge transfer, and you&#8217;ll have all the code and documentation&#8221;</li>
</ul>
</li>
<li><strong>&#8220;Will our team learn AWS-native tools, or primarily your platform?&#8221;</strong>
<ul>
<li>Red flag: &#8220;Our platform abstracts AWS complexity away&#8221;</li>
<li>Green flag: &#8220;We teach AWS best practices and native tools&#8221;</li>
</ul>
</li>
</ol>
<h1><strong>The Cloudar Philosophy: Your Cloud, Your Terms</strong></h1>
<p>Here&#8217;s what that means in practice:</p>
<p><strong>Full LZA Implementation</strong></p>
<p>Every customer gets its own AWS Landing Zone Accelerator, deployed directly into their accounts with complete source code access to the LZA configuration. Deployments happen in your account, giving you end-to-end visibility on your Landing Zone.</p>
<p><strong>AWS-Native Tooling</strong></p>
<p>We use CloudFormation, CDK, AWS Config, Systems Manager—tools that work with or without us. If you hire another AWS expert or build an in-house team, they&#8217;ll recognize everything immediately.</p>
<p><strong>Comprehensive Documentation</strong></p>
<p>You can read about every configuration option today, in the documentation published by AWS. So while we pride ourselves in sharing our knowledge, you are not dependant on us to explain what is going on</p>
<p>Additionally, we write customer-specific documentation  in our Confluence – from architecture decisions to operational procedures.. If you decide to leave, we can provide you with an export of that information.</p>
<p><strong>Open Book Operations</strong></p>
<p>You have full Read Only access to your AWS environment —we&#8217;re partners, not gatekeepers. Want to check our work? Go ahead.</p>
<p><strong>Standard AWS Best Practices</strong></p>
<p>We follow AWS Well-Architected Framework principles and industry-standard patterns. No &#8220;special sauce&#8221; that only we understand.</p>
<p>We succeed by giving you excellent service so you want to stay, not by making it painful to leave.</p>
<p><strong>The Economics of Freedom</strong></p>
<p>Some argue that proprietary platforms are necessary to provide better service or lower costs. We disagree.</p>
<p><strong>Lower costs come from:</strong></p>
<ul>
<li>Automation that scales across customers (which we use)</li>
<li>Deep AWS expertise (which we have)</li>
<li>Efficient processes (which we&#8217;ve refined over years)</li>
</ul>
<p>Not from locking customers into proprietary platforms.</p>
<p><strong>Better service comes from:</strong></p>
<ul>
<li>Highly skilled engineers (which we continuously train)</li>
<li>Customer focus (which our retention rate proves)</li>
<li></li>
</ul>
<p>Not from proprietary abstraction layers.</p>
<p>We&#8217;ve proven that you can deliver excellent MSP services at competitive prices while keeping customers completely free. In fact, we believe customer freedom makes us <em>better</em>—we can&#8217;t coast on lock-in, so we must continuously earn our customers&#8217; business.</p>
<h1><strong>Making the Right Choice</strong></h1>
<p>Before signing with any MSP, ask yourself:</p>
<ul>
<li><strong>Do I understand what I&#8217;m getting into?</strong> Can you clearly explain how your infrastructure will be deployed and managed?</li>
<li><strong>What&#8217;s my exit strategy if things don&#8217;t work out?</strong> Is it measured in weeks, months, or years?</li>
<li><strong>Am I choosing this approach for the right reasons?</strong> Is convenience masking a lack of control?</li>
<li><strong>Do I retain full ownership?</strong> Of code, configurations, documentation, and knowledge?</li>
</ul>
<p><strong>Red Flags in MSP Sales Processes</strong></p>
<p>Be wary if you encounter:</p>
<ul>
<li><strong>Heavy emphasis on &#8220;simplicity&#8221; with little discussion of the underlying AWS architecture</strong></li>
<li><strong>Vague answers about exit strategies and transition processes</strong></li>
<li><strong>Marketing focused on proprietary platforms as the primary differentiator</strong></li>
<li><strong>Contracts that grant the MSP exclusive rights to infrastructure code</strong></li>
<li><strong>Lack of clarity about what you actually own vs. what you&#8217;re licensing</strong></li>
</ul>
<h1><strong>Conclusion: Freedom as a Feature</strong></h1>
<p>In the rush to cloud transformation, it&#8217;s easy to prioritize speed and convenience. And yes, a well-designed proprietary platform can deploy faster than custom LZA implementation—at least initially.</p>
<p>But cloud strategy isn&#8217;t measured in weeks. It&#8217;s measured in years and decades. The question isn&#8217;t &#8220;who can get me to cloud fastest?&#8221; It&#8217;s &#8220;who can help me build sustainable cloud capabilities that serve my business long-term?&#8221;</p>
<p>The MSP industry has a pattern: some providers build their business model around customer stickiness achieved through proprietary tooling. They create beautiful interfaces and slick demos that abstract away AWS complexity. Then, months or years later, customers realize they&#8217;ve traded AWS vendor lock-in for MSP vendor lock-in—often worse, because at least AWS is standardized.</p>
<p>At Cloudar, we reject this model fundamentally. We believe that <strong>customer freedom isn&#8217;t a bug to work around—it&#8217;s a feature to build for.</strong> We&#8217;re proud to be an AWS Premier MSP Partner that wins business through excellence, not lock-in.</p>
<p>Your cloud infrastructure is too important to be held hostage by convenient abstractions. You deserve an MSP that treats you as a partner who will grow and evolve, not a captive customer who might someday try to escape.</p>
<p>Choose partners who believe you should always have the keys to your own kingdom. Choose partners who succeed by being valuable, not by being necessary.</p>
<p>Choose freedom.</p>
<p>The post <a href="https://cloudar.be/awsblog/the-hidden-cost-of-convenience/">The Hidden Cost of Convenience</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Sign in with your eID: Using AWS IAM Roles Anywhere with a SmartCard Reader</title>
		<link>https://cloudar.be/awsblog/sign-in-with-your-eid-using-aws-iam-roles-anywhere-with-a-smartcard-reader/</link>
		
		<dc:creator><![CDATA[Ben Bridts]]></dc:creator>
		<pubDate>Thu, 26 Jun 2025 07:53:14 +0000</pubDate>
				<category><![CDATA[Security & Compliance]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Managed Services]]></category>
		<category><![CDATA[MSP]]></category>
		<guid isPermaLink="false">https://cloudar.be/?p=22584</guid>

					<description><![CDATA[<p>Using temporary credentials to access resources, has long been a best practice and is usually straight-forward if the person or machine that is starting the action is already known in AWS (either by using IAM Identity Center, or because you are running inside the AWS Cloud). However, if you are running on a machine that [&#8230;]</p>
<p>The post <a href="https://cloudar.be/awsblog/sign-in-with-your-eid-using-aws-iam-roles-anywhere-with-a-smartcard-reader/">Sign in with your eID: Using AWS IAM Roles Anywhere with a SmartCard Reader</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Using temporary credentials to access resources, <a href="https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_identities_unique.html">has long been a best practice</a> and is usually straight-forward if the person or machine that is starting the action is already known in AWS (either by using IAM Identity Center, or because you are running inside the AWS Cloud). However, if you are running on a machine that exists outside of AWS you will need an extra component like AWS IAM Roles Anywhere to give you temporary credentials.</p>
<p>Interestingly, Roles Anywhere does not completely solve the problem of not needing to create long-lived credentials, instead it moves (and reduces) the problem from credential management (rotation) to certificate management (distribution).</p>
<p>Setting up a Certificate Authority (CA) that can create certificates can be done with AWS Private Certificate Authority, and there are some options out there to manage distribution (usually as part of a bigger Device Management solution), but wouldn&#8217;t it be nice if the government of Belgium would do that for us?</p>
<h1>The Belgian eID</h1>
<p>In Belgium every citizens gets an identity card. The government makes sure that these get distributed and renewed, and since 2005 they contain a chip that holds (among other things) a certificate that can be used for digital authentication. If we can tie this to Roles Anywhere, we don&#8217;t have to worry about certificate management ourselves.</p>
<p>This eID is the size of a bankcard and the chip can be interacted with using off the shelf smart card readers. Most information can be read without any additional authentication &#8211; if you have the correct middleware, but to sign something you need to enter a PIN code.</p>
<h2>The different certificates</h2>
<p>Every eID holds an &#8220;authentication certificate&#8221; that is tied to the owner of the eID and has been signed by the &#8220;Citizens CA&#8221;.  The Citizens CA&#8217;s certificate is in turn signed by the Belgium Root CA . The Root certificate is self-signed. If we trust the Belgium Root CA, we will be able to validate any authentication certificate. More information about this setup can be found at https://repository.eidpki.belgium.be/#/home</p>
<p>The authentication certificate has two pieces of information that are going to be useful to us:</p>
<ul>
<li>The Issuer, showing us that the certificate is indeed issued by the Citizen CA.</li>
<li>The Subject, containing the name and National Number (a number that uniquely points to one person) of the owner.</li>
</ul>
<h1>AWS IAM Roles Anywhere</h1>
<p>Roles Anywhere allows you to use a certificate and its private key to get temporary credentials. You can think of it as an AssumeRole call, but instead of starting from an Access Key, we start from a certificate.</p>
<p>There are a few components we need:</p>
<ul>
<li>Configuration in our AWS Account, to indicate which CA we trust, and which roles can be assumed by different Issuer and/or Subjects. This also includes the creation of IAM Roles.</li>
<li>Software on our computer to interact with the Card Reader so we can prove we have access to the eID and know its PIN.</li>
</ul>
<p>For our use case we are going to trust the Belgium Root CA, and create a Role that can be assumed with any certificate issued by the Citizen CA. We will than limit the permissions of that IAM Role, so it can only write to a unique prefix in S3.</p>
<p>We can do that because every component of the Subject in our certificate gets mapped to a principal tag on the role session. E.g. if the subject is &#8220;C=BE, SN=Doe, GN=John, serialNumber=70010112345, CN=John Doe (Authentication)&#8221;, we have the following principal tags, and we can use principal tags in any policy.</p>
<ul>
<li>x509Subject/C: BE</li>
<li>x509Subject/SN: Doe</li>
<li>x509Subject/GN: John</li>
<li>x509Subject/serialNumber: 70010112345</li>
<li>x509Subject/CN: John Doe (Authentication)</li>
</ul>
<h1>Putting it all together</h1>
<h2>In our AWS Account</h2>
<p>We will create the following resources in our AWS Account:</p>
<ul>
<li>An S3 Bucket</li>
<li>A trust anchor, configured to trust the Belgium Root CA certificate that is publicly available via https://crt.eidpki.belgium.be/eid/brca6.crt.  This way we can use any certificate created by the Root CA of any of its subordinate CAs (like the Citizen CA)</li>
<li>An IAM Role, where we configure the trust policy to only allow usage of the Role if:
<ul>
<li>The principal is the Roles Anywhere service (rolesanywhere.amazonaws.com)</li>
<li>The Issuer is Citizen CA (aws:PrincipalTag/x509Issuer/CN must equal &#8220;Citizen CA&#8221;)</li>
<li>The source is our trust anchor (aws:SourceArn equals the ARN of the Root CA trust anchor)</li>
</ul>
</li>
<li>An IAM Policy on this role that allows PutObject acces to all objects that start with the unique National Number (aws:PrincipalTag/x509Subject/serialNumber)</li>
<li>a (Roles Anywhere) profile that ties the trust anchor to the Role. We could configure more settings here, like a mapping of fields from the certificate or a session policy, but don&#8217;t need to.</li>
</ul>
<p>Of course we do not have to do this by hand, we create a CloudFormation template for this. It can be found in our sample repository: https://github.com/WeAreCloudar/cloudformation-samples/tree/main/templates/roles-anywhere-eid</p>
<h2>On our machine</h2>
<p>On our machine, we will need &#8211; besides the eID and its PIN (at least on macOS, where I tested this):</p>
<ul>
<li>a SmartCard Reader</li>
<li>the Roles Anywhere Credential Helper (<a href="https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html">downloadable from the AWS Website</a>)</li>
<li>The AWS CLI (or any other tool we want to use with our AWS Credentials)</li>
</ul>
<p>We also need a few pieces of information:</p>
<ul>
<li>The ARNs of the trust anchor, profile and role we created</li>
<li>Our own National Number and the name of the bucket (to test our policy)</li>
</ul>
<p>Ideally we&#8217;d be able to configure the credential helper to read any eID we insert, and this is possible if you install the Belgian eID Middleware using the following command.<br />
<code class="" data-line=""><br />
aws_signing_helper credential-process \<br />
</code><code class="" data-line=""> --trust-anchor-arn $trust_anchor_arn \<br />
--profile-arn $profile_arn \<br />
--role-arn $role_arn \<br />
--certificate &quot;pkcs11:model=Belgium%20eID;object=Authentication&quot; \<br />
--pkcs11-lib &#039;/Library/Belgium Identity Card/Pkcs11/beid-pkcs11.bundle/Contents/MacOS/libbeidpkcs11.dylib<br />
</code><br />
However <a href="https://github.com/aws/rolesanywhere-credential-helper/issues/58">because of an issue with the helper, this only works on macOS if you build the helper yourself from source</a>. Since we do not want to do that, we can plug in our eID and find and identifier using &#8220;aws_signing_helper read-certificate-data&#8221;. You should get something like<br />
<code class="" data-line=""><br />
Matching identities<br />
1) bf013dd57aa34f8f9d4e22ab89dd8eb2 &quot;SERIALNUMBER=70010112345,CN=John Doe (Authentication),C=BE,...&quot;<br />
2) 786f7572198a4a8a82ee7ef3f205d7be &quot;SERIALNUMBER=70010112345,CN=John Doe (Signature),C=BE,...&quot;<br />
</code></p>
<p>Copying everything between quotes, allows us to create a new file, selector.json that looks like this:</p>
<p><code class="" data-line=""><br />
[<br />
{<br />
&quot;Key&quot;: &quot;x509Subject&quot;,<br />
&quot;Value&quot;: &quot;SERIALNUMBER=70010112345,CN=John Doe (Authentication),C=BE,...&quot;<br />
}<br />
]<br />
</code><br />
and use that to select our specific certificate:</p>
<p><code class="" data-line="">aws_signing_helper credential-process \<br />
</code><code class="" data-line=""> --trust-anchor-arn $trust_anchor_arn \<br />
--profile-arn $profile_arn \<br />
--role-arn $role_arn \<br />
--cert-selector file://selector.json</code></p>
<p>Our smart card reader will now prompt us for a PIN. If we enter the right one, we get credentials as output:<br />
<code class="" data-line=""><br />
{&quot;Version&quot;:1,&quot;AccessKeyId&quot;:&quot;ASIA...&quot;,&quot;SecretAccessKey&quot;:&quot;COA...&quot;,&quot;SessionToken&quot;:&quot;IQoJ...&quot;,&quot;Expiration&quot;:&quot;2025-03-28T14:16:07Z&quot;}<br />
</code></p>
<p>We can put this command in our ~/.aws/config file, so the AWS CLI will execute it for us, but for testing purposes it&#8217;s slightly easier to use the &#8220;serve&#8221; option.  The AWS Documentation has a longer explanation about how you can use the credential-process: https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html#credential-helper-examples</p>
<h2>Testing with s3</h2>
<p>In one terminal we can run a credential / metadata server that can be used by the AWS CLI:</p>
<p><code class="" data-line="">~$ aws_signing_helper serve -process \<br />
</code><code class="" data-line=""> --trust-anchor-arn $trust_anchor_arn \<br />
--profile-arn $profile_arn \<br />
--role-arn $role_arn \<br />
--cert-selector file://selector.json<br />
</code></p>
<p>This gives us<code class="" data-line=""><br />
2025/03/28 14:28:12 Local server started on port: 9911<br />
2025/03/28 14:28:12 Make it available to the sdk by running:<br />
2025/03/28 14:28:12 export AWS_EC2_METADATA_SERVICE_ENDPOINT=http://127.0.0.1:9911/</code></p>
<p>We can than use a second terminal to run:</p>
<p><code class="" data-line="">AWS_EC2_METADATA_SERVICE_ENDPOINT=http://127.0.0.1:9911/ aws s3 cp example_file s3://$bucket/serialNumber/70010112345/example_file</code></p>
<p>and get our file in s3:</p>
<p><code class="" data-line="">upload: example_file to s3://.../serialNumber/70010112345/example_file</code></p>
<h1>Conclusion</h1>
<p>This experiment shows that being able to use an external device withIAM Roles, is a very powerful feature, because it can remove a lot of tasks related to certificate and credential management. Being able to do this with something I had in my backpocket made it extra cool.</p>
<p>However, the Belgian eID is probably not the best way to go about this in a real scenario:</p>
<ul>
<li>I just gave everyone living in Belgium access to my S3 Bucket. I could use a more scoped-down trust policy, but I would eventually run into limitations of trust-policy size.</li>
<li>I also didn&#8217;t tackle Certificate Revocation Lists (CRL). Every time someone loses their wallet, I would need to invalidate certain certificates &#8211; this also runs into size limitations</li>
<li>I already have a good way to give users access to AWS Accounts, using Identity Center or Cognito.</li>
<li>The pkcs11 support on macOS seems limited, and I would have to install the middleware everywhere,</li>
</ul>
<p>This does not mean that Roles Anywhere is not a good solution for this kind of cases:</p>
<ul>
<li>If you are already putting certificates on machines (e.g using an MDM solution), AWS IAM Roles Anywhere is a great fit</li>
<li>Instead of relying on the Belgian Government you can buy an hardware key like a yubikey and use it as your certificate source. This is as secure as using the eID (only the machine with the key plugged in will be able to request credentials), and you would be limiting it to the exact serial number(s) in your trust policy anyway &#8211; making CRLs mostly moot.</li>
</ul>
<p>The post <a href="https://cloudar.be/awsblog/sign-in-with-your-eid-using-aws-iam-roles-anywhere-with-a-smartcard-reader/">Sign in with your eID: Using AWS IAM Roles Anywhere with a SmartCard Reader</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Why AWS NLB stickiness is not always sticky</title>
		<link>https://cloudar.be/awsblog/why-aws-nlb-stickiness-is-not-always-sticky/</link>
		
		<dc:creator><![CDATA[Rutger Beyen]]></dc:creator>
		<pubDate>Tue, 05 Oct 2021 14:32:48 +0000</pubDate>
				<category><![CDATA[AWS Blog]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[NLB]]></category>
		<category><![CDATA[stickiness]]></category>
		<guid isPermaLink="false">https://www.cloudar.be/?p=19684</guid>

					<description><![CDATA[<p>Why AWS NLB stickiness is not always sticky We were recently working on an AWS setup which involved a Network LoadBalancer (NLB) with a TCP listener and a requirement for sticky sessions. As we were seeing some strange behavior which we couldn&#8217;t immediately explain and which might be linked to the session stickiness we decided [&#8230;]</p>
<p>The post <a href="https://cloudar.be/awsblog/why-aws-nlb-stickiness-is-not-always-sticky/">Why AWS NLB stickiness is not always sticky</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Why AWS NLB stickiness is not always sticky</h1>
<p>We were recently working on an AWS setup which involved a Network LoadBalancer (NLB) with a TCP listener and a requirement for sticky sessions. As we were seeing some strange behavior which we couldn&#8217;t immediately explain and which might be linked to the session stickiness we decided to make a small test setup.</p>
<h2>The problem</h2>
<p>Unlike an ALB where session stickiness is accomplished with cookies, the NLB uses a built-in 5-tuple hash table in order to maintain stickiness across backend servers. We access the NLB through its DNS name, which actually returns the IPs of the two NLB endpoints in a round-robin fashion with a TTL of 60 seconds.</p>
<p>We were looking for an answer on the following question: if our end-user would resolve the DNS and pick the IP of the first NLB endpoint to start the connection, the session will be routed towards one of the backend servers. But after 60 seconds the client could potentially re-issue the DNS query and start its connection with the other NLB endpoint. How will the stickiness and cross-zone loadbalancing behave? Will our end-user connection be routed to the initial server again, even if that means crossing AZ boundaries?</p>
<h2>The situation</h2>
<p><img fetchpriority="high" decoding="async" class="alignnone wp-image-19685" src="https://cloudar.be/wp-content/uploads/2021/10/nlb1-650x433.png" alt="" width="642" height="428" srcset="https://cloudar.be/wp-content/uploads/2021/10/nlb1-650x433.png 650w, https://cloudar.be/wp-content/uploads/2021/10/nlb1-325x217.png 325w" sizes="(max-width: 642px) 100vw, 642px" /></p>
<p>We started with a classical setup comprising of an NLB with an endpoint in each AZ and a Targetgroup having one instance as target in each AZ.</p>
<h3>Scenario #1</h3>
<ul>
<li>Cross-Zone loadbalancing: Disabled</li>
<li>TargetGroup Stickiness: Disabled</li>
</ul>
<p>How does it behave?</p>
<ol>
<li>Client connects to the IP of the first NLB node: the connection is redirected to the server in AZ 1.</li>
<li>Client connects to the IP of the second NLB node: the connection is redirect to the server in AZ 2.</li>
</ol>
<p>Since there is only one healthy target per AZ and cross-zone loadbalancing is not enabled, this situation results in &#8216;AZ-stickiness&#8217;: the traffic remains in the AZ in which it arrived. The setup relies on DNS to distribute client connections evenly across both NLB endpoints, but there is nothing to guarantee that a specific user connection is always directed to the same NLB endpoint, let alone to the same backend server.</p>
<h3>Scenario #2</h3>
<ul>
<li>Cross-Zone loadbalancing: Enabled</li>
<li>TargetGroup Stickiness: Disabled</li>
</ul>
<p>Allowing cross-zone loadbalancing and not requiring any stickness. This should give us complete randomness, shouldn&#8217;t it?</p>
<p>And so it does. We&#8217;re now completely randomized and hit every backend server, irrespective of our NLB endpoint &#8216;point of entry&#8217;. Works as expected.</p>
<h3><img decoding="async" class="alignnone size-medium wp-image-19686" src="https://cloudar.be/wp-content/uploads/2021/10/nlb2-650x433.png" alt="" width="650" height="433" srcset="https://cloudar.be/wp-content/uploads/2021/10/nlb2-650x433.png 650w, https://cloudar.be/wp-content/uploads/2021/10/nlb2-325x217.png 325w" sizes="(max-width: 650px) 100vw, 650px" /></h3>
<h3>Scenario #3</h3>
<ul>
<li>Cross-Zone loadbalancing: Disabled</li>
<li>TargetGroup Stickiness: Enabled</li>
</ul>
<p>We&#8217;ve enabled stickiness on the targetgroup now, and disabled the cross-zone loadbalancing again. Let&#8217;s hope our client connection is now sticky to a specific backend server.</p>
<ol>
<li>Client connects to the IP of the first NLB node: the connection is redirected to the server in AZ 1.</li>
<li>Client connects to the IP of the second NLB node: the connection is redirect to the server in AZ 2.</li>
</ol>
<p>Ok wait, we&#8217;ve asked our TargetGroup to be sticky, but still our connection is balanced over both backend servers? What&#8217;s going on?</p>
<p><img decoding="async" class="alignnone size-medium wp-image-19687" src="https://cloudar.be/wp-content/uploads/2021/10/nlb4-650x433.png" alt="" width="650" height="433" srcset="https://cloudar.be/wp-content/uploads/2021/10/nlb4-650x433.png 650w, https://cloudar.be/wp-content/uploads/2021/10/nlb4-325x217.png 325w" sizes="(max-width: 650px) 100vw, 650px" /></p>
<p>The fact that our NLB is not allowing cross-zone loadbalancing seems to prevent the connection from reaching the same backend every time. The connection enters via NLB endpoint 1 but stickiness has decided that the connection should go to server in AZ 2? Stickiness fails, the disabled cross-zone loadbalancing wins&#8230;</p>
<p>With only one healthy backend per AZ this behaves the same as not enabling stickiness at all. We&#8217;re pretty sure that with more than one backend per AZ the stickiness is maintained&#8230;within that AZ only. Interesting!</p>
<h3>Scenario #4</h3>
<ul>
<li>Cross-Zone loadbalancing: Enabled</li>
<li>TargetGroup Stickiness: Enabled</li>
</ul>
<p>Let&#8217;s solve this. We&#8217;ve enabled both cross-zone loadbalancing and targetgroup stickiness. We should hit the same backend server every time now.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-19688" src="https://cloudar.be/wp-content/uploads/2021/10/nlb3-650x433.png" alt="" width="650" height="433" srcset="https://cloudar.be/wp-content/uploads/2021/10/nlb3-650x433.png 650w, https://cloudar.be/wp-content/uploads/2021/10/nlb3-325x217.png 325w" sizes="auto, (max-width: 650px) 100vw, 650px" /></p>
<p>And so it does. Only now we reach true stickiness and hit the same backend server every time, no matter how hard we try by entering via the loadbalancer node in the other AZ.</p>
<h2>The conclusion</h2>
<p>If you don&#8217;t allow cross-zone loadbalancing, then stickiness is only active within AZ boundaries. As DNS round-robin could direct a client to a different point of entry after the TTL has expired, strict stickiness is not guaranteed.</p>
<p>So if you really need stickiness to a specific backend target, you need to allow cross-zone loadbalancing (and live with the extra cost of inter-AZ traffic). Only now do the different loadbalancer nodes share the hash table of &#8220;client-to-target&#8221; stickiness.</p>
<p>&nbsp;</p>
<p>Kinda logic, though&#8230;</p>
<p>&nbsp;</p>
<p>PS: NLB idle timeout for TCP connections is 350 seconds. Once the timeout is reached or the session is terminated, the NLB will forget the stickiness and incoming packets will be considered as a new flow and could be loadbalanced to a new target.</p>
<p>The post <a href="https://cloudar.be/awsblog/why-aws-nlb-stickiness-is-not-always-sticky/">Why AWS NLB stickiness is not always sticky</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>10 random things you probably didn&#8217;t know about Cloudar</title>
		<link>https://cloudar.be/awsblog/10-random-things-you-might-not-have-known-about-cloudar/</link>
		
		<dc:creator><![CDATA[Bart Van Hecke]]></dc:creator>
		<pubDate>Thu, 20 Aug 2020 09:57:41 +0000</pubDate>
				<category><![CDATA[AWS Blog]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[AWS]]></category>
		<guid isPermaLink="false">https://www.cloudar.be/?p=18041</guid>

					<description><![CDATA[<p>The post <a href="https://cloudar.be/awsblog/10-random-things-you-might-not-have-known-about-cloudar/">10 random things you probably didn&#8217;t know about Cloudar</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wpb-content-wrapper"><section id="ut-section-6ac51df31071f" data-vc-full-width="true" data-vc-full-width-init="false" data-cursor-skin="global" class="vc_section ut-vc-160 vc_section-has-no-fill ut-section-6ac51df31072e"><div id="ut-row-6ac51df36129e" data-vc-full-width="true" data-vc-full-width-init="false" class="vc_row wpb_row vc_row-fluid vc_column-gap-0 ut-row-6ac51df3612b3" ><div class="wpb_column vc_column_container vc_col-sm-12" ><div id="ut_inner_column_6ac51df37e6ff" class="vc_column-inner " ><div class="wpb_wrapper"><style type="text/css">#ut_title_divider_6ac51df37ea4b { letter-spacing: 0em; }</style><h3 id="ut_title_divider_6ac51df37ea4b" class="bklyn-title-divider  bklyn-divider-style-4 bklyn-title-divider-left bklyn-title-divider-tablet-left bklyn-title-divider-mobile-left"  ><span>1. The Summerbreeze Metal Festival</span></h3>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>In August 2013, Senne Vaeyens en Bart Van Hecke attended the Summerbreeze festival in Dinkelsbühl, Germany. Being long-time friends and already active in the wonderful world of Information Technology for several years, they discussed the possibility of starting a company together. After a long night of heavy music and lots of beers, the foundation of Cloudar was laid…</p>

		</div>
	</div>

<div id="vc-sep-6ac51df37f6dd" class="vc_separator wpb_content_element vc_separator_align_center vc_sep_width_100 vc_sep_pos_align_center vc_separator_no_text vc_sep_color_grey  wpb_content_element" ><span class="vc_sep_holder vc_sep_holder_l"><span  class="vc_sep_line"></span></span><span class="vc_sep_holder vc_sep_holder_r"><span  class="vc_sep_line"></span></span>
</div></div></div></div></div><div class="vc_row-full-width vc_clearfix"></div><div id="ut-row-6ac51df38024d" data-vc-full-width="true" data-vc-full-width-init="false" class="vc_row wpb_row vc_row-fluid vc_column-gap-0 ut-row-6ac51df380264" ><div class="wpb_column vc_column_container vc_col-sm-12" ><div id="ut_inner_column_6ac51df380b87" class="vc_column-inner " ><div class="wpb_wrapper"><style type="text/css">#ut_title_divider_6ac51df380c59 { letter-spacing: 0em; }</style><h3 id="ut_title_divider_6ac51df380c59" class="bklyn-title-divider  bklyn-divider-style-4 bklyn-title-divider-left bklyn-title-divider-tablet-left bklyn-title-divider-mobile-left"  ><span>2. Cloudar started as a Cloud Broker</span></h3>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Cloudar was started as a Cloud Broker company, acting as a trusted advisor for customers and providing a single point of contact regardless of the cloud technology the customers were using. After evaluating this setup for a few months, Senne &amp; Bart noticed that real focus was missing. They decided that it would be better to become great at only one thing than to be mediocre at several. As Amazon Web Services (AWS) was already the preferred platform for several projects, it was decided that Cloudar would only focus on AWS and become a trustworthy AWS partner.</p>
<p>&nbsp;</p>
<p><em><strong>Fun fact</strong>: The name Cloudar originates from the combination of the word &#8220;Cloud&#8221; and &#8220;Radar&#8221;; When the company started as a cloud broker, we would be the &#8216;radar&#8217; for our customers to find the best cloud provider that would suit their needs. Nowadays Cloudar stands for &#8220;Cloud Architects&#8221;, but the radar remained in the company logo&#8230;</em></p>

		</div>
	</div>

<div id="vc-sep-6ac51df3811de" class="vc_separator wpb_content_element vc_separator_align_center vc_sep_width_100 vc_sep_pos_align_center vc_separator_no_text vc_sep_color_grey  wpb_content_element" ><span class="vc_sep_holder vc_sep_holder_l"><span  class="vc_sep_line"></span></span><span class="vc_sep_holder vc_sep_holder_r"><span  class="vc_sep_line"></span></span>
</div></div></div></div></div><div class="vc_row-full-width vc_clearfix"></div><div id="ut-row-6ac51df381ba5" data-vc-full-width="true" data-vc-full-width-init="false" class="vc_row wpb_row vc_row-fluid vc_column-gap-0 ut-row-6ac51df381bbe" ><div class="wpb_column vc_column_container vc_col-sm-12" ><div id="ut_inner_column_6ac51df38245f" class="vc_column-inner " ><div class="wpb_wrapper"><style type="text/css">#ut_title_divider_6ac51df382521 { letter-spacing: 0em; }</style><h3 id="ut_title_divider_6ac51df382521" class="bklyn-title-divider  bklyn-divider-style-4 bklyn-title-divider-left bklyn-title-divider-tablet-left bklyn-title-divider-mobile-left"  ><span>3. Cloudar joined the Cronos Group in October 2014</span></h3>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>To maintain focus on AWS, it became clear that we needed to surround ourselves with experts in other areas of the IT spectrum. As the Cronos Group is an incubator that exists of multiple independent companies with specific expertise, the choice of joining this group was a no-brainer.</p>

		</div>
	</div>

<div id="vc-sep-6ac51df382a8e" class="vc_separator wpb_content_element vc_separator_align_center vc_sep_width_100 vc_sep_pos_align_center vc_separator_no_text vc_sep_color_grey  wpb_content_element" ><span class="vc_sep_holder vc_sep_holder_l"><span  class="vc_sep_line"></span></span><span class="vc_sep_holder vc_sep_holder_r"><span  class="vc_sep_line"></span></span>
</div></div></div></div></div><div class="vc_row-full-width vc_clearfix"></div><div id="ut-row-6ac51df383384" data-vc-full-width="true" data-vc-full-width-init="false" class="vc_row wpb_row vc_row-fluid vc_column-gap-0 ut-row-6ac51df383398" ><div class="wpb_column vc_column_container vc_col-sm-12" ><div id="ut_inner_column_6ac51df383bc0" class="vc_column-inner " ><div class="wpb_wrapper"><style type="text/css">#ut_title_divider_6ac51df383c91 { letter-spacing: 0em; }</style><h3 id="ut_title_divider_6ac51df383c91" class="bklyn-title-divider  bklyn-divider-style-4 bklyn-title-divider-left bklyn-title-divider-tablet-left bklyn-title-divider-mobile-left"  ><span>4. First hire in January 2015</span></h3>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>In January 2015, Ben Bridts joined the company and is up to present day the go-to AWS expert of the company. Ben has in-depth AWS knowledge, helps defining Cloudar’s technical strategy and is an official AWS Ambassador (<a href="https://www.ambassador-lounge.com/ambassadors/ben-bridts/">https://www.ambassador-lounge.com/ambassadors/ben-bridts/</a>). Hook him up if you have questions about AWS (@benbridts)</p>

		</div>
	</div>

<div id="vc-sep-6ac51df3841d7" class="vc_separator wpb_content_element vc_separator_align_center vc_sep_width_100 vc_sep_pos_align_center vc_separator_no_text vc_sep_color_grey  wpb_content_element" ><span class="vc_sep_holder vc_sep_holder_l"><span  class="vc_sep_line"></span></span><span class="vc_sep_holder vc_sep_holder_r"><span  class="vc_sep_line"></span></span>
</div></div></div></div></div><div class="vc_row-full-width vc_clearfix"></div><div id="ut-row-6ac51df384b08" data-vc-full-width="true" data-vc-full-width-init="false" class="vc_row wpb_row vc_row-fluid vc_column-gap-0 ut-row-6ac51df384b1a" ><div class="wpb_column vc_column_container vc_col-sm-12" ><div id="ut_inner_column_6ac51df3850bd" class="vc_column-inner " ><div class="wpb_wrapper"><style type="text/css">#ut_title_divider_6ac51df385133 { letter-spacing: 0em; }</style><h3 id="ut_title_divider_6ac51df385133" class="bklyn-title-divider  bklyn-divider-style-4 bklyn-title-divider-left bklyn-title-divider-tablet-left bklyn-title-divider-mobile-left"  ><span>5. In April 2015, Cloudar joins Xplore Group</span></h3>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>The Cronos Group is divided into several clusters; some clusters specialize in ‘traditional IT services’, while others have a focus in entirely other areas. Xplore Group is one of these clusters and has a clear focus on E-commerce, Data Science, Cloud Native Development, IoT, Machine Learning, …</p>
<p>As Cloudar prefers to talk with the business directly, while maintaining a good relationship with developers as well, the Xplore Group cluster seemed a good fit.</p>
<p>Together with multiple Xplore Group companies, Cloudar is now able to execute large enterprise projects with a scope that extends the expertise of AWS.</p>

		</div>
	</div>

<div id="vc-sep-6ac51df3854b6" class="vc_separator wpb_content_element vc_separator_align_center vc_sep_width_100 vc_sep_pos_align_center vc_separator_no_text vc_sep_color_grey  wpb_content_element" ><span class="vc_sep_holder vc_sep_holder_l"><span  class="vc_sep_line"></span></span><span class="vc_sep_holder vc_sep_holder_r"><span  class="vc_sep_line"></span></span>
</div></div></div></div></div><div class="vc_row-full-width vc_clearfix"></div><div id="ut-row-6ac51df385ccd" data-vc-full-width="true" data-vc-full-width-init="false" class="vc_row wpb_row vc_row-fluid vc_column-gap-0 ut-row-6ac51df385cdb" ><div class="wpb_column vc_column_container vc_col-sm-12" ><div id="ut_inner_column_6ac51df38621e" class="vc_column-inner " ><div class="wpb_wrapper"><style type="text/css">#ut_title_divider_6ac51df3862a0 { letter-spacing: 0em; }</style><h3 id="ut_title_divider_6ac51df3862a0" class="bklyn-title-divider  bklyn-divider-style-4 bklyn-title-divider-left bklyn-title-divider-tablet-left bklyn-title-divider-mobile-left"  ><span>6. Some numbers (August 2020)</span></h3>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<ul>
<li>Current headcount: 32 (and growing)</li>
<li>Customer base: &gt;100</li>
<li>Monthly AWS Spent: &gt; $1M</li>
<li>Total of AWS Certifications: &gt;100</li>
<li>AWS programs &amp; competencies:</li>
</ul>
<p style="padding-left: 40px;">&#8211; Premier Consulting Partner</p>
<p style="padding-left: 40px;">&#8211; Solution Provider</p>
<p style="padding-left: 40px;">&#8211; Public Sector Partner</p>
<p style="padding-left: 40px;">&#8211; Well-Architected Partner</p>
<p style="padding-left: 40px;">&#8211; Immersion Day Partner</p>
<p style="padding-left: 40px;">&#8211; Managed Service Provider Partner</p>
<p style="padding-left: 40px;">&#8211; Migration Competency</p>
<p style="padding-left: 40px;">&#8211; DevOps Competency</p>
<p style="padding-left: 40px;">&#8211; Government Competency</p>
<p style="padding-left: 40px;">&#8211; Lambda Service Delivery</p>

		</div>
	</div>

<div id="vc-sep-6ac51df386661" class="vc_separator wpb_content_element vc_separator_align_center vc_sep_width_100 vc_sep_pos_align_center vc_separator_no_text vc_sep_color_grey  wpb_content_element" ><span class="vc_sep_holder vc_sep_holder_l"><span  class="vc_sep_line"></span></span><span class="vc_sep_holder vc_sep_holder_r"><span  class="vc_sep_line"></span></span>
</div></div></div></div></div><div class="vc_row-full-width vc_clearfix"></div><div id="ut-row-6ac51df386c45" data-vc-full-width="true" data-vc-full-width-init="false" class="vc_row wpb_row vc_row-fluid vc_column-gap-0 ut-row-6ac51df386c55" ><div class="wpb_column vc_column_container vc_col-sm-12" ><div id="ut_inner_column_6ac51df38712b" class="vc_column-inner " ><div class="wpb_wrapper"><style type="text/css">#ut_title_divider_6ac51df3871a3 { letter-spacing: 0em; }</style><h3 id="ut_title_divider_6ac51df3871a3" class="bklyn-title-divider  bklyn-divider-style-4 bklyn-title-divider-left bklyn-title-divider-tablet-left bklyn-title-divider-mobile-left"  ><span>7. Partnerships</span></h3>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>It goes without saying that great things can only be achieved if you surround yourself with the right partners…</p>
<p>While AWS remains our focus, you need partners to be able to deliver the full picture to your customers. Some solid partnerships we established throughout the years are:</p>
<ul>
<li>CloudCheckr: Mainly used for cost optimization and providing best practices to our customers</li>
<li>VMware: to help us supporting VMC on AWS</li>
<li>Trend Micro: For compliance reasons and securing AWS environments</li>
<li>N2WS: for backup and disaster recovery purposes</li>
<li>Site 24&#215;7: for monitoring &amp; alerting</li>
<li>The Cronos Group &amp; Xplore Group: for delivering expertise in areas other than AWS</li>
</ul>

		</div>
	</div>

<div id="vc-sep-6ac51df3875fd" class="vc_separator wpb_content_element vc_separator_align_center vc_sep_width_100 vc_sep_pos_align_center vc_separator_no_text vc_sep_color_grey  wpb_content_element" ><span class="vc_sep_holder vc_sep_holder_l"><span  class="vc_sep_line"></span></span><span class="vc_sep_holder vc_sep_holder_r"><span  class="vc_sep_line"></span></span>
</div></div></div></div></div><div class="vc_row-full-width vc_clearfix"></div><div id="ut-row-6ac51df387d65" data-vc-full-width="true" data-vc-full-width-init="false" class="vc_row wpb_row vc_row-fluid vc_column-gap-0 ut-row-6ac51df387d72" ><div class="wpb_column vc_column_container vc_col-sm-12" ><div id="ut_inner_column_6ac51df3882bc" class="vc_column-inner " ><div class="wpb_wrapper"><style type="text/css">#ut_title_divider_6ac51df38833c { letter-spacing: 0em; }</style><h3 id="ut_title_divider_6ac51df38833c" class="bklyn-title-divider  bklyn-divider-style-4 bklyn-title-divider-left bklyn-title-divider-tablet-left bklyn-title-divider-mobile-left"  ><span>8. Why would you engage us?</span></h3>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>When you decide to work with us, you’ll be working with a team of AWS Certified Professionals that have the highest level of demonstrated expertise and skills using the AWS Cloud:</p>
<ul>
<li>We can do the heavy lifting for you</li>
<li>We’ll make sure you only pay what you need</li>
<li>We can lower the cost of your ‘migration bubble’</li>
<li>We can assist in accelerating your projects, so you’ll be able to reach your deadlines</li>
<li>We can educate your staff</li>
<li>We can take care of your AWS environment 24/7</li>
</ul>

		</div>
	</div>

<div id="vc-sep-6ac51df3886b0" class="vc_separator wpb_content_element vc_separator_align_center vc_sep_width_100 vc_sep_pos_align_center vc_separator_no_text vc_sep_color_grey  wpb_content_element" ><span class="vc_sep_holder vc_sep_holder_l"><span  class="vc_sep_line"></span></span><span class="vc_sep_holder vc_sep_holder_r"><span  class="vc_sep_line"></span></span>
</div></div></div></div></div><div class="vc_row-full-width vc_clearfix"></div><div id="ut-row-6ac51df388e74" data-vc-full-width="true" data-vc-full-width-init="false" class="vc_row wpb_row vc_row-fluid vc_column-gap-0 ut-row-6ac51df388e81" ><div class="wpb_column vc_column_container vc_col-sm-12" ><div id="ut_inner_column_6ac51df389621" class="vc_column-inner " ><div class="wpb_wrapper"><style type="text/css">#ut_title_divider_6ac51df3896e0 { letter-spacing: 0em; }</style><h3 id="ut_title_divider_6ac51df3896e0" class="bklyn-title-divider  bklyn-divider-style-4 bklyn-title-divider-left bklyn-title-divider-tablet-left bklyn-title-divider-mobile-left"  ><span>9. CSF</span></h3>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>We apply the “Common Sense Framework” (CSF) on a daily basis.</p>
<p>Although we are ISO/IEC 27001 certified for Information Security to comply with the highest security standards and combine several IT methodologies (ITIL, Agile, DevOps, Prince 2,…), the most important framework we use is CSF. CSF is and always will be the backbone of Cloudar. Every person, situation, customer or project is different, so we need to be able to adapt quickly and apply common sense wherever we can. Common sense enables us to be very flexible and allows us to anticipate very fast in every situation.</p>
<p>CSF is here to stay!</p>
<p>&nbsp;</p>
<p><strong><span style="color: #808080;"><em>Note: In the Flemish part of Belgium, CSF is also known as &#8220;Gezond Boerenverstand&#8221;</em></span></strong></p>

		</div>
	</div>

<div id="vc-sep-6ac51df389c38" class="vc_separator wpb_content_element vc_separator_align_center vc_sep_width_100 vc_sep_pos_align_center vc_separator_no_text vc_sep_color_grey  wpb_content_element" ><span class="vc_sep_holder vc_sep_holder_l"><span  class="vc_sep_line"></span></span><span class="vc_sep_holder vc_sep_holder_r"><span  class="vc_sep_line"></span></span>
</div></div></div></div></div><div class="vc_row-full-width vc_clearfix"></div><div id="ut-row-6ac51df38a56b" data-vc-full-width="true" data-vc-full-width-init="false" class="vc_row wpb_row vc_row-fluid vc_column-gap-0 ut-row-6ac51df38a580" ><div class="wpb_column vc_column_container vc_col-sm-12" ><div id="ut_inner_column_6ac51df38ad7c" class="vc_column-inner " ><div class="wpb_wrapper"><style type="text/css">#ut_title_divider_6ac51df38ae4a { letter-spacing: 0em; }</style><h3 id="ut_title_divider_6ac51df38ae4a" class="bklyn-title-divider  bklyn-divider-style-4 bklyn-title-divider-left bklyn-title-divider-tablet-left bklyn-title-divider-mobile-left"  ><span>10. The future</span></h3>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Well, that’s a tricky one…</p>
<p>In this ever-changing world, who knows what the future might bring? It has been our goal from day one to become one of the leading AWS partners in the EMEA region, and I think we can say that we did a good job so far.</p>
<p>For the following years, we’ll keep on growing as a company, expand our customer base and explore new areas, just as we always did before. Now is not the time to lay back and think the journey is finished. In fact, I believe our journey has only begun; with so much opportunities in front of us, it&#8217;s time to ramp things up a gear!</p>
<p>To quote Mario Andretti; “If everything seems under control, you’re not going fast enough…”</p>

		</div>
	</div>

<div id="vc-sep-6ac51df38b3ba" class="vc_separator wpb_content_element vc_separator_align_center vc_sep_width_100 vc_sep_pos_align_center vc_separator_no_text vc_sep_color_grey  wpb_content_element" ><span class="vc_sep_holder vc_sep_holder_l"><span  class="vc_sep_line"></span></span><span class="vc_sep_holder vc_sep_holder_r"><span  class="vc_sep_line"></span></span>
</div></div></div></div></div><div class="vc_row-full-width vc_clearfix"></div><a data-id="section-without-id" class="ut-vc-offset-anchor-bottom" name="section-without-id"></a></section><div class="vc_row-full-width vc_clearfix"></div>
</div><p>The post <a href="https://cloudar.be/awsblog/10-random-things-you-might-not-have-known-about-cloudar/">10 random things you probably didn&#8217;t know about Cloudar</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Let&#8217;s trash talk!</title>
		<link>https://cloudar.be/awsblog/lets-trash-talk/</link>
		
		<dc:creator><![CDATA[Michiel Vanderlinden]]></dc:creator>
		<pubDate>Mon, 23 Mar 2020 12:17:59 +0000</pubDate>
				<category><![CDATA[AWS Blog]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[cloudformation]]></category>
		<category><![CDATA[cloudwatch]]></category>
		<category><![CDATA[Lambda]]></category>
		<category><![CDATA[SAM]]></category>
		<category><![CDATA[sns]]></category>
		<guid isPermaLink="false">https://www.cloudar.be/?p=16571</guid>

					<description><![CDATA[<p>Hi all, in this blogpost I will give a brief overview of how I used AWS to remind me to take out the trash. It’s a familiar scene: as you’re waking up or making your morning coffee, you hear the garbage truck roaring away outside when you suddenly realize your garbage bags are still rotting [&#8230;]</p>
<p>The post <a href="https://cloudar.be/awsblog/lets-trash-talk/">Let&#8217;s trash talk!</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Hi all, in this blogpost I will give a brief overview of how I used AWS to remind me to take out the trash.</p>
<p>It’s a familiar scene: as you’re waking up or making your morning coffee, you hear the garbage truck roaring away outside when you suddenly realize your garbage bags are still rotting away in the garage. Do you run after the truck like a lunatic, even though it’s too late (of course I’ve never done this, but I’ve heard it’s a thing)? Or do you just let it go and let the garbage fester even longer? Either way, it’s a frustrating start to the day.</p>
<p>Luckily for me I live in the modern and very civilised province of Limburg of Belgium where the local government has made a website available with a downloadable calendar showing all dates the garbage truck comes along: so handy! They even provide the calendar in a number of digital formats, including iCal. I could just import this into my phone and set an alert on it, but where’s the fun in that? After some fiddling around or “reverse engineering” as they call it, I found out that the data for the calendar files was provided by an undocumented but publicly available API.</p>
<p>Being the sucker for coding up and fooling around with APIs that I am (and given my state of utter boredom while under full lockdown in Belgium) I decided to code up a project based on this API that would send me an SMS notification the evening before garbage collection. Because that’s my idea of fun. And that way I would be reminded to take out the trash on time and keep my garage clean.</p>
<p>Want to know this neat trick to save you from rubbish resentment? Read on!</p>
<p><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-16575" src="https://cloudar.be/wp-content/uploads/2020/03/1-650x433.png" alt="reverseengineering" width="650" height="433" srcset="https://cloudar.be/wp-content/uploads/2020/03/1-650x433.png 650w, https://cloudar.be/wp-content/uploads/2020/03/1-1300x867.png 1300w, https://cloudar.be/wp-content/uploads/2020/03/1-325x217.png 325w" sizes="auto, (max-width: 650px) 100vw, 650px" /></p>
<p>So for this project I partly used the AWS SAM framework and set up a CodePipeline to deploy my code changes instantly on AWS (stay tuned for a future blogpost on this).</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-16578 size-thumbnail" src="https://cloudar.be/wp-content/uploads/2020/03/pipeline-325x217.png" alt="codepipeline" width="325" height="217" srcset="https://cloudar.be/wp-content/uploads/2020/03/pipeline-325x217.png 325w, https://cloudar.be/wp-content/uploads/2020/03/pipeline-650x433.png 650w" sizes="auto, (max-width: 325px) 100vw, 325px" /></p>
<p>First let’s code up the AWS SAM template file containing the necessary resources for this project.</p>
<p>The resources I used are:</p>
<ul>
<li>Type: AWS::Events::Rule<br />
A Cloudwatch event rule to invoke a lambda each evening around 8.</li>
<li>Type: AWS::Lambda::Permission<br />
To give the Cloudwatch event rule permissions to invoke the lambda.</li>
<li>Type: AWS::Logs::LogGroup<br />
A log group for the lambda logs.</li>
<li>Type: AWS::Serverless::Function<br />
The lambda that will run the show.</li>
<li>Type: AWS::IAM::Role<br />
An IAM role for the lambda to have the necessary rights like accessing SNS for the SMS notification.</li>
</ul>
<p><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-16579" src="https://cloudar.be/wp-content/uploads/2020/03/template-650x433.png" alt="template" width="650" height="433" srcset="https://cloudar.be/wp-content/uploads/2020/03/template-650x433.png 650w, https://cloudar.be/wp-content/uploads/2020/03/template-325x217.png 325w" sizes="auto, (max-width: 650px) 100vw, 650px" /></p>
<p>Next we code up the lambda that will call the API and send us an SMS.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-16580" src="https://cloudar.be/wp-content/uploads/2020/03/code-650x433.png" alt="code" width="650" height="433" srcset="https://cloudar.be/wp-content/uploads/2020/03/code-650x433.png 650w, https://cloudar.be/wp-content/uploads/2020/03/code-1300x867.png 1300w, https://cloudar.be/wp-content/uploads/2020/03/code-325x217.png 325w" sizes="auto, (max-width: 650px) 100vw, 650px" /></p>
<p>The API provides event data for each month by just requesting the year and month in the url path like this ‘/2020-03’. So we can easily get the data for the current month and loop through its events, checking whether any are occurring the next morning. If so we receive an SMS notifying us (note that you can provide the number of your girlfriend here, but it’s not recommended as I have found out it isn’t that effective).</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-16581 size-thumbnail" src="https://cloudar.be/wp-content/uploads/2020/03/watch-325x217.jpg" alt="result" width="325" height="217" srcset="https://cloudar.be/wp-content/uploads/2020/03/watch-325x217.jpg 325w, https://cloudar.be/wp-content/uploads/2020/03/watch-650x433.jpg 650w, https://cloudar.be/wp-content/uploads/2020/03/watch-1300x867.jpg 1300w" sizes="auto, (max-width: 325px) 100vw, 325px" /></p>
<p>And that’s all folks!</p>
<p>&nbsp;</p>
<p>I’m aware that this trick is no rocket science, and that this isn’t even a full guide to get to the same result (leave a comment if you want some more details), but I thought it would be fun to share how I resolved one of life’s little problems using AWS.</p>
<p>As I’m moving toward two years of professional experience using the platform, I’m still amazed at how easily you can code some services together and create a working, scalable and highly available project in a matter of minutes or hours.</p>
<p>Hope you liked my trashy tale &#8211; keep your garages clean and your heads in the cloud!</p>
<p>The post <a href="https://cloudar.be/awsblog/lets-trash-talk/">Let&#8217;s trash talk!</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Validate ACM certificates in Cloudformation</title>
		<link>https://cloudar.be/awsblog/validate-acm-certificates-in-cloudformation/</link>
		
		<dc:creator><![CDATA[Michiel Vanderlinden]]></dc:creator>
		<pubDate>Wed, 08 Jan 2020 08:03:21 +0000</pubDate>
				<category><![CDATA[AWS Blog]]></category>
		<category><![CDATA[acm]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[automatically validate acm]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[cloudformation]]></category>
		<category><![CDATA[custom resource]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">https://www.cloudar.be/?p=16482</guid>

					<description><![CDATA[<p>Intro: We will use a custom resource written in Python that will be able to create ACM certificates with DNS validation. The custom resource will also automatically validate this certificate if the validation domain is managed by a Route53 hosted zone. We will also be able to specify an AWS region to create the certificate [&#8230;]</p>
<p>The post <a href="https://cloudar.be/awsblog/validate-acm-certificates-in-cloudformation/">Validate ACM certificates in Cloudformation</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Intro:</h3>
<p>We will use a custom resource written in Python that will be able to create ACM certificates with DNS validation. The custom resource will also automatically validate this certificate if the validation domain is managed by a Route53 hosted zone. We will also be able to specify an AWS region to create the certificate in, this region is independent of the Cloudformation stack region which for example makes it possible to deploy a certificate in region us-east-1 (to use with cloudfront) while deploying the stack in region eu-west-1. The resource will also provide the certificate arn as an output parameter so it can be used by other resources in the stack. Lastly when you delete the custom resource it will cleanup all validation records and the certificate itself.</p>
<h3>Requirements:</h3>
<ul>
<li>Python3</li>
<li>Pip</li>
<li>Bash</li>
<li>Zip</li>
<li>An S3 bucket to deploy the custom resource package on</li>
<li>A hosted zone for the validation record</li>
</ul>
<h3>Implementation:</h3>
<p>Let&#8217;s get started by downloading all the required code from our <a href="https://github.com/WeAreCloudar/cloudar_acm_plus">GitHub repository.</a></p>
<h4>Step1: Uploading the custom resource package</h4>
<p>In this step we are going to prepare the custom resource package and upload it to an S3 bucket.</p>
<p>First we go into the custom resource directory.<br />
<code class="" data-line="">cd cloudar-acm-plus-custom-resource</code></p>
<p>Next we execute a script to install all required dependencies.<br />
<code class="" data-line="">sh install_dependencies</code></p>
<p>Now we are ready to create the package.<br />
<code class="" data-line="">sh pack_custom_resource</code></p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-16487 " src="https://cloudar.be/wp-content/uploads/2020/01/auto_validate_acm_package_commands.png" alt="package commands" width="595" height="378" srcset="https://cloudar.be/wp-content/uploads/2020/01/auto_validate_acm_package_commands.png 1120w, https://cloudar.be/wp-content/uploads/2020/01/auto_validate_acm_package_commands-768x488.png 768w" sizes="auto, (max-width: 595px) 100vw, 595px" /></p>
<p>You will now find the zipfile &#8216;cloudar-acm-plus-custom-resource.zip&#8217; in &#8216;cloudar-acm-plus-custom-resource/packed&#8217;, upload this zip file to your S3 bucket.</p>
<h4>Step2: Creating a Cloudformation template</h4>
<p>Now we can create a Cloudformation template in which we use this custom resource to create an ACM certificate.<br />
You can use the template &#8216;cfn.yaml&#8217; as an example.</p>
<p>First create a Lambda resource as following<br />
<img loading="lazy" decoding="async" class="alignnone wp-image-16492 " src="https://cloudar.be/wp-content/uploads/2020/01/auto_validate_acm_cfn_lambda.png" alt="auto validate lambda" width="520" height="475" srcset="https://cloudar.be/wp-content/uploads/2020/01/auto_validate_acm_cfn_lambda.png 1042w, https://cloudar.be/wp-content/uploads/2020/01/auto_validate_acm_cfn_lambda-768x702.png 768w, https://cloudar.be/wp-content/uploads/2020/01/auto_validate_acm_cfn_lambda-788x720.png 788w" sizes="auto, (max-width: 520px) 100vw, 520px" /></p>
<p>Use the name of your bucket for the property &#8216;S3Bucket&#8217; .</p>
<p>Next we create the custom resource.<br />
<img loading="lazy" decoding="async" class="alignnone wp-image-16493 " src="https://cloudar.be/wp-content/uploads/2020/01/auto_validate_cfn_cr.png" alt="auto validate cfn cr" width="454" height="287" srcset="https://cloudar.be/wp-content/uploads/2020/01/auto_validate_cfn_cr.png 832w, https://cloudar.be/wp-content/uploads/2020/01/auto_validate_cfn_cr-768x486.png 768w" sizes="auto, (max-width: 454px) 100vw, 454px" /></p>
<p>We can set the following properties here:</p>
<ul>
<li>DomainName: (REQUIRED type:String) The domain name for the acm certificate.</li>
<li>AdditionalDomains: (OPTIONAL type:List) Additional domains for the acm certificate</li>
<li>ValidationDomain: (REQUIRED type:string) The domain name for the validation domain of the acm certificate</li>
<li>HostedZoneId: (REQUIRED type:string) The hosted zone id for the validation domain of the acm certificate</li>
<li>CertificateRegion: (REQUIRED type:string) The region to deploy the acm certificate in</li>
<li>IdempotencyToken: (REQUIRED type:string pattern: \w+) The idempotency token for the create call of the acm certificate doc: <a href="https://docs.aws.amazon.com/acm/latest/APIReference/API_RequestCertificate.html#ACM-RequestCertificate-request-IdempotencyToken" rel="nofollow">https://docs.aws.amazon.com/acm/latest/APIReference/API_RequestCertificate.html#ACM-RequestCertificate-request-IdempotencyToken</a></li>
<li>CertificateTags: (OPTIONAL type:list) The tags for the acm certificate</li>
</ul>
<p>In order for the DNS record cleanup and delete certificate functionality to work when you delete the Cloudformation stack it is important to set the following output.<br />
<img loading="lazy" decoding="async" class="alignnone wp-image-16495 " src="https://cloudar.be/wp-content/uploads/2020/01/auto_validate_cfn_output.png" alt="auto validate cfn output" width="666" height="98" srcset="https://cloudar.be/wp-content/uploads/2020/01/auto_validate_cfn_output.png 1238w, https://cloudar.be/wp-content/uploads/2020/01/auto_validate_cfn_output-768x113.png 768w" sizes="auto, (max-width: 666px) 100vw, 666px" /></p>
<p>As you can see we can access the arn of the certifcate created by the custom resource with the GetAtt function on the resource.<br />
<code class="" data-line="">!GetAtt CreateCertificateCustomResource.certificate_arn</code></p>
<h4>Step3: Deploy the cloudformation</h4>
<p>Finally the only thing left to do is deploy the Cloudformation template.<br />
Once the deploy is started Cloudformation will create the Lambda containing the code from step1 and start a custom resource which will create the certificate and validation records. Once the status of the certificate becomes &#8216;ISSUED&#8217; the custom resource will finish successfully and report the arn of the certificate back to Cloudformation. We can now further use this arn in other resources in the Cloudformation template.<br />
When you delete the Cloudformation stack, the custom resource will cleanup the validation records in the hosted zone and delete the certificate.</p>
<p>CREATE_COMPLETE</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-16496 size-full" src="https://cloudar.be/wp-content/uploads/2020/01/auto_validate_acm_icon.png" alt="auto validate acm icon" width="300" height="259" /></p>
<p>The post <a href="https://cloudar.be/awsblog/validate-acm-certificates-in-cloudformation/">Validate ACM certificates in Cloudformation</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>$ aws help # things you might not know about the AWS CLI</title>
		<link>https://cloudar.be/awsblog/aws-help-things-you-might-not-know-about-the-aws-cli/</link>
		
		<dc:creator><![CDATA[Ben Bridts]]></dc:creator>
		<pubDate>Sat, 16 Nov 2019 15:23:39 +0000</pubDate>
				<category><![CDATA[AWS Blog]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[aws cli]]></category>
		<guid isPermaLink="false">https://www.cloudar.be/?p=16399</guid>

					<description><![CDATA[<p>I recently gave a presentation at The AWS Community Summit in London, where I tried to talk about as many cool features of the AWS CLI as I could in 10 minutes. That recording is now available and you can watch it here (the slides can be found online too). Video isn&#8217;t the best reference [&#8230;]</p>
<p>The post <a href="https://cloudar.be/awsblog/aws-help-things-you-might-not-know-about-the-aws-cli/">$ aws help # things you might not know about the AWS CLI</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I recently gave a presentation at <a href="https://www.comsum.co.uk/">The AWS Community Summit in London</a>, where I tried to talk about as many cool features of the AWS CLI as I could in 10 minutes. <a href="https://www.youtube.com/watch?v=1tl-J_lbKso">That recording is now available and you can watch it here</a> (<a href="https://speakerdeck.com/benbridts/aws-help-number-things-you-might-not-know-about-the-aws-cli-5d0a25fb-bf79-4ff7-82f0-31cfcb06607b">the slides can be found online too</a>).</p>
<p>Video isn&#8217;t the best reference material if you want to quickly find one of those tips, so I will add a quick summary of them in this blogpost.</p>
<ul>
<li>By specifying <code class="" data-line="">source_profile</code> in your <code class="" data-line="">.aws/config</code> file, you can tell the AWS CLI to use credentials from one profile to assume the <code class="" data-line="">role_arn</code> you configure in another profile. This also works in a chain of profiles and can include asking for an MFA token.</li>
<li>You don&#8217;t have to get credentials from the <code class="" data-line="">.aws/credentials</code> file, you can tell the CLI to get them from environment variables (this also works if you do not specify anything), instance metadata, or the ECS container role.</li>
<li>There is a <code class="" data-line="">--debug</code> flag, which gives you a lot of output to see everything that&#8217;s happening behind the scenes.</li>
<li>In most cases you do not want that full debug output. <a href="https://docs.aws.amazon.com/cli/latest/reference/history/index.html">Enabling history and using <code class="" data-line="">aws history show</code></a> will give you the most relevant parts in an easy to read format.</li>
<li>The CLI has the annoying habit of resolving all urls you give it. You can disable this with <code class="" data-line="">aws configure set cli_follow_urlparam false</code>.</li>
<li>You can make S3 uploads and downloads go a lot faster by tweaking the <code class="" data-line="">max_concurrent_requests</code>. Or make it not exceed a certain speed with <code class="" data-line="">max_bandwith</code>. <a href="https://docs.aws.amazon.com/cli/latest/topic/s3-config.html#cli-aws-help-s3-config">See here for all options</a>.</li>
<li>The cli supports defining your own aliases. Look in <a href="https://github.com/awslabs/awscli-aliases">this awslabs repository</a> for examples.</li>
<li>Instead of relying on an external tool (that needs to be installed), you can get specific fields from the response by using <code class="" data-line="">--query</code>. Combine this with <code class="" data-line="">--output text</code> to strip json-specific syntax.</li>
<li>You can use completion in different shells.</li>
<li>There are waiters you can use directly from the command line, so you do not have to write your own check-sleep loops in bash.</li>
<li>Other useful cli tools include <a href="https://github.com/aws-cloudformation/cfn-python-lint">cfn-lint</a>, <a href="https://github.com/aws/aws-encryption-sdk-cli/">aws-encryption-sdk</a>, <a href="https://github.com/awslabs/aws-shell">aws-shell</a> and <a href="https://github.com/99designs/aws-vault">aws-vault</a></li>
<li><a href="https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html">There is a version 2 coming</a>.</li>
</ul>
<p>The post <a href="https://cloudar.be/awsblog/aws-help-things-you-might-not-know-about-the-aws-cli/">$ aws help # things you might not know about the AWS CLI</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Discover yourself</title>
		<link>https://cloudar.be/awsblog/discover-yourself/</link>
					<comments>https://cloudar.be/awsblog/discover-yourself/#respond</comments>
		
		<dc:creator><![CDATA[Michiel Vanderlinden]]></dc:creator>
		<pubDate>Fri, 16 Nov 2018 16:27:28 +0000</pubDate>
				<category><![CDATA[AWS Blog]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[AWS Rekognition]]></category>
		<category><![CDATA[Discover pictures]]></category>
		<category><![CDATA[face detection]]></category>
		<category><![CDATA[facial recognition]]></category>
		<category><![CDATA[searching images]]></category>
		<guid isPermaLink="false">https://cloudar.be/?p=9459</guid>

					<description><![CDATA[<p>Do you know the burden? Do you feel the pain? Returning home from a great music festival or a fantastic party, a great time and nothing to remember it by. There must be some pictures. You search the website or Facebook page of the event and there it is, an album full of memories of [&#8230;]</p>
<p>The post <a href="https://cloudar.be/awsblog/discover-yourself/">Discover yourself</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Do you know the burden? Do you feel the pain? Returning home from a great music festival or a fantastic party, a great time and nothing to remember it by. There must be some pictures. You search the website or Facebook page of the event and there it is, an album full of memories of that great time, 1697 of them! The date is November 12 2018 and nobody has time to search for embarrassing pictures of themselves. But there is hope, these days we are not only cursed with the burden of little time but blessed with the gift of technology as well, the gift of cloud computing for everyone, the gift of AWS Rekognition, our lord, our savior.</p>
<p>In this blog we will use AWS Rekognition to search for ourselves in a collection of pictures.</p>
<p>First we need to acquire this collection, I simply used a Chrome extension to download all pictures of a specific Facebook album.</p>
<p>Next, we will create an S3 bucket to store the pictures, because this project reminds me a bit of where’s waldo I will name the bucket ‘awesome-waldo-bucket’.</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-9463" src="https://cloudar.be/wp-content/uploads/2018/11/createBucket.png" alt="" width="331" height="369" /></p>
<p>Now we will upload all the pictures to this bucket using the command.<br />
<i></i></p>
<pre class="lang:default decode:true ">aws s3 sync . s3://awesome-waldo-bucket</pre>
<p>Enjoy the terminal doing its job, casual snap some screenshots to non-IT friends. It scores well. #hackerMan</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-9464" src="https://cloudar.be/wp-content/uploads/2018/11/uploadS3.png" alt="" width="607" height="373" /></p>
<p>While the pictures are uploading we will create the AWS Rekognition collection with the following command.</p>
<pre class="lang:default decode:true ">aws rekognition create-collection –collection-id awesome-waldo-collection</pre>
<p>After we create our collection and the pictures are uploaded we will use a Python script to add faces to the collection. The script will loop all the pictures in the S3 bucket and send them to the Rekognition collection with the ‘index faces’ operation, when a picture is added to the collection AWS will automatically process it and detect the faces, these faces will be stored in a map which we will be able to query later.</p>
<p><a href="https://docs.aws.amazon.com/rekognition/latest/dg/add-faces-to-collection-procedure.html">AWS documentation on this operation.</a></p>
<p>I added a hard-coded counter in this script just to follow progress.</p>
<pre class="lang:python decode:true ">import boto3
from boto.s3.connection import S3Connection

conn = S3Connection()
bucket = conn.get_bucket('awesome-waldo-bucket')
count = 1

for key in bucket.list():
    print("Added " + str(count) + " pictures out of 1697...")
    count = count + 1

    bucket='awesome-waldo-bucket'
    collectionId='awesome-waldo-collection'
    photo=key.name.encode('utf-8')
    client=boto3.client('rekognition')
    response=client.index_faces
    response=client.index_faces(CollectionId=collectionId,
                                Image={'S3Object':{'Bucket':bucket,'Name':photo}},
                                ExternalImageId=photo,
                                QualityFilter="AUTO")</pre>
<p>Next execute the Python script.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-9465" src="https://cloudar.be/wp-content/uploads/2018/11/addingPicturesToCollection.png" alt="" width="290" height="81" /></p>
<p>You will find that it takes a very long time to process this number of pictures. For the sake of keeping it simple we did not do any batch processing in this blog but it is possible.</p>
<p><a href="https://aws.amazon.com/blogs/machine-learning/classify-a-large-number-of-images-with-amazon-rekognition-and-aws-batch/">AWS documentation for batch processing.</a></p>
<p>After the images are done processing find a clear and recent picture of yourself, name it ‘me.png’ and upload it to the S3 bucket.</p>
<p>Be sure that it is a clear picture of your face and that you are the only one in it.<br />
For example.</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-9466" src="https://cloudar.be/wp-content/uploads/2018/11/me.png" alt="" width="278" height="293" srcset="https://cloudar.be/wp-content/uploads/2018/11/me.png 766w, https://cloudar.be/wp-content/uploads/2018/11/me-683x720.png 683w" sizes="auto, (max-width: 278px) 100vw, 278px" /></p>
<p>Now that we have all elements in place we can use the following command to retrieve faces matching our sample.</p>
<p><span class="lang:default decode:true crayon-inline">aws rekognition search-faces-by-image &#8211;image &#8216;{&#8220;S3Object&#8221;:{&#8220;Bucket&#8221;:&#8221;awesome-waldo-bucket&#8221;,&#8221;Name&#8221;:&#8221;me.png&#8221;}}&#8217; &#8211;face-match-threshold 70 &#8211;collection-id &#8220;awesome-waldo-collection&#8221;</span></p>
<p>You can play with the ‘—face-match-threshold’ to get more or less correct results. The command will return json containing data on the matched faces.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-9467" src="https://cloudar.be/wp-content/uploads/2018/11/resultJson.png" alt="" width="474" height="354" /></p>
<p>You can repeat this with different sample pictures of your face to get more results.</p>
<p>And now the moment of truth, as it turns out I was not that popular with the photographers on the festival this year as I’m only in two pictures. Better luck next year!</p>
<p>As you can see, AWS Rekognition is a great service to find yourself in a picture even in a big crowd!</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-9468" src="https://cloudar.be/wp-content/uploads/2018/11/result1.jpg" alt="" width="1896" height="1199" srcset="https://cloudar.be/wp-content/uploads/2018/11/result1.jpg 1896w, https://cloudar.be/wp-content/uploads/2018/11/result1-768x486.jpg 768w, https://cloudar.be/wp-content/uploads/2018/11/result1-1536x971.jpg 1536w, https://cloudar.be/wp-content/uploads/2018/11/result1-1139x720.jpg 1139w" sizes="auto, (max-width: 1896px) 100vw, 1896px" /></p>
<p>This picture surprised me the most, even when your face is very blury AWS Rekognition can still find you! What a gift of technology indeed!</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-9469" src="https://cloudar.be/wp-content/uploads/2018/11/result2.jpg" alt="" width="1694" height="1094" srcset="https://cloudar.be/wp-content/uploads/2018/11/result2.jpg 1694w, https://cloudar.be/wp-content/uploads/2018/11/result2-768x496.jpg 768w, https://cloudar.be/wp-content/uploads/2018/11/result2-1536x992.jpg 1536w, https://cloudar.be/wp-content/uploads/2018/11/result2-1115x720.jpg 1115w" sizes="auto, (max-width: 1694px) 100vw, 1694px" /></p>
<p>I hope this blog has given you some insight in the possibilities with AWS Rekognition and wish you the best of luck in finding yourself!</p>
<p>The post <a href="https://cloudar.be/awsblog/discover-yourself/">Discover yourself</a> appeared first on <a href="https://cloudar.be">Cloudar</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cloudar.be/awsblog/discover-yourself/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
