<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Igor's Blog</title><link>https://widlin.ski/</link><description>Recent content on Igor's Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Tue, 25 Mar 2025 08:35:52 +0900</lastBuildDate><atom:link href="https://widlin.ski/index.xml" rel="self" type="application/rss+xml"/><item><title>SAP-C02</title><link>https://widlin.ski/posts/aws/2025/sap-c02/</link><pubDate>Tue, 25 Mar 2025 08:35:52 +0900</pubDate><guid>https://widlin.ski/posts/aws/2025/sap-c02/</guid><description>&lt;p&gt;Last Friday I passed &lt;a href="https://aws.amazon.com/certification/certified-solutions-architect-professional/" target="_blank" rel="noopener"&gt;SAP-C02&lt;/a&gt; the &lt;strong&gt;AWS Solution Architect - Professional&lt;/strong&gt; exam.&lt;/p&gt;
&lt;p&gt;This is my second AWS certificate having passed the &lt;strong&gt;AWS Solution Architect - Associate&lt;/strong&gt; couple of months earlier.&lt;/p&gt;
&lt;p&gt;SAP-C02 took me about 2 months to study for and I used the following resources to study:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learn.cantrill.io/p/aws-certified-solutions-architect-professional" target="_blank" rel="noopener"&gt;Cantrill&amp;rsquo;s AWS Certified Solutions Architect - Professional course&lt;/a&gt;. This course was almost 70 hours long, and it took me about 1 month to go through. It is a good course, but gosh is it long&amp;hellip; I feel like it would be much better to complete 3 courses that are ~20 hours long instead of doing single Cantrill&amp;rsquo;s class.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/aws-solutions-architect-professional/" target="_blank" rel="noopener"&gt;Stephene Maarek&amp;rsquo;s AWS Certified Solutions Architect Professional 2025 course&lt;/a&gt;. I ended up doing this course twice, with the second time being 3 days before the exam ( this involved 5+ hours per day cram sessions). Highly recommend&lt;/li&gt;
&lt;li&gt;My own AWS Organization created just for learning and practice. This org is made out of 3 accounts, with SSO set up ( using Azure).&lt;/li&gt;
&lt;li&gt;&lt;a href="https://portal.tutorialsdojo.com/courses/aws-certified-solutions-architect-professional-practice-exams/" target="_blank" rel="noopener"&gt;Tutorial&amp;rsquo;s Dojo Tests&lt;/a&gt;. These tests are not perfect, and sometimes frustrating ( due to grammar, and the way they are written). For ~$15 USD the value is unbeatable. My test scores were as follows:
&lt;ul&gt;
&lt;li&gt;Review mode Set 1: 73%&lt;/li&gt;
&lt;li&gt;Review mode Set 2: 76%&lt;/li&gt;
&lt;li&gt;Review mode Set 3: 76%&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/practice-exam-aws-certified-solutions-architect-professional/learn/" target="_blank" rel="noopener"&gt;Stephane Maarek&amp;rsquo;s Udemy SAP-C02 Practice Tests&lt;/a&gt;. My scores were:
&lt;ul&gt;
&lt;li&gt;Practice mode Test 1: 72%&lt;/li&gt;
&lt;li&gt;Practice mode Test 2: 52% ( not sure what happened here, but I was sick and feverish when I did this one)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/aws-certified-solutions-architect-professional-aws-practice-exams/learn/quiz/5156504#content" target="_blank" rel="noopener"&gt;Neal Davis&amp;rsquo; Udemy SAP-C02 Practice Tests&lt;/a&gt;. My scores were:
&lt;ul&gt;
&lt;li&gt;Test #1: 74%&lt;/li&gt;
&lt;li&gt;Test #2: 71%&lt;/li&gt;
&lt;li&gt;Test #3: 82%&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall the test took me 2 hours and 40 minutes to write, and overall was tough, but I felt confident I passed it when it was all done.&lt;/p&gt;</description></item><item><title>Oh My Zsh</title><link>https://widlin.ski/posts/misc/2025/oh-my-zsh/</link><pubDate>Tue, 25 Mar 2025 08:10:53 +0900</pubDate><guid>https://widlin.ski/posts/misc/2025/oh-my-zsh/</guid><description>&lt;p&gt;Today I learned about &lt;a href="https://ohmyz.sh/" target="_blank" rel="noopener"&gt;Oh My ZSH&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve got it installed and running on my laptop. The reason to get it is because &lt;em&gt;Oh My Zsh will not make you a 10x developer&amp;hellip;but you may feel like one&lt;/em&gt;. Which hit the spot.&lt;/p&gt;
&lt;p&gt;Oh My Zsh makes Zsh sleek and I ended up changing my default SHELL to ZSH, but I do not plan to switch exclusively to ZSH as BASH is still the SHELL to be used on servers, and everywhere else.&lt;/p&gt;</description></item><item><title>First Billing Alarms</title><link>https://widlin.ski/posts/aws/2025/first-billing-alarms/</link><pubDate>Sat, 01 Feb 2025 20:23:21 -0800</pubDate><guid>https://widlin.ski/posts/aws/2025/first-billing-alarms/</guid><description>&lt;h3 id="enabling-iam-access-to-billing"&gt;Enabling IAM access to Billing&lt;/h3&gt;
&lt;p&gt;According to &lt;a href="https://stackoverflow.com/a/69248558" target="_blank" rel="noopener"&gt;this post&lt;/a&gt; giving &lt;a href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/control-access-billing.html#ControllingAccessWebsite-Activate" target="_blank" rel="noopener"&gt;IAM access to Billing Console&lt;/a&gt; can only be done through console.&lt;/p&gt;
&lt;p&gt;So let&amp;rsquo;s enable it.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://widlin.ski/posts/aws/2025/first-billing-alarms/activate-iam-access.png" alt="local"&gt;&lt;/p&gt;</description></item><item><title>Organization instance Identity Center</title><link>https://widlin.ski/posts/aws/2025/organization-instance-identity-center/</link><pubDate>Sat, 01 Feb 2025 07:34:39 -0800</pubDate><guid>https://widlin.ski/posts/aws/2025/organization-instance-identity-center/</guid><description>&lt;p&gt;As mentioned &lt;a href="https://widlin.ski/posts/aws/2025/aws-first-post/#enable-iam-identity-center---organization"&gt;initially here&lt;/a&gt; I was having trouble finding a way to enable &lt;a href="%22https://docs.aws.amazon.com/singlesignon/latest/userguide/organization-instances-identity-center.html%22"&gt;organization instance of Identity Center&lt;/a&gt; using some form of automated way ( either through aws cli, or cdk, or whatever).&lt;/p&gt;
&lt;p&gt;Back then, I did not enable it, hoping I could find a way to do it using code. Since then, I&amp;rsquo;ve spent some time researching this, and I found some documents ( which I lost&amp;hellip;) that seemed to imply this can only be enabled manually using the AWS Console. So going to do this now.&lt;/p&gt;</description></item><item><title>Initial Cdk Setup</title><link>https://widlin.ski/posts/aws/2025/initial-cdk-setup/</link><pubDate>Sun, 05 Jan 2025 10:15:24 -0800</pubDate><guid>https://widlin.ski/posts/aws/2025/initial-cdk-setup/</guid><description>&lt;h3 id="installing-cdk"&gt;Installing CDK&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html" target="_blank" rel="noopener"&gt;Installing CDK&lt;/a&gt; is pretty simple:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo npm install -g aws-cdk
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;sudo&lt;span style="color:#f92672"&gt;]&lt;/span&gt; password &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; iwidlinski:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;added &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; package in 2s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It worked:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ cdk --version
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2.174.0 &lt;span style="color:#f92672"&gt;(&lt;/span&gt;build 9604329&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="bootstrap-cdk"&gt;Bootstrap CDK&lt;/h3&gt;
&lt;p&gt;We can now bootstrap the account:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; $ cdk bootstrap aws://047719662517/us-west-2 --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ⏳ Bootstrapping environment aws://047719662517/us-west-2...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Trusted accounts &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; deployment: &lt;span style="color:#f92672"&gt;(&lt;/span&gt;none&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Trusted accounts &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; lookup: &lt;span style="color:#f92672"&gt;(&lt;/span&gt;none&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Execution policies: arn:aws:iam::aws:policy/AdministratorAccess
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit: creating CloudFormation changeset...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:13 PM | REVIEW_IN_PROGRESS | AWS::CloudFormation::Stack | CDKToolkit User Initiated
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:19 PM | CREATE_IN_PROGRESS | AWS::CloudFormation::Stack | CDKToolkit User Initiated
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:21 PM | CREATE_IN_PROGRESS | AWS::IAM::Role | LookupRole
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:21 PM | CREATE_IN_PROGRESS | AWS::IAM::Role | CloudFormationExecutionRole
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:21 PM | CREATE_IN_PROGRESS | AWS::ECR::Repository | ContainerAssetsRepository
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:21 PM | CREATE_IN_PROGRESS | AWS::SSM::Parameter | CdkBootstrapVersion
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:21 PM | CREATE_IN_PROGRESS | AWS::IAM::Role | FilePublishingRole
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:21 PM | CREATE_IN_PROGRESS | AWS::IAM::Role | ImagePublishingRole
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:21 PM | CREATE_IN_PROGRESS | AWS::S3::Bucket | StagingBucket
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:22 PM | CREATE_IN_PROGRESS | AWS::IAM::Role | ImagePublishingRole Resource creation Initiated
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:22 PM | CREATE_IN_PROGRESS | AWS::IAM::Role | LookupRole Resource creation Initiated
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:22 PM | CREATE_IN_PROGRESS | AWS::IAM::Role | CloudFormationExecutionRole Resource creation Initiated
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:22 PM | CREATE_IN_PROGRESS | AWS::IAM::Role | FilePublishingRole Resource creation Initiated
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:22 PM | CREATE_IN_PROGRESS | AWS::ECR::Repository | ContainerAssetsRepository Resource creation Initiated
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:22 PM | CREATE_IN_PROGRESS | AWS::SSM::Parameter | CdkBootstrapVersion Resource creation Initiated
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 0/12 | 12:35:23 PM | CREATE_IN_PROGRESS | AWS::S3::Bucket | StagingBucket Resource creation Initiated
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 1/12 | 12:35:23 PM | CREATE_COMPLETE | AWS::SSM::Parameter | CdkBootstrapVersion
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 2/12 | 12:35:23 PM | CREATE_COMPLETE | AWS::ECR::Repository | ContainerAssetsRepository
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 3/12 | 12:35:36 PM | CREATE_COMPLETE | AWS::S3::Bucket | StagingBucket
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 3/12 | 12:35:37 PM | CREATE_IN_PROGRESS | AWS::S3::BucketPolicy | StagingBucketPolicy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 3/12 | 12:35:38 PM | CREATE_IN_PROGRESS | AWS::S3::BucketPolicy | StagingBucketPolicy Resource creation Initiated
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 4/12 | 12:35:38 PM | CREATE_COMPLETE | AWS::S3::BucketPolicy | StagingBucketPolicy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 5/12 | 12:35:39 PM | CREATE_COMPLETE | AWS::IAM::Role | ImagePublishingRole
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 6/12 | 12:35:40 PM | CREATE_COMPLETE | AWS::IAM::Role | FilePublishingRole
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 7/12 | 12:35:40 PM | CREATE_COMPLETE | AWS::IAM::Role | CloudFormationExecutionRole
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 8/12 | 12:35:40 PM | CREATE_COMPLETE | AWS::IAM::Role | LookupRole
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 8/12 | 12:35:40 PM | CREATE_IN_PROGRESS | AWS::IAM::Policy | FilePublishingRoleDefaultPolicy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 8/12 | 12:35:40 PM | CREATE_IN_PROGRESS | AWS::IAM::Policy | ImagePublishingRoleDefaultPolicy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 8/12 | 12:35:41 PM | CREATE_IN_PROGRESS | AWS::IAM::Role | DeploymentActionRole
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 8/12 | 12:35:41 PM | CREATE_IN_PROGRESS | AWS::IAM::Policy | FilePublishingRoleDefaultPolicy Resource creation Initiated
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 8/12 | 12:35:41 PM | CREATE_IN_PROGRESS | AWS::IAM::Policy | ImagePublishingRoleDefaultPolicy Resource creation Initiated
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 8/12 | 12:35:42 PM | CREATE_IN_PROGRESS | AWS::IAM::Role | DeploymentActionRole Resource creation Initiated
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 9/12 | 12:35:56 PM | CREATE_COMPLETE | AWS::IAM::Policy | FilePublishingRoleDefaultPolicy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 10/12 | 12:35:57 PM | CREATE_COMPLETE | AWS::IAM::Policy | ImagePublishingRoleDefaultPolicy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 11/12 | 12:35:59 PM | CREATE_COMPLETE | AWS::IAM::Role | DeploymentActionRole
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CDKToolkit | 12/12 | 12:36:01 PM | CREATE_COMPLETE | AWS::CloudFormation::Stack | CDKToolkit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ✅ Environment aws://047719662517/us-west-2 bootstrapped.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This should create s3 bucket, which it did:&lt;/p&gt;</description></item><item><title>First Post - initial environment setup</title><link>https://widlin.ski/posts/aws/2025/aws-first-post/</link><pubDate>Sat, 04 Jan 2025 09:24:03 -0800</pubDate><guid>https://widlin.ski/posts/aws/2025/aws-first-post/</guid><description>&lt;h3 id="plan"&gt;Plan&lt;/h3&gt;
&lt;p&gt;Plan is to get &lt;a href="https://aws.amazon.com/certification/" target="_blank" rel="noopener"&gt;AWS Certificates&lt;/a&gt; and at the same time:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;do all practicing and testing in code or cli (or as much as possible)&lt;/li&gt;
&lt;li&gt;update this blog with experiences/things learned&lt;/li&gt;
&lt;li&gt;get better at markdown, python, aws cli, etc&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="root-credentials"&gt;Root Credentials&lt;/h3&gt;
&lt;p&gt;AWS makes it clear that credentials for root account are not recommended.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://widlin.ski/images/posts/aws-first-post/root-access-key.png" alt="Do not do this"&gt;&lt;/p&gt;
&lt;p&gt;This makes sense, but we can not use &lt;code&gt;aws cli&lt;/code&gt; without active credentials. Once we have the credentials, it will be possible to create new admin user and use that accounts credentials instead of root&amp;rsquo;s.&lt;/p&gt;</description></item></channel></rss>