<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: LionelPJ</title>
    <description>The latest articles on DEV Community by LionelPJ (@lionelpj).</description>
    <link>https://dev.to/lionelpj</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F634990%2Fa8b858ca-b402-431f-97d7-a467b264f8ad.png</url>
      <title>DEV Community: LionelPJ</title>
      <link>https://dev.to/lionelpj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lionelpj"/>
    <language>en</language>
    <item>
      <title>A list of FAQs curated for the AWS Certified Data Analytics Specialty Exam</title>
      <dc:creator>LionelPJ</dc:creator>
      <pubDate>Tue, 14 Mar 2023 21:42:39 +0000</pubDate>
      <link>https://dev.to/aws-builders/a-list-of-faqs-curated-for-the-aws-certified-data-specialty-exam-2fn5</link>
      <guid>https://dev.to/aws-builders/a-list-of-faqs-curated-for-the-aws-certified-data-specialty-exam-2fn5</guid>
      <description>&lt;p&gt;For those who are preparing for the data analytics specialty exam - did you know that some of the exam questions may be from FAQ's?&lt;/p&gt;

&lt;p&gt;This is a curated list of FAQ's based on the latest &lt;a href="https://d1.awsstatic.com/training-and-certification/docs-data-analytics-specialty/AWS-Certified-Data-Analytics-Specialty_Exam-Guide.pdf"&gt;exam guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So here it goes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Analytics:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/athena/faqs/"&gt;Amazon Athena&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/cloudsearch/faqs/"&gt;Amazon CloudSearch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/opensearch-service/faqs/"&gt;Amazon Elasticsearch Service (Amazon ES)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/emr/faqs/"&gt;Amazon EMR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/glue/faqs/"&gt;AWS Glue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/kinesis/data-streams/faqs/"&gt;Amazon Kinesis (excluding Kinesis Video Streams)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/lake-formation/faqs/"&gt;AWS Lake Formation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/msk/faqs/"&gt;Amazon Managed Streaming for Apache Kafka&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/quicksight/resources/faqs/"&gt;Amazon QuickSight&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/redshift/faqs/"&gt;Amazon Redshift&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Application Integration:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/amazon-mq/faqs/"&gt;Amazon MQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/sns/faqs/"&gt;Amazon Simple Notification Service (Amazon SNS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/sqs/faqs/"&gt;Amazon Simple Queue Service (Amazon SQS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/step-functions/faqs/"&gt;AWS Step Functions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Compute:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/ec2/faqs/"&gt;Amazon EC2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/elasticloadbalancing/faqs/"&gt;Elastic Load Balancing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/lambda/faqs/"&gt;AWS Lambda&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Customer Engagement:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/ses/faqs/"&gt;Amazon Simple Email Service (Amazon SES)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Database:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/documentdb/faqs/"&gt;Amazon DocumentDB (with MongoDB compatibility)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/dynamodb/faqs/"&gt;Amazon DynamoDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/elasticache/faqs/"&gt;Amazon ElastiCache&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/neptune/faqs/"&gt;Amazon Neptune&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/rds/faqs/"&gt;Amazon RDS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/redshift/faqs/"&gt;Amazon Redshift&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/timestream/faq/"&gt;Amazon Timestream&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Management and Governance:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/autoscaling/faqs/"&gt;AWS Auto Scaling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/cloudformation/faqs/"&gt;AWS CloudFormation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/cloudtrail/faqs/"&gt;AWS CloudTrail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/cloudwatch/faqs/"&gt;Amazon CloudWatch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/premiumsupport/faqs/#AWS_Trusted_Advisor"&gt;AWS Trusted Advisor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Machine Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/sagemaker/faqs/"&gt;Amazon SageMaker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Migration and Transfer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/dms/faqs/"&gt;AWS Database Migration Service (AWS DMS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/datasync/faqs/"&gt;AWS DataSync&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/snowball/faqs/"&gt;AWS Snowball&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/aws-transfer-family/faqs/"&gt;AWS Transfer for SFTP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Networking and Content Delivery:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/api-gateway/faqs/"&gt;Amazon API Gateway&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/directconnect/faqs/"&gt;AWS Direct Connect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/vpc/faqs/"&gt;Amazon VPC (and associated features)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Security, Identity, and Compliance:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/appsync/faqs/"&gt;AWS AppSync&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/artifact/faq/"&gt;AWS Artifact&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/certificate-manager/faqs/"&gt;AWS Certificate Manager (ACM)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/cloudhsm/faqs/"&gt;AWS CloudHSM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/cognito/faqs/"&gt;Amazon Cognito&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/iam/faqs/"&gt;AWS Identity and Access Management (IAM)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/kms/faqs/"&gt;AWS Key Management Service (AWS KMS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/macie/faq/"&gt;Amazon Macie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/secrets-manager/faqs/"&gt;AWS Secrets Manager&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/iam/identity-center/faqs/"&gt;AWS Single Sign-On&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Storage:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/ebs/faqs/"&gt;Amazon Elastic Block Store (Amazon EBS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/s3/faqs/"&gt;Amazon S3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/s3/faqs/"&gt;Amazon S3 Glacier&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Happy Learning!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Managing on-prem systems with AWS Systems Manager : a Hands-On Guide</title>
      <dc:creator>LionelPJ</dc:creator>
      <pubDate>Thu, 20 Oct 2022 22:38:42 +0000</pubDate>
      <link>https://dev.to/aws-builders/managing-on-prem-systems-with-systems-manager-a-hands-on-guide-4c6g</link>
      <guid>https://dev.to/aws-builders/managing-on-prem-systems-with-systems-manager-a-hands-on-guide-4c6g</guid>
      <description>&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@florian_gagnepain?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Florian Gagnepain&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/control?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;In my last article I shared with you how to enable &lt;a href="https://dev.to/aws-builders/connecting-to-private-ec2-instances-using-systems-manager-a-hands-on-guide-33m"&gt;ssm&lt;/a&gt; on your account. Today, we are going to see how to manage on-prem systems using SSM.&lt;/p&gt;

