<?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>Forem: architec</title>
    <description>The latest articles on Forem by architec (@arc).</description>
    <link>https://forem.com/arc</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%2F729796%2Fc5788c34-96df-4028-91ae-1b71d8dec72e.png</url>
      <title>Forem: architec</title>
      <link>https://forem.com/arc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/arc"/>
    <language>en</language>
    <item>
      <title>AWS Industry Quest: Financial Services - Ingesting Exchange Data in Near Real Time Study Note</title>
      <dc:creator>architec</dc:creator>
      <pubDate>Fri, 22 Dec 2023 02:01:09 +0000</pubDate>
      <link>https://forem.com/arc/aws-industry-quest-financial-services-ingesting-exchange-data-in-near-real-time-study-note-1d8o</link>
      <guid>https://forem.com/arc/aws-industry-quest-financial-services-ingesting-exchange-data-in-near-real-time-study-note-1d8o</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ajy7qUeF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d4ihdau7kejfss7rb3ki.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ajy7qUeF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d4ihdau7kejfss7rb3ki.png" alt="Image description" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DIY Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Create two new materialized views
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE MATERIALIZED VIEW query_5 AS
select      ticker, round(sum(price),2) as total_negotiated
from        stock_lake.stock_data
where       status = 'complete'
and         order_type = 'buy'
group by    ticker;

CREATE MATERIALIZED VIEW query_6 AS
select      investor_id, round(sum(price),2) as total_negotiated
from        stock_lake.stock_data
where       status = 'complete'
and         order_type = 'buy'
group by    investor_id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>aws</category>
    </item>
    <item>
      <title>AWS Industry Quest: Financial Services - Investing Research Content Distribution Study Note</title>
      <dc:creator>architec</dc:creator>
      <pubDate>Thu, 21 Dec 2023 02:02:39 +0000</pubDate>
      <link>https://forem.com/arc/aws-industry-quest-financial-services-investing-research-content-distribution-3a</link>
      <guid>https://forem.com/arc/aws-industry-quest-financial-services-investing-research-content-distribution-3a</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--49rV4nz---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qn930ga5zw4sx1b3evtk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--49rV4nz---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qn930ga5zw4sx1b3evtk.png" alt="Image description" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DIY Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Add Lambda function as a trigger to the Pre-Sign section in the Amazon Cognito user pool
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sVd6yOBH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0c76lx3ypym3gse3unju.png" alt="Image description" width="800" height="732"&gt;
&lt;/li&gt;
&lt;li&gt;In the Amazon CloudFront distribution, create a new behavior pattern with a TTL value
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_fNGQM2H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mxa8shbqhy9sid4vihjn.png" alt="Image description" width="741" height="1264"&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>AWS Industry Quest: Financial Services - Loan Forms Processing Study Note</title>
      <dc:creator>architec</dc:creator>
      <pubDate>Wed, 20 Dec 2023 08:40:47 +0000</pubDate>
      <link>https://forem.com/arc/aws-industry-quest-financial-services-loan-forms-processing-study-note-15n3</link>
      <guid>https://forem.com/arc/aws-industry-quest-financial-services-loan-forms-processing-study-note-15n3</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8KAA6MEZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ygt209lg85ogw2muao40.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8KAA6MEZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ygt209lg85ogw2muao40.png" alt="Image description" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DIY Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Upload the .jpeg file into S3 &lt;code&gt;ingestion-bucket&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Validate by copy paste the new item id from &lt;code&gt;loan_application&lt;/code&gt; DynamoDB table&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>AWS Cloud Quest: Image and Video Analysis Study Note</title>
      <dc:creator>architec</dc:creator>
      <pubDate>Thu, 23 Mar 2023 23:43:18 +0000</pubDate>
      <link>https://forem.com/arc/aws-cloud-quest-image-and-video-analysis-km1</link>
      <guid>https://forem.com/arc/aws-cloud-quest-image-and-video-analysis-km1</guid>
      <description>&lt;p&gt;This is the DIY challenge of the Image and Video Analysis in AWS Cloud Quest.&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%2F277el7tffcnyoc8dco27.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%2F277el7tffcnyoc8dco27.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DIY Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Update and Deploy the Lambda code
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"""
The code is developed using reference from
https://docs.aws.amazon.com/rekognition/latest/customlabels-dg/ex-lambda.html

"""

