{"id":13497,"date":"2023-04-11T12:35:39","date_gmt":"2023-04-11T07:05:39","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=13497"},"modified":"2023-04-11T12:35:39","modified_gmt":"2023-04-11T07:05:39","slug":"lambda-function-trigger-enabled-using-code-pipeline","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2023\/04\/11\/lambda-function-trigger-enabled-using-code-pipeline\/","title":{"rendered":"Lambda Function Trigger Enabled Using Code Pipeline."},"content":{"rendered":"\n<h4 class=\"wp-block-heading\"><strong>Why are you doing a lambda function trigger enabled using pipeline?<\/strong><\/h4>\n\n\n\n<p class=\"has-text-align-justify\">For the AWS service to invoke your function directly, you need to create a trigger using the Lambda console. A trigger is a resource you configure to allow another AWS service to invoke your function when certain events or conditions occur. Your function can have multiple triggers. Each trigger acts as a client invoking your function independently, and each event that Lambda passes to your function has data from only one trigger. By using the code pipeline we enabled our lambda function trigger when we needed it. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>What is the benefit?<\/strong><\/h4>\n\n\n\n<p class=\"has-text-align-justify\">People don\u2019t need to add lambda function roles permission manually and don\u2019t need to enable trigger manually because, after policy gets attached to the particular roles then we can enable trigger and it happens by using pipeline whenever we need every time automation happens.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h4 class=\"wp-block-heading\"><strong>My Personal Experience<\/strong><\/h4>\n\n\n\n<p class=\"has-text-align-justify\">Whenever I got the task to enable trigger on lambda function so, every time I did it manually because in my client side server less computing works that\u2019s why there are so many&nbsp; lambda functions. And, Every time I did it manually, I discussed this issue with my manager and after referring to some documentation on google I got a solution for that and I created the pipeline for that. <\/p>\n\n\n\n<p><strong>First, we need to create a <\/strong>code pipeline and add the required stage  In my code pipeline for the <strong>Lambda function trigger enabled I added six stages.<\/strong><\/p>\n\n\n\n<p><br><strong>The first stage<\/strong> is required. <br>1] We need to create S3 bucket and in the bucket, we need to upload some objects.<\/p>\n\n\n\n<p>2] In my scenario, I took the source as a S3 bucket. Mentioned bucket name and also mention object name in the pipeline first stage.<\/p>\n\n\n\n<p>3] Upload the env file as an s3 object because, We have different types of environments so, according to the env file pipeline will work.<\/p>\n\n\n\n<p>4] Once we uploaded an env file as an object on s3 bucket the pipeline automatically triggered.<\/p>\n\n\n\n<p>5] For automatically triggered purpose I mentioned output artifacts as a keyword &#8220;latestEnv&#8221;<\/p>\n\n\n\n<p><strong>The second stage required.<\/strong><br><\/p>\n\n\n\n<p>1] We already created the s3 bucket in the first stage, the same bucket we need to use to run the cloud formation template.<\/p>\n\n\n\n<p>2] In the second stage we need to upload one object as a source in the .zip file format and in the .zip file we have cloudformation template source code for permission on the lambda function roles.<\/p>\n\n\n\n<p>3] In my scenario, I mentioned output artifacts as a keyword &#8220;templates.zip&#8221;  <\/p>\n\n\n\n<p><strong>The third stage<\/strong> <strong>required<\/strong>. <\/p>\n\n\n\n<p>1] In the third stage we need an export environment for the lambda function because we have different types of lambda functions.<\/p>\n\n\n\n<p>2] Mentioned some requirement fields like lambda region, Input artifacts as a &#8220;latestEnv&#8221;, Function name.<\/p>\n\n\n\n<p><strong>The fourth stage required.<\/strong><\/p>\n\n\n\n<p>1] In the fourth stage we need to create some tags for the lambda function because, sometimes after adding tags it will work for the user.<\/p>\n\n\n\n<p>2] Mentioned some requirement fields like lambda region, Input artifacts as a &#8220;latestEnv&#8221;, Function name.<\/p>\n\n\n\n<p><strong>The fifth stage required<\/strong>. <\/p>\n\n\n\n<p>1] In the fifth stage we need to deploy cloud formation source code for creating a stack regarding assigning policy to particular lambda roles.<\/p>\n\n\n\n<p>2] For that we need a Mention action provider as a &#8220;AWS cloudformation&#8221;, region for stack creation, Input artifacts like templates.<\/p>\n\n\n\n<p>3] Action mode we need to take &#8221; Create or update stack&#8221; because, everytime pipeline is run, according to the cloudformation template code it will create a new stack or update a new requirement.<\/p>\n\n\n\n<p>4] Stack Name we need Mention so according environment name stack will be create like &#8220;kinesis-#{export.envName}&#8221;<\/p>\n\n\n\n<p>5] template source code file name we need to mention for code create and update new stack like &#8220;kinesis-stream.yaml&#8221;<\/p>\n\n\n\n<p>6] I am using below source code with yaml format to run the stack. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: \"This template gives step function access to dsl-platform users.\"\nParameters:\n  EnvName:\n    Type: String\nResources:\n  SCMIMOSFNP:\n    Type: \"AWS::IAM::Policy\"\n    Properties:\n      PolicyName: \"kinesis-policy\"\n      PolicyDocument:\n        Version: \"2012-10-17\"\n        Statement:\n          - Effect: \"Allow\"\n            Action:\n              - \"kinesis:*\"\n            Resource: &#091;\n              \"*\"\n            ]\n      Roles:\n        - !Sub \"rolename-${EnvName}.mumbai\"\n        - !Sub \"rolename-${EnvName}.mumbai\"\n<\/code><\/pre>\n\n\n\n<p><strong>The sixth stage<\/strong> <strong>required<\/strong>. <\/p>\n\n\n\n<p>1] In that stage we need to create a one step function to enable the lambda function.<\/p>\n\n\n\n<p>2] I am used the below source code with for enable the lambda function.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"StartAt\": \"UpdateKinesisEventSourceMappingOne\",\n    \"States\": {\n      \"UpdateKinesisEventSourceMappingOne\": {\n        \"Type\": \"Task\",\n        \"Resource\": \"arn:aws:states:::aws-sdk:lambda:updateEventSourceMapping\",\n        \"Parameters\": {\n          \"FunctionName\": \"lambda-envname-mumbai\",\n          \"Uuid\": \"6d29bbfa-8221-47a3-9b01-f55a7d5894ee3\",\n          \"Enabled\": true\n        },\n        \"Next\": \"UpdateKinesisEventSourceMappingTwo\"\n      },\n      \"UpdateKinesisEventSourceMappingTwo\": {\n        \"Type\": \"Task\",\n        \"Resource\": \"arn:aws:states:::aws-sdk:lambda:updateEventSourceMapping\",\n        \"Parameters\": {\n          \"FunctionName\": \"lambda-envname-mumbai\",\n          \"Uuid\": \"38059928-9083-4c66-87cf-de3f1714567bf\",\n          \"Enabled\": true\n        },\n        \"End\": true\n      }\n    }\n  }\n<\/code><\/pre>\n\n\n\n<p>3] We need to mention Action name as like &#8220;Enable-Kinesis-Stream&#8221;, Action provider as a AWS Step Function, Region of step function and Input artifacts &#8220;latestEnv&#8221;<\/p>\n\n\n\n<p>4] State machine ARN we need to mention that we already created. <\/p>\n\n\n\n<p><strong>Conclusion<\/strong> <\/p>\n\n\n\n<p class=\"has-text-align-justify\">In<strong> <\/strong>conclusion, it is easy to enable the lambda function by using code pipeline every time just upload an env file on a bucket and it triggers automatically. We are not doing this manually because automation reduces the time and above steps we are using each and every lambda function enabled. <\/p>\n\n\n\n<p><strong>References<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/repost.aws\/knowledge-center\/cloudformation-attach-managed-policy\" target=\"_blank\" rel=\"noopener\">https:\/\/repost.aws\/knowledge-center\/cloudformation-attach-managed-policy<\/a>&nbsp;<a href=\"https:\/\/docs.aws.amazon.com\/step-functions\/latest\/dg\/connect-lambda.html\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.aws.amazon.com\/step-functions\/latest\/dg\/connect-lambda.html<\/a>  <\/p>\n\n\n\n<p><strong>Blog Pundits: <a rel=\"noreferrer noopener\" href=\"https:\/\/opstree.com\/blog\/\/author\/bhupendersinghb5dca0b393\/\" target=\"_blank\">Bhupender Rawat<\/a> and <a rel=\"noreferrer noopener\" href=\"https:\/\/opstree.com\/blog\/\/author\/sandeep7c51ad81ba\/\" target=\"_blank\">Sandeep Rawat<\/a><\/strong><\/p>\n\n\n\n<p><strong><a href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=Lambda+Function+Trigger+Enabled+Using+Code+Pipeline.\" target=\"_blank\" rel=\"noreferrer noopener\">OpsTree<\/a> is an End-to-End DevOps Solution Provider.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=Lambda+Function+Trigger+Enabled+Using+Code+Pipeline.\" target=\"_blank\" rel=\"noreferrer noopener\">Contact Us<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\"><strong>Connect with Us<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-social-links aligncenter is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-twitter  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/twitter.com\/opstreedevops\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Twitter<\/span><\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Why are you doing a lambda function trigger enabled using pipeline? For the AWS service to invoke your function directly, you need to create a trigger using the Lambda console. A trigger is a resource you configure to allow another AWS service to invoke your function when certain events or conditions occur. Your function can &hellip; <a href=\"https:\/\/opstree.com\/blog\/2023\/04\/11\/lambda-function-trigger-enabled-using-code-pipeline\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Lambda Function Trigger Enabled Using Code Pipeline.&#8221;<\/span><\/a><\/p>\n","protected":false},"author":233431947,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[44070,768739294,768739308,676319247,172054,4996032],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-3vH","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/13497"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/233431947"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=13497"}],"version-history":[{"count":25,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/13497\/revisions"}],"predecessor-version":[{"id":13773,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/13497\/revisions\/13773"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=13497"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=13497"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=13497"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}