&lt;h4&gt;
  
  
  My setup:
&lt;/h4&gt;

&lt;p&gt;If you don't have an on-prem box, you may simulate the environment. Otherwise, please skip this section.&lt;/p&gt;

&lt;p&gt;For simulating an on-prem system, I downloaded VMWare Fusion (personal use &lt;a href="https://customerconnect.vmware.com/downloads/get-download?downloadGroup=FUS-PUBTP-22H2" rel="noopener noreferrer"&gt;image&lt;/a&gt;) for my MacBook Pro (Apple M1 Chipset). I also downloaded Debian (arm based &lt;a href="https://cdimage.debian.org/debian-cd/current/arm64/iso-cd/" rel="noopener noreferrer"&gt;image&lt;/a&gt;) as my linux OS that I plan to install within VMWare. These selections are very specific to my system. Feel free to make relevant choices based on your OS.&lt;/p&gt;

&lt;p&gt;In essence, you will need a virtual machine (and for which you can download either Oracle VirtualBox or VMWare) and any Linux or Windows image that you are comfortable with. &lt;br&gt;
To reduce redundancy, for this guide I will share my steps based on my system. I hope that you figure out the right options that work for you!&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1: Create an IAM Role For Hybrid Activation
&lt;/h4&gt;

&lt;p&gt;Let's create an IAM role for EC2 with the following attributes&lt;br&gt;
&lt;em&gt;Name : HybridActivation&lt;br&gt;
Permissions: AmazonEC2RoleForSSM&lt;br&gt;
Trust Relationship: change ec2 to ssm instead&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Your trust policy should now look similar to the one given below - &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "ssm.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
  
  
  Step 2: Create a Hybrid Activation
&lt;/h4&gt;

&lt;p&gt;Visit the Systems Manager page and click Hybrid Activations from the  menu on the left side (seen under Node Management).&lt;/p&gt;

&lt;p&gt;Provide the following details in the screen:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Description: ForLocalVm1&lt;br&gt;
Instance Limit: leave at 1&lt;br&gt;
IAM Role: select HybridActivation from existing roles&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now click Create activation button and copy the activation code and id into a scratch pad. You will need it in the next step to register the vm&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 3: Registering the on-prem system
&lt;/h4&gt;

&lt;p&gt;I assume by this time you have installed and you have your on-prem box ready. Login to the system with super user privileges. Visit the page &lt;a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html&lt;/a&gt; and click on the link specific to your underlying OS and follow the instructions to install the ssm agent. In my case its Debian with an install page as seen here - &lt;a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-deb.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-deb.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now after the installation steps, I would suggest to stop the agent with the command&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

systemctl stop amazon-ssm-agent


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Next, issue the registration command with the template&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

amazon-ssm-agent -register -code "pastCodeHere" -id "pasteIdHere" -region us-east-1


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;So if my Activation Code is apBIZ1Mz+RKDh+wgViz39d and Activation ID is 2a70c0a0-c2de-4f39-84ea-7cc17377e3a3 then the command would be &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

amazon-ssm-agent -register -code "apBIZ1Mz+RKDh+wgViz39d" -id "2a70c0a0-c2de-4f39-84ea-7cc17377e3a3" -region us-east-1


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now, start your agent again using the command&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

systemctl start amazon-ssm-agent


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
  
  
  Step 4: Verify using Systems Manager
&lt;/h4&gt;

&lt;p&gt;Visit Hybrid Activations inside Systems Manager, you should see your new instance listed there&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi34uviqgkicmcuuj3tob.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi34uviqgkicmcuuj3tob.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you can use Sessions Manager to login to the machine successfully!&lt;/p&gt;

&lt;p&gt;To verify that this is the same machine you could try any of the following commands on your ssm session and your virtual machine for comparison. They should be same.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

cat /etc/os-release
hostname
hostname -I


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Any command within the session can be used to add in preventive measures or control, based on your needs!&lt;/p&gt;

&lt;h4&gt;
  
  
  Next Steps
&lt;/h4&gt;

&lt;p&gt;Think about your on-prem environment and how it can be managed by the power of using Systems Manager to roll out changes across the environment or come up with your own innovative solutions.&lt;/p&gt;

&lt;p&gt;If you are here - &lt;strong&gt;&lt;em&gt;Congratulations&lt;/em&gt;&lt;/strong&gt;! &lt;br&gt;
You just learned how to manage a virtual machine using Systems Manager!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[about Lionel Pulickal]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lionel is a Solutions Architect who has worked in the IT industry since 1997. He has all the three AWS associate level exams, the Solution Architect Professional and Networking Specialty exams under his belt. He loves hands-on and is always willing to share the knowledge he has gained over the years.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>handson</category>
    </item>
    <item>
      <title>Connecting to private Ec2 Instances using Systems Manager - A Hands-On Guide</title>
      <dc:creator>LionelPJ</dc:creator>
      <pubDate>Thu, 10 Mar 2022 00:52:59 +0000</pubDate>
      <link>https://dev.to/aws-builders/connecting-to-private-ec2-instances-using-systems-manager-a-hands-on-guide-33m</link>
      <guid>https://dev.to/aws-builders/connecting-to-private-ec2-instances-using-systems-manager-a-hands-on-guide-33m</guid>
      <description>&lt;p&gt;Systems Manager is a wonderful service and has many untapped features!! One common feature that has become popular in the recent past is connecting to Ec2 instances using Session Manager (a feature of Systems Manager) instead of using ssh. To use Session Manager you must enable Systems Manager in your account. The &lt;a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up-ec2.html" rel="noopener noreferrer"&gt;setup guide&lt;/a&gt; for Systems Manager is very exhaustive and it’s not very clear on what’s the minimum that you require to enable it in your account. This article focuses on the minimal steps involved to do just that. We will go through what resources we plan on using, to build it. Instead  of using the console, we will use CloudFormation. I will assume that you have an existing network so my scripts work with them. In case this is a new account feel free to use my utility script to build a 3 tier network from scratch and then apply the script I provide within the resources. So, if you see me mention &lt;code&gt;first script&lt;/code&gt; in this article, I refer to this 3 tier network script, which you are free to reuse.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;My focus on CloudFormation is to automate the process and also to help those who are learning for the AWS exams to refer to a working sample. I could have done it in Terraform but I wanted to stick to AWS products and features instead.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;For those of you who are not familiar with the resources we are building using CloudFormation and its properties, I have added references in the resources section down below.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Prerequisites:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Log in as an IAM admin user or a role that has the permissions to run cloudformation. [This article is not heavily focused on the privilege of this logon identity. Feel free to make it least privileged if you need to. Our focus will be on enabling systems manager which is the main theme of the article.]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You need a VPC for this exercise. You can use an existing VPC with a minimum of 2 subnets. The default VPC also works but I would strongly advise against it for production systems. If you don’t have a VPC or want to create a new custom one for this exercise, check the resources section to build one before you enable systems manager.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Resources to Build
