<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by HK_IT_ER on Medium]]></title>
        <description><![CDATA[Stories by HK_IT_ER on Medium]]></description>
        <link>https://medium.com/@hk_it_er?source=rss-80bd7dd87664------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*KyA8bYqNvwNk2MhsADfPcQ.png</url>
            <title>Stories by HK_IT_ER on Medium</title>
            <link>https://medium.com/@hk_it_er?source=rss-80bd7dd87664------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 02:32:57 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@hk_it_er/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[21 Concepts You Should Know Before Going AWS Certified Security — Specialty Certification (2020)]]></title>
            <link>https://medium.com/@hk_it_er/21-concepts-you-should-know-before-going-aws-certified-security-specialty-certification-2020-9bcad6df5806?source=rss-80bd7dd87664------2</link>
            <guid isPermaLink="false">https://medium.com/p/9bcad6df5806</guid>
            <category><![CDATA[aws-certified]]></category>
            <category><![CDATA[aws-certification]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[aws-security]]></category>
            <category><![CDATA[amazon-web-services]]></category>
            <dc:creator><![CDATA[HK_IT_ER]]></dc:creator>
            <pubDate>Mon, 20 Jan 2020 14:56:59 GMT</pubDate>
            <atom:updated>2020-01-20T14:56:59.110Z</atom:updated>
            <content:encoded><![CDATA[<h3>21 Concepts You Should Know Before Going AWS Certified Security — Specialty Certification (2020)</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2Fss3jnSBNvRYsIgFqJHVA.jpeg" /><figcaption>Santana Row in San Jose</figcaption></figure><p>I listed 21 concepts you should know before going to the AWS Certified Security — Specialty Certification (2020).</p><h3>1. How does AWS secure the CMKs that I create?</h3><p><strong>AWS KMS is designed so that no one, including AWS employees</strong>, can retrieve your plaintext CMKs from the service. The service uses hardware security modules (HSMs) that have been validated under FIPS 140–2, or are in the process of being validated, to protect the confidentiality and integrity of your keys regardless of whether you use AWS KMS or AWS CloudHSM to create your keys or you import them into the service yourself. Your plaintext CMKs never leave the HSMs, are never written to disk and are only ever used in the volatile memory of the HSMs for the time needed to perform your requested cryptographic operation. <strong>AWS KMS keys are never transmitted outside of the AWS regions in which they were created.</strong></p><p>Source: <a href="https://aws.amazon.com/kms/faqs/">AWS KMS FAQ</a></p><h3>2. Restricting Access to Amazon S3 Content by Using an Origin Access Identity</h3><h4>Granting Permission to an Amazon CloudFront Origin Identity</h4><p>The following example bucket policy grants a CloudFront Origin Identity permission to get (list) all objects in your Amazon S3 bucket. The CloudFront Origin Identity is used to enable the CloudFront private content feature. The policy uses the Canonical User prefix, instead of AWS, to specify a Canonical User ID. You must specify the canonical user ID for your CloudFront distribution&#39;s origin access identity.</p><pre>{ <br>  “Version”:”2012–10–17&quot;, <br>  “Id”:”PolicyForCloudFrontPrivateContent”, <br>  “Statement”:[ <br>    { “Sid”:” Grant a CloudFront Origin Identity access to support private content”, <br>      “Effect”:”Allow”, <br>      “Principal”:{“CanonicalUser”:”<em>CloudFront Origin Identity Canonical User ID</em>&quot;},        <br>      &quot;Action&quot;:&quot;s3:GetObject&quot;,<br>      &quot;Resource&quot;:&quot;arn:aws:s3:::<em>examplebucket</em>/*&quot;<br>    }<br>  ]<br>}</pre><h3>3. AssumeRoleWithWebIdentity</h3><p>Returns a set of temporary security credentials for users who have been authenticated in a mobile or web application with a web identity provider. Example providers include Amazon Cognito, Login with Amazon, Facebook, Google, or <strong>any OpenID Connect-compatible identity provider</strong>.</p><h3>4. DNS Support in Your VPC</h3><h4>enableDnsSupport</h4><p>if this attribute is <strong>false</strong>, the Amazon-provided DNS server that resolves public DNS hostnames to IP addresses is not enabled.</p><h3>5. Getting Credential Reports for Your AWS Account</h3><p>You can generate and download a credential report that lists all users in your account and the status of their various credentials, including passwords, <strong>access keys</strong>, and MFA devices from <strong>IAM</strong>.</p><h3>6. Working with Trusted IP Lists and Threat Lists</h3><p><strong>Trusted IP</strong> lists consist of IP addresses that you have <strong>whitelisted</strong> for secure <strong>communication with your AWS infrastructure and applications</strong>. GuardDuty does not generate findings for IP addresses on trusted IP lists.</p><h3>7. abort-vault-lock and initiate-vault-lock</h3><h4>initiate-vault-lock</h4><ol><li>Installing a vault lock policy on the specified vault.</li><li>Setting the lock state of vault lock to <strong>InProgress state</strong></li><li>Returning a lock ID, which is used to complete the vault locking process.</li></ol><h4>abort-vault-lock</h4><p>If the vault lock is in the <strong>Locked state</strong> when this operation is requested, the operation returns an AccessDeniedException error. <strong>Aborting the vault locking process removes the vault lock policy from the specified vault.</strong></p><h3>8. How to Use an External ID When Granting Access to Your AWS Resources to a Third Party</h3><p><a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html">AWS Document about the External ID</a></p><h3>9. CloudTrail log file Integrity</h3><p>CloudTrail log file integrity validation feature allows you <strong>to determine whether a CloudTrail log file was unchanged, deleted, or modified</strong> since CloudTrail delivered it to the specified Amazon S3 bucket.</p><h3>10. Amazon Macie</h3><p>Amazon Macie is an ML-powered security service that helps you prevent data loss by automatically discovering, classifying, and protecting sensitive data stored in <strong>Amazon S3</strong>.</p><p>You can use Amazon Macie to protect against security threats by continuously monitoring your data and account credentials. Amazon Macie gives you an automated and low touch way to discover and classify your business data and detect sensitive information such as <strong>personally identifiable information (PII)</strong> and credential data.</p><h3>11. IAM Best Practices for Root User</h3><ol><li>Do not use your AWS account root user access key.</li><li>Enable AWS multi-factor authentication (MFA) on your AWS account root user account.</li><li>Don’t use your AWS account root user credentials to access AWS. Instead, create individual users for anyone who needs access to your AWS account.</li></ol><h3>12. VPC Flow Log Record Example</h3><ul><li>An <strong>ACCEPT</strong> record for the originating ping that was allowed by both the <strong>network ACL</strong> and the <strong>security group</strong>, and therefore was allowed to reach your instance.</li><li>A <strong>REJECT</strong> record for the response ping that the <strong>network ACL</strong> denied.</li></ul><pre>2 123456789010 eni-1235b8ca123456789 203.0.113.12 172.31.16.139 0 0 1 4 336 1432917027 1432917142 ACCEPT OK</pre><pre>2 123456789010 eni-1235b8ca123456789 172.31.16.139 203.0.113.12 0 0 1 4 336 1432917094 1432917142 REJECT OK</pre><h3>13. Control Access to the AWS Services in Single Region using IAM policies</h3><pre>...<br>&quot;Condition&quot;:<br>  {<br>    &quot;StringEquals&quot;: {<br>      &quot;aws:RequestedRegion&quot;: &quot;eu-central-1&quot;<br>    }<br>  }<br>...</pre><h3>14. Amazon GuardDuty Data Sources</h3><ol><li>VPC Flow Logs</li><li>DNS Logs</li><li>AWS CloudTrail Events</li></ol><h3>15. IAM Access Key Rotation Using APIs</h3><ol><li>GenerateCredentialReport</li><li>GetCredentialReport</li><li>UpdateAccessKey</li></ol><h3>16. Adding the HTTP Security Headers in Lambda@Edge</h3><pre>‘use strict’; </pre><pre>exports.handler = (event, context, callback) =&gt; { <br>  //Get contents of response <br>  const response = event.Records[0].cf.response; <br>  const headers = response.headers; <br>  <br>  //Set new headers <br>  headers[‘strict-transport-security’] = [{key: ‘Strict-Transport-Security’, value: ‘max-age=63072000; includeSubdomains; preload’}];</pre><pre>  headers[‘content-security-policy’] = [{key: ‘Content-Security-Policy’, value: “default-src ‘none’; img-src ‘self’; script-src ‘self’; style-src ‘self’; object-src ‘none’”}]; <br>  <br>  headers[‘x-content-type-options’] = [{key: ‘X-Content-Type-Options’, value: ‘nosniff’}]; <br>  <br>  headers[‘x-frame-options’] = [{key: ‘X-Frame-Options’, value: ‘DENY’}]; <br>  <br>  headers[‘x-xss-protection’] = [{key: ‘X-XSS-Protection’, value: ‘1; mode=block’}]; <br>  <br>  headers[‘referrer-policy’] = [{key: ‘Referrer-Policy’, value: ‘same-origin’}]; </pre><pre>  //Return modified response <br>  callback(null, response); </pre><pre>};</pre><p>Source: <a href="https://aws.amazon.com/blogs/networking-and-content-delivery/adding-http-security-headers-using-lambdaedge-and-amazon-cloudfront/">Adding HTTP Security Headers Using Lambda@Edge and Amazon CloudFront</a></p><h3>17. Rotating Customer Master Keys in KMS</h3><h4><strong>Unsupported CMK types for </strong>Automatic key rotation</h4><ol><li>Asymmetric CMKs</li><li>CMKs in custom key stores</li><li>CMKs that have <strong>imported key material</strong></li></ol><h3>18. AWS Trusted Advisor</h3><h4>What Trusted Advisor checks and features are available to all AWS customers?</h4><ul><li>S3 Bucket Permissions</li><li><strong>Security Groups — Specific Ports Unrestricted</strong></li><li>IAM Use</li><li>MFA on Root Account</li><li>EBS Public Snapshots</li><li>RDS Public Snapshots</li></ul><h4>How does the Trusted Advisor notification feature work?</h4><p>The <strong>notification email</strong> includes the summary of saving estimates and your check status, especially highlighting changes of check status.</p><h3>19. What is AWS Config?</h3><p>AWS Config is a fully managed service that provides you with an AWS resource inventory, configuration history, and configuration change notifications to enable security and governance. With AWS Config you can discover existing AWS resources, export a complete inventory of your AWS resources with all configuration details, and determine how a resource was configured at any point in time. These capabilities enable <strong>compliance auditing</strong>, security analysis, resource change tracking, and troubleshooting.</p><h3>20. Additional Authenticated Data in KMS</h3><p><strong>EncryptionContext</strong> provides three benefits:</p><ol><li><strong>Additional authenticated data (AAD)</strong></li><li>Audit trail</li><li>Authorization context</li></ol><p>Source: <a href="https://aws.amazon.com/blogs/security/how-to-protect-the-integrity-of-your-encrypted-data-by-using-aws-key-management-service-and-encryptioncontext/">How to Protect the Integrity of Your Encrypted Data by Using AWS Key Management Service and EncryptionContext</a></p><h3>21. S3 ACL</h3><p>As a general rule, A<strong>WS recommends using S3 bucket policies or IAM policies for access control. S3 ACLs is a legacy access control mechanism that predates IAM.</strong> However, if you already use S3 ACLs and you find them sufficient, there is no need to change.</p><p>Source: <a href="https://aws.amazon.com/blogs/security/iam-policies-and-bucket-policies-and-acls-oh-my-controlling-access-to-s3-resources/">IAM Policies and Bucket Policies and ACLs! Oh, My! (Controlling Access to S3 Resources)</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9bcad6df5806" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[“No Contact Center” — Contact Center on the Cloud]]></title>
            <link>https://medium.com/voice-tech-podcast/no-contact-center-contact-center-on-the-cloud-557b51b09879?source=rss-80bd7dd87664------2</link>
            <guid isPermaLink="false">https://medium.com/p/557b51b09879</guid>
            <category><![CDATA[conversational-ui]]></category>
            <category><![CDATA[voice-assistant]]></category>
            <category><![CDATA[alexa]]></category>
            <category><![CDATA[google-assistant]]></category>
            <category><![CDATA[amazon-echo]]></category>
            <dc:creator><![CDATA[HK_IT_ER]]></dc:creator>
            <pubDate>Sun, 30 Jun 2019 08:22:09 GMT</pubDate>
            <atom:updated>2020-04-11T00:56:49.250Z</atom:updated>
            <content:encoded><![CDATA[<h3>“No Contact Center” — Contact Center on the Cloud</h3><h3><strong><em>Introduction to the Contact Center on the Cloud</em></strong></h3><p><strong><em>What Contact Center as a Service (CCaaS) is?</em></strong></p><p><em>CCaaS is the contact center that is hosted on the cloud instead of hosted on-premises.</em></p><p><em>There is a </em><a href="https://www.talkdesk.com/blog/what-is-ccaas-a-brief-history-of-contact-center-as-a-service/"><em>detailed article</em></a><em> about CCaaS for your reference.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9gp0c1iGTtNU4d8O-PwCkg.jpeg" /><figcaption>KOUFUKU in Japan</figcaption></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fbingewith.com%2Farticle%2F%3A%3A_Generate_Audio&amp;dntp=1&amp;display_name=BingeWith&amp;url=https%3A%2F%2Fbingewith.com%2Farticle%2F%3A%3A_Generate_Audio&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=bingewith" width="480" height="110" frameborder="0" scrolling="no"><a href="https://medium.com/media/d6a9e202d4ee773dbc23199fcf6d186c/href">https://medium.com/media/d6a9e202d4ee773dbc23199fcf6d186c/href</a></iframe><h3>No Contact Center in the Future</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SDH3CooKAIRmkygKp2ulrw.png" /><figcaption>Blueprint of the Contact Center</figcaption></figure><p>I think that everyone already knows the pain points of the current contact center such as long waiting time and the inconsistent response.</p><p>The example of terrible customer experience in the call center</p><iframe src="https://drive.google.com/viewerng/viewer?url=https%3A//www.manulife.com.hk/content/dam/insurance/hk/en/documents/services/contact-us/manulife-member-hotline-call-menu.pdf&amp;embedded=true" width="600" height="780" frameborder="0" scrolling="no"><a href="https://medium.com/media/f395824f103a7c9f509ffcedb4deafc6/href">https://medium.com/media/f395824f103a7c9f509ffcedb4deafc6/href</a></iframe><p>When the contact center is migrated from the on-premises to the cloud, we can improve the overall customer satisfaction.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FoMAnsRECYyo%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DoMAnsRECYyo&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FoMAnsRECYyo%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/8062a6fd7408bd28f1600f92ba713932/href">https://medium.com/media/8062a6fd7408bd28f1600f92ba713932/href</a></iframe><p>In my opinion, our future should aim for <strong>“No Contact Center”</strong>. The personal assistant such as Alexa or Siri can replace the job in the contact center in the future.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/380/1*fk8EARlgMGEpqIunSHx1bA.png" /><figcaption>Our Future Lifestyle</figcaption></figure><p>Two user stories to demonstrate:</p><ol><li>Build the contact center on the cloud</li><li>Migrate the contact center to personal assistant (Amazon Alexa)</li></ol><blockquote>Build better voice apps. Get more articles &amp; interviews from voice technology experts at <a href="https://voicetechpodcast.com/">voicetechpodcast.com</a></blockquote><h3>Build the Contact Center on the Cloud</h3><h4>Services in the Demo</h4><ol><li>Amazon Connect — Contact Center on the cloud</li><li>Amazon Lex — Chatbot on the Contact Center</li><li>AWS Lambda — Serverless on the Contact Center</li><li>Amazon SES — Omni-Channel on the Contact Center</li></ol><p><strong>Demonstrate how to buy the travel insurance in the cloud contact center — Pure Chatbot, Voice by Amazon Polly</strong></p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FZKjRbsF3_vQ%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DZKjRbsF3_vQ&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FZKjRbsF3_vQ%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/01c69c0826fbe069f69f2644c068cc95/href">https://medium.com/media/01c69c0826fbe069f69f2644c068cc95/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ULY1B2nuz7KzgLKqSM8Qjw.png" /><figcaption><strong>Architecture Diagram of the Cloud Contact Center</strong></figcaption></figure><h3>Migrate the Contact Center to Personal Assistant (Alexa)</h3><h4>Services in the Demo</h4><ol><li>Amazon Alexa— To Replace the Contact Center</li><li>AWS Lambda — Serverless on the Personal Assistant</li><li>Amazon SES — Omni-Channel on the Personal Assistant</li></ol><p><strong>Demonstrate how to use the personal assistant (Alexa) to replace the job in the contact center</strong></p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FKCB4aBE_CDM%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DKCB4aBE_CDM&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FKCB4aBE_CDM%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/934fe7373eb3c077357ececeb1979501/href">https://medium.com/media/934fe7373eb3c077357ececeb1979501/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_Iejy87K1Kctn92SJRu_pQ.png" /><figcaption><strong>Architecture Diagram of the Personal Assistant</strong></figcaption></figure><h3><strong>Additional Reference</strong></h3><p><a href="https://aws.amazon.com/solutions/ai-powered-speech-analytics-for-amazon-connect/">AI Powered Speech Analytics for Amazon Connect | AWS Solutions</a></p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FPvnbGpRcV64%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DPvnbGpRcV64&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FPvnbGpRcV64%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/378d8b1825a9831e84b253b78b6dc206/href">https://medium.com/media/378d8b1825a9831e84b253b78b6dc206/href</a></iframe><p><a href="https://cloud.google.com/solutions/contact-center">Contact Center AI | Google Cloud</a></p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FPlW_2GdkWFY%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DPlW_2GdkWFY&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FPlW_2GdkWFY%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/47b336fa982a4796cd8931a8083dd7d7/href">https://medium.com/media/47b336fa982a4796cd8931a8083dd7d7/href</a></iframe><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FVWz8MSO1MEU%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DVWz8MSO1MEU&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FVWz8MSO1MEU%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/803d3c169fb30313ff64b49a831fe372/href">https://medium.com/media/803d3c169fb30313ff64b49a831fe372/href</a></iframe><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fupscri.be%2F6b7b35%3Fas_embed%3Dtrue&amp;dntp=1&amp;display_name=Upscribe&amp;url=https%3A%2F%2Fupscri.be%2F6b7b35%2F&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=upscri" width="800" height="400" frameborder="0" scrolling="no"><a href="https://medium.com/media/8a76a1650cf30355bd307195d382558a/href">https://medium.com/media/8a76a1650cf30355bd307195d382558a/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=557b51b09879" width="1" height="1" alt=""><hr><p><a href="https://medium.com/voice-tech-podcast/no-contact-center-contact-center-on-the-cloud-557b51b09879">“No Contact Center” — Contact Center on the Cloud</a> was originally published in <a href="https://medium.com/voice-tech-podcast">Voice Tech Podcast</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[35 Concepts You Should Know Before Going AWS Certified SysOps Administrator — Associate Exam (2019)]]></title>
            <link>https://medium.com/@hk_it_er/35-concepts-you-should-know-before-going-aws-certified-sysops-administrator-associate-exam-2019-ff1019dd4baa?source=rss-80bd7dd87664------2</link>
            <guid isPermaLink="false">https://medium.com/p/ff1019dd4baa</guid>
            <category><![CDATA[aws-exam]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[sysops]]></category>
            <category><![CDATA[aws-sysops]]></category>
            <category><![CDATA[aws-certified]]></category>
            <dc:creator><![CDATA[HK_IT_ER]]></dc:creator>
            <pubDate>Sat, 29 Dec 2018 14:18:49 GMT</pubDate>
            <atom:updated>2020-01-19T00:44:56.964Z</atom:updated>
            <content:encoded><![CDATA[<h3>35 Concepts You Should Know Before Going AWS Certified SysOps Administrator — Associate Exam (2019)</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Jxf32dD2mxGPPQhPb-HUBg.png" /></figure><p>I listed 35 concepts you should know before going to the AWS Certified SysOps Administrator — Associate (2019). If you do not familiar with any topics listed below, I suggest you reschedule the exam.</p><h3><strong>1. ELB Metrics — SurgeQueueLength Vs SpilloverCount</strong></h3><h4>SurgeQueueLength</h4><p>A count of the total number of requests that are pending submission to a registered instance.</p><h4>SpilloverCount</h4><p>A count of the total number of requests that were rejected due to the queue being full.</p><h3><strong>2. Burstable Performance Instance</strong></h3><p>Burstable performance instances, which are <strong>T3</strong> and <strong>T2</strong> instances, are designed to provide a baseline level of CPU performance with the ability to burst to a higher level when required by your workload.</p><p>It can be enabled or disabled at any time for a running or stopped instance.</p><h3><strong>3. Snowball Vs Snowball Edge</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/873/0*v4xG3N5xMoJnHmBX" /><figcaption>AWS Snowball Use Case Differences</figcaption></figure><h3><strong>4. CloudFormation — DeletePolicy</strong></h3><ol><li>preserve or (in some cases) backup a resource when its stack is deleted</li><li>If a resource has no DeletionPolicy attribute, AWS CloudFormation deletes the resource by default.</li><li><strong>To keep a resource when its stack is deleted</strong></li><li><strong>specify Retain for that resource, to prevent deletion</strong></li><li><strong>specify Snapshot to create a snapshot before deleting the resource, if the snapshot capability is supported for e.g RDS, EC2 volume etc.</strong></li><li>To keep a resource when its stack is deleted, specify Retain for that resource. You can use retain for any resource. For example, you can retain a nested stack, Amazon S3 bucket, or EC2 instance so that you can continue to use or modify those resources after you delete their stacks.</li><li>For resources that support snapshots, such as AWS::EC2::Volume, specify Snapshot to have AWS CloudFormation create a snapshot before deleting the resource.</li></ol><pre>{<br>  &quot;AWSTemplateFormatVersion&quot; : &quot;2010-09-09&quot;,<br>  &quot;Resources&quot; : {<br>  &quot;myS3Bucket&quot; : {<br>    &quot;Type&quot; : &quot;AWS::S3::Bucket&quot;,<br>    &quot;DeletionPolicy&quot; : &quot;Retain&quot;<br>   }<br>  }<br>}</pre><h3><strong>5. S3 — Bucket Policy Vs ACLs Vs IAM Policies</strong></h3><p><strong>Bucket Policy</strong></p><p>You attach S3 bucket policies at the bucket level (i.e. you can’t attach a bucket policy to an S3 object), but the permissions specified in <strong>the bucket policy apply to all the objects in the bucket.</strong></p><p><strong>ACLS</strong></p><p>As a general rule, AWS recommends using S3 bucket policies or IAM policies for access control. S3 ACLs is a legacy access control mechanism that predates IAM. However, if you already use S3 ACLs and you find them sufficient, there is no need to change.</p><p><strong>ACLS Vs Bucket Policy</strong></p><p>Under certain circumstances, you might find that S3 ACLs meet your needs better than IAM policies or bucket policies. If you want to manage permissions on <strong>individual objects</strong> within a bucket, S3 ACLs enable you to apply policies on the objects themselves, whereas bucket policies can only be applied at the bucket level. In addition, bucket policies are<strong> limited to 20 kb in size, so consider using S3 ACLs</strong> if you find that your bucket policy grows too large.</p><p><em>Sample S3 Bucket Policy</em></p><pre>{<br>  &quot;Version&quot;: &quot;2012-10-17&quot;,<br>  &quot;Statement&quot;: [<br>    {<br>      &quot;Effect&quot;: &quot;Allow&quot;,<br>      <strong>&quot;Principal&quot;: {<br>        &quot;AWS&quot;: [&quot;arn:aws:iam::111122223333:user/Alice&quot;,<br>                &quot;arn:aws:iam::111122223333:root&quot;]<br>      }</strong>,<br>      &quot;Action&quot;: &quot;s3:*&quot;,<br>      &quot;Resource&quot;: [&quot;arn:aws:s3:::my_bucket&quot;,<br>                   &quot;arn:aws:s3:::my_bucket/*&quot;]<br>    }<br>  ]<br>}</pre><p><em>Sample IAM Policy</em></p><pre>{<br>  &quot;Version&quot;: &quot;2012-10-17&quot;,<br>  &quot;Statement&quot;:[{<br>    &quot;Effect&quot;: &quot;Allow&quot;,<br>    &quot;Action&quot;: &quot;s3:*&quot;,<br>    &quot;Resource&quot;: [&quot;arn:aws:s3:::my_bucket&quot;,<br>                 &quot;arn:aws:s3:::my_bucket/*&quot;]<br>    }<br>  ]<br>}</pre><p>Note that the S3 bucket policy includes a “Principal” element, which lists the principals that bucket policy controls access for. The “Principal” element is unnecessary in an IAM policy, because the principal is by default the entity that the IAM policy is attached to.</p><p><strong>When to use IAM policies vs. S3 policies</strong></p><p>Use IAM policies if:</p><ol><li>You need to control access to AWS services other than S3. IAM policies will be easier to manage since you can centrally manage all of your permissions in IAM, instead of spreading them between IAM and S3.</li><li>You have numerous S3 buckets each with different permissions requirements. IAM policies will be easier to manage since you don’t have to define a large number of S3 bucket policies and can instead rely on fewer, more detailed IAM policies.</li><li>You prefer to keep access control policies in the IAM environment.</li></ol><p>Use S3 bucket policies if:</p><ol><li>You want a simple way to grant cross-account access to your S3 environment, without using IAM roles.</li><li>Your IAM policies bump up against the size limit (up to 2 kb for users, 5 kb for groups, and 10 kb for roles). S3 supports bucket policies of up 20 kb.</li><li>You prefer to keep access control policies in the S3 environment.</li></ol><h3><strong>6. Cross-Account AMI Copy</strong></h3><p><strong>You can’t copy an AMI with an associated billingProduct code that was shared with you from another account. </strong>This includes Windows AMIs and AMIs from the AWS Marketplace. To copy a shared AMI with a billingProduct code, launch an EC2 instance in your account using the shared AMI and then create an AMI from the instance.</p><p>You can’t copy an encrypted AMI that was shared with you from another account. Instead, if the underlying snapshot and encryption key were shared with you, you can copy the snapshot while re-encrypting it with a key of your own. You own the copied snapshot, and can register it as a new AMI.</p><h3><strong>7. Loss Key for Instance Store-Backed</strong></h3><p>Amazon EC2 doesn’t keep a copy of your private key; therefore, if you lose a private key, there is no way to recover it. If you lose the private key for an instance store-backed instance, you can’t access the instance; you should terminate the instance and launch another instance using a new key pair. If you lose the private key for an EBS-backed Linux instance, you can regain access to your instance.</p><h3><strong>8. How do I troubleshoot HTTP 5xx errors from Amazon S3?</strong></h3><p>The error code 500 Internal Error indicates that Amazon S3 is unable to handle the request at that time. The error code 503 Slow Down typically indicates that the requests to the S3 bucket are very high, exceeding the request rates.</p><h3><strong>9. Getting Credential Reports for Your AWS Account</strong></h3><p>You can generate and download a credential report that lists all users in your account and the status of their various credentials, including passwords, access keys, and MFA devices. You can get a credential report from the AWS Management Console, the AWS SDKs and Command Line Tools, or the IAM API.</p><h3><strong>10. AMIs Copying</strong></h3><ol><li>An identical target AMI is created, but with its own unique identifier.</li><li>For EBS Backed AMI, an identical but distinct root and data snapshots are created.</li><li>Encryption status of the snapshots are preserved. However, Launch permissions, user-defined tags, or Amazon S3 bucket permissions are not copied from the source AMI to the new AMI. After the copy operation is complete, different launch permissions, user-defined tags, and Amazon S3 bucket permissions to the new AMI.</li><li>AMI copy image can’t be used to create an unencrypted an AMI from an encrypted AMI.</li><li>AMI copy image can be used to encrypt an AMI from an unencrypted AMI.</li></ol><h3><strong>11. Glacier Retrieval Options</strong></h3><h4>Expedited</h4><p>to access data in 1–5 minutes, allow you to quickly access your data when occasional urgent requests for a subset of archives are required.</p><h4>Standard</h4><p>archives typically become available within 3–5 hours.</p><h4>Bulk</h4><p>access your data in approximately 5–12 hours, Bulk retrievals allow you to cost-effectively access significant portions of your data for things like big data analytics and media transcoding.</p><h3><strong>12. To create a customer gateway</strong></h3><p>For IP Address, type the <strong>static, internet-routable IP address for your customer gateway device.</strong> If your customer gateway is <strong>behind a NAT device</strong> that’s enabled for NAT-T, use the <strong>public IP address of the NAT device</strong>.</p><h3><strong>13. Amazon Redshift, High Availability</strong></h3><h4>Q: What happens to my data warehouse cluster availability and data durability if my data warehouse cluster’s Availability Zone (AZ) has an outage?</h4><p>If your Amazon Redshift data warehouse cluster’s Availability Zone becomes unavailable, you will not be able to use your cluster until power and network access to the AZ are restored. Your data warehouse cluster’s data is preserved so you can start using your Amazon Redshift data warehouse as soon as the AZ becomes available again. In addition, you can also choose to restore any existing snapshots to a new AZ in the same Region. Amazon Redshift will restore your most frequently accessed data first so you can resume queries as quickly as possible.</p><h4>Q: Does Amazon Redshift support Multi-AZ Deployments?</h4><p>Currently, Amazon Redshift only supports Single-AZ deployments. You can run data warehouse clusters in multiple AZ’s by loading data into two Amazon Redshift data warehouse clusters in separate AZs from the same set of Amazon S3 input files. With Redshift Spectrum, you can spin up multiple clusters across AZs and access data in Amazon S3 without having to load it into your cluster. In addition, you can also restore a data warehouse cluster to a different AZ from your data warehouse cluster snapshots.</p><h3><strong>14. Identity Federation in the AWS Cloud</strong></h3><p>Federation enables you to manage access to your AWS Cloud resources centrally. With federation, you can use single sign-on (SSO) to access your AWS accounts using credentials from your corporate directory. Federation uses open standards, such as Security Assertion Markup Language 2.0 (SAML), to exchange identity and security information between an identity provider (IdP) and an application.</p><p>Security Assertion Markup Language 2.0 (SAML) is an open standard for exchanging identity and security information with applications and service providers. Applications and service providers that support SAML enable you to sign in using your corporate directory credentials, such as your user name and password from Microsoft Active Directory.</p><h3><strong>15. Web Identity Federation — Amazon Cognito</strong></h3><p>Imagine that you are creating a mobile app that accesses AWS resources, such as a game that runs on a mobile device and stores player and score information using Amazon S3 and DynamoDB.</p><p>When you write such an app, you’ll make requests to AWS services that must be signed with an AWS access key. However, we strongly recommend that you do not embed or distribute long-term AWS credentials with apps that a user downloads to a device, even in an encrypted store. Instead, build your app so that it requests temporary AWS security credentials dynamically when needed using web identity federation. The supplied temporary credentials map to an AWS role that has only the permissions needed to perform the tasks required by the mobile app.</p><h3><strong>16. EC2 Monitoring</strong></h3><p>Minimum:</p><ol><li>CPUUtilization</li><li>NetworkIn</li><li>Networkout</li><li>DiskReadOps</li><li>DiskWriteOps</li><li>DiskReadBytes</li><li>DiskWriteBytes</li></ol><h3><strong>17. What happens to my backups and DB snapshots if I delete my DB instance?</strong></h3><p>When you delete a DB instance, you can create a final DB snapshot upon deletion; if you do, you can use this DB snapshot to restore the deleted DB instance at a later date. Amazon RDS retains this final user-created DB snapshot along with all other manually created DB snapshots after the DB instance is deleted.</p><p><strong>Automated backups are deleted when the DB instance is deleted.</strong> Only manually created DB Snapshots are retained after the DB Instance is deleted.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*D3AFAfHDuwI9N8yt" /><figcaption>Summary on AWS RDS Backup</figcaption></figure><h3><strong>18. MFA Protection for Access to API Operations in the Current Account</strong></h3><ol><li>If user Sofía needs to stop or terminate an Amazon EC2 instance, she calls <strong>GetSessionToken</strong>. This API operation passes the ID of the MFA device and the current TOTP that Sofía gets from her device.</li><li>User Sofía (or an application that Sofía is using) uses the temporary credentials provided by GetSessionToken to call the Amazon EC2 StopInstances or TerminateInstances action.</li></ol><h3><strong>19. How do I use an MFA token to authenticate access to my AWS resources through the AWS CLI?</strong></h3><p>If you plan to interact with your resources using the AWS CLI while using an MFA device, you must create a temporary session token instead. If you are using an MFA hardware device, the ARN value is similar to GAHT12345678. If you are using a virtual MFA, the value is similar to arn:aws:iam::123456789012:mfa/user.</p><p><em>AWS CLI command</em></p><pre>aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token</pre><p><em>Output</em></p><pre>{</pre><pre>  &quot;Credentials&quot;: {</pre><pre>    &quot;SecretAccessKey&quot;: &quot;secret-access-key&quot;,</pre><pre>    &quot;SessionToken&quot;: &quot;temporary-session-token&quot;,</pre><pre>    &quot;Expiration&quot;: &quot;expiration-date-time&quot;,</pre><pre>    &quot;AccessKeyId&quot;: &quot;access-key-id&quot;</pre><pre>  ;}</pre><pre>}</pre><h3><strong>20. Why can’t I connect to an S3 bucket using a gateway VPC endpoint?</strong></h3><h4><strong>DNS settings in your VPC</strong></h4><p>DNS resolution must be enabled in your VPC</p><h4><strong>Route table settings to Amazon S3</strong></h4><p>Be sure there’s a route to Amazon S3 using the gateway VPC endpoint.</p><h4><strong>Security group outbound rules</strong></h4><ol><li>The default outbound rule allows all outbound traffic. If the security group doesn’t have the default outbound rule, and instead has more restrictive rules, be sure to add one of the following outbound rules:</li><li>An outbound rule allowing traffic from the ID of the prefix list associated with the gateway VPC endpoint.</li><li>Outbound rules with Destination as the public IPs used by Amazon S3.</li></ol><h4><strong>Network ACL rules</strong></h4><ol><li>In the Inbound Rules view, be sure the rules allow inbound return traffic from Amazon S3 on ephemeral TCP ports 1024–65535.</li><li>In the Outbound Rules view, be sure the rules allow traffic to Amazon S3.</li><li>Note: By default, network ACLs allow all inbound and outbound IPv4 traffic and, if applicable, IPv6 traffic. If your network ACL rules restrict traffic, you must specify the CIDR block (IP address range) for S3.</li></ol><h4><strong>Gateway VPC endpoint policy</strong></h4><p>Review the endpoint policy. Check if the policy blocks access to the S3 bucket or to the IAM user affected by the connectivity issues. Edit the policy to enable access for the S3 bucket or IAM user.</p><h4><strong>S3 bucket policy</strong></h4><p>Be sure the bucket policy allows access from the gateway VPC endpoint and the VPC that you want to connect. Edit the policy to enable access from the gateway VPC endpoint and VPC. Your bucket policy can restrict access only from a specific public IP address or an elastic IP address associated with an instance in an Amazon VPC. You can’t restrict access based on private IP addresses associated with instances.</p><h4><strong>IAM policy</strong></h4><h3><strong>21. CloudFormation — Prevent Delete Resource (URL Request Parameter)</strong></h3><ol><li>Set the DisableRollback flag to true, when creating the stack</li><li>Set the OnFailure to DO_NOTHING, when creating the stack</li></ol><h3><strong>22. EBS Volume</strong></h3><ol><li>General Purpose SSD (gp2) — General — 16000 (IOPS)</li><li>Provisioned IOPS SSD (io1) — Large database workloads — 64000 (IOPS)</li><li>Throughput Optimized HDD (st1) — Big Data</li><li>Cold HDD (sc1) — lowest storage cost</li><li>SSD Instance Store — 100000 (IOPS)</li></ol><h3><strong>23. Vulnerability and Penetration Testing</strong></h3><p>The form requires you to submit information about the instances you wish to test, identify the expected start and end dates/times of your test, and requires you to read and agree to Terms and Conditions specific to penetration testing and to the use of appropriate tools for testing. Note that the end date may not be more than 90 days from the start date.</p><p><strong>Permission is required for all penetration tests.</strong></p><h3><strong>24. What is Amazon EFS Encryption?</strong></h3><p>Amazon EFS offers the ability to encrypt data at rest and in transit.</p><p><strong>Data encrypted at rest</strong> is transparently encrypted while being written, and transparently decrypted while being read, so you don’t have to modify your applications. <strong>Encryption keys are managed by the AWS Key Management Service (KMS)</strong>, eliminating the need to build and maintain a secure key management infrastructure.</p><p><strong>Data encryption in transit</strong> uses industry standard Transport Layer Security (TLS) 1.2 to encrypt data sent between your clients and EFS file systems.</p><p>When you create a new file system, you can select a key that will be used to encrypt the contents of the files that you store on the file system.</p><h3><strong>25. Granting Permission to Launch EC2 Instances with IAM Roles (PassRole Permission)</strong></h3><p>As with other IAM permissions, you can specify a wildcard (*) as the resource for the PassRole permission. For example, the following policy allows a user to associate any role whose name starts with DevTeam with the instance, such as DevTeam1 or DevTeam2.</p><pre>{</pre><pre>  &quot;Version&quot;: &quot;2012-10-17&quot;,</pre><pre>  &quot;Statement&quot;: [{</pre><pre>    &quot;Effect&quot;:&quot;Allow&quot;,</pre><pre>    &quot;Action&quot;:[&quot;ec2:*&quot;],</pre><pre>    &quot;Resource&quot;:&quot;*&quot;</pre><pre>  },</pre><pre>  {</pre><pre>   &quot;Effect&quot;:&quot;Allow&quot;,</pre><pre>   &quot;Action&quot;:&quot;iam:PassRole&quot;,</pre><pre>   &quot;Resource&quot;:&quot;arn:aws:iam::123456789012:role/DevTeam*&quot;</pre><pre>  }]</pre><pre>}</pre><p>You can also use a wildcard to indicate that the permission applies to all resources–in this case, that the user is allowed to associate any role with an instance:</p><pre>&quot;Resource&quot;:&quot;arn:aws:iam::123456789012:role/*&quot;</pre><h3><strong>26. AWS Config Vs Trust Advisor Notification</strong></h3><h4><strong>Trusted Advisor notification feature</strong></h4><p>You will be notified by <strong>weekly</strong> <strong>email</strong> when you opt in for this service, and it is totally <strong>free</strong>.</p><h4><strong>AWS Config</strong></h4><p>You can configure AWS Config to stream configuration changes and notifications to an Amazon <strong>SNS</strong> topic. <strong>When a resource is updated, you can get a notification sent to your email, so that you can view the changes.</strong></p><h3><strong>27. Network ACL</strong></h3><p>route.state — The state of a route in the route table (active | <strong>blackhole</strong>). The blackhole state indicates that the route’s target isn’t available (for example, the specified gateway isn’t attached to the VPC, the specified NAT instance has been terminated, and so on).</p><p>Route propagation allows a <strong>virtual private gateway</strong> to automatically propagate routes to the route tables so that you <strong>don’t need to manually enter VPN routes</strong> to your route tables. You can enable or disable route propagation.</p><h3><strong>28. Aurora Reader Endpoint</strong></h3><p>You use the reader endpoint for read-only connections for your Aurora cluster. This endpoint uses a load-balancing mechanism to help your cluster handle a query-intensive workload. The reader endpoint is the endpoint that you supply to applications that do reporting or other read-only operations on the cluster.</p><p>The reader endpoint only load-balances connections to available Aurora Replicas in an Aurora DB cluster. It doesn’t load-balance individual queries. If you want to load-balance each query to distribute the read workload for a DB cluster, open a new connection to the reader endpoint for each query.</p><p>Each Aurora cluster has a single built-in reader endpoint, whose name and other attributes are managed by Aurora. You can’t create, delete, or modify this kind of endpoint.</p><h3><strong>29. Cost Allocation Tag</strong></h3><p>AWS provides two types of cost allocation tags, an <strong>AWS generated tags and user-defined tags</strong>. You must activate both types of tags separately before they can appear in Cost Explorer or on a <strong>cost allocation report</strong>.</p><p>You can’t delete or merge tags. Instead, deactivate tags so that they aren’t used in your billing reports.</p><p>Only master accounts in an organization and single accounts that are not members of an organization have access to the Cost Allocation Tags manager in the Billing console.</p><h3><strong>30. AWS Organization</strong></h3><h4><strong>master account</strong></h4><p>A master account is the AWS account you use to create your organization. From the master account, you can create other accounts in your organization, invite and manage invitations for other accounts to join your organization, and remove accounts from your organization. You can also attach policies to entities such as administrative roots, organizational units (OUs), or accounts within your organization. <strong>The master account has the role of a payer account and is responsible for paying all charges accrued by the accounts in its organization. You cannot change which account in your organization is the master account.</strong></p><h4><strong>member account</strong></h4><p>A member account is an AWS account, other than the master account, that is part of an organization. If you are an administrator of an organization, you can create member accounts in the organization and invite existing accounts to join the organization. You also can apply policies to member accounts. A member account can belong to only one organization at a time.</p><h4><strong>Control Access</strong></h4><p>You can create Service Control Policies (SCPs) that centrally control AWS service use across multiple AWS accounts. You can specifically Allow or Deny individual AWS Services. For example, you could deny the use of Kinesis or DynamoDB to your HR group within your AWS Organization. Even if <strong>IAM in that account allows it, SCP will override it.</strong></p><h3><strong>31. Redshift — The Connection Is Refused or Fails</strong></h3><p>Example Error:</p><ol><li>“Failed to establish a connection to &lt;endpoint&gt;.”</li><li>“Could not connect to server: Connection timed out. Is the server running on host ‘&lt;endpoint&gt;’ and accepting TCP/IP connections on port ‘&lt;port&gt;’?”</li><li>“Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.”</li></ol><p>Generally, when you receive an error message indicating that there is a failure to establish a connection, it is an issue with permission to access the cluster. You must add an <strong>ingress rule</strong> to the cluster security group for the CIDR/IP.</p><h3><strong>32. Troubleshooting AWS CloudFormation</strong></h3><h4><strong>Delete Stack Fails</strong></h4><ol><li>Some resources must be empty before they can be deleted. For example, you must delete all objects in an Amazon S3 bucket or remove all instances in an Amazon EC2 security group before you can delete the bucket or security group.</li><li>Ensure that you have the necessary IAM permissions to delete the resources in the stack. In addition to AWS CloudFormation permissions, you must be allowed to use the underlying services, such as Amazon S3 or Amazon EC2.</li><li>When stacks are in the DELETE_FAILED state because AWS CloudFormation couldn’t delete a resource, rerun the deletion with the RetainResources parameter and specify the resource that AWS CloudFormation can’t delete. AWS CloudFormation deletes the stack without deleting the retained resource. Retaining resources is useful when you can’t delete a resource, such as an S3 bucket that contains objects that you want to keep, but you still want to delete the stack.</li><li>You cannot delete stacks that have termination protection enabled.</li></ol><h4><strong>Dependency Error</strong></h4><p>To resolve a dependency error, add a DependsOn attribute to resources that depend on other resources in your template. In some cases, you must explicitly declare dependencies so that AWS CloudFormation can create or delete resources in the correct order.</p><p>For example, if you create an Elastic IP and a VPC with an Internet gateway in the same stack, the Elastic IP must depend on the Internet gateway attachment.</p><h4><strong>Insufficient IAM Permissions</strong></h4><p>When you work with an AWS CloudFormation stack, you not only need permissions to use AWS CloudFormation, you must also have permission to use the underlying services that are described in your template. For example, if you’re creating an Amazon S3 bucket or starting an Amazon EC2 instance, you need permissions to Amazon S3 or Amazon EC2.</p><h4><strong>Invalid Value or Unsupported Resource Property</strong></h4><p>When you create or update an AWS CloudFormation stack, your stack can fail due to invalid input parameters, unsupported resource property names, or unsupported resource property values. For input parameters, verify that the resource exists.</p><p>For example, when you specify an Amazon EC2 key pair or VPC ID, the resource must exist in your account and in the region in which you are creating or updating your stack. You can use AWS-specific parameter types to ensure that you use valid values.</p><p>For resource property names and values, update your template to use valid names and values. For a list of all the resources and their property names, see AWS Resource and Property Types Reference.</p><h4><strong>Limit Exceeded</strong></h4><p>Verify that you didn’t reach a resource limit. For example, the default number Amazon EC2 instances that you can launch is 20. If try to create more Amazon EC2 instances than your account limit, the instance creation fails and you receive the error Status=start_failed.</p><p>Also, during an update, if a resource is replaced, AWS CloudFormation creates new resource before it deletes the old one. This replacement might put your account over the resource limit, which would cause your update to fail. You can delete excess resources or request a limit increase.</p><h4><strong>No Updates to Perform</strong></h4><p>To update an AWS CloudFormation stack, you must submit template or parameter value changes to AWS CloudFormation. However, AWS CloudFormation won’t recognize some template changes as an update, such as changes to a deletion policy, update policy, condition declaration, or output declaration. If you need to make such changes without making any other change, you can add or modify a metadata attribute for any of your resources.</p><h4><strong>Wait Condition Didn’t Receive the Required Number of Signals from an Amazon EC2 Instance</strong></h4><p>Ensure that the AMI you’re using has the AWS CloudFormation helper scripts installed. If the AMI doesn’t include the helper scripts, you can also download them to your instance.</p><p>Verify that the cfn-signal command was successfully run on the instance.</p><h3><strong>33. Amazon S3 Inventory</strong></h3><p>You can <strong>use it to audit and report on the replication and encryption status</strong> of your objects for business, compliance, and regulatory needs. You can also simplify and speed up business workflows and big data jobs using Amazon S3 inventory, which provides a scheduled alternative to the Amazon S3 synchronous List API operation.</p><p>You can configure multiple inventory lists for a bucket. You can configure what object metadata to include in the inventory, <strong>whether to list all object versions or only current versions</strong>, where to store the inventory list file output, and whether to generate the inventory on a daily or weekly basis. You can also specify that the inventory list file be encrypted.</p><p>You can query Amazon S3 inventory using standard SQL by using Amazon Athena, Amazon Redshift Spectrum, and other tools such as Presto, Apache Hive, and Apache Spark. It’s easy to use Athena to run queries on your inventory files. You can use Athena for Amazon S3 inventory queries in all Regions where Athena is available.</p><h3><strong>34. Amazon S3 Analytics</strong></h3><p>By using Amazon S3 analytics storage class analysis you can analyze storage access patterns to help you decide when to transition the right data to the right storage class. This new Amazon S3 analytics feature observes data access patterns to help you <strong>determine when to transition less frequently accessed STANDARD storage to the STANDARD_IA</strong> (IA, for infrequent access) storage class.</p><h3><strong>35. Can I use Amazon ElastiCache for Memcached with an AWS persistent data store such as Amazon RDS or Amazon DynamoDB?</strong></h3><p>Yes, Amazon ElastiCache is an ideal front-end for data stores like Amazon RDS or Amazon DynamoDB, providing a high-performance middle tier for applications with extremely high request rates and/or low latency requirements.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ff1019dd4baa" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Summary on the AWS RDS FAQ]]></title>
            <link>https://medium.com/@hk_it_er/summary-on-the-aws-rds-faq-90dd443f983?source=rss-80bd7dd87664------2</link>
            <guid isPermaLink="false">https://medium.com/p/90dd443f983</guid>
            <category><![CDATA[rds]]></category>
            <category><![CDATA[aws-exam]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[aws-certificate]]></category>
            <category><![CDATA[sysops]]></category>
            <dc:creator><![CDATA[HK_IT_ER]]></dc:creator>
            <pubDate>Mon, 17 Dec 2018 14:37:14 GMT</pubDate>
            <atom:updated>2019-01-02T14:29:25.453Z</atom:updated>
            <content:encoded><![CDATA[<h3>Summary on the AWS RDS FAQ for AWS Certification</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nSjXuY-YYaCbs6cgxC7e6w.png" /><figcaption>Summary on the AWS RDS FAQ</figcaption></figure><p>This story is the summary for the AWS RDS FAQ and help you to filter the useful FAQ for the examination.</p><blockquote>Target Audience</blockquote><ol><li>AWS Certified Solutions Architect — Associate</li><li>AWS Certified Developer — Associate</li><li>AWS Certified SysOps Administrator — Associate.</li></ol><blockquote>Questions Highlight</blockquote><h3><strong>Q: What does Amazon RDS manage on my behalf?</strong></h3><p>Amazon RDS manages the work involved in setting up a relational database: from provisioning the infrastructure capacity you request to installing the database software. Once your database is up and running, Amazon RDS automates common administrative tasks such as performing backups and patching the software that powers your database. With optional <strong>Multi-AZ deployments</strong>, Amazon RDS also manages <strong>synchronous</strong> data replication across Availability Zones with automatic failover.</p><p>Since Amazon RDS provides native database access, you interact with the relational database software as you normally would. This means <strong>you’re still responsible for managing the database settings</strong> that are specific to your application. You’ll need <strong>to build the relational schema</strong> that best fits your use case and are responsible for any performance tuning to optimize your database for your application’s workflow.</p><h3><strong>Q: What is a maintenance window? Will my DB instance be available during maintenance events?</strong></h3><p>The Amazon RDS maintenance window is your opportunity to control when DB instance modifications, database engine version upgrades, and software patching occurs, in the event they are requested or required. If a maintenance event is scheduled for a given week, it will be initiated during the maintenance window you identify.<br>Maintenance events that require Amazon RDS <strong>to take your DB instance offline are scale compute operations (which generally take only a few minutes from start-to-finish)</strong>, database engine version upgrades, and required software patching. Required software patching is automatically scheduled only for patches that are security and durability related. Such patching occurs infrequently (typically once every few months) and should seldom require more than a fraction of your maintenance window.</p><p><strong>If you do not specify a preferred weekly maintenance window when creating your DB instance, a 30 minute default value is assigned.</strong> If you wish to modify when maintenance is performed on your behalf, you can do so by modifying your DB instance in the AWS Management Console, the ModifyDBInstance API or the modify-db-instance command. <strong>Each of your DB instances can have different preferred maintenance windows, if you so choose.</strong></p><p><strong>Running your DB instance as a Multi-AZ deployment can further reduce the impact of a maintenance event.</strong></p><h3><strong>Q: What should I do if my queries seem to be running slow?</strong></h3><p>For production databases we encourage you to enable <strong>Enhanced Monitoring</strong>, which provides access to over 50 CPU, memory, file system, and disk I/O metrics. You can enable these <strong>features on a per-instance basis</strong> and you can choose the granularity (all the way down to 1 second). High levels of CPU utilization can reduce query performance and in this case you may want to consider scaling your DB instance class.</p><p>If you are using RDS for <strong>MySQL or MariaDB</strong>, you can access the <strong>slow query logs</strong> for your database to determine if there are slow-running SQL queries and, if so, the performance characteristics of each. You could set the “slow_query_log” DB Parameter and query the mysql.slow_log table to review the slow-running SQL queries.</p><p>If you are using RDS for <strong>Oracle</strong>, you can use the <strong>Oracle trace file data</strong> to identify slow queries.</p><p>If you are using RDS for <strong>SQL Server</strong>, you can use the <strong>client side SQL Server traces</strong> to identify slow queries.</p><h3>Database Engine Versions</h3><h3><strong>Q: How do I control if and when the engine version of my DB instance is upgraded to new supported versions?</strong></h3><p>Amazon RDS strives to keep your database instance up to date by providing you newer versions of the supported database engines. After a new version of a database engine is released by the vendor or development organization, it is thoroughly tested by our database engineering team before it is made available in Amazon RDS.</p><p>We recommend that you <strong>keep your database instance upgraded to the most current minor version</strong> as it will contain the latest security and functionality fixes. <strong>Unlike major version upgrades, minor version upgrades only include database changes that are backward-compatible with previous minor versions (of the same major version) of the database engine. </strong>If a new minor version does not contain fixes that would benefit RDS customers, we may choose not to make it available in RDS. Soon after a new minor version is available in RDS, we will set it to be the preferred minor version for new DB instances.</p><p>To manually upgrade a database instance to a supported engine version, use the Modify DB Instance command on the AWS Management Console or the ModifyDBInstance API and set the DB Engine Version parameter to the desired version. <strong>By default, the upgrade will be applied or during your next maintenance window.</strong> <strong>You can also choose to upgrade immediately by selecting the Apply Immediately option in the console API.</strong></p><p>If we determine that a new engine minor version contains significant bug fixes compared to a previously released minor version, we will schedule automatic upgrades for DB instances which have the Auto Minor Version Upgrade setting to “Yes”. These upgrades will be scheduled to occur during customer-specified maintenance windows.</p><p><strong>We schedule them so you can plan around them, because downtime is required to upgrade a DB engine version, even for Multi-AZ instances. </strong>If <strong>you wish to turn off automatic minor version upgrades, you can do so by setting the Auto Minor Version Upgrade setting to “No”.</strong></p><p><strong>In the case of RDS for Oracle and RDS for SQL Server, if the upgrade to the next minor version requires a change to a different edition, then we may not schedule automatic upgrades even if you have enabled the Auto Minor Version Upgrade setting.</strong> The determination on whether to schedule automatic upgrades in such situations will be made on a case-by-case basis.<br>Since major version upgrades involve some compatibility risk, they will not occur automatically and must be initiated by you (except in the case of major version deprecation, see below).</p><h3><strong>Q: Can I test my DB instance with a new version before upgrading?</strong></h3><p>Yes. You can do so by creating a DB snapshot of your existing DB instance, restoring from the DB snapshot to create a new DB instance, and then initiating a version upgrade for the new DB instance. You can then experiment safely on the upgraded copy of your DB instance before deciding whether or not to upgrade your original DB instance.</p><h3><strong>Q: What happens when an RDS DB engine version is deprecated?</strong></h3><p>When a <strong>minor version</strong> of a database engine is deprecated in Amazon RDS, we will provide a three (3) month period after the announcement before beginning automatic upgrades. At the end of the this period, all instances still running the deprecated minor version will be scheduled for automatic upgrade to the latest supported minor version during their scheduled maintenance windows.</p><p>When a <strong>major version</strong> of database engine is deprecated in Amazon RDS, we will provide a minimum six (6) month period after the announcement of a deprecation for you to initiate an upgrade to a supported major version. At the end of this period, an automatic upgrade to the next major version will be applied to any instances still running the deprecated version during their scheduled maintenance windows.</p><p><strong>Once a major or minor database engine version is no longer supported in Amazon RDS, any DB instance restored from a DB snapshot created with the unsupported version will automatically and immediately be upgraded to a currently supported version.</strong></p><h3>Hardware and Scaling</h3><h3><strong>Q: How do I scale the compute resources and/or storage capacity associated with my Amazon RDS Database Instance?</strong></h3><p>You can scale the compute resources and storage capacity allocated to your DB instance with the AWS Management Console, the RDS API, or the AWS Command Line Interface. <strong>Memory and CPU resources are modified by changing your DB Instance class</strong>, and storage available is changed when you modify your storage allocation.<strong> Please note that when you modify your DB Instance class or allocated storage, your requested changes will be applied during your specified maintenance window.</strong> Alternately, you can use the “apply-immediately” flag to apply your scaling requests immediately. Bear in mind that any other pending system changes will be applied as well.</p><p><strong>Monitor the compute and storage resource utilization of your DB instance, for no additional charge, via Amazon CloudWatch. </strong>You can access metrics such as CPU utilization, storage utilization, and network traffic by clicking the “Monitoring” tab for your DB Instance in the AWS Management Console or using the Amazon CloudWatch APIs.</p><h3><strong>Q: What is the hardware configuration for Amazon RDS storage?</strong></h3><p>Amazon RDS uses EBS volumes for database and log storage. Depending on the size of storage requested, Amazon RDS automatically stripes across multiple EBS volumes to enhance IOPS performance. For MySQL and Oracle, for an existing DB instance, you may observe some I/O capacity improvement if you scale up your storage. You can scale the storage capacity allocated to your DB Instance using the AWS Management Console, the ModifyDBInstance API, or the modify-db-instance command.</p><p>However, <strong>for SQL Server</strong>, because of the extensibility limitations of striped storage attached to a Windows Server environment, <strong>Amazon RDS does not currently support increasing storage.</strong></p><h3><strong>Q: Will my DB instance remain available during scaling?</strong></h3><p>The storage capacity allocated to your DB Instance can be increased while maintaining DB Instance availability. However, when you decide to scale the compute resources available to your DB instance up or down, <strong>your database will be temporarily unavailable while the DB instance class is modified</strong>. This period of unavailability typically lasts only a few minutes, and will occur <strong>during the maintenance window</strong> for your DB Instance, unless you specify that the modification should be applied immediately.</p><h3><strong>Q: How do I choose among the Amazon RDS storage types?</strong></h3><p>Choose the storage type most suited for your workload.</p><ol><li>High-performance <strong>OLTP</strong> workloads: Amazon RDS <strong>Provisioned IOPS</strong> (SSD) Storage</li><li>Database workloads with moderate I/O requirements: Amazon RDS General Purpose (SSD) Storage</li></ol><h3>Automatic Backups and Database Snapshots</h3><h3><strong>Q: What is the difference between automated backups and DB Snapshots?</strong></h3><p>The automated backup feature of Amazon RDS enables point-in-time recovery of your DB instance. When automated backups are turned on for your DB Instance, Amazon RDS automatically performs a full daily snapshot of your data (during your preferred backup window) and captures transaction logs (as updates to your DB Instance are made). <strong>When you initiate a point-in-time recovery, transaction logs are applied to the most appropriate daily backup in order to restore your DB instance to the specific time you requested. </strong>Amazon RDS retains backups of a DB Instance for a limited, user-specified period of time called the retention period, <strong>which by default is 7 days but can be set to up to 35 days</strong>. You can initiate a point-in-time restore and specify any second during your retention period, up to the Latest Restorable Time.</p><p><strong>DB Snapshots are user-initiated and enable you to back up your DB instance in a known state as frequently as you wish</strong>, and then restore to that specific state at any time. DB Snapshots can be created with the AWS Management Console, CreateDBSnapshot API, or create-db-snapshot command and are kept until you explicitly delete them.</p><p>The snapshots which Amazon RDS performs for enabling automated backups are available to you for copying (using the AWS console or the copy-db-snapshot command) or for the snapshot restore functionality. You can identify them using the “automated” Snapshot Type. In addition, you can identify the time at which the snapshot has been taken by viewing the “Snapshot Created Time” field. Alternatively, the identifier of the “automated” snapshots also contains the time (in UTC) at which the snapshot has been taken.</p><p><strong>Please note: When you perform a restore operation to a point in time or from a DB Snapshot, a new DB Instance is created with a new endpoint (the old DB Instance can be deleted if so desired)</strong>. This is done to enable you to create multiple DB Instances from a specific DB Snapshot or point in time.</p><h3><strong>Q: What is a backup window and why do I need it? Is my database available during the backup window?</strong></h3><p>The preferred backup window is the user-defined period of time during which your DB Instance is backed up. Amazon RDS uses these periodic data backups in conjunction with your transaction logs to enable you to restore your DB Instance to any second during your retention period, up to the LatestRestorableTime (typically up to the last few minutes). During the backup window, storage I/O may be briefly suspended while the backup process initializes (typically under a few seconds) and you may experience a brief period of elevated latency. <strong>There is no I/O suspension for Multi-AZ DB deployments, since the backup is taken from the standby.</strong></p><h3>Q: Where are my automated backups and DB snapshots stored and how do I manage their retention?</h3><p>Amazon RDS DB snapshots and automated backups are stored in S3.</p><h3>Q: What happens to my backups and DB snapshots if I delete my DB instance? (Exam)</h3><p><strong>When you delete a DB instance, you can create a final DB snapshot upon deletion</strong>; if you do, you can use this DB snapshot to restore the deleted DB instance at a later date. Amazon RDS retains this final user-created DB snapshot along with all other manually created DB snapshots after the DB instance is deleted.</p><p><strong>Automated backups are deleted when the DB instance is deleted.</strong> Only manually created DB Snapshots are retained after the DB Instance is deleted.</p><h3>Security</h3><h3>Q: What is a DB Subnet Group and why do I need one?</h3><p><strong>A DB Subnet Group is a collection of subnets that you may want to designate for your RDS DB Instances in a VPC</strong>. Each DB Subnet Group should have at least one subnet for every Availability Zone in a given Region. When creating a DB Instance in VPC, you will need to select a DB Subnet Group. Amazon RDS then uses that DB Subnet Group and your preferred Availability Zone to select a subnet and an IP address within that subnet. Amazon RDS creates and associates an Elastic Network Interface to your DB Instance with that IP address.</p><p><strong>Please note that, we strongly recommend you use the DNS Name to connect to your DB Instance as the underlying IP address can change (e.g., during a failover).</strong></p><p>For Multi-AZ deployments, defining a subnet for all Availability Zones in a Region will allow Amazon RDS to create a new standby in another Availability Zone should the need arise. You need to do this even for Single-AZ deployments, just in case you want to convert them to Multi-AZ deployments at some point.</p><h3>Q: Can I change the DB Subnet Group of my DB Instance?</h3><p>An existing DB Subnet Group can be updated to add more subnets, either for existing Availability Zones or for new Availability Zones added since the creation of the DB Instance. Removing subnets from an existing DB Subnet Group can cause unavailability for instances if they are running in a particular AZ that gets removed from the subnet group.</p><h3><strong>Q: Can I encrypt connections between my application and my DB Instance using SSL?</strong></h3><p>Yes, this option is currently supported for the MySQL, MariaDB, SQL Server, PostgreSQL, and Oracle engines.</p><p><strong>Amazon RDS generates an SSL certificate for each DB Instance. </strong>Once an encrypted connection is established, data transferred between the DB Instance and your application will be encrypted during transfer.</p><p>While SSL offers security benefits, be aware that SSL encryption is a compute-intensive operation and will increase the latency of your database connection. SSL support within Amazon RDS is for encrypting the connection between your application and your DB Instance; it should not be relied on for authenticating the DB Instance itself.</p><h3><strong>Q: Can I encrypt data at rest on my Amazon RDS databases?</strong></h3><p><strong>Amazon RDS supports encryption at rest for all database engines</strong>, using keys you manage using AWS Key Management Service (<strong>KMS</strong>). On a database instance running with Amazon RDS encryption, data stored at rest in the underlying storage is encrypted, as are its automated backups, read replicas, and snapshots. Encryption and decryption are handled transparently.</p><p><strong>You can also add encryption to a previously unencrypted DB instance or DB cluster by creating a DB snapshot and then creating a copy of that snapshot and specifying a KMS encryption key. You can then restore an encrypted DB instance or DB cluster from the encrypted snapshot.</strong></p><h3><strong>Q: I wish to perform security analysis or operational troubleshooting on my RDS deployment. Can I get a history of all RDS API calls made on my account?</strong></h3><p>Yes. AWS <strong>CloudTrail</strong> is a web service that records AWS API calls for your account and delivers log files to you. The AWS API call history produced by CloudTrail enables security analysis, resource change tracking, and compliance auditing.</p><h3>Database Configuration</h3><h3><strong>Q: What are DB Parameter groups? How are they helpful?</strong></h3><p>A database parameter group (DB Parameter Group) acts as a “container” for engine <strong>configuration values</strong> that can be applied to one or more DB Instances. If you create a DB Instance without specifying a DB Parameter Group, a default DB Parameter Group is used. This default group contains engine defaults and Amazon RDS system defaults optimized for the DB Instance you are running. However, <strong>if you want your DB Instance to run with your custom-specified engine configuration values, you can simply create a new DB Parameter Group</strong>, modify the desired parameters, and modify the DB Instance to use the new DB Parameter Group. Once associated, all DB Instances that use a particular DB Parameter Group get all the parameter updates to that DB Parameter Group.</p><h3>Q: How can I monitor the configuration of my Amazon RDS resources?</h3><p>You can use <strong>AWS Config</strong> to continuously record configurations changes to Amazon RDS DB Instances, DB Subnet Groups, DB Snapshots, DB Security Groups, and Event Subscriptions and receive notification of changes through <strong>Amazon Simple Notification Service (SNS)</strong>. You can also create AWS Config Rules to evaluate whether these RDS resources have the desired configurations.</p><h3>Multi-AZ Deployments</h3><h3>Q: What does it mean to run a DB instance as a Multi-AZ deployment?</h3><p>When you create or modify your DB instance to run as a Multi-AZ deployment, Amazon RDS automatically provisions and maintains a <strong>synchronous “standby” replica</strong> in a different Availability Zone. Updates to your DB Instance are <strong>synchronously replicated across Availability Zones</strong> to the standby in order to keep both in sync and protect your latest database updates against DB instance failure. During certain types of planned maintenance, or in the unlikely event of DB instance failure or Availability Zone failure, Amazon RDS will automatically failover to the standby so that you can resume database writes and reads as soon as the standby is promoted. <strong>Since the name record for your DB instance remains the same, your application can resume database operation without the need for manual administrative intervention.</strong> With Multi-AZ deployments, replication is transparent: you do not interact directly with the standby, and <strong>it cannot be used to serve read traffic.</strong></p><h3><strong>Q: What do “primary” and “standby” mean in the context of a Multi-AZ deployment?</strong></h3><p>When you run a DB instance as a Multi-AZ deployment, <strong>the “primary” serves database writes and reads.</strong> In addition, Amazon RDS provisions and maintains a “standby” behind the scenes, which is an up-to-date replica of the primary. <strong>The standby is “promoted” in failover scenarios</strong>. After failover, the standby becomes the primary and accepts your database operations. Y<strong>ou do not interact directly with the standby (e.g. for read operations) at any point prior to promotion.</strong></p><h3>Q: What are the benefits of a Multi-AZ deployment?</h3><p>The chief benefits of running your DB instance as a Multi-AZ deployment are enhanced database <strong>durability and availability</strong>. The increased availability and fault tolerance offered by Multi-AZ deployments make them a natural fit for production environments.</p><p>Running your DB instance as a Multi-AZ deployment safeguards your data in the unlikely event of a DB instance component failure or loss of availability in one Availability Zone. For example, if a storage volume on your primary fails, Amazon RDS automatically initiates a failover to the standby, where all of your database updates are intact. This provides additional data durability relative to standard deployments in a single AZ, where a user-initiated restore operation would be required and updates that occurred after the latest restorable time (typically within the last five minutes) would not be available.</p><p>You also benefit from enhanced database availability when running your DB instance as a Multi-AZ deployment. If an Availability Zone failure or DB instance failure occurs, your availability impact is limited to the time automatic failover takes to complete. The availability benefits of Multi-AZ also extend to planned maintenance. For example, <strong>with automated backups, I/O activity is no longer suspended on your primary during your preferred backup window, since backups are taken from the standby.</strong> <strong>In the case of patching or DB instance class scaling, these operations occur first on the standby, prior to automatic fail over. As a result, your availability impact is limited to the time required for automatic failover to complete.</strong></p><p>Another implied benefit of running your DB instance as a Multi-AZ deployment is that DB instance failover is automatic and requires no administration. In an Amazon RDS context, this means you are not required to monitor DB instance events and initiate manual DB instance recovery (via the RestoreDBInstanceToPointInTime or RestoreDBInstanceFromSnapshot APIs) in the event of an Availability Zone failure or DB instance failure.</p><h3>Q: Are there any performance implications of running my DB instance as a Multi-AZ deployments?</h3><p>You may observe elevated latencies relative to a standard DB instance deployment in a single Availability Zone as a result of the synchronous data replication performed on your behalf.</p><h3>Q: When running my DB instance as a Multi-AZ deployment, can I use the standby for read or write operations?</h3><p><strong>No</strong>, the standby replica cannot serve read requests. Multi-AZ deployments are designed to provide enhanced database availability and durability, rather than read scaling benefits. As such, the feature uses synchronous replication between primary and standby. Our implementation makes sure the primary and the standby are constantly in sync, but precludes using the standby for read or write operations.</p><h3>Q: What happens when I convert my RDS instance from Single-AZ to Multi-AZ?</h3><p>For the <strong>RDS MySQL, MariaDB, PostgreSQL and Oracle database</strong> engines, when you elect to convert your RDS instance from Single-AZ to Multi-AZ, the following happens:</p><ol><li>A snapshot of your primary instance is taken</li><li>A new standby instance is created in a different Availability Zone, from the snapshot</li><li>Synchronous replication is configured between primary and standby instances</li></ol><p>As such, <strong>there should be no downtime incurred</strong> when an instance is converted from Single-AZ to Multi-AZ.</p><h3>Q: What events would cause Amazon RDS to initiate a failover to the standby replica?</h3><ol><li>Loss of availability in primary Availability Zone</li><li>Loss of network connectivity to primary</li><li>Compute unit failure on primary</li><li>Storage failure on primary</li></ol><p>Note: When operations such as DB instance scaling or system upgrades like OS patching are initiated for Multi-AZ deployments, for enhanced availability, they are applied first on the standby prior to an automatic failover. As a result, <strong>your availability impact is limited only to the time required for automatic failover to complete.</strong> Note that Amazon RDS Multi-AZ deployments <strong>do not failover automatically in response to database operations such as long running queries, deadlocks or database corruption errors.</strong></p><h3>Q: Will I be alerted when automatic failover occurs?</h3><p><strong>Yes</strong>, Amazon RDS will emit a DB instance event to inform you that automatic failover occurred. You can click the “Events” section of the Amazon RDS Console or use the DescribeEvents API to return information about events related to your DB instance. You can also use <strong>Amazon RDS Event Notifications to be notified when specific DB events occur.</strong></p><h3>Q: What happens during Multi-AZ failover and how long does it take?</h3><p>Failover is automatically handled by Amazon RDS so that you can resume database operations as quickly as possible without administrative intervention. <strong>When failing over, Amazon RDS simply flips the canonical name record (CNAME) for your DB instance to point at the standby, which is in turn promoted to become the new primary.</strong> We encourage you to follow best practices and implement database connection retry at the application layer.</p><p>Failovers, as defined by the interval between the detection of the failure on the primary and the resumption of transactions on the standby, typically complete within one to two minutes. Failover time can also be affected by whether large uncommitted transactions must be recovered; the use of adequately large instance types is recommended with Multi-AZ for best results. AWS also recommends the use of Provisioned IOPS with Multi-AZ instances, for fast, predictable, and consistent throughput performance.</p><h3>Q: Can I initiate a “forced failover” for my Multi-AZ DB instance deployment?</h3><p>Amazon RDS will automatically failover without user intervention under a variety of failure conditions. In addition, <strong>Amazon RDS provides an option to initiate a failover when rebooting your instance.</strong></p><h3>Q: Will my standby be in the same Region as my primary?</h3><p>Yes. Your standby is automatically provisioned in a <strong>different Availability Zone of the same Region</strong> as your DB instance primary.</p><h3><strong>Q: After failover, my primary is now located in a different Availability Zone than my other AWS resources (e.g. EC2 instances). Should I be concerned about latency?</strong></h3><p>Availability Zones are engineered to provide low latency network connectivity to other Availability Zones in the same Region. In addition, <strong>you may want to consider architecting your application and other AWS resources with redundancy across multiple Availability Zones so your application will be resilient in the event of an Availability Zone failure.</strong></p><h3>Q: How do DB Snapshots and automated backups work with my Multi-AZ deployment?</h3><p>You interact with automated backup and DB Snapshot functionality in the same way whether you are running a standard deployment in a Single-AZ or Multi-AZ deployment. <strong>If you are running a Multi-AZ deployment, automated backups and DB Snapshots are simply taken from the standby to avoid I/O suspension on the primary. </strong>Please note that you may experience increased I/O latency (typically lasting a few minutes) during backups for both Single-AZ and Multi-AZ deployments.</p><h3>Read Replicas</h3><h3>Q: What does it mean to run a DB Instance as a read replica?</h3><p>Read replicas make it easy to take advantage of supported engines’ built-in replication functionality to elastically scale out beyond the capacity constraints of a single DB instance <strong>for read-heavy database workloads</strong>. Once the read replica is created, database updates on the source DB instance will be replicated using a supported engine’s native, <strong>asynchronous replication</strong>. You can create multiple Read Replicas for a given source DB Instance and distribute your application’s read traffic amongst them.</p><p>Since read replicas use supported engines’ built-in replication, they are subject to its strengths and limitations. In particular, updates are applied to your read replica(s) after they occur on the source DB instance, and replication lag can vary significantly. Read replicas can be associated with Multi-AZ deployments to gain read scaling benefits in addition to the enhanced database write availability and data durability provided by Multi-AZ deployments.</p><h3>Q: When would I want to consider using an Amazon RDS read replica?</h3><p>Common reasons for deploying a read replica include:</p><ol><li>Scaling beyond the compute or I/O capacity of a single DB instance for read-heavy database workloads. This excess read traffic can be directed to one or more read replicas.</li><li>Serving read traffic while the source DB instance is unavailable. If your source DB Instance cannot take I/O requests (e.g. due to I/O suspension for backups or scheduled maintenance), you can direct read traffic to your Read Replica(s). For this use case, keep in mind that the data on the Read Replica may be “stale” since the source DB Instance is unavailable.</li><li>Business reporting or data warehousing scenarios; you may want business reporting queries to run against a Read Replica, rather than your primary, production DB Instance.</li><li>You may use a read replica for disaster recovery of the source DB instance, either in the same AWS Region or in another Region.</li></ol><h3>Q: Do I need to enable automatic backups on my DB instance before I can create read replicas?</h3><p>Yes. Enable automatic backups on your source DB Instance before adding read replicas, by setting the backup <strong>retention period</strong> to a value <strong>other than 0.</strong> <strong>Backups must remain enabled for read replicas to work.</strong></p><h3>Q: Can I create a read replica in an AWS Region different from that of the source DB instance?</h3><p><strong>Yes</strong>, Amazon RDS supports cross-region read replicas. The amount of time between when data is written to the source DB instance and when it is available in the read replica will depend on the network latency between the two regions.</p><h3>Q: Do Amazon RDS read replicas support synchronous replication?</h3><p><strong>No</strong>. Read replicas in Amazon RDS for MySQL, MariaDB and PostgreSQL are implemented using those engines’ native asynchronous replication. Amazon Aurora uses a different, but still asynchronous, replication mechanism.</p><h3><strong>Q: Can I use a read replica to enhance database write availability or protect the data on my source DB instance against failure scenarios?</strong></h3><p><strong>If you are looking to use replication to increase database write availability and protect recent database updates against various failure conditions, we recommend you run your DB instance as a Multi-AZ deployment.</strong> With Amazon RDS Read Replicas, which employ supported engines’ native, asynchronous replication, database writes occur on a read replica after they have already occurred on the source DB instance, and this replication “lag” can vary significantly. In contrast, the replication used by Multi-AZ deployments is synchronous, meaning that all database writes are concurrent on the primary and standby. This protects your latest database updates, since they should be available on the standby in the event a failover is required. In addition, with Multi-AZ deployments replication is fully managed. Amazon RDS automatically monitors for DB instance failure conditions or Availability Zone failure and initiates automatic failover to the standby (or to a read replica, in the case of Amazon Aurora) if an outage occurs.</p><h3>Q: Can I create a read replica with a Multi-AZ DB instance deployment as its source?</h3><p><strong>Yes.</strong> Since Multi-AZ DB instances address a different need than read replicas, it makes sense to use the two in conjunction for production deployments and to associate a read replica with a Multi-AZ DB Instance deployment. The “source” Multi AZ-DB instance provides you with enhanced write availability and data durability, and the associated read replica would improve read traffic scalability.</p><h3>Q: Can I configure my Amazon RDS read replicas themselves Multi-AZ?</h3><p>Amazon RDS for <strong>MySQL and MariaDB allow you to enable Multi-AZ configuration on read replicas</strong> to support disaster recovery and minimize downtime from engine upgrades. Amazon RDS for <strong>PostgreSQL does not presently support this.</strong></p><h3>Q: If my read replica(s) use a Multi-AZ DB instance deployment as a source, what happens if Multi-AZ failover occurs?</h3><p>In the event of a Multi-AZ failover, any associated and available read replicas will automatically resume replication once failover has completed (acquiring updates from the newly promoted primary).</p><h3>Q: Can I create a read replica of another read replica?</h3><p><strong>Amazon Aurora, Amazon RDS for MySQL and MariaDB: You can create a second-tier read replica from an existing first-tier read replica.</strong> By creating a second-tier read replica, you may be able to move some of the replication load from the master database instance to a first-tier Read Replica. Please note that a second-tier Read Replica may lag further behind the master because of additional replication latency introduced as transactions are replicated from the master to the first tier replica and then to the second-tier replica.<br><strong>Amazon RDS for PostgreSQL: Read Replicas of Read Replicas are not currently supported.</strong></p><h3>Q: Can my read replicas only accept database read operations?</h3><p>Read replicas are designed to serve read traffic. However, there may be use cases where advanced users wish to complete Data Definition Language (DDL) SQL statements against a read replica. Examples might include adding a database index to a read replica that is used for business reporting, without adding the same index to the corresponding source DB instance.</p><p>Amazon RDS for MySQL can be configured to permit DDL SQL statements against a read replica. If you wish to enable operations other than reads for a given read replica, modify the active DB parameter group for the read replica, setting the “read_only” parameter to “0.”</p><p>Amazon RDS for PostgreSQL does not currently support the execution of DDL SQL statements against a read replica.</p><h3>Q: How do I see the status of my active read replica(s)?</h3><p>Amazon RDS allows you to gain visibility into how far a read replica has fallen behind its source DB instance. <strong>The number of seconds that the read replica is behind the master is published as an Amazon CloudWatch metric (“Replica Lag”)</strong> available via the AWS Management Console or Amazon CloudWatch APIs.</p><h3>Enhanced Monitoring</h3><h3>Q: When should I use CloudWatch instead of the RDS console dashboard?</h3><p>You should use CloudWatch if you want to view historical data beyond what is available on the RDS console dashboard. You can monitor your RDS instances in CloudWatch to diagnose the health of your entire AWS stack in a single location. Currently, CloudWatch supports granularities of up to 1 minute and the values will be averaged out for granularities less than that.</p><h3>Q: Can I set up alarms and notifications based on specific metrics?</h3><p><strong>Yes.</strong> <strong>You can create an alarm in CloudWatch that sends a notification when the alarm changes state. </strong>The alarm watches a single metric over a time period that you specify, and performs one or more actions based on the value of the metric relative to the specified threshold over a number of time periods.</p><h3>Q: How can I delete historical data?</h3><p>Since Enhanced Monitoring delivers JSON payloads into a log in your CloudWatch Logs account, you can control its retention period just like any other CloudWatch Logs stream. The default retention period configured for Enhanced Monitoring in CloudWatch Logs is 30 days.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=90dd443f983" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Getting Start with Hong Kong Faster Payment System (FPS)— 轉數快]]></title>
            <link>https://medium.com/@hk_it_er/getting-start-with-hong-kong-faster-payment-system-%E8%BD%89%E6%95%B8%E5%BF%AB-1a2ae95aebb2?source=rss-80bd7dd87664------2</link>
            <guid isPermaLink="false">https://medium.com/p/1a2ae95aebb2</guid>
            <category><![CDATA[轉數快]]></category>
            <category><![CDATA[hkicl]]></category>
            <category><![CDATA[common-qr-code]]></category>
            <category><![CDATA[hong-kong-faster-payment]]></category>
            <category><![CDATA[hkfp]]></category>
            <dc:creator><![CDATA[HK_IT_ER]]></dc:creator>
            <pubDate>Sun, 14 Oct 2018 07:00:28 GMT</pubDate>
            <atom:updated>2018-10-14T12:35:51.921Z</atom:updated>
            <content:encoded><![CDATA[<h3>Getting Started with Hong Kong Faster Payment System (FPS)— 轉數快</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4LYkG4n5btDvVfgW6lhjjQ.png" /></figure><p>This story will help the you to understand and implement HK FPS and Common QR Code. Many sections in my story will reference the <strong>“Common QR Code Specification for Retail Payments in Hong Kong”</strong>.</p><p>Please go to the following URL to download the document first.</p><p><a href="https://ffo.hkma.gov.hk/news/detail/2018/03/16/common-qr-code-specification-for-retail-payments-in-hong-kong-merchant-presented-mode">Common QR Code Specification for Retail Payments in Hong Kong (Merchant-Presented mode)</a></p><blockquote>Mobile App to Validate the HKFPS QR Code</blockquote><p>The developer can use the mobile app developed by HKICL to validate the QR code you generated.</p><p><em>iOS Version</em></p><p><a href="https://itunes.apple.com/app/id1434821642">‎Hong Kong Common QR Code</a></p><p><em>Android Version</em></p><p><a href="https://play.google.com/store/apps/details?id=com.hkicl.hkqr">Hong Kong Common QR Code - Apps on Google Play</a></p><blockquote>Type of HK QR Code</blockquote><ul><li>Static QR Code</li></ul><p>Consumers scanned the merchant QR code with the mobile application and the payment amount will be prompted to enter.</p><p><strong>Recommend Business: Small merchants</strong></p><ul><li>Dynamic QR Code</li></ul><p>The QR code embedded the payment amount and the consumers scanned the QR code. The transaction will be completed.</p><p><strong>Recommend Business: Online Shop, Large merchants</strong></p><p>You can check the <strong>section 3</strong> for the detail in the <strong>Common QR Code Specification for Retail Payments in Hong Kong</strong>.</p><blockquote>Sample of the QR Code</blockquote><p><strong>Static QR Code</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/1*ET-DRJzWZNwGlTns92Pq8g.jpeg" /><figcaption>Static QR Code</figcaption></figure><p>We can use the online QR decoder (<a href="https://zxing.org/w/decode.jspx">https://zxing.org/w/decode.jspx</a>) to decode the QR Code and we will have the following string.</p><p>Pattern = ID Field (2 digit) + Length Field (2 digit)+ Value Field</p><p>Example: (IDField)00(LengthField)02(ValueField)01</p><pre>00020101021126270012hk.com.hkicl020782419455204000053033445802HK5902NA6002HK63046674</pre><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fairtable.com%2Fembed%2FshrH6dtQcOMdTSw04&amp;url=https%3A%2F%2Fairtable.com%2FshrH6dtQcOMdTSw04&amp;image=https%3A%2F%2Fstatic.airtable.com%2Fimages%2Foembed%2Fairtable.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=airtable" width="800" height="533" frameborder="0" scrolling="no"><a href="https://medium.com/media/beeeb22f3bbd121ede39cfe257eb19cb/href">https://medium.com/media/beeeb22f3bbd121ede39cfe257eb19cb/href</a></iframe><p><strong>Dynamic QR Code</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/1*S70WCo4b4cEZhfl4cAK45g.jpeg" /><figcaption>Dynamic QR Code</figcaption></figure><pre>00020101021226270012hk.com.hkicl02078241945520400005303344540115802HK5902NA6002HK630439B0</pre><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fairtable.com%2Fembed%2FshrSmuQQOjAiixwqS&amp;url=https%3A%2F%2Fairtable.com%2FshrSmuQQOjAiixwqS&amp;image=https%3A%2F%2Fstatic.airtable.com%2Fimages%2Foembed%2Fairtable.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=airtable" width="800" height="533" frameborder="0" scrolling="no"><a href="https://medium.com/media/884983d68c37f09810dec5fb793779ea/href">https://medium.com/media/884983d68c37f09810dec5fb793779ea/href</a></iframe><p>You can check the <strong>section 4 </strong>for the detail in the <strong>Common QR Code Specification for Retail Payments in Hong Kong</strong>.</p><blockquote>Sample Code to Generate the Dynamic QR Code — NodeJS</blockquote><p><strong>Program Highlight</strong></p><ul><li>The HK Common QR Code used the <strong>CRC-16-CCITT</strong> to calculate the CRC.</li><li>How to add the additional information such as bill number, purpose of transaction and additional consumer data request, we added the bill number in the example. You can check the <strong>section 4.5 </strong>for the detail in the <strong>Common QR Code Specification for Retail Payments in Hong Kong</strong>.</li><li>The <strong>Error Correcting-Code</strong> for the QR code should be <strong>“L” </strong>because the QR code should be displayed on the monitor.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XPo9waSoeswy2reu7nO0mw.png" /><figcaption>ECC Explaination</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QPYlLGBJdfaJN7mu9B0mYw.png" /><figcaption>QR Code Sample</figcaption></figure><pre>00020101021226270012hk.com.hkicl02078241945520400005303344540115802HK5902NA6002HK6212010898756383630429f5</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0lUXTo2QZQF8HwYuwXvN2A.jpeg" /><figcaption>Result from the HKQR</figcaption></figure><p>Checkout my Github Sample Code</p><p><a href="https://github.com/chankailong/HK-FPS-QRCode-Sample/blob/master/index.js">chankailong/HK-FPS-QRCode-Sample</a></p><p><strong>Links for your reference/Additional Reading</strong></p><ul><li>Common QR Code Specification for Retail Payments in Hong Kong (Merchant-Presented Mode)</li></ul><p><a href="https://ffo.hkma.gov.hk/news/detail/2018/03/16/common-qr-code-specification-for-retail-payments-in-hong-kong-merchant-presented-mode">Common QR Code Specification for Retail Payments in Hong Kong (Merchant-Presented mode)</a></p><ul><li>ISO 4217</li></ul><p><a href="https://www.iso.org/iso-4217-currency-codes.html">ISO 4217 Currency codes</a></p><ul><li>CRC Parameters</li></ul><p><a href="https://pycrc.org/models.html">Common CRC parameters</a></p><ul><li>QR Code Version</li></ul><p><a href="http://www.qrcode.com/en/about/version.html">Information capacity and versions of QR Code | QRcode.com | DENSO WAVE</a></p><ul><li>QR Code ECC</li></ul><p><a href="http://www.cc.ntu.edu.tw/chinese/epaper/0018/20110920_1805.html">行動輸入的利器-QR碼</a></p><ul><li>HK FPS</li></ul><p><a href="https://fps.hkicl.com.hk/eng/fps/merchants/overview.php">HKICL | Overview</a></p><ul><li>QR Code Error Correcting Code</li></ul><p><a href="https://www.keyence.com/ss/products/auto_id/barcode_lecture/basic_2d/qr/">What is a QR code?｜Basics of 2D codes｜&quot;Barcode Information &amp; Tips&quot; Reference Site for Barcode Standards and Reading Know-How | KEYENCE</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1a2ae95aebb2" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Create RDS MariaDB — AWS Serverless to MariaDB]]></title>
            <link>https://medium.com/@hk_it_er/create-rds-mariadb-aws-serverless-to-mariadb-76fcc7862ff3?source=rss-80bd7dd87664------2</link>
            <guid isPermaLink="false">https://medium.com/p/76fcc7862ff3</guid>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[mariadb]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[rds]]></category>
            <dc:creator><![CDATA[HK_IT_ER]]></dc:creator>
            <pubDate>Sun, 09 Sep 2018 10:19:52 GMT</pubDate>
            <atom:updated>2018-09-09T10:19:52.691Z</atom:updated>
            <content:encoded><![CDATA[<h3>Step 1: Create RDS MariaDB — AWS Serverless to MariaDB</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BEvc32X3drF6JORvHral4w.png" /></figure><blockquote>Create RDS MariaDB</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Xwn3tdgL8zI82xOUciXzig.png" /><figcaption>Choose the MariaDB</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*G0u0xt6sbuthKPkkbcHpEw.png" /><figcaption>Select the Dev/Test = MariaDB for Lab</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KUhGZGMKjiBIXl3mwibrnw.png" /><figcaption>Options for Instance Specification</figcaption></figure><p>Select the “Only enable options eligible for RDS Free Usage Tier” to avoid additional charge.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5HvgbVNwt5cgLAMHF1cxDQ.png" /><figcaption>Setting on the DB ID and Master Username Password</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*N-seOgDQxhAVo_D4Az5HXA.png" /><figcaption>Network and Security for MariaDB</figcaption></figure><p>We will connect the RDS internally and this should be the common practice.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aeyI1nNt7qfFewsLbqJJCg.png" /><figcaption>Database Options</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5quSQIieTNzbgfBvoAPdFA.png" /><figcaption>Click “Create database”</figcaption></figure><p>We can leave other options as default and focus on connecting MariaDB through Lambda.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*gZ3iYTpCGuU94u00gLyTRg.png" /><figcaption>The MariaDB is created.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/538/1*EPLZIOWLMuJNd7aQOnBUDw.png" /><figcaption>The details of your MariaDB</figcaption></figure><p>Mark the following values for the Lambda to connect.</p><ol><li>Endpoint</li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=76fcc7862ff3" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Create RDS MySQL — AWS Serverless to MySQL]]></title>
            <link>https://medium.com/@hk_it_er/create-rds-mysql-aws-serverless-to-mysql-699a27dfd14a?source=rss-80bd7dd87664------2</link>
            <guid isPermaLink="false">https://medium.com/p/699a27dfd14a</guid>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[rds]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[mysql]]></category>
            <category><![CDATA[serverless]]></category>
            <dc:creator><![CDATA[HK_IT_ER]]></dc:creator>
            <pubDate>Sun, 02 Sep 2018 11:44:19 GMT</pubDate>
            <atom:updated>2018-09-09T10:05:23.089Z</atom:updated>
            <content:encoded><![CDATA[<h3>Step 1: Create RDS MySQL — AWS Serverless to MySQL</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*B08Pe2Na7XDyEBHK5K9Iuw.png" /></figure><blockquote>Create RDS MySQL</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*psWiIm8ZoQM0ou39PHK_jQ.png" /><figcaption>Create MySQL database</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*c8O9ip6_OCMX-t-rUgNimw.png" /><figcaption>Select the MySQL Database</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9zpOdHr_e4ZQzRRupLqPlg.png" /><figcaption>Select the Dev/Test — MySQL for Lab</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*F-zF7dZTVcZHceKyYSI3mA.png" /><figcaption>Options for Instance Specification</figcaption></figure><p>Select the “Only enable options eligible for RDS Free Usage Tier” to avoid additional charge.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*h29PBvwOeh1vcIkqToFviw.png" /><figcaption>Setting on the DB ID and Master Username Password</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VSwUcnX2Rdv8VPSJ-nyvIQ.png" /><figcaption>Network and Security for MySQL</figcaption></figure><p>We will connect the RDS internally and this should be the common practice.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4jz8QdoRHNUUaHDeJr4pWA.png" /><figcaption>Database Options</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5C2Ew51Yz4-Yd14dB7fugw.png" /><figcaption>Click “Create database”</figcaption></figure><p>We can leave other options as default and focus on connecting MySQL through Lambda.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0YSDHE7Jsuo2l6gh-II9rw.png" /><figcaption>The Database is created.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mJi-UQmgQpN5T8oExYHoow.png" /><figcaption>The details of your MySQL.</figcaption></figure><p>Mark the following values for the Lambda to connect.</p><ol><li>Endpoint</li></ol><p>Go to the following story to create the Lambda and API Gateway</p><blockquote><a href="https://medium.com/@hk_it_er/create-lambda-and-api-gateway-nodejs-aws-serverless-to-rds-mysql-6a75243e61cc">Step 2: Create Lambda and API Gateway (Nodejs) — AWS Serverless to RDS MySQL</a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=699a27dfd14a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Create Lambda and API Gateway (Nodejs) — AWS Serverless to RDS MySQL]]></title>
            <link>https://medium.com/@hk_it_er/create-lambda-and-api-gateway-nodejs-aws-serverless-to-rds-mysql-6a75243e61cc?source=rss-80bd7dd87664------2</link>
            <guid isPermaLink="false">https://medium.com/p/6a75243e61cc</guid>
            <category><![CDATA[mysql]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[nodejs]]></category>
            <dc:creator><![CDATA[HK_IT_ER]]></dc:creator>
            <pubDate>Sun, 02 Sep 2018 11:36:15 GMT</pubDate>
            <atom:updated>2018-09-22T09:26:14.399Z</atom:updated>
            <content:encoded><![CDATA[<h3>Step 2: Create Lambda and API Gateway (Nodejs) — AWS Serverless to RDS MySQL</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UExe17kbEdR7am_Y3W764A.png" /></figure><blockquote>Create Lambda</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RZfzp1NtbrdPys67BZmDaQ.png" /><figcaption>Click “Create function”</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aRcMcB9Z0mIOUddAjZIQ4g.png" /><figcaption>We selected the “Author from scratch” and you can follow the setting.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VjjRTfVx5lmr4E0GEger4A.png" /><figcaption>The lambda is created.</figcaption></figure><blockquote>NodeJS Code</blockquote><p>The online editor of the lambda cannot use the “npm install” and therefore we need to write code in our computer and then upload to the lambda.</p><p>Step 1: Create package.json</p><pre>npm init</pre><p>The package.json for your reference.</p><pre>{<br>  &quot;name&quot;: &quot;test2&quot;,<br>  &quot;version&quot;: &quot;1.0.0&quot;,<br>  &quot;description&quot;: &quot;&quot;,<br>  &quot;main&quot;: &quot;index.js&quot;,<br>  &quot;scripts&quot;: {<br>    &quot;test&quot;: &quot;echo \&quot;Error: no test specified\&quot; &amp;&amp; exit 1&quot;<br>  },<br>  &quot;author&quot;: &quot;&quot;,<br>  &quot;license&quot;: &quot;ISC&quot;<br>}</pre><p>Step 2: Install the “mysql” library for connecting the MySQL</p><pre>npm install --save mysql</pre><p>Step 3: Create Database in index.js</p><pre>const mysql = require(&#39;mysql&#39;);</pre><pre>const con = mysql.createConnection({<br>  host     : process.env.RDS_HOSTNAME,<br>  user     : process.env.RDS_USERNAME,<br>  password : process.env.RDS_PASSWORD,<br>  port     : process.env.RDS_PORT<br>});</pre><pre>exports.handler = async (event) =&gt; {<br>  con.query(&quot;CREATE DATABASE mysqllab&quot;, function (err, result) {<br>    if (err) throw err;<br>    console.log(&quot;Database created&quot;);<br>  });<br>  return &quot;Database Created&quot;<br>};</pre><p>Step 4: Zip all the node_modules, index.js and package.json</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*d2dv47Mcr1DXzaLuMmGAhg.png" /><figcaption>Upload the zip file</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HGGbWseq6T2dhd1kkPfqMQ.png" /><figcaption>Save the zip file</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VxcDV60PcRjoT3jEQs-hOQ.png" /><figcaption>The library and source code are uploaded.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vLoweG4DF8rQz63gletCOQ.png" /><figcaption>Add the Environment Variables and Save</figcaption></figure><p>The RDS_HOSTNAME got from the RDS details section.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kxTx1b3obkrKAzyqq9kqRA.png" /><figcaption>The MySQL Hostname</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*swe9n70alqnGrGUjtrhWIw.png" /><figcaption>Configure the Network Section and Save</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UdeYm9sGPgGuH6qRCgfp4w.png" /><figcaption>Error occurs after configuration of the VPC network.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CUpI8xbVCRfDUVgDr1keNg.png" /><figcaption>Your Lambda Role “service-role/mysql_lab”</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1yJkOZSg8qv7whpK7BIYHA.png" /><figcaption>Go to your role in IAM</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lf2qjXvVqglw4uf8qBwYwQ.png" /><figcaption>Change the IAM Role</figcaption></figure><p>Change the existing role from “AWSLambdaEdgeExecutionRole” to “AWSLambdaVPCAccessExecutionRole”</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dev-qUn5hN50PQPN5Chy_A.png" /><figcaption>Go Back Lambda and Save again</figcaption></figure><blockquote>Change the RDS MySQL Security Group</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Wd1XFUiORW60u23FhDp_mA.png" /><figcaption>Go the RDS Security Group</figcaption></figure><p>You can find your security group in the MySQL details section.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/640/1*OSDN_pGgMHrAnY1etVvaQw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rd1c-jd1fkxeLzI9y-Heiw.png" /><figcaption>Edit the Inbound Rules Source to “sg-fa8db185”</figcaption></figure><p>“sg-fa8db185” can from the Network section in the lambda.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/926/1*9lTbzFuYN3SI7uqkqGjCIA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*czFnqs4fT5GYQMNpi4g93A.png" /><figcaption>Test the Lambda Function</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*siE9yYPzRgv_zPMqH8S9RA.png" /><figcaption>The database is created</figcaption></figure><blockquote>Create Table in the Database</blockquote><p>Using the same Lambda to create table — MESSAGE and change the following source code to create the table in online editor.</p><pre>const mysql = require(&#39;mysql&#39;);</pre><pre>const con = mysql.createConnection({<br>  host     : process.env.RDS_HOSTNAME,<br>  user     : process.env.RDS_USERNAME,<br>  password : process.env.RDS_PASSWORD,<br>  port     : process.env.RDS_PORT,<br>  database : process.env.RDS_DATABASE<br>});</pre><pre>exports.handler = async (event) =&gt; {<br>  const sql = &quot;CREATE TABLE MESSAGE (message VARCHAR(255))&quot;;<br>  con.query(sql, function (err, result) {<br>    if (err) throw err;<br>    console.log(&quot;Table created&quot;);<br>  });<br>  return &quot;Table Created&quot;<br>};</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wTTz1hS6x9tpSyeRaxpnoA.png" /><figcaption>Add the Database Configuration and Save</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*StRHsI4wuTtY6YKFEkwnhg.png" /><figcaption>Test the Lambda and the table is created.</figcaption></figure><blockquote>Insert Record into Table “MESSAGE”</blockquote><p>Change to the following source code to insert the record.</p><pre>const mysql = require(&#39;mysql&#39;);</pre><pre>const con = mysql.createConnection({<br>  host     : process.env.RDS_HOSTNAME,<br>  user     : process.env.RDS_USERNAME,<br>  password : process.env.RDS_PASSWORD,<br>  port     : process.env.RDS_PORT,<br>  database : process.env.RDS_DATABASE<br>});</pre><pre>exports.handler = (event, context, callback) =&gt; {<br>  // allows for using callbacks as finish/error-handlers<br>  context.callbackWaitsForEmptyEventLoop = false;<br>  const sql = &quot;INSERT INTO MESSAGE (message) VALUES (&#39;I am MySQL&#39;)&quot;;<br>  con.query(sql, (err, res) =&gt; {<br>    if (err) {<br>      throw err<br>    }<br>    callback(null, &#39;1 records inserted.&#39;);<br>  })<br>};</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*k7pT-OSE0rcOS55nsScyCQ.png" /><figcaption>Test the Lambda and the Record is inserted</figcaption></figure><blockquote>Query the Record</blockquote><p>Change to the following source code to query the record.</p><pre>const mysql = require(&#39;mysql&#39;);</pre><pre>const con = mysql.createConnection({<br>  host     : process.env.RDS_HOSTNAME,<br>  user     : process.env.RDS_USERNAME,<br>  password : process.env.RDS_PASSWORD,<br>  port     : process.env.RDS_PORT,<br>  database : process.env.RDS_DATABASE<br>});</pre><pre>exports.handler = (event, context, callback) =&gt; {<br>  // allows for using callbacks as finish/error-handlers<br>  context.callbackWaitsForEmptyEventLoop = false;<br>  const sql = &quot;select * from MESSAGE&quot;;<br>  con.query(sql, function (err, result) {<br>    if (err) throw err;<br>    callback(null, result)<br>  });<br>};</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UotmcKI8hPD_WRJPwbMHzA.png" /><figcaption>The Lambda can query the MySQL</figcaption></figure><p>Create API Gateway</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3AM3dE7EaIIfv7iHaXrDNg.png" /><figcaption>Create API</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*K0k3uCOWna01OwePhf7SZA.png" /><figcaption>Settings on the API</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*L38xnrr5df6dzuVfy0lXkw.png" /><figcaption>Create Method</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/954/1*CjjruOsXiFyOFbPJ-VMCQA.png" /><figcaption>Create GET Method</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0BGqMmPiYLKxolbcQtBI4w.png" /><figcaption>Fill the Lambda Function Name</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sw7vT_QMLbdAZRkq-7NlgQ.png" /><figcaption>Permission will add (API Gateway to Lambda)</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/524/1*yPZTlXnKSKCGOF49bbfGmA.png" /><figcaption>Deploy API</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OxCE-EbHMs7trmtjJio5ig.png" /><figcaption>The Settings of the Deployment</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*X3nl3zGQ6mgNIV3-i1VbHA.png" /><figcaption>The API endpoint is created</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wqxTak4tfcKrod11y6aAcg.png" /><figcaption>The result is shown</figcaption></figure><p>You can give me the response for support if you completed the lab or ask me questions when you face any difficulty.</p><p>Review how to create RDS MySQL in the AWS</p><blockquote><a href="https://medium.com/@hk_it_er/create-rds-mysql-aws-serverless-to-mysql-699a27dfd14a">Step 1: Create RDS MySQL — AWS Serverless to MySQL</a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6a75243e61cc" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Create Lambda and API Gateway (Nodejs) — AWS Serverless to DynamoDB]]></title>
            <link>https://medium.com/@hk_it_er/step-2-create-lambda-and-api-gateway-nodejs-aws-serverless-to-dynamodb-f8bd16b569e3?source=rss-80bd7dd87664------2</link>
            <guid isPermaLink="false">https://medium.com/p/f8bd16b569e3</guid>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[api-gateway]]></category>
            <category><![CDATA[serverless]]></category>
            <dc:creator><![CDATA[HK_IT_ER]]></dc:creator>
            <pubDate>Sun, 26 Aug 2018 14:48:55 GMT</pubDate>
            <atom:updated>2018-09-02T11:26:50.366Z</atom:updated>
            <content:encoded><![CDATA[<h3>Step 2: Create Lambda and API Gateway (Nodejs) — AWS Serverless to DynamoDB</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_lHrv274W-dLoLbRu328Bw.png" /></figure><blockquote>Create API Gateway</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ancDQ8L7quzEQ1Z5ZM8Dyw.png" /><figcaption>Create API</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*buxZKDhBUxPg9NKknvnEbw.png" /><figcaption>Setting on API Gateway</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BMsVkTXwXwdylJ_7I9tfbw.png" /><figcaption>Create Method</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*G9OsQDe-sXFmqdsFlPbJkg.png" /><figcaption>Create GET Method</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*leQ7-UFh_mxK8a-8w-Oc5Q.png" /></figure><p>The “Lambda function” will fill after creating Lambda.</p><blockquote>Create Lambda</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VzihO0QMWD6WBaro8Nd8MQ.png" /><figcaption>Create Function</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4Hl4KT-AwqDgo5ZtEGPXkw.png" /><figcaption>Setting on Function</figcaption></figure><p>Role: Create new role from template(s)</p><p>Role name: dynamodb_read</p><p>Policy templates: Basic Lambda@Edge permissions (for CloudFront trigger)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8-ai9_WD68yUpmIRZYu7WQ.png" /><figcaption>Lambda function is created.</figcaption></figure><blockquote>IAM Setting</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6kmuddlsgKv82wsRLh0RDQ.png" /><figcaption>Select New Created Role</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3eHsnFR5biDJ3BUncCAvvQ.png" /><figcaption>Add Inline Policy</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4dn94ul4grx67Kyl_53AIw.png" /><figcaption>Select a Service — DynamoDB</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cX2fuJc2-7jOWb_Cc-JigA.png" /><figcaption>Click Read in Access level</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qbUKyAXCqYdTzGwzdBbZSA.png" /><figcaption>Add ARN in Table Section</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8wU-sFZ_zNWjhmAh_NUZSQ.png" /><figcaption>DynamoDB Detail</figcaption></figure><ol><li>Go back to DynamoDB Service</li><li>Select your table and Get the ARN</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6lqgi0_gX1R-hjveH0HkEw.png" /><figcaption>Fill the ARN in Inline Policy</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6Z-lZsnzH9mTH1P3t9LIVQ.png" /><figcaption>Review Policy and Create Policy</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7ulyc-SC7dgbji2s-grJNQ.png" /><figcaption>Inline policy is created.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*scHTXY8lVibNre2K_eQLXQ.png" /><figcaption>Designer in Lambda</figcaption></figure><p>The DynamoDB will appear on the Designer section in Lambda.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dxh-IN8aCDgLvbKjP02UrA.png" /><figcaption>dynamodb_read Coding</figcaption></figure><p>We use the Nodejs to connect the dynamoDB.</p><pre>const AWS = require(&#39;aws-sdk&#39;);<br>AWS.config.update({ region: &#39;us-west-2&#39; });<br>const dynamodb = new AWS.DynamoDB.DocumentClient();</pre><pre>exports.handler = async (event, context) =&gt; {<br>    return dynamodb.scan({ TableName: &quot;dynamodb&quot; })<br>    .promise()<br>    .then(response =&gt; response.Items)<br>};</pre><p><strong>Region:</strong> the location of the dynamoDB, the region code can find in the ARN.</p><p>arn:aws:dynamodb:<strong><em>us-west-2</em></strong>:5029XXXXXXXX:table/DynamoDB_Read</p><p><strong>TableName:</strong> the table name of the dynamoDB — dynamodb</p><p><em>Remember to “Save”</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UWONMgynqbMIJZAjC73v0w.png" /><figcaption>Go Back API Gateway and fill the lambda function name</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ChxG0QYbD8sn19c1qyRPDw.png" /><figcaption>Message Prompt and Click “OK”</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/494/1*dxSY1Ipx5LmKc8feIUh02w.png" /><figcaption>Deploy API</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Kk1Hu4ghGh7C21T8e16-hg.png" /><figcaption>The detail of Deploy API</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_4EtCU9W-25IFk4mwk1cgA.png" /><figcaption>The API end-point is generated.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*afSYu9v0pmPvmEu9ozn9Wg.png" /><figcaption>Add the API Gateway Trigger</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*c6qj3whRukXYfO1J8ZNJzw.png" /><figcaption>Configure the Trigger</figcaption></figure><p><em>Remember to “Add” and “Save”</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YmK7wZBRjEY_K3Lmb3Q-Wg.png" /><figcaption>Configuration Complete</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*j3Fhe6kLlI1lt8oOfkjhHg.png" /><figcaption>Type the API End Point and The dynamoDB record shows.</figcaption></figure><p>You can give me the response for support if you completed the lab or ask me questions when you face any difficulty.</p><p>Check following story to review the lab.</p><blockquote><a href="https://medium.com/@hk_it_er/create-dynamodb-aws-serverless-to-dynamodb-843cd206bdf2">Create DynamoDB — AWS Serverless to DynamoDB</a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f8bd16b569e3" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Create DynamoDB — AWS Serverless to DynamoDB]]></title>
            <link>https://medium.com/@hk_it_er/create-dynamodb-aws-serverless-to-dynamodb-843cd206bdf2?source=rss-80bd7dd87664------2</link>
            <guid isPermaLink="false">https://medium.com/p/843cd206bdf2</guid>
            <category><![CDATA[amazon-web-services]]></category>
            <category><![CDATA[dynamodb]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[serverless]]></category>
            <dc:creator><![CDATA[HK_IT_ER]]></dc:creator>
            <pubDate>Sun, 26 Aug 2018 05:41:41 GMT</pubDate>
            <atom:updated>2018-09-01T07:10:50.029Z</atom:updated>
            <content:encoded><![CDATA[<h3>Step 1: Create DynamoDB — AWS Serverless to DynamoDB</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cX4Js_Ijpb9CSiK9sbbiGA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NYZqnJR35zc2Gds9LjqTfQ.png" /><figcaption>Create table</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UjcOTKmRsAqFJlkar5abzA.png" /><figcaption>DynamoDB Setting</figcaption></figure><p>We focuses on the lambda connecting to dynamoDB and leaves all the setting as default.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*88XWJriChbrcOHN7yYFygA.png" /><figcaption>Create item</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*x0KRJUzk9UGCNZiV9fcLSw.png" /><figcaption>Insert record</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CJX3Gn0DqH4VCDtogdNR1w.png" /><figcaption>Record created</figcaption></figure><p>Check following story to continue the lab.</p><blockquote><a href="https://medium.com/@hk_it_er/step-2-create-lambda-and-api-gateway-nodejs-aws-serverless-to-dynamodb-f8bd16b569e3">Create Lambda and API Gateway (Nodejs) — AWS Serverless to DynamoDB</a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=843cd206bdf2" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>