[{"data":1,"prerenderedAt":211},["ShallowReactive",2],{"content-guides-building-serverless-applications-with-terraform-09-summary":3},{"markdown":4,"frontMatterAttributes":5,"bodyRaw":26,"contributorPaths":27,"menuType":32,"contentName":33,"slug":34,"readingTime":35,"menu":36,"nextDocItem":177,"previousDocItem":154},"\u003Cp>\u003Ca href=\"https:\u002F\u002Fterraform.io\">Hashicorp Terraform\u003C\u002Fa> is an IaC tool that allows engineering teams to define and deploy their application environments using a declarative, human-readable syntax. Throughout this guide you&#39;ve learned how to use Terraform for building serverless applications. \u003C\u002Fp>\n\u003Cul>\n\u003Cli>How to add various resource types and build a decoupled serverless architecture\u003C\u002Fli>\n\u003Cli>How to implement synchronous APIs with API Gateway, and async processing with SQS message queues\u003C\u002Fli>\n\u003Cli>How to wire application components to work together while following the principle of least privileged IAM access\u003C\u002Fli>\n\u003Cli>How to test your applications locally with AWS SAM\u003C\u002Fli>\n\u003Cli>How to deploy your applications to AWS, and test them running in cloud\u003C\u002Fli>\n\u003Cli>How to add observability aspects, such as logging and tracing, to your applications\u003C\u002Fli>\n\u003Cli>How to elevate your Terraform templates by adding modules, supporting multiple environments, and separating infrastructure and application code.\u003C\u002Fli>\n\u003Cli>How to elevate your Terraform templates by adding modules, supporting for multiple environments, and separating infrastructure and application code.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Next steps\u003C\u002Fh2>\n\u003Cp>Follow below links to continue your learning journey\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fserverlessland.com\u002Flearn\u002FGetting-started\">Getting Started with Serverless for Developers (guide)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fserverlessland.com\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fgovernance\u002F1-introduction\">Implementing Governance in Depth for Serverless Applications (guide)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fserverlessland.com\u002Fpatterns?framework=Terraform\">Serverless Land - Serverless Patterns using Terraform\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fserverlessland.com\u002Flearn\">Serverless Land - Learning guides and Workshops\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=xUag7BSv6iE&ab_channel=ServerlessLand\">Using Terraform with AWS SAM | Serverless Office Hours (video)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fserverless.tf\u002F\">Serverless.tf - an open-source framework for building serverless applications on AWS using Terraform.\u003C\u002Fa> \u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fcatalog.workshops.aws\u002Fserverless-app-terraform\u002Fen-US\">Building Serverless Applications with Terraform (workshop)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdeveloper.hashicorp.com\u002Fterraform\u002Ftutorials\u002Faws\u002Flambda-api-gateway\">Deploy serverless applications with AWS Lambda and API Gateway (tutorial)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fregistry.terraform.io\u002Fproviders\u002Fhashicorp\u002Faws\u002Flatest\">AWS Terraform Provider (documentation)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdocs.aws.amazon.com\u002Fstep-functions\u002Flatest\u002Fdg\u002Fterraform-sfn.html\">Deploying AWS Step Functions state machines using Terraform (documentation)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdevops\u002Fbest-practices-for-writing-step-functions-terraform-projects\u002F\">Best Practices for Writing Step Functions Terraform Projects (blog)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fcatalog.workshops.aws\u002Fstepfunctions\u002Fen-US\u002Fdevelopment\u002Fiac\u002Fdeploy-with-terraform\">Building AWS Step Functions with Terraform (workshop)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fserverlessland.com\u002Fworkflows?framework=Terraform\">Serverless Land - Step Functions Workflows using Terraform\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n",{"title":6,"order":7,"authors":8,"resources":11},"9. Summary and next steps",9,[9,10],"Anton Aleksandrov","Debasis Rath",[12,16,19,22],{"link":13,"text":14,"type":15},"https:\u002F\u002Fregistry.terraform.io\u002Fproviders\u002Fhashicorp\u002Faws\u002Flatest\u002Fdocs","AWS Terraform Provider","Documentation",{"link":17,"text":18,"type":15},"https:\u002F\u002Fdeveloper.hashicorp.com\u002Fterraform","Hashicorp Terraform",{"link":20,"text":21,"type":15},"https:\u002F\u002Faws.amazon.com\u002Fserverless\u002Fsam\u002F","AWS SAM",{"link":23,"text":24,"type":25},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fbuilding-serverless-applications-with-terraform","Sample project source code","Sample","[Hashicorp Terraform](https:\u002F\u002Fterraform.io) is an IaC tool that allows engineering teams to define and deploy their application environments using a declarative, human-readable syntax. Throughout this guide you've learned how to use Terraform for building serverless applications. \n\n* How to add various resource types and build a decoupled serverless architecture\n* How to implement synchronous APIs with API Gateway, and async processing with SQS message queues\n* How to wire application components to work together while following the principle of least privileged IAM access\n* How to test your applications locally with AWS SAM\n* How to deploy your applications to AWS, and test them running in cloud\n* How to add observability aspects, such as logging and tracing, to your applications\n* How to elevate your Terraform templates by adding modules, supporting multiple environments, and separating infrastructure and application code.\n* How to elevate your Terraform templates by adding modules, supporting for multiple environments, and separating infrastructure and application code.\n\n## Next steps\n\nFollow below links to continue your learning journey\n\n* [Getting Started with Serverless for Developers (guide)](https:\u002F\u002Fserverlessland.com\u002Flearn\u002FGetting-started)\n* [Implementing Governance in Depth for Serverless Applications (guide)](https:\u002F\u002Fserverlessland.com\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fgovernance\u002F1-introduction)\n* [Serverless Land - Serverless Patterns using Terraform](https:\u002F\u002Fserverlessland.com\u002Fpatterns?framework=Terraform)\n* [Serverless Land - Learning guides and Workshops](https:\u002F\u002Fserverlessland.com\u002Flearn)\n* [Using Terraform with AWS SAM | Serverless Office Hours (video)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=xUag7BSv6iE&ab_channel=ServerlessLand)\n* [Serverless.tf - an open-source framework for building serverless applications on AWS using Terraform.](https:\u002F\u002Fserverless.tf\u002F) \n* [Building Serverless Applications with Terraform (workshop)](https:\u002F\u002Fcatalog.workshops.aws\u002Fserverless-app-terraform\u002Fen-US)\n* [Deploy serverless applications with AWS Lambda and API Gateway (tutorial)](https:\u002F\u002Fdeveloper.hashicorp.com\u002Fterraform\u002Ftutorials\u002Faws\u002Flambda-api-gateway)\n* [AWS Terraform Provider (documentation)](https:\u002F\u002Fregistry.terraform.io\u002Fproviders\u002Fhashicorp\u002Faws\u002Flatest)\n* [Deploying AWS Step Functions state machines using Terraform (documentation)](https:\u002F\u002Fdocs.aws.amazon.com\u002Fstep-functions\u002Flatest\u002Fdg\u002Fterraform-sfn.html)\n* [Best Practices for Writing Step Functions Terraform Projects (blog)](https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdevops\u002Fbest-practices-for-writing-step-functions-terraform-projects\u002F)\n* [Building AWS Step Functions with Terraform (workshop)](https:\u002F\u002Fcatalog.workshops.aws\u002Fstepfunctions\u002Fen-US\u002Fdevelopment\u002Fiac\u002Fdeploy-with-terraform)\n* [Serverless Land - Step Functions Workflows using Terraform](https:\u002F\u002Fserverlessland.com\u002Fworkflows?framework=Terraform)\n",[28,29,30,31],"content\u002Fcontributors\u002Fanton-aleksandrov.json","content\u002Fcontributors\u002Fdebasis-rath.json","content\u002Fcontributors\u002Fmatt-ridehalgh.json","content\u002Fcontributors\u002Fluis-cerezo.json","LIST","Building Serverless Applications with Terraform","\u002Fcontent\u002Fguides\u002Fbuilding-serverless-applications-with-terraform\u002F09-summary","2 min",[37],{"title":38,"content":39},"Guide",[40,57,73,86,104,117,132,154,168,177,195],{"title":41,"order":42,"authors":43,"resources":44,"time":53,"path":54,"id":55,"link":56},"1. Introduction",1,[9,10],[45,48,51],{"link":20,"text":46,"type":47},"AWS Serverless Application Model (SAM)","link",{"link":49,"text":50,"type":47},"https:\u002F\u002Faws.amazon.com\u002Fcdk\u002F","AWS Cloud Development Kit (CDK)",{"link":52,"text":18,"type":47},"https:\u002F\u002Fwww.terraform.io\u002F","4 min","01-introduction","01-introduction.md","\u002Fcontent\u002Fguides\u002Fbuilding-serverless-applications-with-terraform\u002F01-introduction",{"title":58,"order":59,"authors":60,"resources":61,"time":69,"path":70,"id":71,"link":72},"2. Solution Overview",2,[9,10],[62,63,66],{"link":52,"text":18,"type":47},{"link":64,"text":65,"type":47},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fcli\u002Flatest\u002Fuserguide\u002Fgetting-started-install.htm","AWS CLI",{"link":67,"text":68,"type":47},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fiam\u002F","AWS IAM","3 min","02-solution-overview","02-solution-overview.md","\u002Fcontent\u002Fguides\u002Fbuilding-serverless-applications-with-terraform\u002F02-solution-overview",{"title":74,"order":75,"authors":76,"resources":78,"time":53,"path":83,"id":84,"link":85},"3. S3 buckets",3,[9,10,77],"Matt Ridehalgh",[79,80],{"link":13,"text":14,"type":15},{"link":81,"text":82,"type":15},"https:\u002F\u002Fregistry.terraform.io\u002Fproviders\u002Fhashicorp\u002Faws\u002Flatest\u002Fdocs\u002Fresources\u002Fs3_bucket","aws_s3_bucket","03-s3-buckets","03-s3-buckets.md","\u002Fcontent\u002Fguides\u002Fbuilding-serverless-applications-with-terraform\u002F03-s3-buckets",{"title":87,"order":88,"authors":89,"resources":90,"time":53,"path":101,"id":102,"link":103},"4. Lambda functions",4,[9,10],[91,92,95,98],{"link":13,"text":14,"type":15},{"link":93,"text":94,"type":15},"https:\u002F\u002Fregistry.terraform.io\u002Fproviders\u002Fhashicorp\u002Faws\u002Flatest\u002Fdocs\u002Fresources\u002Flambda_function","aws_lambda_function",{"link":96,"text":97,"type":15},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fserverless-application-model\u002Flatest\u002Fdeveloperguide\u002Fterraform-support.html","AWS SAM Terraform support",{"link":99,"text":100,"type":25},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fbuilding-serverless-applications-with-terraform\u002Fblob\u002Fmain\u002Flambdas\u002Fgreetings_lambda\u002Findex.mjs","index.mjs","04-lambda-functions","04-lambda-functions.md","\u002Fcontent\u002Fguides\u002Fbuilding-serverless-applications-with-terraform\u002F04-lambda-functions",{"title":105,"order":106,"authors":107,"resources":108,"time":53,"path":114,"id":115,"link":116},"5. API Gateway",5,[9,10],[109,110,113],{"link":13,"text":14,"type":15},{"link":111,"text":112,"type":15},"https:\u002F\u002Fregistry.terraform.io\u002Fproviders\u002Fhashicorp\u002Faws\u002Flatest\u002Fdocs\u002Fresources\u002Fapi_gateway_rest_api","aws_api_gateway_rest_api",{"link":96,"text":97,"type":15},"05-api-gateway","05-api-gateway.md","\u002Fcontent\u002Fguides\u002Fbuilding-serverless-applications-with-terraform\u002F05-api-gateway",{"title":118,"order":119,"authors":120,"resources":121,"time":53,"path":129,"id":130,"link":131},"6. Asynchronous processing",6,[9,10],[122,123,126],{"link":13,"text":14,"type":15},{"link":124,"text":125,"type":15},"https:\u002F\u002Fregistry.terraform.io\u002Fproviders\u002Fhashicorp\u002Faws\u002Flatest\u002Fdocs\u002Fresources\u002Fsqs_queue","aws_sqs_queue",{"link":127,"text":128,"type":15},"https:\u002F\u002Fregistry.terraform.io\u002Fproviders\u002Fhashicorp\u002Faws\u002Flatest\u002Fdocs\u002Fresources\u002Flambda_event_source_mapping","aws_lambda_event_source_mapping","06-async-processing","06-async-processing.md","\u002Fcontent\u002Fguides\u002Fbuilding-serverless-applications-with-terraform\u002F06-async-processing",{"title":133,"order":134,"authors":135,"resources":136,"time":150,"path":151,"id":152,"link":153},"7. Observability",7,[9,10],[137,138,141,144,147],{"link":13,"text":14,"type":15},{"link":139,"text":140,"type":15},"https:\u002F\u002Fdocs.aws.amazon.com\u002Flambda\u002Flatest\u002Fdg\u002Flambda-monitoring.html","Lambda function observability, monitoring, and troubleshooting",{"linke":142,"text":143,"type":15},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fapigateway\u002Flatest\u002Fdeveloperguide\u002Frest-api-monitor.html","Monitoring API Gateway REST API",{"link":145,"text":146,"type":15},"https:\u002F\u002Fregistry.terraform.io\u002Fproviders\u002Fhashicorp\u002Faws\u002Flatest\u002Fdocs\u002Fresources\u002Fapi_gateway_account","aws_api_gateway_account",{"link":148,"text":149,"type":15},"https:\u002F\u002Fregistry.terraform.io\u002Fproviders\u002Fhashicorp\u002Faws\u002Flatest\u002Fdocs\u002Fresources\u002Fapi_gateway_stage","aws_api_gateway_stage","5 min","07-observability","07-observability.md","\u002Fcontent\u002Fguides\u002Fbuilding-serverless-applications-with-terraform\u002F07-observability",{"title":155,"order":156,"authors":157,"resources":158,"time":164,"path":165,"id":166,"link":167},"8. Modularizing your IaC projects",8,[9,10],[159,160,163],{"link":13,"text":14,"type":15},{"link":161,"text":162,"type":15},"https:\u002F\u002Fdeveloper.hashicorp.com\u002Fterraform\u002Flanguage\u002Fmodules","Terraform Modules",{"link":23,"text":24,"type":25},"8 min","08-modularizing-your-iac-projects","08-modularizing-your-iac-projects.md","\u002Fcontent\u002Fguides\u002Fbuilding-serverless-applications-with-terraform\u002F08-modularizing-your-iac-projects",{"title":6,"order":7,"authors":169,"resources":170,"time":35,"path":175,"id":176,"link":34},[9,10],[171,172,173,174],{"link":13,"text":14,"type":15},{"link":17,"text":18,"type":15},{"link":20,"text":21,"type":15},{"link":23,"text":24,"type":25},"09-summary","09-summary.md",{"title":178,"order":179,"authors":180,"resources":182,"time":150,"path":192,"id":193,"link":194},"10. Appendix A - Amazon EventBridge",10,[9,10,181],"Luis Cerezo",[183,186,189],{"link":184,"text":185,"type":15},"https:\u002F\u002Fregistry.terraform.io\u002Fproviders\u002Fhashicorp\u002Faws\u002Flatest\u002Fdocs\u002Fresources\u002Fcloudwatch_event_bus","aws_cloudwatch_event_bus Terraform resource",{"link":187,"text":188,"type":15},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fhealth\u002Flatest\u002Fug\u002Fcloudwatch-events-health.html","Monitoring AWS Health events with Amazon EventBridge",{"link":190,"text":191,"type":15},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fhealth\u002Flatest\u002Fug\u002Faws-health-planned-lifecycle-events.html#planned-lifecycle-event-notifications","Planned lifecycle events for AWS Health - What should I expect when I receive a planned lifecycle event notification?","10-appendix-A-EventBridge","10-appendix-A-EventBridge.md","\u002Fcontent\u002Fguides\u002Fbuilding-serverless-applications-with-terraform\u002F10-appendix-A-EventBridge",{"title":196,"order":197,"authors":198,"resources":199,"time":53,"path":208,"id":209,"link":210},"10. Appendix B - AWS Step Functions",11,[9,10,181],[200,203,205],{"link":201,"text":202,"type":15},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdevops\u002Fbest-practices-for-writing-step-functions-terraform-projects\u002F","Best Practices for Writing Step Functions Terraform Projects",{"link":184,"text":204,"type":15},"cloudwatch_event_bus terraform resource",{"link":206,"text":207,"type":15},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fstep-functions\u002Flatest\u002Fdg\u002Fconcepts-amazon-states-language.html","Amazon States Language","10-appendix-B-SFN","10-appendix-B-SFN.md","\u002Fcontent\u002Fguides\u002Fbuilding-serverless-applications-with-terraform\u002F10-appendix-B-SFN",1792578865715]