&lt;/h4&gt;

&lt;h5&gt;
  
  
  1. A new mySsmRole that does the following -
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Has a trust policy for ec2 &lt;/li&gt;
&lt;li&gt;Has 2 main managed policies attached namely -&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;u&gt;&lt;code&gt;AmazonSSMManagedInstanceCore&lt;/code&gt;&lt;/u&gt;&lt;br&gt;
This required trust policy enables an instance to use Systems Manager core service functionality. It provides minimum permissions which allow the instance to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* Register as a managed instance
* Send heartbeat information
* Send and receive messages for Run Command and Session Manager
* Retrieve State Manager association details
* Read parameters in Parameter Store
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This policy replaces the old &lt;em&gt;&lt;code&gt;AmazonEC2RoleforSSM&lt;/code&gt;&lt;/em&gt; policy and is &lt;strong&gt;&lt;em&gt;mandatory&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;code&gt;CloudWatchAgentServerPolicy&lt;/code&gt;&lt;/u&gt;&lt;br&gt;
This policy &lt;em&gt;enables&lt;/em&gt; the Amazon CloudWatch agent, by allowing access to &lt;em&gt;read&lt;/em&gt; instance information and &lt;em&gt;write&lt;/em&gt; it to CloudWatch Logs, Metrics and EventBridge. Permissions also grant access to &lt;em&gt;read Amazon EC2 tags, volumes, and CloudWatch configuration parameters in Parameter Store&lt;/em&gt;. You can also create a more restrictive policy that, for example, limits writing access to a specific CloudWatch Logs log stream. For more details, refer to the &lt;a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-iam-roles-for-cloudwatch-agent.html#create-iam-roles-for-cloudwatch-agent-roles" rel="noopener noreferrer"&gt;CloudWatch user guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;code&gt;AmazonSSMDirectoryServiceAccess&lt;/code&gt;&lt;/u&gt; [Only applicable for Windows users joining a Domain server]&lt;br&gt;
This instance trust policy enables a managed instance to seamlessly join a domain by providing access to the required AWS Directory Service API actions. This is optional. In my article, I am not going to add it.&lt;/p&gt;

&lt;p&gt;Now that you have some background information, lets build our script starting with the role&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Resources:
  MySsmRole:
    Type: AWS::IAM::Role
    Properties:
      Description: Role that allows SSM capability
      ManagedPolicyArns:
        - !Ref CWAgentServerPolicyArn
        - !Ref SSMManagedInstanceCoreArn
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - ec2.amazonaws.com
            Action:
              - 'sts:AssumeRole'
      Path: /
      Tags:
        - Key: Name
          Value: mySsmRole
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;notice the 2 managed policies that are attached and the trust policy for ec2&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Parameters:
  CWAgentServerPolicyArn:
    Type: String
    Default: 'arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy'
  SSMManagedInstanceCoreArn:
    Type: String
    Default: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;these default values were fetched by visiting the IAM page and manually copying the ARN's&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Note: Remember that CloudFormation adds prefixes and suffixes to &lt;code&gt;mySsmRole&lt;/code&gt; to make them unique during a deployment.&lt;/p&gt;

&lt;h5&gt;
  
  
  2. Create an instance profile
&lt;/h5&gt;

&lt;p&gt;From the console, when you attach a role to an EC2, an instance profile is automatically created. Now, when you automate this instead using CloudFormation or Terraform it's your responsibility to create it. The instance profile is just a container that is created within EC2 to pass the iam role and the permissions attached to it.&lt;/p&gt;

&lt;p&gt;So our script would now look like -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  MyEc2InstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Path: "/"
      Roles:
      - !Ref MySsmRole
      InstanceProfileName: MySsmRoleInstanceProfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;remember MySsmRole was just created in step 1&lt;/em&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  A note on CloudFormation conditional statements
&lt;/h5&gt;

&lt;p&gt;Before we continue to the next section, I would like to explain how to add conditions into our script. This will be employed so our script can work with both existing VPC, subnets or route tables and with values that you provide.&lt;/p&gt;

&lt;p&gt;My idea is that if you have used my basic 3 tier network script from the resources section, those values will be automatically imported cross stack. If you instead want to provide your own values you are free to do so.&lt;/p&gt;

&lt;p&gt;Here is how I am doing it. For example - for a VPC id, by default I set the value to an empty string.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;clientVpc:
    Type: String 
    Default: ''
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you override it with a value, then this snippet will return a &lt;code&gt;true&lt;/code&gt; value&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;clientVpcExists: !Not [ !Equals [!Ref clientVpc, '']]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, in the place where I have to use a VPC id, I place an if condition around it to use client VPC if it exists, otherwise to import the value from my previous stack&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VpcId: !If [clientVpcExists, !Ref clientVpc, !ImportValue MyVpc]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this understanding let's continue with the next section.&lt;/p&gt;

&lt;h5&gt;
  
  
  3. Create Interface and Gateway Endpoints
&lt;/h5&gt;