import json
import logging
import boto3

# It is good practice to use proper logging.
# Here we are using the logging module of python.
# https://docs.python.org/3/library/logging.html

logger = logging.getLogger()
logger.setLevel(logging.INFO)

# Declare the label that is used to identify
# if the image contains the label

LABEL = 'spaceship'

# Using boto3 S3 Client
# https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#client
s3_client = boto3.client('s3')

def lambda_handler(event, context):
    """
    This code gets the S3 attributes from the trigger event,
    then invokes the rekognition api to detect labels.
    If the label matches the one present on the LABELS list,
    response is written in the S3 bucket with "Status":"Label Found",
    else the response is written in the S3 bucket with "Status":"Label Not Found".
    """
    logger.info(event)
    bucket = event['Records'][0]['s3']['bucket']['name']
    image = event['Records'][0]['s3']['object']['key']
    output_key = 'output/rekognition_response.json'
    response = {'Status': 'Not Found', 'body': []}


    # Using rekognition boto3 client.
    # https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rekognition.html

    rekognition_client = boto3.client('rekognition')

    # Identify label
    # https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rekognition.html#Rekognition.Client.detect_labels

    try:
        response_rekognition = rekognition_client.detect_labels(   # You are calling detect_labels API 
            Image={                                                # to analyzing Images Stored in an Amazon S3 Bucket
                'S3Object': {
                    'Bucket': bucket,
                    'Name': image
                }
            },
            MinConfidence=70                                        # MinConfidence specifies the minimum confidence  
        )                                                           # level for the labels to return.


    # The below code section tries to find all labels in the detect_labels 
    # list. If the label is found in the list, the response JSON file is updated with 
    # "Status":"Success! &amp;lt;label_name&amp;gt; found" then updates the response body with all 
    # detected labels. If the label is not found, the response JSON file is updated with 
    # "Status":"Failed, &amp;lt;label_name&amp;gt; not found" then updates the response body with all 
    # detected labels.

        detected_labels = [] # Declaring empty label lists.

        if response_rekognition['Labels']:
            for label in response_rekognition['Labels']:
                detected_labels.append(label['Name'].lower())
            print(detected_labels)

            if LABEL in detected_labels:
                response['Status'] = f"Success! {LABEL} found"
                response['body'].append(response_rekognition['Labels'])
            else:
                response['Status'] = f"Failed! {LABEL} Not found"
                response['body'].append(response_rekognition['Labels'])

    except Exception as error:
        print(error)

# Finally the file will be written in the S3 bucket output folder.
    s3_client.put_object(
      Bucket=bucket,
      Key=output_key,
      Body=json.dumps(response, indent=4)
    )

    return response

'''
You can use below code to create test event to test
the Lambda function.
{
    "Records": [
                {
                "s3": {
                    "bucket": {
                    "name": "&amp;lt;Your_bucket_name&amp;gt;"
                    },
                    "object": {
                    "key": "input/ovni.png"
                    }
                }
                }
            ]
}
'''

