{"id":1018,"date":"2026-05-30T03:30:46","date_gmt":"2026-05-30T03:30:46","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/?p=1018"},"modified":"2026-05-30T03:30:47","modified_gmt":"2026-05-30T03:30:47","slug":"amazon-q-developer-complete-tutorial-from-basics-to-advanced","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/amazon-q-developer-complete-tutorial-from-basics-to-advanced\/","title":{"rendered":"Amazon Q Developer Complete Tutorial: From Basics to Advanced"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer is AWS\u2019s generative AI assistant for developers, cloud engineers, DevOps engineers, security engineers, and anyone building applications on AWS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It helps you write code, understand code, debug errors, review security issues, generate tests, explain AWS services, troubleshoot cloud problems, modernize applications, and improve developer productivity inside your IDE, AWS Console, documentation pages, chat applications, and command-line workflows.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Earlier, AWS had a tool called Amazon CodeWhisperer. CodeWhisperer focused mainly on AI-powered code suggestions and security scans. Today, those capabilities are part of Amazon Q Developer. So when people say \u201cCodeWhisperer,\u201d they are usually referring to the older name for features that now live under Amazon Q Developer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In simple words:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Amazon CodeWhisperer = older AWS coding assistant\nAmazon Q Developer = newer, broader AI assistant for developers and AWS builders\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer is not just autocomplete. It is a developer assistant that can help across the full software lifecycle:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Plan \u2192 Code \u2192 Test \u2192 Review \u2192 Debug \u2192 Secure \u2192 Deploy \u2192 Operate \u2192 Modernize\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">2. What is Amazon Q Developer?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer is a generative AI assistant from AWS designed to help you build, understand, improve, secure, and operate software.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It can help with:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Code generation<\/li>\n\n\n\n<li>Code explanation<\/li>\n\n\n\n<li>Inline code completion<\/li>\n\n\n\n<li>Debugging<\/li>\n\n\n\n<li>Refactoring<\/li>\n\n\n\n<li>Unit test generation<\/li>\n\n\n\n<li>Security scanning<\/li>\n\n\n\n<li>Secrets detection<\/li>\n\n\n\n<li>Infrastructure-as-code review<\/li>\n\n\n\n<li>AWS service guidance<\/li>\n\n\n\n<li>Cloud troubleshooting<\/li>\n\n\n\n<li>Lambda, API Gateway, IAM, S3, DynamoDB, ECS, EKS, CloudFormation, CDK, SAM, and Terraform help<\/li>\n\n\n\n<li>Java and .NET code transformation<\/li>\n\n\n\n<li>Command-line code transformation workflows<\/li>\n\n\n\n<li>AWS Console assistance<\/li>\n\n\n\n<li>AWS documentation assistance<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Think of it as an AWS-aware coding and cloud assistant.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">3. Why use Amazon Q Developer?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">You should use Amazon Q Developer because it reduces the time spent on repetitive development tasks and helps you learn AWS faster.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Common reasons to use it:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3.1 Faster coding<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Instead of manually writing boilerplate code, you can ask Amazon Q Developer to generate a function, class, API handler, unit test, or AWS SDK example.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Write a Python Lambda function that reads records from an SQS event and stores them in DynamoDB.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3.2 Better AWS learning<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can ask AWS-specific questions directly inside your IDE or AWS Console.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain the difference between an IAM role and an IAM policy with examples.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3.3 Faster debugging<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can paste or select error messages and ask Amazon Q to explain the problem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Why am I getting AccessDeniedException when my Lambda function writes to DynamoDB?\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3.4 Better security<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer can review code for security issues, secrets, infrastructure misconfiguration, dependency problems, and quality issues.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this Lambda function for security issues and suggest safer alternatives.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3.5 Faster modernization<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer can help transform supported Java and .NET applications, such as upgrading Java versions or modernizing code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Help me upgrade this Java 8 application to Java 17.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3.6 Useful for beginners and professionals<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Beginners can use it to learn AWS concepts. Professionals can use it to speed up coding, reviews, troubleshooting, and documentation.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">4. Amazon Q Developer use cases<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer is useful in many real-world scenarios.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4.1 Serverless development<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can ask it to create Lambda functions, API Gateway handlers, SAM templates, CloudFormation snippets, or DynamoDB access code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create an AWS SAM template for API Gateway + Lambda + DynamoDB.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4.2 DevOps and cloud operations<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can ask it to explain deployment errors, CloudWatch logs, IAM issues, or infrastructure templates.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain why this CloudFormation stack failed and suggest a fix.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4.3 Code review<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can ask it to review code for bugs, readability, performance, and security.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this function for edge cases and performance problems.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4.4 Unit testing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can ask it to generate tests for existing code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate pytest unit tests for this Python function.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4.5 Documentation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can ask it to generate README files, API documentation, architecture explanations, and onboarding notes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create a README file for this project explaining setup, configuration, and deployment.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4.6 IAM policy explanation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">IAM policies can be painful. Amazon Q Developer can help explain what a policy does.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain this IAM policy in simple language and tell me if it is too broad.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4.7 Infrastructure as Code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can use it with:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AWS CloudFormation<\/li>\n\n\n\n<li>AWS SAM<\/li>\n\n\n\n<li>AWS CDK<\/li>\n\n\n\n<li>Terraform<\/li>\n\n\n\n<li>Kubernetes YAML<\/li>\n\n\n\n<li>Dockerfiles<\/li>\n\n\n\n<li>GitHub Actions workflows<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this CloudFormation template and identify security or configuration risks.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4.8 Application modernization<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For supported workloads, Amazon Q Developer can help transform old codebases, especially Java and .NET modernization scenarios.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">5. Amazon Q Developer vs CodeWhisperer<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon CodeWhisperer was AWS\u2019s AI coding assistant. It mainly provided inline code suggestions and security scans.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer is broader.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Feature<\/th><th>CodeWhisperer<\/th><th>Amazon Q Developer<\/th><\/tr><\/thead><tbody><tr><td>Inline code suggestions<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><tr><td>Security scans<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><tr><td>Chat with AI assistant<\/td><td>Limited \/ newer transition<\/td><td>Yes<\/td><\/tr><tr><td>AWS architecture help<\/td><td>Limited<\/td><td>Yes<\/td><\/tr><tr><td>AWS Console assistance<\/td><td>No \/ limited<\/td><td>Yes<\/td><\/tr><tr><td>Code explanation<\/td><td>Limited<\/td><td>Yes<\/td><\/tr><tr><td>Code transformation<\/td><td>No \/ limited<\/td><td>Yes<\/td><\/tr><tr><td>Debugging help<\/td><td>Limited<\/td><td>Yes<\/td><\/tr><tr><td>Broader developer workflow<\/td><td>No<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Simple version:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CodeWhisperer helped write code.\nAmazon Q Developer helps write, understand, secure, debug, modernize, and operate code.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">6. Amazon Q Developer vs Amazon Q Business<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">This is an important distinction.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Product<\/th><th>Main audience<\/th><th>Main purpose<\/th><\/tr><\/thead><tbody><tr><td>Amazon Q Developer<\/td><td>Developers, DevOps, cloud engineers<\/td><td>Build, debug, secure, and operate software<\/td><\/tr><tr><td>Amazon Q Business<\/td><td>Business users, employees, departments<\/td><td>Search and use enterprise company knowledge<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Use Amazon Q Developer when you want help with code, AWS, architecture, DevOps, infrastructure, and debugging.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use Amazon Q Business when you want an internal company AI assistant connected to business documents, HR policies, wikis, tickets, and enterprise data.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">7. Amazon Q Developer Free vs Pro<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer has Free and Pro tiers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Free tier<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The Free tier is suitable for individuals, beginners, students, and developers who want to try Amazon Q Developer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can usually start with a personal AWS Builder ID.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Good for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Learning<\/li>\n\n\n\n<li>Individual coding help<\/li>\n\n\n\n<li>Basic IDE assistance<\/li>\n\n\n\n<li>Trying Amazon Q Developer before using it professionally<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Pro tier<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The Pro tier is the paid version intended for professional developers and teams.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Good for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Higher usage limits<\/li>\n\n\n\n<li>Team use<\/li>\n\n\n\n<li>IAM Identity Center integration<\/li>\n\n\n\n<li>Enterprise administration<\/li>\n\n\n\n<li>Professional development environments<\/li>\n\n\n\n<li>Organization-managed access<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In simple terms:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Free tier = good for learning and personal use\nPro tier = good for professional and team use\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">8. Where can you use Amazon Q Developer?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer can be used in multiple places.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8.1 IDEs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Common IDE options include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Visual Studio Code<\/li>\n\n\n\n<li>JetBrains IDEs such as IntelliJ IDEA, PyCharm, WebStorm<\/li>\n\n\n\n<li>Eclipse<\/li>\n\n\n\n<li>Visual Studio through AWS Toolkit integration<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This is the most common developer workflow.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8.2 AWS Management Console<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer can help you understand AWS services, diagnose console errors, ask questions about AWS resources, and get AWS guidance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8.3 AWS documentation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q can help answer questions while reading AWS documentation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8.4 Chat applications<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer can be used in supported chat application workflows for AWS operations and troubleshooting.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8.5 Command line<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Important current note:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The older Amazon Q Developer CLI experience has moved to Kiro CLI. So for terminal-based AI assistant workflows, you should now look at Kiro CLI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer also has a separate command-line transformation tool called <code>qct<\/code>, used for supported code transformation scenarios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So there are two command-line ideas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Kiro CLI = terminal AI assistant successor to old Amazon Q CLI\nqct      = Amazon Q Developer command-line transformation tool\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Do not confuse these with the AWS CLI.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>aws      = AWS CLI for calling AWS services\nkiro-cli = AI coding assistant CLI successor to old Amazon Q CLI\nqct      = Amazon Q Developer code transformation CLI\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">9. Prerequisites<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Before using Amazon Q Developer, you should have:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">For IDE usage<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A supported IDE such as VS Code or JetBrains<\/li>\n\n\n\n<li>Internet access<\/li>\n\n\n\n<li>AWS Builder ID for personal\/free use, or IAM Identity Center access for company\/pro use<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">For AWS Console usage<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AWS account access<\/li>\n\n\n\n<li>IAM permissions for the AWS services you are using<\/li>\n\n\n\n<li>Optional: Amazon Q Developer Pro for enhanced organization-managed features<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">For code transformation CLI usage<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>macOS or Linux<\/li>\n\n\n\n<li>Python 3.12 or later<\/li>\n\n\n\n<li>Access to Amazon Q Developer Pro through IAM Identity Center<\/li>\n\n\n\n<li>Required permissions for transformation<\/li>\n\n\n\n<li>For Java transformations, a supported Java and Maven environment<\/li>\n\n\n\n<li>A source application within supported size and structure limits<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">For Kiro CLI usage<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Supported OS<\/li>\n\n\n\n<li>AWS Builder ID or supported identity method<\/li>\n\n\n\n<li>Terminal access<\/li>\n\n\n\n<li>Project folder to work in<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">10. Install Amazon Q Developer in Visual Studio Code<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Open VS Code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Open Visual Studio Code.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Open Extensions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Click the Extensions icon on the left sidebar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Search for Amazon Q<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Search:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Amazon Q\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Install the official Amazon Q extension.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Open Amazon Q<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After installation, click the Amazon Q icon in VS Code.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5: Choose sign-in method<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You usually have two choices:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Personal account\nCompany account\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Choose <strong>Personal account<\/strong> if you are using AWS Builder ID.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Choose <strong>Company account<\/strong> if your organization uses IAM Identity Center and Amazon Q Developer Pro.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 6: Authenticate in browser<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">VS Code opens your browser.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sign in and allow access.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 7: Return to VS Code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After authentication, return to VS Code.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 8: Start using Amazon Q<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Open the Amazon Q panel and ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain this project structure.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Or open a source file and ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain the selected code.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">11. Install Amazon Q Developer in JetBrains IDEs<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">This applies to IntelliJ IDEA, PyCharm, WebStorm, and similar JetBrains IDEs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Open JetBrains IDE<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Open IntelliJ IDEA, PyCharm, or another JetBrains IDE.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Open plugins<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Go to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Settings \u2192 Plugins\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">or<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Preferences \u2192 Plugins\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Search Amazon Q<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Search:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Amazon Q\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Install the official Amazon Q plugin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Restart IDE if required<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Some JetBrains plugin installations require restart.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5: Open Amazon Q panel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Click the Amazon Q icon.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 6: Sign in<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Choose either:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Personal account\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">or:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Company account\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 7: Authenticate<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Complete browser authentication.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 8: Start using Amazon Q<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Example prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Analyze this Java class and suggest improvements.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">12. Personal account vs company account<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Personal account<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use a personal account when:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You are learning<\/li>\n\n\n\n<li>You are using the Free tier<\/li>\n\n\n\n<li>You do not have company IAM Identity Center access<\/li>\n\n\n\n<li>You want to experiment quickly<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Usually this uses AWS Builder ID.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Company account<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use a company account when:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Your employer manages Amazon Q Developer Pro<\/li>\n\n\n\n<li>Your organization uses IAM Identity Center<\/li>\n\n\n\n<li>You need team-level administration<\/li>\n\n\n\n<li>You need organization-managed access<\/li>\n\n\n\n<li>Your administrator gave you a Start URL and Region<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">For company login, you usually need:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Start URL\nAWS Region\nIAM Identity Center user access\nAmazon Q Developer Pro subscription\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">13. First hands-on exercise: Ask Amazon Q to explain code<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Create a file named:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app.py\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add this code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import json\n\ndef lambda_handler(event, context):\n    name = event.get(\"name\", \"World\")\n    return {\n        \"statusCode\": 200,\n        \"body\": json.dumps({\"message\": f\"Hello, {name}!\"})\n    }\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Select the code and ask Amazon Q:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain this Lambda function line by line.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Expected result:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q should explain:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>json<\/code> is used to create JSON output<\/li>\n\n\n\n<li><code>lambda_handler<\/code> is the Lambda entry point<\/li>\n\n\n\n<li><code>event.get(\"name\", \"World\")<\/code> reads the name field or defaults to World<\/li>\n\n\n\n<li>The function returns an API-style response<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">14. Second hands-on exercise: Generate code<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ask Amazon Q:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create a Python function that validates an email address using a regular expression.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Add unit tests for this function using pytest.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain the edge cases this validation does not handle.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This is a good workflow:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate \u2192 Test \u2192 Improve \u2192 Explain\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">15. Third hands-on exercise: Generate AWS Lambda code<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ask Amazon Q:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Write a Python AWS Lambda function that receives an API Gateway request, validates a JSON body with name and email fields, and stores the item in DynamoDB.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Add error handling for invalid JSON, missing fields, and DynamoDB failures.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate pytest unit tests using botocore Stubber or mocks.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This gives you a more realistic cloud development workflow.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">16. Fourth hands-on exercise: Generate an AWS SAM template<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ask Amazon Q:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create an AWS SAM template for API Gateway, Lambda, and DynamoDB. The Lambda function should have permission to put items into the table.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q may generate something like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AWSTemplateFormatVersion: '2010-09-09'\nTransform: AWS::Serverless-2016-10-31\nDescription: API Gateway Lambda DynamoDB app\n\nGlobals:\n  Function:\n    Runtime: python3.12\n    Timeout: 10\n    MemorySize: 128\n\nResources:\n  UsersTable:\n    Type: AWS::DynamoDB::Table\n    Properties:\n      BillingMode: PAY_PER_REQUEST\n      AttributeDefinitions:\n        - AttributeName: userId\n          AttributeType: S\n      KeySchema:\n        - AttributeName: userId\n          KeyType: HASH\n\n  CreateUserFunction:\n    Type: AWS::Serverless::Function\n    Properties:\n      CodeUri: src\/\n      Handler: app.lambda_handler\n      Environment:\n        Variables:\n          TABLE_NAME: !Ref UsersTable\n      Policies:\n        - DynamoDBCrudPolicy:\n            TableName: !Ref UsersTable\n      Events:\n        CreateUserApi:\n          Type: Api\n          Properties:\n            Path: \/users\n            Method: post\n\nOutputs:\n  ApiUrl:\n    Description: API Gateway endpoint\n    Value: !Sub \"https:\/\/${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com\/Prod\/users\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this SAM template for security and production readiness.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q may suggest:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use structured logging<\/li>\n\n\n\n<li>Add tracing<\/li>\n\n\n\n<li>Add validation<\/li>\n\n\n\n<li>Avoid hardcoded table names unless needed<\/li>\n\n\n\n<li>Add environment-specific parameters<\/li>\n\n\n\n<li>Add least-privilege policies<\/li>\n\n\n\n<li>Add alarms<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">17. Inline code suggestions<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer can provide inline code suggestions while you type.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Start typing:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def calculate_monthly_payment(\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q may suggest the rest of the function.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can usually accept suggestions with a keyboard shortcut depending on your IDE.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Typical workflow:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Start typing code.<\/li>\n\n\n\n<li>Wait for ghost-text suggestion.<\/li>\n\n\n\n<li>Accept the suggestion if it is useful.<\/li>\n\n\n\n<li>Edit it manually.<\/li>\n\n\n\n<li>Ask Amazon Q to explain or improve it.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Important habit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Never accept AI-generated code blindly.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Always review:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Correctness<\/li>\n\n\n\n<li>Security<\/li>\n\n\n\n<li>Edge cases<\/li>\n\n\n\n<li>Error handling<\/li>\n\n\n\n<li>Dependencies<\/li>\n\n\n\n<li>Licensing\/reference concerns<\/li>\n\n\n\n<li>Performance<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">18. Chat-based development workflow<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">A strong Amazon Q workflow is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ask \u2192 Generate \u2192 Review \u2192 Refine \u2192 Test \u2192 Secure \u2192 Document\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example conversation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>I am building a Python Lambda API that writes to DynamoDB. Generate the handler code.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Now add input validation.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Add structured logging.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Add unit tests.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review the final code for security issues.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create a README explaining how to deploy with AWS SAM CLI.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This is much better than asking one giant question and accepting the first answer.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">19. Useful Amazon Q Developer prompts<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Code generation<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Write a Python function that reads a CSV file from S3 and stores each row in DynamoDB.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Create a Node.js Express route that validates a request body and returns proper HTTP status codes.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate a Java class that calls an external REST API with retries and timeout handling.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Code explanation<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain this code in simple language.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain the selected function line by line.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>What does this regular expression do?\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Refactoring<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Refactor this function to make it easier to test.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Split this large function into smaller functions.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Improve readability without changing behavior.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Debugging<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>This function fails with KeyError. Explain why and fix it.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Why am I getting AccessDeniedException in this Lambda function?\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Analyze this stack trace and suggest the root cause.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Unit tests<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate pytest tests for this function.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate Jest tests for this TypeScript file.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Add tests for edge cases and failure paths.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">AWS help<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain the difference between Lambda reserved concurrency and provisioned concurrency.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Create an IAM policy that allows read-only access to one S3 bucket.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain why this CloudFormation template fails.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Security review<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this code for security vulnerabilities.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Find hardcoded secrets or unsafe logging.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this IAM policy for least-privilege problems.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Documentation<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Create a README for this project.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Write deployment instructions for this SAM application.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Create an architecture overview from this codebase.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">20. Code review with Amazon Q Developer<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer can review code for different categories of issues, including:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Static application security testing findings<\/li>\n\n\n\n<li>Secrets in code<\/li>\n\n\n\n<li>Infrastructure-as-code security issues<\/li>\n\n\n\n<li>Code quality issues<\/li>\n\n\n\n<li>Deployment risks<\/li>\n\n\n\n<li>Third-party dependency issues<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A useful review prompt is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this code for security, correctness, error handling, and maintainability. Give me the top issues first.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For infrastructure:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this CloudFormation template for least-privilege IAM, public exposure, encryption, and logging.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For application code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this API handler for injection risk, unsafe input handling, missing validation, and bad error responses.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Good review habit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ask Amazon Q for problems, not only improvements.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Weak prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Is this code good?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Better prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Find bugs, security problems, missing edge cases, and production-readiness issues in this code.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">21. Security best practices when using Amazon Q Developer<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer is powerful, but you still need safe habits.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">21.1 Do not paste secrets<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Avoid pasting:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AWS access keys<\/li>\n\n\n\n<li>API tokens<\/li>\n\n\n\n<li>Passwords<\/li>\n\n\n\n<li>Database credentials<\/li>\n\n\n\n<li>Private keys<\/li>\n\n\n\n<li>Customer data<\/li>\n\n\n\n<li>Confidential company data unless your organization allows it<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">21.2 Review generated code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">AI-generated code may be incomplete, incorrect, outdated, or insecure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Always check:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Does it work?\nIs it secure?\nDoes it follow our architecture?\nDoes it handle errors?\nDoes it log too much?\nDoes it expose secrets?\nDoes it use least privilege?\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">21.3 Use least privilege<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">When asking for IAM policies, do not ask for broad permissions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Weak prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Give my Lambda full access to DynamoDB.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Better prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create a least-privilege IAM policy that allows this Lambda function to PutItem and GetItem only on this specific DynamoDB table.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">21.4 Ask for explanation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Whenever Q generates infrastructure or IAM, ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain each permission and why it is needed.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">21.5 Test before deploying<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use local tests, unit tests, integration tests, and staging deployments.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AI assistance is not a replacement for testing. Tiny tragedy, huge outage. Computers are petty like that.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">22. Amazon Q Developer with AWS CLI<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer can help explain AWS CLI commands, but the actual AWS CLI command is still <code>aws<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate an AWS CLI command to list Lambda functions in us-east-1.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Possible command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>aws lambda list-functions --region us-east-1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate an AWS CLI command to check failed CloudFormation stack events.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Possible command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>aws cloudformation describe-stack-events \\\n  --stack-name my-stack \\\n  --region us-east-1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain this AWS CLI command and what permissions it requires.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This is a useful beginner-friendly way to learn AWS CLI safely.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">23. Amazon Q Developer with AWS SAM CLI<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer is very useful with AWS SAM.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create a SAM template for a Python Lambda API with DynamoDB.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create the matching Python Lambda handler.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create a sample API Gateway event JSON file for sam local invoke.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then run manually:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sam build\nsam local invoke CreateUserFunction --event events\/create-user.json\nsam local start-api\nsam deploy --guided\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review my SAM template and Lambda code for production readiness.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Good SAM workflow with Amazon Q:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ask Q to generate template\nAsk Q to generate code\nRun sam build\nRun sam local invoke\nFix errors with Q\nRun sam deploy --guided\nUse Q to explain logs\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">24. Amazon Q Developer with CloudFormation<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">You can ask Amazon Q to explain CloudFormation resources.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain this CloudFormation template and list every AWS resource it creates.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You can also ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Why does this CloudFormation stack fail with CAPABILITY_IAM required?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Or:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this CloudFormation template for security issues.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For beginners, this is extremely useful because CloudFormation error messages can be cryptic.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">25. Amazon Q Developer with Terraform<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer can help generate and review Terraform configuration too.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create Terraform configuration for an S3 bucket with encryption, versioning, and public access blocked.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this Terraform file for security and cost risks.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain what terraform plan will likely create from this configuration.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Still, always run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>terraform fmt\nterraform validate\nterraform plan\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Do not deploy generated infrastructure without reviewing the plan.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">26. Amazon Q Developer with Docker and Kubernetes<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">You can ask Q to generate Dockerfiles, Docker Compose files, and Kubernetes manifests.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create a production-ready Dockerfile for this Python FastAPI application.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this Kubernetes deployment YAML for resource limits, probes, and securityContext.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create a docker-compose.yml file for this app with PostgreSQL and Redis.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Review generated configs carefully, especially for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Exposed ports<\/li>\n\n\n\n<li>Privileged containers<\/li>\n\n\n\n<li>Missing resource limits<\/li>\n\n\n\n<li>Missing health checks<\/li>\n\n\n\n<li>Hardcoded secrets<\/li>\n\n\n\n<li>Running as root<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">27. Amazon Q Developer in AWS Console<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">In the AWS Console, Amazon Q Developer can help answer AWS questions and troubleshoot.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example questions:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Why is my Lambda function timing out?\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>How do I enable versioning on an S3 bucket?\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>What does this EC2 status check failure mean?\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>How do I reduce cost for this workload?\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain this IAM AccessDenied error.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Console use is good when you are actively looking at AWS resources.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">IDE use is better when you are actively writing code.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">28. Amazon Q Developer command-line reality check<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">This part matters because the naming has changed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There used to be an Amazon Q Developer CLI experience. Current AWS documentation says that Q CLI has become Kiro CLI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So today:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>For AI assistant terminal workflows \u2192 use Kiro CLI\nFor Amazon Q Developer code transformation CLI workflows \u2192 use qct\nFor AWS service commands \u2192 use AWS CLI using aws\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This means a modern tutorial should not teach old <code>q<\/code> commands as if they are the current Amazon Q Developer CLI.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">29. Install Kiro CLI for terminal AI workflows<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Kiro CLI is the successor to the old Amazon Q Developer CLI experience.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Because install commands can change, follow the official Kiro CLI installation page for your operating system.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">General workflow:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># macOS, Linux, or Windows installation method depends on OS\n# Use the current official Kiro CLI installer for your platform\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">After installation, verify:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli --help\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Start in a project folder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd my-project\nkiro-cli\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Start chat with a specific agent:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli --agent myagent\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Or:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli chat --agent agent_name\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use Kiro CLI when you want terminal-based AI help, project-aware coding, agent workflows, MCP integrations, or non-IDE assistance.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">30. Useful Kiro CLI commands<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Start interactive chat<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Start with an agent<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli --agent myagent\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Start chat with agent<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli chat --agent agent_name\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Manage inline suggestions<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli inline enable\nkiro-cli inline disable\nkiro-cli inline status\nkiro-cli inline show-customizations\nkiro-cli inline set-customization\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Manage integrations<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli integrations status\nkiro-cli integrations install kiro-command-router\nkiro-cli integrations uninstall kiro-command-router\nkiro-cli integrations reinstall kiro-command-router\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Set command router default<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro set-default cli\nkiro set-default ide\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Open IDE directly<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro ide\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">MCP usage inside chat<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Inside an interactive session:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/mcp\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add MCP servers using CLI workflows or configuration files depending on your setup.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example idea:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli mcp add --name git-server --agent rust-dev\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">MCP is an advanced topic. It lets the assistant connect to external tools and context providers.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">31. Install Amazon Q Developer command-line transformation tool<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer also has a separate command-line transformation tool commonly invoked as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>qct\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This is different from Kiro CLI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use <code>qct<\/code> for supported application transformations, such as Java upgrades or embedded SQL conversion workflows.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Check prerequisites<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You need:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python --version\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Python should be version 3.12 or newer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You also need macOS or Linux for this workflow.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Create a Python virtual environment<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>python -m venv qct-cli\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Activate it:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>source qct-cli\/bin\/activate\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Install the transformation tool<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Download the official Amazon Q command-line transformation tool from AWS documentation, unzip it, and install the correct wheel for your architecture.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example pattern for Linux x86_64:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install &lt;path-to-unzipped-tool&gt;\/Linux_x86_64\/amzn_qct_cli-&lt;version&gt;-py3-none-any.whl\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example pattern for Linux ARM:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install &lt;path-to-unzipped-tool&gt;\/Linux_aarch64\/amzn_qct_cli-&lt;version&gt;-py3-none-any.whl\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Verify installation<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>which qct\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You can also try:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>qct --help\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5: Configure the tool<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>qct configure\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">During configuration, you may be asked for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>JDK path<\/li>\n\n\n\n<li>IAM Identity Center Start URL<\/li>\n\n\n\n<li>AWS Region<\/li>\n\n\n\n<li>Amazon Q Developer Pro subscription information<\/li>\n\n\n\n<li>Local transformation preferences<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Step 6: Run a Java transformation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Example pattern:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>qct transform --source_folder &lt;path-to-folder&gt; \\\n  --target_version JAVA_17\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Or:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>qct transform --source_folder &lt;path-to-folder&gt; \\\n  --target_version JAVA_21\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 7: Run transformation with dependency upgrade file<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>qct transform --source_folder &lt;path-to-folder&gt; \\\n  --target_version JAVA_17 \\\n  --dependency_upgrade_file dependency-upgrade.yaml\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 8: Run non-interactive transformation<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>qct transform --source_folder &lt;path-to-folder&gt; \\\n  --target_version JAVA_17 \\\n  --no-interactive\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 9: Embedded SQL conversion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create a YAML config file like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>schema_conv_metadata_path: &lt;path-to-metadata-zip-file&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>qct transform --source_folder &lt;path-to-folder&gt; \\\n  --sql_conversion_config_file &lt;path-to-sql-config-file&gt;\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 10: Pause or cancel transformation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">During a transformation, press:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ctrl+C\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then choose whether to pause or cancel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To resume a paused transformation, run the transformation command again with the original source folder.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">32. Example dependency upgrade file<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">For Java transformations, you can provide a dependency upgrade YAML file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>name: dependency-upgrade\n\ndescription: \"Custom dependency version management for Java migration\"\n\ndependencyManagement:\n  dependencies:\n    - identifier: \"com.example:library1\"\n      targetVersion: \"2.1.0\"\n      versionProperty: \"library1.version\"\n      originType: \"FIRST_PARTY\"\n\n    - identifier: \"com.example:library2\"\n      targetVersion: \"3.0.0\"\n      originType: \"THIRD_PARTY\"\n\n  plugins:\n    - identifier: \"com.example.plugin\"\n      targetVersion: \"1.2.0\"\n      versionProperty: \"plugin.version\"\n      originType: \"THIRD_PARTY\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use this when you want more control over dependency upgrades.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">33. Amazon Q Developer commands and actions cheat sheet<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer is mostly used through IDE actions, chat prompts, and extension commands rather than traditional shell commands.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">IDE actions<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>What it does<\/th><\/tr><\/thead><tbody><tr><td>Open Amazon Q panel<\/td><td>Starts chat<\/td><\/tr><tr><td>Select code and ask Q<\/td><td>Explains or modifies selected code<\/td><\/tr><tr><td>Accept inline suggestion<\/td><td>Accepts generated code completion<\/td><\/tr><tr><td>Reject inline suggestion<\/td><td>Ignores generated suggestion<\/td><\/tr><tr><td>Review code<\/td><td>Finds security, quality, and deployment issues<\/td><\/tr><tr><td>Generate tests<\/td><td>Creates unit tests<\/td><\/tr><tr><td>Explain code<\/td><td>Explains selected file\/function<\/td><\/tr><tr><td>Refactor code<\/td><td>Improves structure<\/td><\/tr><tr><td>Transform code<\/td><td>Modernizes supported applications<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Prompt-style commands<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain this code.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate unit tests for this file.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this code for security vulnerabilities.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Refactor this function for readability.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Find bugs in this code.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Create a SAM template for this Lambda API.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain this AWS error.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate least-privilege IAM policy for this use case.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">qct command-line commands<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>qct configure\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>qct transform --source_folder &lt;path-to-folder&gt; --target_version JAVA_17\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>qct transform --source_folder &lt;path-to-folder&gt; --target_version JAVA_21\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>qct transform --source_folder &lt;path-to-folder&gt; \\\n  --target_version JAVA_17 \\\n  --dependency_upgrade_file dependency-upgrade.yaml\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>qct transform --source_folder &lt;path-to-folder&gt; \\\n  --target_version JAVA_17 \\\n  --no-interactive\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>qct transform --source_folder &lt;path-to-folder&gt; \\\n  --sql_conversion_config_file sql-config.yaml\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>qct --help\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Kiro CLI commands for terminal assistant workflows<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli --help\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli --agent myagent\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli chat --agent agent_name\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli inline enable\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli inline disable\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli inline status\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli integrations status\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro set-default cli\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro set-default ide\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro ide\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">34. Beginner project: Build a simple Lambda with Amazon Q Developer<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Goal<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create a simple Python Lambda function using Amazon Q Developer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Create project folder<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir q-demo-lambda\ncd q-demo-lambda\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Create app file<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>touch app.py\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Ask Amazon Q<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create a Python Lambda function that returns a JSON response with message \"Hello from Amazon Q Developer\".\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Possible code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import json\n\ndef lambda_handler(event, context):\n    return {\n        \"statusCode\": 200,\n        \"headers\": {\n            \"Content-Type\": \"application\/json\"\n        },\n        \"body\": json.dumps({\n            \"message\": \"Hello from Amazon Q Developer\"\n        })\n    }\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Ask for explanation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain this Lambda function line by line.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5: Ask for tests<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate pytest unit tests for this Lambda function.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Possible test:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import json\nfrom app import lambda_handler\n\ndef test_lambda_handler():\n    response = lambda_handler({}, None)\n\n    assert response&#91;\"statusCode\"] == 200\n\n    body = json.loads(response&#91;\"body\"])\n    assert body&#91;\"message\"] == \"Hello from Amazon Q Developer\"\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 6: Run tests<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install pytest\npytest\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 7: Improve<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Add support for reading a name from the event and returning Hello, &lt;name&gt;.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">35. Intermediate project: API Gateway + Lambda + DynamoDB with SAM<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Goal<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use Amazon Q Developer to create a small serverless API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Architecture:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client \u2192 API Gateway \u2192 Lambda \u2192 DynamoDB\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Ask Q for a SAM template<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create an AWS SAM template for a POST \/users API backed by Lambda and DynamoDB. Use least-privilege permissions.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Ask Q for Lambda code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create the Python Lambda handler for POST \/users. It should parse JSON, require name and email, generate a userId, and store the item in DynamoDB.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Ask Q for local test event<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create an API Gateway proxy event JSON file for testing this Lambda locally with sam local invoke.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Build and test<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sam build\nsam local invoke CreateUserFunction --event events\/create-user.json\nsam local start-api\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5: Test API locally<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST http:\/\/127.0.0.1:3000\/users \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\"name\":\"Rajesh\",\"email\":\"rajesh@example.com\"}'\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 6: Ask Q to debug errors<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If something fails, copy the error and ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>This SAM local invoke command failed. Explain the error and show the exact fix.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 7: Review security<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this SAM template and Lambda code for security, IAM least privilege, logging, validation, and production readiness.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 8: Deploy<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sam deploy --guided\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">36. Advanced workflow: Security review and hardening<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">After generating code, ask Amazon Q Developer to harden it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Useful prompts:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this code for OWASP Top 10 risks.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Find places where user input is trusted unsafely.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Check whether this function logs sensitive data.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Suggest least-privilege IAM permissions for this Lambda function.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this Terraform or CloudFormation for public exposure.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Find hardcoded secrets or credentials.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Do not stop at code generation. Make security review part of the workflow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recommended workflow:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate code\nRun tests\nAsk Q for code review\nFix issues\nAsk Q for security review\nRun static analysis\nDeploy to dev\nReview logs\nDeploy to production\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">37. Advanced workflow: Code modernization<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer can help modernize supported codebases.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Common modernization tasks:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Java version upgrade<\/li>\n\n\n\n<li>.NET transformation<\/li>\n\n\n\n<li>Dependency upgrades<\/li>\n\n\n\n<li>Refactoring old patterns<\/li>\n\n\n\n<li>Explaining legacy code<\/li>\n\n\n\n<li>Generating tests before migration<\/li>\n\n\n\n<li>Creating migration plans<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Good prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Analyze this Java project and create a migration plan from Java 8 to Java 17. Include risks, dependencies, testing strategy, and rollback plan.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For command-line transformation, use <code>qct<\/code> where supported.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">General Java transformation pattern:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>qct configure\n\nqct transform --source_folder &lt;path-to-java-project&gt; \\\n  --target_version JAVA_17\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For Java 21:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>qct transform --source_folder &lt;path-to-java-project&gt; \\\n  --target_version JAVA_21\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ask Q to review the generated changes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review these migration changes and identify behavior changes, dependency risks, and test gaps.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">38. Advanced workflow: Troubleshooting AWS errors<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer is especially useful when debugging AWS errors.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">IAM error example<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Error:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AccessDeniedException: User is not authorized to perform dynamodb:PutItem\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain this AccessDeniedException and show the minimum IAM policy needed for this Lambda to write to this DynamoDB table.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Lambda timeout example<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Error:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Task timed out after 10.00 seconds\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>My Lambda function timed out after 10 seconds. Review this code and suggest likely causes and fixes.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">CloudFormation failure example<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Error:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Requires capabilities: &#91;CAPABILITY_IAM]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain why this CloudFormation deployment requires CAPABILITY_IAM and whether it is safe to approve.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">API Gateway error example<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Error:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>502 Bad Gateway\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>My API Gateway endpoint returns 502. Review this Lambda response format and explain what is wrong.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">39. Advanced workflow: Prompt engineering for Amazon Q Developer<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Good prompts include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Context<\/li>\n\n\n\n<li>Goal<\/li>\n\n\n\n<li>Language\/framework<\/li>\n\n\n\n<li>Constraints<\/li>\n\n\n\n<li>Expected output format<\/li>\n\n\n\n<li>Security requirements<\/li>\n\n\n\n<li>Testing requirements<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Weak prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Write Lambda code.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Better prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Write a Python 3.12 AWS Lambda function for API Gateway proxy integration. It should accept POST \/users, parse JSON, require name and email, validate email format, write to DynamoDB using boto3, return proper HTTP status codes, avoid logging PII, and include unit tests using pytest.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Weak prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Fix this.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Better prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>This function fails when the request body is missing. Explain the root cause, fix the code, and add tests for missing body, invalid JSON, missing name, and missing email.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Prompt formula:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>You are helping with &lt;project\/context&gt;.\nI need &lt;goal&gt;.\nUse &lt;language\/framework\/tool&gt;.\nFollow &lt;constraints&gt;.\nReturn &lt;format&gt;.\nAlso include &lt;tests\/security\/error handling&gt;.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>You are helping with an AWS SAM Python serverless API. I need a Lambda handler for POST \/orders. Use Python 3.12 and boto3. Validate input, write to DynamoDB, return API Gateway proxy responses, avoid logging sensitive fields, and include pytest tests.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">40. Best practices<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">40.1 Treat Amazon Q as an assistant, not an authority<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q can be very helpful, but you are still responsible for the code.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">40.2 Provide project context<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Instead of asking:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Fix this code.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Say:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>This is a Python Lambda function behind API Gateway. It writes to DynamoDB. It should return API Gateway proxy responses. Fix the validation bug.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">40.3 Ask for tests<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Always ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate unit tests for success and failure cases.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">40.4 Ask for security review<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Always ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this for security and least-privilege IAM.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">40.5 Ask for explanation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Do not accept code you do not understand.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ask:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain why this solution works.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">40.6 Use small steps<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Instead of asking for a whole production application at once, work in smaller pieces:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create handler.\nAdd validation.\nAdd persistence.\nAdd tests.\nAdd logging.\nAdd SAM template.\nReview security.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">40.7 Keep humans in the review loop<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For production code:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Run tests<\/li>\n\n\n\n<li>Run linters<\/li>\n\n\n\n<li>Run security scans<\/li>\n\n\n\n<li>Review IAM policies<\/li>\n\n\n\n<li>Review generated infrastructure<\/li>\n\n\n\n<li>Check costs<\/li>\n\n\n\n<li>Deploy first to dev\/staging<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">41. Common mistakes<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Mistake 1: Accepting code blindly<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bad idea. Always review generated code.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mistake 2: Asking vague prompts<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bad:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Make this better.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Better:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Improve readability, add error handling, keep the public function signature unchanged, and explain each change.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Mistake 3: Generating broad IAM policies<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bad:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Give Lambda full access to AWS.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Better:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create least-privilege IAM permissions for this Lambda to read one S3 bucket and write to one DynamoDB table.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Mistake 4: Pasting secrets<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Do not paste keys, passwords, customer data, or private credentials.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mistake 5: Not checking package versions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">AI might suggest outdated dependencies. Verify versions before using them.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mistake 6: Ignoring organization policy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you work in a company, follow your internal AI, security, privacy, and code review policies.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">42. Recommended learning path<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Follow this path from beginner to advanced.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Stage 1: Basics<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Learn:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>What Amazon Q Developer is<\/li>\n\n\n\n<li>Difference between CodeWhisperer and Amazon Q Developer<\/li>\n\n\n\n<li>IDE installation<\/li>\n\n\n\n<li>Builder ID login<\/li>\n\n\n\n<li>Basic chat<\/li>\n\n\n\n<li>Inline suggestions<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Practice:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain this code.\nGenerate a function.\nGenerate tests.\nRefactor this function.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Stage 2: AWS development<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Learn:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lambda<\/li>\n\n\n\n<li>API Gateway<\/li>\n\n\n\n<li>DynamoDB<\/li>\n\n\n\n<li>IAM<\/li>\n\n\n\n<li>AWS SAM<\/li>\n\n\n\n<li>CloudFormation basics<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Practice:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate Lambda code.\nGenerate SAM templates.\nExplain IAM policies.\nDebug SAM deployment errors.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Stage 3: Security and review<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Learn:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Secrets detection<\/li>\n\n\n\n<li>IAM least privilege<\/li>\n\n\n\n<li>Infrastructure review<\/li>\n\n\n\n<li>Dependency review<\/li>\n\n\n\n<li>Secure coding patterns<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Practice:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Review this code for security.\nReview this IAM policy.\nReview this CloudFormation template.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Stage 4: DevOps and operations<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Learn:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CloudWatch Logs<\/li>\n\n\n\n<li>CloudFormation stack events<\/li>\n\n\n\n<li>AWS CLI<\/li>\n\n\n\n<li>CI\/CD pipelines<\/li>\n\n\n\n<li>Deployment troubleshooting<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Practice:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explain this CloudWatch error.\nGenerate a GitHub Actions workflow.\nDebug this deployment failure.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Stage 5: Advanced modernization<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Learn:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Java\/.NET modernization<\/li>\n\n\n\n<li>Code transformation<\/li>\n\n\n\n<li>Dependency upgrades<\/li>\n\n\n\n<li>Migration planning<\/li>\n\n\n\n<li>qct command-line transformation<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Practice:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create a Java 8 to Java 17 migration plan.\nRun qct transformation.\nReview migration changes.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Stage 6: Terminal workflows<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Learn:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kiro CLI<\/li>\n\n\n\n<li>Agents<\/li>\n\n\n\n<li>MCP<\/li>\n\n\n\n<li>Inline terminal assistance<\/li>\n\n\n\n<li>Project-aware terminal development<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Practice:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kiro-cli\nkiro-cli --agent myagent\nkiro-cli inline enable\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">43. Final mental model<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer is your AWS-aware AI development assistant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use it like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>In IDE:\n  Write code\n  Explain code\n  Generate tests\n  Review security\n  Refactor\n  Debug\n\nIn AWS Console:\n  Understand services\n  Diagnose errors\n  Ask AWS architecture questions\n\nWith SAM\/CDK\/Terraform:\n  Generate infrastructure\n  Review templates\n  Explain deployment failures\n\nWith qct:\n  Transform supported applications\n\nWith Kiro CLI:\n  Use terminal-based AI assistant workflows\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The best workflow is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ask clearly\nGenerate code\nReview carefully\nTest locally\nScan for security\nDeploy to dev\nCheck logs\nImprove\nDeploy to production\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Q Developer will not replace your engineering judgment. It will make your engineering workflow faster, especially when you use it with strong prompts, tests, security review, and AWS best practices.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In one line:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Amazon Q Developer helps developers build, debug, secure, modernize, and operate AWS applications faster.\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>1. Introduction Amazon Q Developer is AWS\u2019s generative AI assistant for developers, cloud engineers, DevOps engineers, security engineers, and anyone building applications on AWS. It helps you&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1018","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/1018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=1018"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/1018\/revisions"}],"predecessor-version":[{"id":1019,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/1018\/revisions\/1019"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=1018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=1018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=1018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}