&lt;p&gt;Our The EC2 instances are private. There is no internet connectivity. To allow the ability to connect using systems manager, we are going to add the 4 mandatory endpoints seen in the table below. All optional ones though mentioned here, will not be added unless you have a need for it. In that case, please modify my script, as you need.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Is Mandatory&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;com.amazonaws.region.ssm&lt;/td&gt;
&lt;td&gt;For the Systems Manager service&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;com.amazonaws.region.ssmmessages&lt;/td&gt;
&lt;td&gt;To connect to our instances through a secure data channel using Session Manager&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;com.amazonaws.region.ec2&lt;/td&gt;
&lt;td&gt;To create snapshots or call EBS&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;com.amazonaws.region.ec2messages&lt;/td&gt;
&lt;td&gt;Systems Manager uses this endpoint to make calls from SSM Agent to the Systems Manager service&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;com.amazonaws.region.s3&lt;/td&gt;
&lt;td&gt;Systems Manager uses this endpoint to update SSM Agent, perform patching operations, and for tasks like uploading output logs you choose to store in S3 buckets, retrieving scripts or other files you store in buckets, and so on. If the security group associated with your instances restricts outbound traffic, you must add a rule to allow traffic to the prefix list for Amazon S3.&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Sample snippets of our endpoints would look like -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ec2InterfaceEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      VpcEndpointType: Interface
      ServiceName: !Sub 'com.amazonaws.${AWS::Region}.ec2'
      VpcId: !If [clientVpcExists, !Ref clientVpc, !ImportValue MyVpc]
      SubnetIds: 
        - !If [clientSubnetAExists, !Ref clientSubnetA, !ImportValue AppSubnetA]
        - !If [clientSubnetBExists, !Ref clientSubnetB, !ImportValue AppSubnetB]
      SecurityGroupIds:
        - !Ref myDefaultSecurityGroup
      PrivateDnsEnabled: true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;everything looks similar for ec2MessagesInterfaceEndpoint, and ssmInterfaceEndpoint except for the ServiceName that has the service specific endpoint as seen in the table above&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;S3GatewayEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      ServiceName: !Sub 'com.amazonaws.${AWS::Region}.s3'
      VpcEndpointType: Gateway
      VpcId: !If [clientVpcExists, !Ref clientVpc, !ImportValue MyVpc]
      RouteTableIds:
        - !If [clientRouteTableAExists, !Ref clientRouteTableA, !ImportValue PrivateARouteTable]
        - !If [clientRouteTableBExists, !Ref clientRouteTableB, !ImportValue PrivateBRouteTable]
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal: '*'
            Action: '*'
            Resource: '*'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;notice the gateway endpoint here adds route table entries instead&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My parameters and conditions to make these work are as follows&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  clientVpc:
    Type: String 
    Default: ''
  clientSubnetA:
    Type: String
    Default: ''
  clientSubnetB:
    Type: String
    Default: ''
  clientRouteTableA:
    Type: String
    Default: ''
  clientRouteTableB:
    Type: String
    Default: ''
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Conditions:
  clientVpcExists: !Not [ !Equals [!Ref clientVpc, '']]
  clientSubnetAExists: !Not [ !Equals [!Ref clientSubnetA, '']]
  clientSubnetBExists: !Not [ !Equals [!Ref clientSubnetB, '']]
  clientRouteTableAExists: !Not [ !Equals [!Ref clientRouteTableA, '']]
  clientRouteTableBExists: !Not [ !Equals [!Ref clientRouteTableB, '']]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For reference - the complete script is available in the resources section.&lt;/p&gt;

&lt;h5&gt;
  
  
  Notes for success:
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;The default security group id that you provide to this script must allow for all access. This will be used by ssm and allows your private instance to receive updates from the internet using the endpoints.&lt;/li&gt;
&lt;li&gt;The default security group should be part of the VPC that you chose to build your resources with.&lt;/li&gt;
&lt;li&gt;The subnets must be part of the VPC and in the same region.&lt;/li&gt;
&lt;li&gt;The private route table must be associated to the private subnets within the VPC.&lt;/li&gt;
&lt;li&gt;When a new instance is ready and running, the systems manager connect button must be enabled if everything was done right. Or you will have to backtrack and identify what step you missed.&lt;/li&gt;
&lt;li&gt;Most modern linux versions have systems manager agent installed on them. This is &lt;a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html" rel="noopener noreferrer"&gt;documented here&lt;/a&gt;. If your OS is not supported check the guide on how to install the ssm agent.&lt;/li&gt;
&lt;li&gt;The first time the instance tries to connect the ssm agent is enabled and ready to use. &lt;/li&gt;
&lt;li&gt;Failure to enable systems manager and the reason for its failure is not provided as a feedback. Instead you are provided with an 8 step guide on &lt;a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up-ec2.html" rel="noopener noreferrer"&gt;enabling systems manager&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Testing Our Script
&lt;/h4&gt;

&lt;h5&gt;
  
  
  1. Testing script with a custom VPC using CloudFormation Console
&lt;/h5&gt;

&lt;p&gt;For ease, I will use the script within this article for the custom VPC values. Feel free to use your own values instead.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7c9lbz9jw72976ik8dhu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7c9lbz9jw72976ik8dhu.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;here I will not set any client variables as I am going to use the imported values that were exported cross stack from my first script&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flgjxa5nlw9bnick0slnt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flgjxa5nlw9bnick0slnt.png" alt="default values"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcqik16lxkfn8rwyy19cj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcqik16lxkfn8rwyy19cj.png" alt="default values"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;click next&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8rqq93p1e38q3vdt66ie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8rqq93p1e38q3vdt66ie.png" alt="review"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;acknowledge and create stack&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9zlt1ogkqty3cacssogf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9zlt1ogkqty3cacssogf.png" alt="script complete"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  Verifying ssm access using a new ec2 instance
&lt;/h5&gt;