# You can visit https://docs.aws.amazon.com/code-samples/latest/catalog/code-catalog-python-example_code-rekognition.html
# to get more sample codes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>aws</category>
    </item>
    <item>
      <title>AWS Cloud Quest: Analyzing Network Traffic Study Note</title>
      <dc:creator>architec</dc:creator>
      <pubDate>Sat, 11 Mar 2023 00:07:27 +0000</pubDate>
      <link>https://forem.com/arc/aws-cloud-quest-analyzing-network-traffic-2deo</link>
      <guid>https://forem.com/arc/aws-cloud-quest-analyzing-network-traffic-2deo</guid>
      <description>&lt;p&gt;This is the DIY challenge of the Analyzing Network Traffic in AWS Cloud Quest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UaqmfrZ_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tyjqinzmfzi5qxsc1izr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UaqmfrZ_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tyjqinzmfzi5qxsc1izr.png" alt="Image description" width="880" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DIY Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Add outbound rule similar to step 24-27&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>AWS Cloud Quest: Data Ingestion Methods Study Note</title>
      <dc:creator>architec</dc:creator>
      <pubDate>Fri, 10 Mar 2023 22:08:23 +0000</pubDate>
      <link>https://forem.com/arc/aws-cloud-quest-data-ingestion-methods-10ng</link>
      <guid>https://forem.com/arc/aws-cloud-quest-data-ingestion-methods-10ng</guid>
      <description>&lt;p&gt;This is the DIY challenge of the Data Ingestion Methods in AWS Cloud Quest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wcyMLKjV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ocrpvpa2ntjmsqebnr5w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wcyMLKjV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ocrpvpa2ntjmsqebnr5w.png" alt="Image description" width="880" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DIY Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Add destination for &lt;code&gt;ClickStreamDataApp&lt;/code&gt; SQL applications(legacy)

&lt;ul&gt;
&lt;li&gt;AWS Lambda function: &lt;code&gt;AnalyticsDestinationFunction&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Existing IAM role: &lt;code&gt;LabKinesisAnalyticsRole&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Existing in-application stream: &lt;code&gt;DESTINATION_SQL_STREAM&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Output format: &lt;code&gt;CSV&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>AWS Cloud Quest: Container Services Study Note</title>
      <dc:creator>architec</dc:creator>
      <pubDate>Wed, 08 Mar 2023 21:57:48 +0000</pubDate>
      <link>https://forem.com/arc/aws-cloud-quest-container-services-1hi7</link>
      <guid>https://forem.com/arc/aws-cloud-quest-container-services-1hi7</guid>
      <description>&lt;p&gt;This is the DIY challenge of the Container Services in AWS Cloud Quest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pZTG6rga--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/993bebzvmiomak17lm98.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pZTG6rga--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/993bebzvmiomak17lm98.png" alt="Image description" width="880" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DIY Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Repeat step 28-42&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>AWS Cloud Quest: Decoupling Applications Study Note</title>
      <dc:creator>architec</dc:creator>
      <pubDate>Fri, 03 Mar 2023 23:38:38 +0000</pubDate>
      <link>https://forem.com/arc/aws-cloud-quest-decoupling-applications-23mo</link>
      <guid>https://forem.com/arc/aws-cloud-quest-decoupling-applications-23mo</guid>
      <description>&lt;p&gt;This is the DIY challenge of the Decoupling Applications in AWS Cloud Quest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fv0ykulze8hqdxer05hbv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fv0ykulze8hqdxer05hbv.png" alt=" " width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DIY Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Repeat step 6-15 to create another SQS queue and subscribe&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>map</category>
    </item>
    <item>
      <title>AWS Cloud Quest: Content Delivery Networks Study Note</title>
      <dc:creator>architec</dc:creator>
      <pubDate>Fri, 24 Feb 2023 21:22:58 +0000</pubDate>
      <link>https://forem.com/arc/aws-cloud-quest-content-delivery-networks-4gjb</link>
      <guid>https://forem.com/arc/aws-cloud-quest-content-delivery-networks-4gjb</guid>
      <description>&lt;p&gt;This is the DIY challenge of the Content Delivery Networks in AWS Cloud Quest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F4z0pwdvobm34tldkxw09.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F4z0pwdvobm34tldkxw09.png" alt=" " width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DIY Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Reconfigure CloudFront distribution to use S3 &lt;code&gt;labstack-XXX&lt;/code&gt;

