{"id":97590,"date":"2024-10-03T09:29:09","date_gmt":"2024-10-03T03:59:09","guid":{"rendered":"https:\/\/www.whizlabs.com\/blog\/?p=97590"},"modified":"2024-11-06T13:20:24","modified_gmt":"2024-11-06T07:50:24","slug":"connect-aws-lambda-to-amazon-kinesis-data-stream","status":"publish","type":"post","link":"https:\/\/www.whizlabs.com\/blog\/connect-aws-lambda-to-amazon-kinesis-data-stream\/","title":{"rendered":"How to Connect AWS Lambda to Amazon Kinesis Data\u00a0Stream?"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">This blog highlights how to build a serverless architecture for data stream processing in real-time and also you can learn how to connect AWS Lambda to Amazon Kinesis Data Stream. Real-time data means that data is processed as soon as it is generated, ingested, analyzed, and utilized. Such data is useful in many functions that require real-time action, for example, decision-making, fraud detection, customer targeting, predictive analysis, and others.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For developers, who wish to develop their skills in cloud Computing then knowing AWS Lambda and Amazon Kinesis is important. If you want to learn how to set up a serverless architecture using Lambda and Kinesis Streams then<\/span> <a href=\"https:\/\/www.whizlabs.com\/aws-developer-associate\/\" target=\"_blank\" rel=\"noopener\"><b>AWS Certified Developer Associate Certification<\/b><\/a><span style=\"font-weight: 400;\"> plays a crucial role here. This certification ensures you have the skills needed to deploy and manage cloud-native applications efficiently using AWS services.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">N<\/span><b>ote to the reader<\/b><span style=\"font-weight: 400;\">: In this blog, Kinesis Data Streams and Kinesis Streams are used interchangeably.\u00a0<\/span><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_76 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #ea7e02;color:#ea7e02\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #ea7e02;color:#ea7e02\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.whizlabs.com\/blog\/connect-aws-lambda-to-amazon-kinesis-data-stream\/#AWS_Lambda_overview\" >AWS Lambda overview<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.whizlabs.com\/blog\/connect-aws-lambda-to-amazon-kinesis-data-stream\/#Amazon_Kinesis_Data_Streams\" >Amazon Kinesis Data Streams<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.whizlabs.com\/blog\/connect-aws-lambda-to-amazon-kinesis-data-stream\/#The_Kinesis_Family_of_Products\" >The Kinesis Family of Products<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.whizlabs.com\/blog\/connect-aws-lambda-to-amazon-kinesis-data-stream\/#Connect_AWS_Lambda_to_Amazon_Kinesis_Data_Stream\" >Connect AWS Lambda to Amazon Kinesis Data Stream<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.whizlabs.com\/blog\/connect-aws-lambda-to-amazon-kinesis-data-stream\/#Points_to_know_before_integration\" >Points to know before integration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.whizlabs.com\/blog\/connect-aws-lambda-to-amazon-kinesis-data-stream\/#Monitoring_and_Securing_Lambda_Connection_with_Data_Streams\" >Monitoring and Securing Lambda Connection with Data Streams<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.whizlabs.com\/blog\/connect-aws-lambda-to-amazon-kinesis-data-stream\/#_Integrate_Lambda_with_Kinesis_Data_Streams_for_Stream_Processing\" >\u00a0Integrate Lambda with Kinesis Data Streams\u00a0 for Stream Processing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.whizlabs.com\/blog\/connect-aws-lambda-to-amazon-kinesis-data-stream\/#Procedures\" >Procedures<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.whizlabs.com\/blog\/connect-aws-lambda-to-amazon-kinesis-data-stream\/#Kinesis-side_configuration\" >Kinesis-side configuration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.whizlabs.com\/blog\/connect-aws-lambda-to-amazon-kinesis-data-stream\/#Lambda-side_configuration\" >Lambda-side configuration<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.whizlabs.com\/blog\/connect-aws-lambda-to-amazon-kinesis-data-stream\/#Conclusion\" >Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"AWS_Lambda_overview\"><\/span><span style=\"font-weight: 400;\">AWS Lambda overview<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong><a href=\"https:\/\/www.whizlabs.com\/blog\/what-is-aws-lambda\/\" target=\"_blank\" rel=\"noopener\">AWS Lambda <\/a><\/strong><span style=\"font-weight: 400;\">is a serverless event-driven compute service that allows you to run codes, also known as functions, without provisioning or managing servers. Lambda integrates with many AWS services such as Kinesis, Amazon S3, Amazon DynamoDB, and others, making it easy to deploy in different customer use cases. Many of these services produce events, and they can act as event sources for Lambda.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Unlike traditional servers, Lambda functions do not run constantly; they run only when invoked by an event such as data arriving in Kinesis Streams.\u00a0 Lambda functions are short-lived and can time out after 15 minutes. Due to this design, Lambda takes less startup time for short-lived, event-triggered functions, making it ideal for real-time processing use cases.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In addition, As a serverless service, Lambda not only lowers server resource management but also enhances performance with automatic scaling.\u00a0<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Amazon_Kinesis_Data_Streams\"><\/span><span style=\"font-weight: 400;\">Amazon Kinesis Data Streams<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Amazon Kinesis Data Streams is a cloud service that captures and processes streaming data in what we can describe as an \u201con the go\u201d manner regardless of the amount of streams.\u00a0Kinesis Streams is highly scalable, and you can configure thousands of producers to send data.\u00a0 For instance, the sources of data might include website clickstreams, IoT devices, mobile apps, social media feeds, log files, and so on. Kinesis Streams continuously capture gigabytes of data per second and make it available in milliseconds. What is more, it works with Lambda and other Kinesis and AWS services and enables you to design a channel for effective real-time data processing and analysis. Kinesis Streams is one of the services under the Amazon Kinesis umbrella.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"The_Kinesis_Family_of_Products\"><\/span><span style=\"font-weight: 400;\">The Kinesis Family of Products<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">The four services in the Kinesis framework\u2014 Kinesis Streams, Kinesis Data Firehose, Kinesis Data Analytics, and Kinesis Video Streams\u2014 have real-time streaming at their core and they complement each other. Based on your requirements, you can mix and match these services to gather more insights from the data.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The following information will help to understand how these services layer each other:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Kinesis Data Firehose<\/b><span style=\"font-weight: 400;\">: After Kinesis Streams ingests the data, you might need to load this data into AWS data stores. Firehose can transform and load this data to the destination data stores. For more information, see <\/span><a href=\"https:\/\/www.whizlabs.com\/blog\/aws-kinesis-data-streams-vs-aws-kinesis-data-firehose\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">AWS Kinesis Data Streams vs AWS Kinesis Data Firehose<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Kinesis Data Analytics<\/b><span style=\"font-weight: 400;\">: You might wonder \u201cWhat should I do with my data?\u201d Without analysis, data has no meaning or context. You can integrate Kinesis Data Analytics with Kinesis Streams to run\u00a0 SQL queries and apply real-time analytics to the streaming data, generating patterns and actionable insights.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Kinesis Video Streams<\/b><span style=\"font-weight: 400;\">: While Kinesis Streams captures general data streams, Kinesis Video Streams can stream video from almost any video device you can think of devices such as security cameras, smartphone video, drones, RADARs, LIDARs, satellites, and more. You can club both these streaming services in scenarios where you need to handle different types of streaming data.<\/span><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Connect_AWS_Lambda_to_Amazon_Kinesis_Data_Stream\"><\/span><span style=\"font-weight: 400;\">Connect AWS Lambda to Amazon Kinesis Data Stream<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">With virtually no server administration, you can create a highly scalable, real-time data processing pipeline using\u00a0 Lambda-Kinesis Streams integration. The following points illustrate how the Lambda-Kinesis Stream combo can help build a robust, real-time data processing system:<\/span><\/p>\n<ul>\n<li><b>High throughput and data retention:<\/b><span style=\"font-weight: 400;\"> Kinesis Streams offers high throughput for data ingestion, processing, and scaling. It provides configurable retention periods up to a maximum of seven days.\u00a0<\/span><\/li>\n<li><b>Zero data loss in streaming pipelines:<\/b><span style=\"font-weight: 400;\"> Kinesis Streams keeps up with the flow of new data and streams it as is without zero data loss in the transmission process.<\/span><\/li>\n<li><b>Event-driven data handling<\/b><span style=\"font-weight: 400;\">: Lambda functions are triggered automatically by new data in the Kinesis stream. This enables real-time processing and immediate reactions to data changes.<\/span><\/li>\n<li><b>Scalability<\/b><span style=\"font-weight: 400;\">: Lambda scales automatically with the volume of data in the Kinesis stream. As data throughput increases, Lambda handles scaling without manual intervention, ensuring efficient processing of large data volumes.<\/span><\/li>\n<li><b>Integration with Other AWS Services<\/b><span style=\"font-weight: 400;\">: Lambda integrates with many AWS services, such as Amazon S3, DynamoDB, and SNS, which simplifies workflows and data pipelines.\u00a0<\/span><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Points_to_know_before_integration\"><\/span><span style=\"font-weight: 400;\">Points to know before integration<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Here are some concepts and information to keep in mind while connecting Lambda to Kinesis Data Streams for stream processing:<\/span><\/p>\n<p><b>Producers and consumers<\/b><span style=\"font-weight: 400;\">: Producers send data to Kinesis Streams. Producers can be Web applications, IoT devices, Social Media platforms, mobile apps, and thousands of other sources. Consumers retrieve data from Kinesis Data Streams. Examples include Lambda, EC2 instances, Kinesis Data Analytics, and so on.<\/span><\/p>\n<p><b>Sending data to Amazon Kinesis Data Stream<\/b><span style=\"font-weight: 400;\">:\u00a0 Producers can use the following options to send data to Kinesis Data Streams:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Write code using the <\/span><a href=\"https:\/\/aws.amazon.com\/developer\/tools\/\" target=\"_blank\" rel=\"nofollow noopener\"><span style=\"font-weight: 400;\">AWS SDKs<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Use <\/span><a href=\"https:\/\/docs.aws.amazon.com\/streams\/latest\/dev\/writing-with-agents.html\" target=\"_blank\" rel=\"nofollow noopener\"><span style=\"font-weight: 400;\">Amazon Kinesis Agent<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Use <\/span><a href=\"https:\/\/docs.aws.amazon.com\/streams\/latest\/dev\/developing-producers-with-kpl.html\" target=\"_blank\" rel=\"nofollow noopener\"><span style=\"font-weight: 400;\">Amazon Kinesis Producer Library<\/span><\/a><span style=\"font-weight: 400;\"> (KPL)\u00a0 and Kinesis Data Streams API.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><b>Shards<\/b><span style=\"font-weight: 400;\">: Kinesis streams are partitioned in shards\u2014<\/span><span style=\"font-weight: 400;\"> a <\/span><span style=\"font-weight: 400;\">uniquely identified sequence of data records in a stream. Each shard can handle up to 5 read transactions per second, with a maximum read rate of 2 MB per second. For writes, each shard can process up to 1,000 records per second, with a maximum write rate of 1 MB per second (including partition keys).\u00a0<\/span><\/p>\n<ul>\n<li><b>Shard records<\/b><span style=\"font-weight: 400;\">:<\/span> <span style=\"font-weight: 400;\">A\u00a0record\u00a0is the unit of data stored in an Amazon Kinesis\u00a0Data Stream<\/span><b>. \u00a0<\/b><span style=\"font-weight: 400;\">Each data record has a Partition Key, Sequence Number, and Data Blob. Lambda uses this information to ensure records are processed in order (via sequence numbers), group data (via partition keys), and decode and act upon the payload (from the data blob).<\/span><\/li>\n<li><b>Lambda batch size and batch window: <\/b><span style=\"font-weight: 400;\">You can use batch size and batch window to control how often Lambda is triggered. The batch window allows you to set the maximum amount of time in seconds (maximum 300 seconds or 5 mins), that Lambda spends gathering records before invoking the function.\u00a0 A batch size is\u00a0the number of messages or records that are included in a single Lambda invocation. When using Lambda as a consumer for Kinesis Streams, the default batch size is <\/span><b>100 records<\/b><span style=\"font-weight: 400;\"> per invocation. You can customize this batch size to a value between <\/span><b>1<\/b><span style=\"font-weight: 400;\"> and <\/span><b>10,000<\/b><span style=\"font-weight: 400;\"> records, depending on your workload.<\/span><\/li>\n<li><b>Capacity modes:<\/b><span style=\"font-weight: 400;\"> It checks how the data stream capacity is managed and charged. The total data capacity of your stream depends on the number of shards you have, and the stream&#8217;s overall capacity is the combined capacity of all its shards. Kinesis Data Streams offers two modes:\u00a0<\/span><\/li>\n<\/ul>\n<ol>\n<li style=\"text-align: left;\"><span style=\"font-weight: 400;\"><strong>On-demand:<\/strong> automatically scales the capacity in response to varying data traffic. You are charged per gigabyte of data written, read, and stored in the stream, in a pay-per-throughput fashion.<\/span><\/li>\n<li><strong style=\"font-size: 16px;\">Provisioned<\/strong><span style=\"font-size: 16px; font-weight: 400;\">: requires you to specify the number of shards manually while creating the Kinesis Streams. You can increase or decrease the number of shards in a data stream as needed, and you pay for the number of shards at an hourly rate.\u00a0<\/span><\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Monitoring_and_Securing_Lambda_Connection_with_Data_Streams\"><\/span><span style=\"font-weight: 400;\">Monitoring and Securing Lambda Connection with Data Streams<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">To ensure smooth data flow, system performance, and protection of sensitive information you must secure and monitor the Lambda-Kinesis Streams integration. Security measures include fine-grained access control and encryption of data at rest and in transit. Monitoring involves tracking key performance metrics such as function execution duration, invocation rates, error rates, and throttling. The following AWS services help you monitor and secure Lambda integration with Data Stream:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Identity and Access Management (IAM) Roles for security<\/b><span style=\"font-weight: 400;\">: you can use IAM with Kinesis Data Streams to give or restrict permissions to users in your organization from performing a task using specific Kinesis Data Streams API actions or using specific AWS resources.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">For the Lambda execution role to read from the Kinesis Streams and write to other services (e.g., CloudWatch Logs, S3, or DynamoDB), you must ensure that it\u2019s the correct IAM permissions.\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>AWS Key Management Service (KMS) for encryption<\/b><span style=\"font-weight: 400;\">: By default, Lambda provides server-side encryption at rest with an AWS-managed KMS key. You can use a customer-managed key for complete control of the key. When you use environment variables, you can enable console encryption helpers to use client-side encryption to protect the environment variables in transit.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Kinesis Data Streams uses the server-side encryption feature to automatically encrypt data as it enters and leaves the service. If you use this feature, you must specify an AWS KMS customer master key (CMK).<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Amazon CloudWatch for monitoring<\/b><span style=\"font-weight: 400;\">:\u00a0 Kinesis Stream and Lambda are integrated with CloudWatch. Kinesis Data Streams sends Amazon CloudWatch custom metrics with detailed monitoring for each stream. Lambda automatically monitors Lambda functions and reports metrics through Amazon CloudWatch.\u00a0Further, Lambda captures logs for all requests that a function handles and sends them to Amazon CloudWatch Logs. These logs and metrics help you to monitor health and performance and troubleshoot issues quickly.<\/span><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"_Integrate_Lambda_with_Kinesis_Data_Streams_for_Stream_Processing\"><\/span><span style=\"font-weight: 400;\">\u00a0Integrate Lambda with Kinesis Data Streams\u00a0 for Stream Processing<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">In this section, we will connect Lambda to Kinesis Streams to create a stream processing pipeline.<\/span><\/p>\n<p><b>Summary of end-to-end deployment steps<\/b><\/p>\n<p><b>1. Set up Kinesis Data Streams<\/b><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Create a Kinesis Data Stream to data from various sources.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Add encryption to protect sensitive data as it flows through the system.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><b>2. Integrate data sources (producers)<\/b><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Configure data sources to send data to Kinesis Data Streams.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><b>3. Create\u00a0 a Lambda Function:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Create an AWS Lambda function to process incoming data from the Kinesis Data Streams.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Apply required permissions and policies.<\/span><\/li>\n<\/ul>\n<p><b>4. Configure data processing:<\/b><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Set up the Lambda function to be triggered by records in the Kinesis Data Streams.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Define processing rules, filtering, and formatting requirements.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Procedures\"><\/span><span style=\"font-weight: 400;\">Procedures<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Kinesis-side_configuration\"><\/span><span style=\"font-weight: 400;\">Kinesis-side configuration<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Step 1: Create a data stream<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">1. From the Kinesis console, click \u201cCreate data stream\u201d<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-97855\" src=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/get-started.webp\" alt=\"get-started\" width=\"327\" height=\"205\" srcset=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/get-started.webp 327w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/get-started-300x188.webp 300w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/get-started-150x94.webp 150w\" sizes=\"(max-width: 327px) 100vw, 327px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">2. Add a data stream name<\/span><\/p>\n<p><span style=\"font-weight: 400;\">3. Under Data stream capacity, specify the capacity mode and other details and click \u201cCreate Data stream\u201d.<\/span><\/p>\n<p><strong>Step 1: Add encryption to Kinesis Streams<\/strong><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Select the stream you created and click <\/span><b>Encryption<\/b><span style=\"font-weight: 400;\">.\u00a0 Select the following options and click <\/span><b>Save Changes.<\/b><\/li>\n<\/ol>\n<p><img decoding=\"async\" class=\"alignnone size-large wp-image-97856\" src=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/encryption-for-data-stream-1024x455.webp\" alt=\"encryption-for-data-stream\" width=\"1024\" height=\"455\" srcset=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/encryption-for-data-stream-1024x455.webp 1024w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/encryption-for-data-stream-300x133.webp 300w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/encryption-for-data-stream-768x342.webp 768w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/encryption-for-data-stream-1536x683.webp 1536w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/encryption-for-data-stream-2048x911.webp 2048w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/encryption-for-data-stream-150x67.webp 150w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Lambda-side_configuration\"><\/span><span style=\"font-weight: 400;\">Lambda-side configuration<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">This section describes the Lambda-side configuration that connects AWS Lambda to Amazon Kinesis Data\u00a0 Streams.<\/span><\/p>\n<p><b>Step 1: Create a Lambda function<\/b><\/p>\n<p><span style=\"font-weight: 400;\">1. Go to the AWS Lambda console and create a function<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-large wp-image-97857\" src=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/aws-lambda-console-and-create-a-function-1024x87.webp\" alt=\"aws-Lambda-console-and-create-a-function\" width=\"1024\" height=\"87\" srcset=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/aws-lambda-console-and-create-a-function-1024x87.webp 1024w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/aws-lambda-console-and-create-a-function-300x25.webp 300w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/aws-lambda-console-and-create-a-function-768x65.webp 768w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/aws-lambda-console-and-create-a-function-150x13.webp 150w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/aws-lambda-console-and-create-a-function.webp 1444w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">2. Select the <\/span><b>Author from scratch<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">3. In the <\/span><b>Basic information<\/b><span style=\"font-weight: 400;\">\u00a0pane, enter a\u00a0<\/span><b>Function name<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">4. From the \u00a0<\/span><b>Runtime <\/b><span style=\"font-weight: 400;\">drop-down menu, select an option.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">5. Select the required <\/span><b>architecture<\/b><span style=\"font-weight: 400;\">\u00a0and click\u00a0the <\/span><b>Create function<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><b>Step 2: Add permissions to the Lambda function to access Kinesis Data Streams<\/b><\/p>\n<p><span style=\"font-weight: 400;\">1. On the function page,\u00a0 click <\/span><b>Configurations&gt;Permissions<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-large wp-image-97858\" src=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/lambda-function-access-kinesis-data-streams-1024x227.webp\" alt=\"lambda-function-access-kinesis-data-streams\" width=\"1024\" height=\"227\" srcset=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/lambda-function-access-kinesis-data-streams-1024x227.webp 1024w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/lambda-function-access-kinesis-data-streams-300x66.webp 300w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/lambda-function-access-kinesis-data-streams-768x170.webp 768w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/lambda-function-access-kinesis-data-streams-150x33.webp 150w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/lambda-function-access-kinesis-data-streams.webp 1490w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">2. Click the Lambda role for the function you created. The Identity and Access Management (IAM) console opens. This role has a basic execution policy.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">3. Next, click <\/span><b>Add Permissions<\/b><span style=\"font-weight: 400;\">. From the drop-down menu, select <\/span><b>Attach policies<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">4. Search for the required policies. Select them and click <\/span><b>Attach policies<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><b>Step 3: Add Kinesis as a trigger to Lambda for real-time processing of streaming data<\/b><\/p>\n<p><span style=\"font-weight: 400;\">1. From the Lambda function page, click <\/span><b>Add trigger<\/b><span style=\"font-weight: 400;\">. The <\/span><b>Trigger configuration<\/b><span style=\"font-weight: 400;\"> window opens.<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-97859\" src=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/ss-lambda-function.webp\" alt=\"ss-lambda-function\" width=\"965\" height=\"471\" srcset=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/ss-lambda-function.webp 965w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/ss-lambda-function-300x146.webp 300w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/ss-lambda-function-768x375.webp 768w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/ss-lambda-function-150x73.webp 150w\" sizes=\"(max-width: 965px) 100vw, 965px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">2. In <\/span><b>Select a source<\/b><span style=\"font-weight: 400;\">, search for <\/span><b>Kinesis <\/b><span style=\"font-weight: 400;\">and fill out the options in the <\/span><b>Trigger Configuration<\/b><span style=\"font-weight: 400;\"> pane.<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">Kinesis stream: Select the Kinesis stream you\u2019ve created previously.<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Check the <\/span><b>Activate trigger<\/b><span style=\"font-weight: 400;\">.<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Add batch size, batch, window, and starting position, and then click <\/span><b>Add<\/b><span style=\"font-weight: 400;\">.<\/span><\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"alignnone size-large wp-image-97860\" src=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/configuration-pane-1024x356.webp\" alt=\"configuration-pane\" width=\"1024\" height=\"356\" srcset=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/configuration-pane-1024x356.webp 1024w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/configuration-pane-300x104.webp 300w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/configuration-pane-768x267.webp 768w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/configuration-pane-1536x534.webp 1536w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/configuration-pane-150x52.webp 150w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/configuration-pane.webp 1776w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><b>Step 4: Add code to the Lambda function\u00a0<\/b><\/p>\n<p><span style=\"font-weight: 400;\">1. On the function page, click <\/span><b>Code<\/b><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-large wp-image-97861\" src=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/Code-Configuration-1024x227.webp\" alt=\"code-source\" width=\"1024\" height=\"227\" srcset=\"https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/Code-Configuration-1024x227.webp 1024w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/Code-Configuration-300x66.webp 300w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/Code-Configuration-768x170.webp 768w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/Code-Configuration-150x33.webp 150w, https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/Code-Configuration.webp 1490w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">2. Add the Lambda code and click <\/span><b>Deploy to save the changes and deploy.<\/b><\/p>\n<p><span style=\"font-weight: 400;\">In addition to the steps illustrated in this section,\u00a0 you must <\/span><a href=\"https:\/\/docs.aws.amazon.com\/streams\/latest\/dev\/building-producers.html\" target=\"_blank\" rel=\"nofollow noopener\"><span style=\"font-weight: 400;\">configure data producers to Kinesis Data Streams<\/span><\/a><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span><span style=\"font-weight: 400;\">Conclusion<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">As real-time data processing becomes all pervasive and encompassing in the business world, your ability to professional data pipelines capable of processing big data at scale becomes a decisive skill. The best way to build the required skills is by taking specialized courses and hands-on labs. These courses typically cover the essential steps of building, testing, and deploying data pipelines, as well as the best practices for ensuring scalability and efficiency. Sign up for the Whizlabs guided lab <\/span><a href=\"https:\/\/www.whizlabs.com\/labs\/build-a-real-time-data-streaming-system-with-amazon-kinesis-data-streams\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Build a real-time data streaming system with Amazon Kinesis Data Streams<\/span><\/a><span style=\"font-weight: 400;\"> and sharpen your skills. For additional hands-on experience of the services, check our <\/span><a href=\"https:\/\/www.whizlabs.com\/labs\/library\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">AWS hands-on labs<\/span><\/a><span style=\"font-weight: 400;\"> and <\/span><a href=\"https:\/\/www.whizlabs.com\/labs\/sandbox\/aws\/aws-sandbox\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">AWS sandboxes<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p class=\"p3\">\n","protected":false},"excerpt":{"rendered":"<p>This blog highlights how to build a serverless architecture for data stream processing in real-time and also you can learn how to connect AWS Lambda to Amazon Kinesis Data Stream. Real-time data means that data is processed as soon as it is generated, ingested, analyzed, and utilized. Such data is useful in many functions that require real-time action, for example, decision-making, fraud detection, customer targeting, predictive analysis, and others.\u00a0 For developers, who wish to develop their skills in cloud Computing then knowing AWS Lambda and Amazon Kinesis is important. If you want to learn how to set up a serverless [&hellip;]<\/p>\n","protected":false},"author":415,"featured_media":97838,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"default","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[4],"tags":[4100,1993],"class_list":["post-97590","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aws-certifications","tag-amazon-kinesis","tag-aws-lambda"],"uagb_featured_image_src":{"full":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream.webp",1536,864,false],"thumbnail":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream-150x150.webp",150,150,true],"medium":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream-300x169.webp",300,169,true],"medium_large":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream-768x432.webp",768,432,true],"large":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream-1024x576.webp",1024,576,true],"1536x1536":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream.webp",1536,864,false],"2048x2048":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream.webp",1536,864,false],"profile_24":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream-24x24.webp",24,24,true],"profile_48":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream-48x48.webp",48,48,true],"profile_96":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream-96x96.webp",96,96,true],"profile_150":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream-150x150.webp",150,150,true],"profile_300":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream-300x300.webp",300,300,true],"tptn_thumbnail":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream-250x250.webp",250,250,true],"web-stories-poster-portrait":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream-640x853.webp",640,853,true],"web-stories-publisher-logo":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream-96x96.webp",96,96,true],"web-stories-thumbnail":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2024\/10\/how-to-connect-aws-lambda-to-amazon-kinesis-data-stream-150x84.webp",150,84,true]},"uagb_author_info":{"display_name":"Sudha Maniraj","author_link":"https:\/\/www.whizlabs.com\/blog\/author\/sudha-maniraj\/"},"uagb_comment_info":2,"uagb_excerpt":"This blog highlights how to build a serverless architecture for data stream processing in real-time and also you can learn how to connect AWS Lambda to Amazon Kinesis Data Stream. Real-time data means that data is processed as soon as it is generated, ingested, analyzed, and utilized. Such data is useful in many functions that&hellip;","_links":{"self":[{"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/posts\/97590","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/users\/415"}],"replies":[{"embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/comments?post=97590"}],"version-history":[{"count":31,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/posts\/97590\/revisions"}],"predecessor-version":[{"id":97863,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/posts\/97590\/revisions\/97863"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/media\/97838"}],"wp:attachment":[{"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/media?parent=97590"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/categories?post=97590"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/tags?post=97590"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}