&lt;p&gt;Lets launch a new instance using the free tier ami's. The only difference from your regular choices are the ones that are captured here below. Please make sure that these are set right.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvpf81v6vtzbm92gyvd4h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvpf81v6vtzbm92gyvd4h.png" alt="vpc settings and role"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;here choose myVpc, the appA subnet and the new instance profile that was created&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fou2noraloue05lfxibvz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fou2noraloue05lfxibvz.png" alt="tag"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;give the instance a meaningful name&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhj307bfll5pst0jfieww.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhj307bfll5pst0jfieww.png" alt="defaultSg"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;choose the default security group&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;and finally launch the instance. Wait for it to go into a running state then connect to the ec2 instance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz83cq8puuz6nfdxydn4c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz83cq8puuz6nfdxydn4c.png" alt="connect"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;click connect&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fct5utazcehj51lg8jddh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fct5utazcehj51lg8jddh.png" alt="session manager enabled"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;when session manager is enabled, the connect button is available to click&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frapuhluw7cbajlcfn6ce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frapuhluw7cbajlcfn6ce.png" alt="ssm"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;a successful yum update on the new private instance connected privately&lt;/em&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  Cleanup
&lt;/h5&gt;

&lt;p&gt;If you have not done it already, terminate your private instance and delete ssm stack so you don't end paying for the endpoints while it's not in use.&lt;/p&gt;
&lt;h5&gt;
  
  
  2. Testing script with a default VPC using CloudFormation Console
&lt;/h5&gt;

&lt;p&gt;Now, for ease to test with a different VPC I am going to use the default VPC. You may ask, are VPC endpoints needed because they are by default public. So I tested and found that a new instance that is created with just the role doesn't enable the systems manager&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa8kwaa0b4y0x61xyju2c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa8kwaa0b4y0x61xyju2c.png" alt="unable to connect"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;a typical error message when it cant connect&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So, in order to test my script and adapt to the default VPC, I had to modify it slightly and comment out a line of code within the s3 gateway endpoint because default VPC's only have 1 route entry.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  S3GatewayEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      ServiceName: !Sub 'com.amazonaws.${AWS::Region}.s3'
      VpcEndpointType: Gateway
      VpcId: !If [clientVpcExists, !Ref clientVpc, !ImportValue MyVpc]
      RouteTableIds:
        - !If [clientRouteTableAExists, !Ref clientRouteTableA, !ImportValue PrivateARouteTable]
        # - !If [clientRouteTableBExists, !Ref clientRouteTableB, !ImportValue PrivateBRouteTable]
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal: '*'
            Action: '*'
            Resource: '*'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;notice the second line is commented out&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now, if you launch the script and provide the client VPC id, 2 subnet id's, and the private route table id for clientRouteTableA parameter, the script will successfully deploy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fottz7u4wgezp875877bo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fottz7u4wgezp875877bo.png" alt="overrides"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;notice all values are overriden with default VPC values. all other options are same as the previous scenario to create the stack&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuu2bbpmexpuf5kv6e6m9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuu2bbpmexpuf5kv6e6m9.png" alt="tag"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkxd3k2blqexpede8kft6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkxd3k2blqexpede8kft6.png" alt="default sg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the instances are running you now see that you can connect to this public instance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzn0us2m4ksqf3qhp746m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzn0us2m4ksqf3qhp746m.png" alt="ssm connect"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Congratulations&lt;/strong&gt; You just got Systems Manager enabled in your accounts.&lt;/p&gt;

&lt;h5&gt;
  
  
  Cleanup
&lt;/h5&gt;

&lt;p&gt;Just like the last time, cleanup after yourself by terminating your public instance and delete ssm stack so you don't end paying for the endpoints while it's not in use.&lt;/p&gt;

&lt;h4&gt;
  
  
  Resources
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;3 tier VPC network &lt;a href="https://github.com/LionelPJ/MyAwsToolBox/blob/main/networking/3tierVpc.yml" rel="noopener noreferrer"&gt;cloud formation script&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/LionelPJ/MyAwsToolBox/blob/main/networking/enablingSsm.yml" rel="noopener noreferrer"&gt;enabling ssm script&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CloudFormation resource type references

&lt;ul&gt;
&lt;li&gt;VPC Endpoint - &lt;a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;IAM Role - &lt;a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;IAM Instance Profile - &lt;a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[about Lionel Pulickal]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Lionel is a Cloud Engineer who has worked in the IT industry since 1997. He has all the three AWS associate level exams, the solution architect professional and networking specialty exams under his belt. He loves hands-on and always loves to share the knowledge he has gained over the years.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Deployments using a CloudFormation StackSet in an Organization</title>
      <dc:creator>LionelPJ</dc:creator>
      <pubDate>Tue, 08 Mar 2022 09:36:00 +0000</pubDate>
      <link>https://dev.to/aws-builders/deployments-using-a-cloudformation-stackset-in-an-organization-287a</link>
      <guid>https://dev.to/aws-builders/deployments-using-a-cloudformation-stackset-in-an-organization-287a</guid>
      <description>&lt;p&gt;This is a short article to share my experience with CloudFormation StackSets across the Organization. This is not a duplication of any documentation. Instead it shares my notes on ease of use, intuitiveness, gotchas and any other benefit that I perceive. These are just my opinions and has no bearing on the underlying product or AWS in general.&lt;/p&gt;

&lt;h3&gt;
  
  
  The StackSet Journey
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. The Setup:
&lt;/h4&gt;

&lt;p&gt;I am going to use a CloudFormation script that creates a 3 tier network from scratch. Feel free to reuse my script (that can found in the resources section below) or use anything that works for you. My sample is not very complicated but takes a few minutes to deploy, when it’s directly applied in an account using a stack.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Enable trusted access
&lt;/h4&gt;

&lt;p&gt;Only administrators can enable this setting. With this setting you can deploy across the organization. There’s a concept of delegated administrator accounts but I didn’t try that out. Instead I logged into the management account (the first account that enabled aws organizations) with a user having admin access.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzi6ofgf8lmv6062ss60o.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzi6ofgf8lmv6062ss60o.jpeg" alt="Enable Trusted Access"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to try out registering delegated admin accounts try the &lt;a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html" rel="noopener noreferrer"&gt;guide here&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Creating the StackSet
&lt;/h4&gt;

