{"id":39591,"date":"2023-09-11T10:04:40","date_gmt":"2023-09-11T10:04:40","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=39591"},"modified":"2023-09-11T10:04:42","modified_gmt":"2023-09-11T10:04:42","slug":"terraform-error-handing-with-try-catch","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/terraform-error-handing-with-try-catch\/","title":{"rendered":"Terraform Error Handing with Try Catch"},"content":{"rendered":"\n<p>The code could be improved by adding some error handling. For example, you could check to make sure that the PEM file exists and that the password data is valid. You could also add a retry mechanism in case the AWS API call fails.<\/p>\n\n\n\n<p>This code uses the <code>try<\/code> and <code>catch<\/code> blocks to handle errors. If the <code>rsadecrypt<\/code> function fails, the <code>catch<\/code> block will be executed and the output will be set to the specified error message.<\/p>\n\n\n\n<p><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">resource <span class=\"hljs-string\">\"aws_instance\"<\/span> <span class=\"hljs-string\">\"example\"<\/span> {\r\n  ami = <span class=\"hljs-string\">\"ami-065b889ab5c33720e\"<\/span>\r\n  count         = <span class=\"hljs-string\">\"18\"<\/span>\r\n  instance_type = <span class=\"hljs-string\">\"t2.medium\"<\/span>\r\n  key_name = <span class=\"hljs-string\">\"aws-hl-training\"<\/span>\r\n  vpc_security_group_ids =&#91;<span class=\"hljs-string\">\"sg-0541801a7a059ba17\"<\/span>]\r\n  get_password_data = <span class=\"hljs-string\">\"true\"<\/span>\r\n}\r\n\r\noutput <span class=\"hljs-string\">\"public_ip\"<\/span> {\r\n    value = <span class=\"hljs-string\">\"${aws_instance.example.*.public_ip}\"<\/span>\r\n}\r\n\r\noutput <span class=\"hljs-string\">\"public_dns\"<\/span> {\r\n    value = <span class=\"hljs-string\">\"${aws_instance.example.*.public_dns}\"<\/span>\r\n}\r\n\r\noutput <span class=\"hljs-string\">\"Administrator_Password1\"<\/span> {\r\n  value = <span class=\"hljs-keyword\">try<\/span> {\r\n    &#91;\r\n      <span class=\"hljs-keyword\">for<\/span> g <span class=\"hljs-keyword\">in<\/span> aws_instance.example : rsadecrypt(g.password_data,file(<span class=\"hljs-string\">\"aws-hl-training.pem\"<\/span>))\r\n    ]\r\n  } <span class=\"hljs-keyword\">catch<\/span> {\r\n    <span class=\"hljs-comment\">\/\/ Handle the error<\/span>\r\n    <span class=\"hljs-string\">\"Unable to decrypt password data\"<\/span>\r\n  }\r\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>","protected":false},"excerpt":{"rendered":"<p>The code could be improved by adding some error handling. For example, you could check to make sure that the PEM file exists and that the password data is valid. You could also add a retry mechanism in case the AWS API call fails. This code uses the try and catch blocks to handle errors&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-39591","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/39591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=39591"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/39591\/revisions"}],"predecessor-version":[{"id":39592,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/39591\/revisions\/39592"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=39591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=39591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=39591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}