{"id":16852,"date":"2017-04-07T12:15:54","date_gmt":"2017-04-07T09:15:54","guid":{"rendered":"https:\/\/www.webcodegeeks.com\/?p=16852"},"modified":"2017-04-06T11:36:43","modified_gmt":"2017-04-06T08:36:43","slug":"aws-lambda-programatically-scheduling-cloudwatchevent","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/","title":{"rendered":"AWS Lambda: Programatically scheduling a CloudWatchEvent"},"content":{"rendered":"<p>I recently wrote a blog post showing how to <a href=\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-create-python-hello-world-function\/\">create a Python \u2018Hello World\u2019 AWS lambda function<\/a> and manually invoke it, but what I really wanted to do was have it run automatically every hour.<\/p>\n<p>To achieve that in AWS Lambda land we need to create a <a href=\"http:\/\/docs.aws.amazon.com\/AmazonCloudWatch\/latest\/events\/WhatIsCloudWatchEvents.html\">CloudWatch Event<\/a>. The documentation describes them as follows:<\/p>\n<blockquote><p>Using simple rules that you can quickly set up, you can match events and route them to one or more target functions or streams.<\/p><\/blockquote>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/04\/2017-04-05_23-06-36.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-16854\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/04\/2017-04-05_23-06-36.png\" alt=\"\" width=\"728\" height=\"336\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/04\/2017-04-05_23-06-36.png 728w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/04\/2017-04-05_23-06-36-300x138.png 300w\" sizes=\"(max-width: 728px) 100vw, 728px\" \/><\/a><\/p>\n<p>This is actually really easy from the Amazon web console as you just need to click the \u2018Triggers\u2019 tab and then \u2018Add trigger\u2019. It\u2019s not obvious that there are actually three steps are involved as they\u2019re abstracted from you.<\/p>\n<p>So what are <a href=\"http:\/\/docs.aws.amazon.com\/AmazonCloudWatch\/latest\/events\/RunLambdaSchedule.html\">the steps<\/a>?<\/p>\n<ol>\n<li>Create rule<\/li>\n<li>Give permission for that rule to execute<\/li>\n<li>Map the rule to the function<\/li>\n<\/ol>\n<p>I forgot to do step 2) initially and then you just end up with a rule that never triggers, which isn\u2019t particularly useful.<\/p>\n<p>The following code creates a \u2018Hello World\u2019 lambda function and runs it once an hour:<\/p>\n<pre class=\"brush:py\">import boto3\r\n\u00a0\r\nlambda_client = boto3.client('lambda')\r\nevents_client = boto3.client('events')\r\n\u00a0\r\nfn_name = \"HelloWorld\"\r\nfn_role = 'arn:aws:iam::[your-aws-id]:role\/lambda_basic_execution'\r\n\u00a0\r\nfn_response = lambda_client.create_function(\r\n    FunctionName=fn_name,\r\n    Runtime='python2.7',\r\n    Role=fn_role,\r\n    Handler=\"{0}.lambda_handler\".format(fn_name),\r\n    Code={'ZipFile': open(\"{0}.zip\".format(fn_name), 'rb').read(), },\r\n)\r\n\u00a0\r\nfn_arn = fn_response['FunctionArn']\r\nfrequency = \"rate(1 hour)\"\r\nname = \"{0}-Trigger\".format(fn_name)\r\n\u00a0\r\nrule_response = events_client.put_rule(\r\n    Name=name,\r\n    ScheduleExpression=frequency,\r\n    State='ENABLED',\r\n)\r\n\u00a0\r\nlambda_client.add_permission(\r\n    FunctionName=fn_name,\r\n    StatementId=\"{0}-Event\".format(name),\r\n    Action='lambda:InvokeFunction',\r\n    Principal='events.amazonaws.com',\r\n    SourceArn=rule_response['RuleArn'],\r\n)\r\n\u00a0\r\nevents_client.put_targets(\r\n    Rule=name,\r\n    Targets=[\r\n        {\r\n            'Id': \"1\",\r\n            'Arn': fn_arn,\r\n        },\r\n    ]\r\n)<\/pre>\n<p>We can now check if our trigger has been configured correctly:<\/p>\n<pre class=\"brush:py\">$ aws events list-rules --query \"Rules[?Name=='HelloWorld-Trigger']\"\r\n[\r\n    {\r\n        \"State\": \"ENABLED\", \r\n        \"ScheduleExpression\": \"rate(1 hour)\", \r\n        \"Name\": \"HelloWorld-Trigger\", \r\n        \"Arn\": \"arn:aws:events:us-east-1:[your-aws-id]:rule\/HelloWorld-Trigger\"\r\n    }\r\n]\r\n\u00a0\r\n$ aws events list-targets-by-rule --rule HelloWorld-Trigger\r\n{\r\n    \"Targets\": [\r\n        {\r\n            \"Id\": \"1\", \r\n            \"Arn\": \"arn:aws:lambda:us-east-1:[your-aws-id]:function:HelloWorld\"\r\n        }\r\n    ]\r\n}\r\n\u00a0\r\n$ aws lambda get-policy --function-name HelloWorld\r\n{\r\n    \"Policy\": \"{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Id\\\":\\\"default\\\",\\\"Statement\\\":[{\\\"Sid\\\":\\\"HelloWorld-Trigger-Event\\\",\\\"Effect\\\":\\\"Allow\\\",\\\"Principal\\\":{\\\"Service\\\":\\\"events.amazonaws.com\\\"},\\\"Action\\\":\\\"lambda:InvokeFunction\\\",\\\"Resource\\\":\\\"arn:aws:lambda:us-east-1:[your-aws-id]:function:HelloWorld\\\",\\\"Condition\\\":{\\\"ArnLike\\\":{\\\"AWS:SourceArn\\\":\\\"arn:aws:events:us-east-1:[your-aws-id]:rule\/HelloWorld-Trigger\\\"}}}]}\"\r\n}<\/pre>\n<p>All looks good so we\u2019re done!<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"http:\/\/www.markhneedham.com\/blog\/2017\/04\/05\/aws-lambda-programatically-scheduling-a-cloudwatchevent\/\">AWS Lambda: Programatically scheduling a CloudWatchEvent<\/a> from our <a href=\"http:\/\/www.webcodegeeks.com\/join-us\/wcg\/\">WCG partner<\/a> Mark Needham at the <a href=\"http:\/\/www.markhneedham.com\/blog\/\">Mark Needham Blog<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>I recently wrote a blog post showing how to create a Python \u2018Hello World\u2019 AWS lambda function and manually invoke it, but what I really wanted to do was have it run automatically every hour. To achieve that in AWS Lambda land we need to create a CloudWatch Event. The documentation describes them as follows: &hellip;<\/p>\n","protected":false},"author":48,"featured_media":1651,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[53],"tags":[325],"class_list":["post-16852","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","tag-amazon-aws"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>AWS Lambda: Programatically scheduling a CloudWatchEvent - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"I recently wrote a blog post showing how to create a Python \u2018Hello World\u2019 AWS lambda function and manually invoke it, but what I really wanted to do was\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AWS Lambda: Programatically scheduling a CloudWatchEvent - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"I recently wrote a blog post showing how to create a Python \u2018Hello World\u2019 AWS lambda function and manually invoke it, but what I really wanted to do was\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2017-04-07T09:15:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Mark Needham\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mark Needham\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/\"},\"author\":{\"name\":\"Mark Needham\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/848a54e2ee724e46069ce36c2e52e98e\"},\"headline\":\"AWS Lambda: Programatically scheduling a CloudWatchEvent\",\"datePublished\":\"2017-04-07T09:15:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/\"},\"wordCount\":221,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\",\"keywords\":[\"Amazon AWS\"],\"articleSection\":[\"Python\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/\",\"name\":\"AWS Lambda: Programatically scheduling a CloudWatchEvent - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\",\"datePublished\":\"2017-04-07T09:15:54+00:00\",\"description\":\"I recently wrote a blog post showing how to create a Python \u2018Hello World\u2019 AWS lambda function and manually invoke it, but what I really wanted to do was\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/python\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"AWS Lambda: Programatically scheduling a CloudWatchEvent\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/848a54e2ee724e46069ce36c2e52e98e\",\"name\":\"Mark Needham\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5489baed26ce2d932bf951ecfb47afe80bec45d3648c23521d87c83b8f1c3ea9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5489baed26ce2d932bf951ecfb47afe80bec45d3648c23521d87c83b8f1c3ea9?s=96&d=mm&r=g\",\"caption\":\"Mark Needham\"},\"sameAs\":[\"http:\/\/www.markhneedham.com\/blog\/\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/mark-needham\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AWS Lambda: Programatically scheduling a CloudWatchEvent - Web Code Geeks - 2026","description":"I recently wrote a blog post showing how to create a Python \u2018Hello World\u2019 AWS lambda function and manually invoke it, but what I really wanted to do was","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/","og_locale":"en_US","og_type":"article","og_title":"AWS Lambda: Programatically scheduling a CloudWatchEvent - Web Code Geeks - 2026","og_description":"I recently wrote a blog post showing how to create a Python \u2018Hello World\u2019 AWS lambda function and manually invoke it, but what I really wanted to do was","og_url":"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2017-04-07T09:15:54+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","type":"image\/jpeg"}],"author":"Mark Needham","twitter_card":"summary_large_image","twitter_creator":"@webcodegeeks","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Mark Needham","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/"},"author":{"name":"Mark Needham","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/848a54e2ee724e46069ce36c2e52e98e"},"headline":"AWS Lambda: Programatically scheduling a CloudWatchEvent","datePublished":"2017-04-07T09:15:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/"},"wordCount":221,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","keywords":["Amazon AWS"],"articleSection":["Python"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/","url":"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/","name":"AWS Lambda: Programatically scheduling a CloudWatchEvent - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","datePublished":"2017-04-07T09:15:54+00:00","description":"I recently wrote a blog post showing how to create a Python \u2018Hello World\u2019 AWS lambda function and manually invoke it, but what I really wanted to do was","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/python\/aws-lambda-programatically-scheduling-cloudwatchevent\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Python","item":"https:\/\/www.webcodegeeks.com\/category\/python\/"},{"@type":"ListItem","position":3,"name":"AWS Lambda: Programatically scheduling a CloudWatchEvent"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/848a54e2ee724e46069ce36c2e52e98e","name":"Mark Needham","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5489baed26ce2d932bf951ecfb47afe80bec45d3648c23521d87c83b8f1c3ea9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5489baed26ce2d932bf951ecfb47afe80bec45d3648c23521d87c83b8f1c3ea9?s=96&d=mm&r=g","caption":"Mark Needham"},"sameAs":["http:\/\/www.markhneedham.com\/blog\/"],"url":"https:\/\/www.webcodegeeks.com\/author\/mark-needham\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/16852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=16852"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/16852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/1651"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=16852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=16852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=16852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}