&lt;p&gt;Here, I plan to cover just the salient points of creating the stackset. I did the minimal to move forward. So this article doesn’t go through explanations of each field and what it accepts. Feel free to check the &lt;a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-getting-started-create.html" rel="noopener noreferrer"&gt;guide&lt;/a&gt; for more details if that interests you.&lt;/p&gt;

&lt;p&gt;The create stackset screens start similar to creating a stack where you say the template is ready and you can provide a template from an s3 bucket or from your computer. I chose to upload my own file. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswh1uqj9ni1og45r1ilo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswh1uqj9ni1og45r1ilo.png" alt="Step 1: Choosing a template"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6bw4cn7opddrcq87ypo2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6bw4cn7opddrcq87ypo2.png" alt="Step2: Specify StackSet details"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I left all options as default except for the Execution configuration I set as &lt;strong&gt;active&lt;/strong&gt;, under deployment options I chose all accounts in organization and finally the region was scoped to us-east-1. I left the concurrency options as is and let the stackset rip.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fad7ilpg7x8wp78y3t9ye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fad7ilpg7x8wp78y3t9ye.png" alt="Step 3: Configure StackSet details"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvqga374s8wwi9r6uiiwx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvqga374s8wwi9r6uiiwx.png" alt="Step 4 : Set Deployment Options"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvvja9ln2paiuep3dsze.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvvja9ln2paiuep3dsze.png" alt="Step 4: Concurrency Details"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Observations:
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Under the operations tab it said running against the stackset.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft6iq4cdfly20cp6wyovh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft6iq4cdfly20cp6wyovh.png" alt="running"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Under stack instances tab, each account that executed got a stack id assigned to it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All accounts started with an OUTDATED status&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsqejxgbzmf86gpris377.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsqejxgbzmf86gpris377.png" alt="All Outdated"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;here you see all accounts are outdated&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyxwx619ly7jvmyg6w1a1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyxwx619ly7jvmyg6w1a1.png" alt="1st account processing"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;first account initiated and got an id&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fow2us1cg1zjtxjv3vsa0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fow2us1cg1zjtxjv3vsa0.png" alt="2nd account processing"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;first account completed and changed status to CURRENT and second account started processing&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fglmiwi6rl80zkbyk15ce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fglmiwi6rl80zkbyk15ce.png" alt="all accounts done"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhgl4ay1i2bluo47uwvnx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhgl4ay1i2bluo47uwvnx.png" alt="succeeded"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;finally all accounts updated&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It was hard to say what was  what was happening within each account as there was no feedback or details about the processing. On one of my previous attempts the whole stackset FAILED status and I had to switch to each account to delete the stacks to revert back and restart.&lt;/li&gt;
&lt;li&gt;When a stack was successful, the status changed to CURRENT. The next account now received an id as the execution is sequential by default.&lt;/li&gt;
&lt;li&gt;When all stacks completed, the stackset went into SUCCEEDED status.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  4. Deleting the StackSet
&lt;/h4&gt;

&lt;p&gt;While deleting the stackset I had to fill the same choices as in creation. I noticed I couldn’t delete the stackset until I delete all stacks within it and I had to know the organization ids to delete the stacks. This time I chose parallel execution and all of them got an id. Once done I could successfully delete the set.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd0ijjd4zzuucr3yfp4d6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd0ijjd4zzuucr3yfp4d6.png" alt="failed to delete stackset"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;attempt to delete stackset when stacks were not removed&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp3zsbtim2lord533gqb3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp3zsbtim2lord533gqb3.png" alt="Initiating Delete Stacks"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gjic0tzls932nxq6ava.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gjic0tzls932nxq6ava.png" alt="parallel execution"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiio21lnleg0zf35020m3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiio21lnleg0zf35020m3.png" alt="delete queued"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fykzx3j7dkrbncrcz727o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fykzx3j7dkrbncrcz727o.png" alt="delete running"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;initiating delete stacks within the organization&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4yk5wql1bt779nclxexu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4yk5wql1bt779nclxexu.png" alt="stack instances outdated"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fehc6wowk6j5ods88xj7o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fehc6wowk6j5ods88xj7o.png" alt="account deleted"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;notice the account was deleted&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnmlwk0kp77axeow0bpt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnmlwk0kp77axeow0bpt.png" alt="delete stack completed"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffv5py3h1weo178jstj1j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffv5py3h1weo178jstj1j.png" alt="delete stack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fut37rkp0zmysxvhq05c6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fut37rkp0zmysxvhq05c6.png" alt="ready to delete stackset"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;finally account is ready to delete stackset&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  My Suggestions
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;If this is your first time using a stackset make sure your stack executes in one account successfully &lt;/li&gt;
&lt;li&gt;Don’t make assumptions while executing stacksets. For example security group ids change across the accounts. So don’t hard code them.&lt;/li&gt;
&lt;li&gt;Add default values for things that are static. For example private cidr blocks to be assigned to a vpc or subnet &lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Final Thoughts
&lt;/h4&gt;

&lt;p&gt;The stackset is not the most intuitive feature. With a little care you can be successful at it. There are alternatives within AWS to execute it against the organization &lt;a href="https://aws.amazon.com/blogs/mt/manage-aws-cloudformation-templates-and-stacks-aws-systems-manager/" rel="noopener noreferrer"&gt;using systems manager&lt;/a&gt; or programmatically. You may also use Terraform to make your deployments. Either way by trying it you practice some best practice of cross account deployments.&lt;/p&gt;

&lt;h4&gt;
  
  
  Resources
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;3 tier vpc network &lt;a href="https://github.com/LionelPJ/MyAwsToolBox/blob/main/networking/3tierVpc.yml" rel="noopener noreferrer"&gt;cloud formation script&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[about Lionel Pulickal]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Lionel is a Cloud Engineer who has worked in the IT industry since 1997. He has all the 3 AWS associate level exams, the solution architect professional and networking specialty exams under his belt. He loves hands-on and always loves to share the knowledge he has gained over the years.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AWS Exam Preparation: Strategies and Techniques to prevent you from Pulling your Hair Out!</title>
      <dc:creator>LionelPJ</dc:creator>
      <pubDate>Wed, 26 May 2021 17:29:22 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-exam-preparation-strategies-and-techniques-to-prevent-you-from-pulling-your-hair-out-part-1-5ki</link>
      <guid>https://dev.to/aws-builders/aws-exam-preparation-strategies-and-techniques-to-prevent-you-from-pulling-your-hair-out-part-1-5ki</guid>
      <description>&lt;p&gt;This is a two part post. This article delves into common problems and strategies to overcome them. May be in the process save you some hair loss. In Part 2 of this post, we will see some answering techniques that will help you through taking the exam.&lt;/p&gt;