&lt;ul&gt;
&lt;li&gt;In CloudFront distribution, select &lt;code&gt;Origins -&amp;gt; Edit&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Change &lt;code&gt;Origin domain&lt;/code&gt; to S3 &lt;code&gt;labstack-XXX&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>gratitude</category>
    </item>
    <item>
      <title>AWS Cloud Quest: Backing Up Data Study Note</title>
      <dc:creator>architec</dc:creator>
      <pubDate>Fri, 24 Feb 2023 04:51:29 +0000</pubDate>
      <link>https://forem.com/arc/aws-cloud-quest-backing-up-data-1jo9</link>
      <guid>https://forem.com/arc/aws-cloud-quest-backing-up-data-1jo9</guid>
      <description>&lt;p&gt;This is the DIY challenge of the Backing Up Data in AWS Cloud Quest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lcJ4TL4h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ifurt3ouzzyr96uvd1u6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lcJ4TL4h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ifurt3ouzzyr96uvd1u6.png" alt="Image description" width="880" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DIY Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Configure an AWS Backup plan &lt;code&gt;diy-backup-plan&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Backup rules&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UonrLJAY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rdzlwrm94tzt4nhdsfq5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UonrLJAY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rdzlwrm94tzt4nhdsfq5.png" alt="Image description" width="868" height="1296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Assign resources&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XZ6fMZkJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z4i06f6i5t3m4z4qoz38.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XZ6fMZkJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z4i06f6i5t3m4z4qoz38.png" alt="Image description" width="880" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>AWS Cloud Quest: Automation with CloudFormation Study Note</title>
      <dc:creator>architec</dc:creator>
      <pubDate>Wed, 22 Feb 2023 21:11:59 +0000</pubDate>
      <link>https://forem.com/arc/aws-cloud-quest-automation-with-cloudformation-5564</link>
      <guid>https://forem.com/arc/aws-cloud-quest-automation-with-cloudformation-5564</guid>
      <description>&lt;p&gt;This is the DIY challenge of the Automation with CloudFormation in AWS Cloud Quest.&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%2F54d95ypd7g1k7v5mof27.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%2F54d95ypd7g1k7v5mof27.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DIY Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Change CloudFormation &lt;code&gt;RoboticStack&lt;/code&gt; template to launch &lt;strong&gt;t2.small&lt;/strong&gt; EC2
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Resources:
  RobotAppServer:
    Type: 'AWS::EC2::Instance'
    Properties:
      InstanceType: t2.small
      ImageId: ami-087c17d1fe0178315
      SecurityGroups:
      - !Ref RobotAppSecurityGroup
  RobotAppSecurityGroup:
    Type: 'AWS::EC2::SecurityGroup'
    Properties:
      GroupDescription: Enable SSH access via port 22
      SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: '22'
        ToPort: '22'
        CidrIp: 0.0.0.0/0
  RobotS3Bucket:
    Type: 'AWS::S3::Bucket'
    DeletionPolicy: Delete
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>aws</category>
    </item>
    <item>
      <title>AWS Cloud Quest: Resource Governance Study Note</title>
      <dc:creator>architec</dc:creator>
      <pubDate>Wed, 22 Feb 2023 19:18:11 +0000</pubDate>
      <link>https://forem.com/arc/aws-cloud-quest-resource-governance-14a</link>
      <guid>https://forem.com/arc/aws-cloud-quest-resource-governance-14a</guid>
      <description>&lt;p&gt;This is the DIY challenge of the Resource Governance in AWS Cloud Quest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SDY9kcLl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wxxe8kqsgpneqw1domhg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SDY9kcLl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wxxe8kqsgpneqw1domhg.png" alt="Image description" width="880" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DIY Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Add rule &lt;code&gt;s3-bucket-versioning-enabled&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Enable versioning on &lt;code&gt;config-bucket-###&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>aws</category>
    </item>
  </channel>
</rss>