&lt;p&gt;To set the stage for the problems we face, imagine that you have finally reached…&lt;/p&gt;

&lt;h1&gt;
  
  
  The Day of the Exam
&lt;/h1&gt;

&lt;p&gt;So you get to the exam and start answering questions; you are trying to settle down. It's not always that you are calm and ready to go. This article is about problems that you may face and how to prepare, so you are ready when you face them.&lt;/p&gt;

&lt;h1&gt;
  
  
  Common Exam Problems
&lt;/h1&gt;

&lt;p&gt;Let's go through some of the issues frequently faced on exam day. In this section, we will see how we can prepare ourselves based on this awareness.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3h8wv3u854auzsfhkday.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3h8wv3u854auzsfhkday.jpg" alt="Racking your brains" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The exam is hard!
&lt;/h3&gt;

&lt;p&gt;Is it? Or are the questions bordering or infringing on topics you are not aware of? Some questions can be hard and needs more focus. Knowing your content and following the syllabus as you study will help. Take a deep breath - by this time you must be prepared for this!&lt;/p&gt;

&lt;h3&gt;
  
  
  Answer impulsively
&lt;/h3&gt;

&lt;p&gt;Have you had the feeling that you can't read anything and your mind is set on what the problem may be or you pre-judge that this is the option? You stop reading or you scan for words related to the option you have in mind? &lt;em&gt;Are you sure that is what they are asking?&lt;/em&gt;&lt;br&gt;
The problem is that you can't shake it off. What if I tell you that even if it doesn't feel this way, you practice this every time you take a practice test, especially when you have seen a variant of this question. You do not stop to re-evaluate if this is true? It gets harder when you have possibly seen the answer earlier and it clouds your judgement. &lt;/p&gt;

&lt;h3&gt;
  
  
  Trick questions
&lt;/h3&gt;

&lt;p&gt;AWS makes it a point to really test your knowledge. The tricks span across multiple ways.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using the keyword &lt;em&gt;not&lt;/em&gt; in the question - To make it complicated out of the 4 options there may be 2 or more answer options also containing the word &lt;em&gt;NOT&lt;/em&gt;. Double negatives are very hard to digest. The other positive answer options do not help. Why? Because you go between positive and negative - back and forth making it confusing!&lt;/li&gt;
&lt;li&gt;Common and repetitive phrases - This makes it hard because you have to closely watch what is different among them. In a hurry it's very easy to miss them and answer wrong.&lt;/li&gt;
&lt;li&gt;Verbiage - The sentences are tricky thanks to the English language; and&lt;/li&gt;
&lt;li&gt;Technical Knowledge - It can also be tricky when your question infringes on the border of your knowledge and you do not know what is this really about leaving you guessing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Overconfidence
&lt;/h3&gt;

&lt;p&gt;Many years ago, I was preparing for the Sun Certified Java Developer exam along with a friend. While I carefully worked on the project, my friend felt he finished the project and was about to submit the exam to be graded. I appreciated his confidence, but begged him to let me write a simple program to test his code. After a lot of convincing him to let me verify his solution, in 30 minutes or less, we found that his code failed - miserably! and if he would have submitted the solution, he would have failed. How is this relevant to this exam? The concept is still the same. Don't be overconfident. Let your tests speak for itself. You will know if you are ready when you are getting 3 consecutive scores of 90% or above.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sickness
&lt;/h3&gt;

&lt;p&gt;Let me say this. If you know that you are sick or feeling sick postpone the exam - please! Don't attend it. Give yourself a chance to heal. If you feel horrible on the day of the exam, call Pearson or PSI and ask what are your options. If you still decide to take it, remember the risk is higher.&lt;br&gt;
When I wrote my solution architect associate exam, I had a severe headache that morning. Knowing that I could not concentrate with a heavy headache, I tried some sample tests about 45 minutes before the exam, to get used to the feeling and to warm myself up. This helped me in the exam. My headache remained throughout the course of the exam, but I still passed it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Imposter Syndrome
&lt;/h3&gt;

&lt;p&gt;This is very real. This is when you start doubting yourself and you feel you are not worthy. It has happened to me twice on two of the Azure exams. I had this constant thought stuck in my head that I am not an azure architect. Of the 7 exams that I wrote, I failed on these 2 when I doubted myself. Postpone if you are not in the right space of mind. Do more hands-on activities. When you are ready schedule again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Strategies and Techniques
&lt;/h2&gt;

&lt;p&gt;Now let's talk about common strategies to handle these problems.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffb5y19acr5rqft36028q.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffb5y19acr5rqft36028q.jpg" alt="Studies" width="640" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Actually read the syllabus
&lt;/h3&gt;

&lt;p&gt;The most common and the most important foundation is to gain a complete understanding of the syllabus. Know it well. I would suggest that you go through it more than once. The first time you gain familiarity. On the second pass, you may find gaps or better understanding. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Make Notes&lt;/em&gt;. Remember, it should be very short or you can't read these before the exam. No one wants to read a novel before the exam!! Try to write a phrase or a sentence that reminds you of the concept.&lt;/p&gt;

&lt;h3&gt;
  
  
  Benchmark your progress
&lt;/h3&gt;

&lt;p&gt;I have been teaching AWS within my company for multiple students for the last two years. The first thing we always do is to take a sample test before we start learning for the exam. The deal is to never ever get a lower score again as this becomes the threshold. Every time a new benchmark is taken, the new score becomes the benchmark. Do as many benchmarks as you see fit. I would suggest that you do this at the beginning and after you finish 2 rounds of learning content.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test often
&lt;/h3&gt;

&lt;p&gt;That is right. Test often! Find gaps. See if you can find patterns and relate it to domains. If you do badly at the domain, read or watch those portions again. If these are specific topics, then learn them with an intention to understand what it does and when it is used. This will take you a long way.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn using different styles
&lt;/h3&gt;

&lt;p&gt;While some of us love to watch videos, some like to read books. My suggestion - try them all. Each one of the styles comes with its own unique advantages. And sometimes by this practice the topic gets deeper and you may understand even better. Some of the techniques may include - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Watching AWS re:Invent videos on YouTube&lt;/li&gt;
&lt;li&gt;Watching premium content courses. In my case, I was introduced to Adrian Cantrill a few years ago when he worked for Linux Academy [now a part of A Cloud Guru]. I followed him along and now he has his own site &lt;a href="https://learn.cantrill.io/courses" rel="noopener noreferrer"&gt;learn.cantrill.io&lt;/a&gt;. He is a person who really built my foundation and helped me on my AWS journey and I would recommend this to anyone who also wants to learn and become better at their craft.&lt;/li&gt;
&lt;li&gt;Reading the official guides by AWS that can be purchased from Amazon or read on &lt;a href="https://www.oreilly.com/" rel="noopener noreferrer"&gt;O'reilly&lt;/a&gt; if you have a subscription.&lt;/li&gt;
&lt;li&gt;Joining live event sessions on AWS. As an example, if you have a subscription with O'reilly, you can attend any of the advertised live events with guest speakers. &lt;/li&gt;
&lt;li&gt;Watch or attend AWS events. They often post articles on LinkedIn or other social media.&lt;/li&gt;
&lt;li&gt;Watching or reading material on &lt;a href="https://www.aws.training/" rel="noopener noreferrer"&gt;aws.training&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Reading white papers&lt;/li&gt;
&lt;li&gt;Hands-On - a lot of it!!!&lt;/li&gt;
&lt;li&gt;Do a project on topics you like. For example, I authored a liveProject for manning.com called &lt;a href="https://www.manning.com/liveproject/automating-infrastructure-for-an-e-commerce-website-with-terraform-and-aws?query=terraform" rel="noopener noreferrer"&gt;Automating Infrastructure for an E-commerce Website with Terraform and AWS&lt;/a&gt;. This builds a network from scratch, then I made a website from scratch using ECS, automated it using CodePipeline and performed some backup strategies using serverless concepts. This option can really help you in real life where you have to apply what you learned!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Practice Answering Techniques using logic not memory
&lt;/h3&gt;

&lt;p&gt;Make this a point. The real exam doesn't test your memory. They want you to evaluate the answers. So, while you do those practice exams, don't memorize. Use your logic, even if you think you know what the question is about. The art of answering and the constant application of figuring out will help you in the exam.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftit3imv41ytqglvkkly2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftit3imv41ytqglvkkly2.jpg" alt="Tricky as Jenga" width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Notes on Common Problems
&lt;/h2&gt;

&lt;h4&gt;
  
  
  The Exam is Hard - How can I handle this?
&lt;/h4&gt;

&lt;p&gt;This is something that you must prepare for ahead of time. Some of the common tips are - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Download the &lt;a href="https://aws.amazon.com/certification/certification-prep/" rel="noopener noreferrer"&gt;exam guide&lt;/a&gt; from this site. Understand how many domains exist in your exam and how the weightage varies across the domains.&lt;/li&gt;
&lt;li&gt; Go through the whole syllabus at least 2 times.&lt;/li&gt;
&lt;li&gt; Don't assume you know it all. Try a test to gain some quick feedback on how much knowledge you have retained. Please don't memorize. Instead, use logic to figure out your answers. Your main exam will not have these questions verbatim. So don't waste your time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  I am driven by Impulses - How can I handle this?
&lt;/h4&gt;

&lt;p&gt;Let me tell you this - the real exam is not about &lt;em&gt;memorizing&lt;/em&gt; those answers. During the exam, the toolset you need to bring to the table is - the ability to figure it out. To do this well in any exam, you need to take it back to that same practice test where you thought you got this - and think along the following lines - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Why is this option right?&lt;/em&gt; or &lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Why are the options wrong?&lt;/em&gt; or &lt;/li&gt;
&lt;li&gt;&lt;em&gt;Are there keywords in the question that justify my answer choice?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  I find the exam tricky - How can I handle this?
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;When you see the word &lt;em&gt;NOT&lt;/em&gt; - it's time to really figure out if you want to fall for this kind of trap. It's best to first flag the question before you attempt any further. Then go about figuring &lt;em&gt;what are they really asking&lt;/em&gt; Translate this to simple words in your mind. For each option, if you translate it to the negative or the positive version of it and answer if this is a possibility? Would this be a candidate? And then remove choices that are noisy. Finally, sweep again to match keywords from the question that helps you qualify the right answer. Personally, I like to translate it all to a positive statement as it's easy for me to wrap my head around it. We will see examples of this later in one of the answering techniques.&lt;/li&gt;
&lt;li&gt;Common phrases in questions have no additional value. Ignore them. And really look at what is different in each option. We will also look at an example in an answering technique called &lt;em&gt;Answers First&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The classical tricks include adding a lot of disruptors or noise in the question or answers or both. It's all about figuring out &lt;em&gt;what do they really want?&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The tricks around technical knowledge really verify your understanding of the service. Do you know your subject well to spot these errors?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to see some of these as examples, please read the second part of the post, where I show you how to handle each of these scenarios [coming soon].&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[about Lionel Pulickal]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Lionel is a Cloud Infrastructure Analyst who has worked in the IT industry since 1997. He has all the three AWS associate level exams, the solution architect professional and the networking specialty exams under his belt. He loves hands-on and always loves to share the knowledge he has gained over the years.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>answeringtechniques</category>
      <category>passingexams</category>
      <category>cloudskills</category>
    </item>
  </channel>
</rss>
