Amazon IVS के साथ ऑन-डिमांड लाइव स्ट्रीम प्लेबैक (3 भाग श्रृंखला) 1 ऑटो रिकॉर्डिंग Amazon IVS लाइव स्ट्रीम S3 के लिए 2 Amazon IVS चैट लॉगिंग के साथ वेब चैट संदेशों को कैसे संग्रहित करें 3 Amazon IVS लाइव स्ट्रीम प्लेबैक चैट रिप्ले के साथ अपनी में, हमने देखा कि कैसे Amazon इंटरएक्टिव वीडियो सर्विस (Amazon IVS) की लाइव स्ट्रीम को Amazon Simple Storage Service (Amazon S3) बकेट में ऑटो-रिकॉर्ड किया जाए। यह सुविधा उपयोगकर्ता जनित सामग्री (UGC) प्लेटफ़ॉर्म के लिए एक शक्तिशाली उपकरण है क्योंकि यह किसी एप्लिकेशन में पिछली लाइव स्ट्रीम को ऑन-डिमांड देखने की सुविधा प्रदान करने का पहला चरण है। लेकिन स्ट्रीम के साथ-साथ होने वाली इंटरएक्टिव चैट के पूर्ण संदर्भ के बिना लाइव स्ट्रीम का रीप्ले अधूरा है। इस पोस्ट में, हम Amazon IVS चैट संदेशों को लॉग करना सीखकर पूर्ण ऑन-डिमांड अनुभव प्रदान करने के लिए अगला कदम उठाएंगे। पिछली पोस्ट लॉगिंग कॉन्फ़िगरेशन अमेज़ॅन एस 3 के लिए ऑटो-रिकॉर्डिंग को रिकॉर्डिंग कॉन्फ़िगरेशन की आवश्यकता के समान, चैट लॉगिंग को भी एक कॉन्फ़िगरेशन की आवश्यकता होती है जो चैट रूम के लिए आवश्यक विवरण को परिभाषित करती है। ध्यान रखें कि लॉगिंग गंतव्यों की आपकी पसंद के आधार पर आपको अतिरिक्त भी आवश्यकता हो सकती है। IAM अनुमतियों की लॉगिंग कॉन्फ़िगरेशन बनाने के लिए Amazon IVS कंसोल का उपयोग करना अमेज़ॅन आईवीएस कंसोल के साथ लॉगिंग कॉन्फ़िगरेशन बनाने के लिए, बाएं साइडबार में पर क्लिक करें। लॉगिंग कॉन्फ़िगरेशन सूची पृष्ठ पर, क्लिक करें। लॉगिंग कॉन्फ़िगरेशन लॉगिंग कॉन्फ़िगरेशन बनाएँ पर Amazon IVS चैट लॉगिंग लॉग किए गए चैट संदेशों के संग्रहण के लिए कई गंतव्य प्रदान करता है। हम आपके चैट लॉग्स के लिए स्टोरेज डेस्टिनेशन के रूप में Amazon CloudWatch, Amazon Kinesis Data Firehose, या Amazon S3 में से चुन सकते हैं। मैं व्यक्तिगत रूप से क्लाउडवॉच को सबसे सुविधाजनक गंतव्य मानता हूं क्योंकि मैं क्लाउडवॉच एसडीके के माध्यम से चैट संदेशों को आसानी से प्राप्त कर सकता हूं, तो चलिए इस डेमो के लिए इसका उपयोग करते हैं। यदि आप अपने आवेदन में गंतव्य के रूप में Amazon Kinesis Data Firehose या Amazon S3 का उपयोग करना चाहते हैं, तो देखें। दस्तावेज़ : चैट संदेश पोस्ट किए जाने और आपके लॉगिंग गंतव्य पर दिखाई देने के बीच थोड़ा विलंब हो सकता है। Amazon S3 के लिए, विलंब 5 मिनट तक हो सकता है, और Amazon CloudWatch और Amazon Kinesis Data Firehose के लिए यह 10 सेकंड तक हो सकता है। नोट इस डेमो के लिए कॉन्फ़िगरेशन बनाने के लिए, दर्ज करें (#1), क्लाउडवॉच को के रूप में चुनें (#2), (#3) चुनें, और दर्ज करें (#4) . लॉगिंग कॉन्फ़िगरेशन नाम गंतव्य एक नया क्लाउडवॉच लॉग समूह बनाएं लॉग समूह नाम कोई भी वैकल्पिक दर्ज करें और फिर पर क्लिक करें। टैग लॉगिंग कॉन्फ़िगरेशन बनाएँ लॉगिंग कॉन्फ़िगरेशन बनाने के लिए AWS SDK का उपयोग करना रिकॉर्डिंग कॉन्फ़िगरेशन की तरह, हम अपने लॉगिंग कॉन्फ़िगरेशन बनाने के लिए AWS SDK का लाभ उठा सकते हैं। चूंकि हम इस पोस्ट में क्लाउडवॉच में लॉग इन कर रहे हैं, इसलिए हमें के लिए क्लाउडवॉच लॉग एसडीके का उपयोग करने की आवश्यकता होगी। लॉग समूह बनाने import { CloudWatchLogsClient, CreateLogGroupCommand } from "@aws-sdk/client-cloudwatch-logs"; const cloudWatchLogsClient = new CloudWatchLogsClient(); const createLogGroupInput = { logGroupName: 'ivs-demo-chat-logging-group', }; const createLogGroupRequest = new CreateLogGroupCommand(createLogGroupInput); const createLogGroupResponse = await cloudWatchLogsClient.send(createLogGroupRequest); console.log(createLogGroupResponse); अब हम लॉगिंग कॉन्फ़िगरेशन ( ) बनाने के लिए Amazon IVS चैट क्लाइंट का उपयोग कर सकते हैं । डॉक्स import { IvschatClient, CreateLoggingConfigurationCommand } from "@aws-sdk/client-ivschat"; const ivsChatClient = new IvschatClient(); const createLoggingConfigInput = { name: 'ivs-demo-chat-logging-config-sdk', destinationConfiguration: { cloudWatchLogs: { logGroupName: 'ivs-demo-chat-logging-group' } } }; const createLoggingConfigRequest = new CreateLoggingConfigurationCommand(createLoggingConfigInput); const createLoggingConfigResponse = await ivsChatClient.send(createLoggingConfigRequest); console.log(createLoggingConfigResponse); यह निम्न के समान आउटपुट का उत्पादन करेगा: { "$metadata": { "httpStatusCode": 200, "requestId": "[redacted]", "cfId": "[redacted]", "attempts": 1, "totalRetryDelay": 0 }, "arn": "arn:aws:ivschat:us-east-1:[redacted]:logging-configuration/[redacted]", "createTime": "2023-01-09T14:48:35.358Z", "destinationConfiguration": { "cloudWatchLogs": { "logGroupName": "ivs-demo-chat-logging-group" } }, "id": "[redacted]", "name": "ivs-demo-chat-logging-config-sdk", "state": "ACTIVE", "tags": {}, "updateTime": "2023-01-09T14:48:35.485Z" } AWS CLI के साथ लॉगिंग कॉन्फ़िगरेशन बनाना हम AWS CLI के माध्यम से वैकल्पिक रूप से लॉगिंग कॉन्फ़िगरेशन भी बना सकते हैं। दोबारा, हमें क्लाउडवॉच लॉग समूह बनाना होगा, फिर नए लॉग समूह का नाम चैट लॉगिंग कॉन्फ़िगरेशन में पास करना होगा। $ aws logs \ create-log-group \ --log-group-name ivs-demo-logging-config-log-group $ aws ivschat \ create-logging-configuration \ --name ivs-demo-logging-config \ --destination-configuration cloudWatchLogs={logGroupName=ivs-demo-logging-config-log-group} Amazon IVS कंसोल के माध्यम से मौजूदा Amazon IVS चैट रूम के साथ लॉगिंग कॉन्फ़िगरेशन को संबद्ध करना अब हम लॉगिंग कॉन्फ़िगरेशन को मौजूदा Amazon IVS चैट रूम से जोड़ सकते हैं। बाएं साइडबार में के अंतर्गत चुनें, वह कमरा चुनें जिसके साथ आप कॉन्फ़िगरेशन को संबद्ध करना चाहते हैं, और फिर पर क्लिक करें। चैट कमरे संपादित करें कक्ष संपादन पृष्ठ पर, नीचे स्क्रॉल करें और (#1) का चयन करें। ड्रॉपडाउन (#2) में, हमारे द्वारा ऊपर बनाए गए कॉन्फ़िगरेशन को खोजें और संबद्ध करें। ध्यान दें कि आप एक कमरे के साथ कई विन्यासों को जोड़ सकते हैं, इसलिए यदि आप Amazon Kinesis Data Firehose या Amazon S3 में भी लॉग इन करना चाहते हैं, तो आप अलग-अलग विन्यास बना सकते हैं और उन्हें अपने कमरे से जोड़ सकते हैं। यह भी ध्यान दें कि आप बटन (#3) पर क्लिक करके सीधे एडिट रूम पेज से एकदम नया कॉन्फिगरेशन बना सकते हैं। स्वचालित रूप से संदेश और ईवेंट लॉग करें लॉगिंग कॉन्फ़िगरेशन लॉगिंग कॉन्फ़िगरेशन बनाएं AWS SDK के माध्यम से मौजूदा Amazon IVS चैट रूम के साथ लॉगिंग कॉन्फ़िगरेशन को संबद्ध करना उत्पादन में, आप अपने लॉगिंग कॉन्फ़िगरेशन को नए या मौजूदा चैट रूम से जोड़ने के लिए एसडीके का उपयोग कर सकते हैं। ऐसा करने के लिए, ( ) या ( ) का उपयोग करें। चैट लॉगिंग कॉन्फ़िगरेशन के साथ मौजूदा चैट रूम को अपडेट करने का एक उदाहरण यहां दिया गया है। अपेक्षित रूप से, हमें ARN को चैट रूम के के रूप में पास करना होगा, और किसी भी/सभी चैट लॉगिंग कॉन्फ़िगरेशन ARNs को एक सरणी में में पास करना होगा। CreateRoomCommand docs UpdateRoomCommand docs identifier loggingConfigurationIdentifiers import { IvschatClient, UpdateRoomCommand } from "@aws-sdk/client-ivschat"; const ivsChatClient = new IvschatClient(); const updateChatRoomInput = { identifier: 'arn:aws:ivschat:us-east-1:[redacted]:room/[redacted]', loggingConfigurationIdentifiers: [ 'arn:aws:ivschat:us-east-1:v:logging-configuration/[redacted]', ] }; const updateChatRoomRequest = new UpdateRoomCommand(updateChatRoomInput); const updateChatRoomResponse = await ivsChatClient.send(updateChatRoomRequest); console.log(updateChatRoomResponse); आप चैट रूम के लिए एकाधिक लॉगिंग कॉन्फ़िगरेशन निर्दिष्ट कर सकते हैं। यदि वांछित हो, तो इससे आप एक से अधिक गंतव्यों का उपयोग कर सकते हैं। SDK के माध्यम से को भेजे गए चैट लॉगिंग आइडेंटिफ़ायर की सरणी किसी भी मौजूदा आइडेंटिफ़ायर को ओवरराइट कर देगी, इसलिए यदि आप एक अतिरिक्त कॉन्फ़िगरेशन जोड़ रहे हैं, तो उन्हें हटाने से बचने के लिए किसी भी मौजूदा कॉन्फ़िगरेशन ARN को शामिल करना सुनिश्चित करें। नोट: UpdateRoomCommand चैट लॉग पुनर्प्राप्त करना इस बिंदु पर, अमेज़ॅन आईवीएस चैट रूम में पोस्ट किए गए सभी नए संदेशों को संलग्न लॉगिंग कॉन्फ़िगरेशन द्वारा निर्दिष्ट गंतव्य पर लॉग किया जाएगा। जैसा कि ऊपर उल्लेख किया गया है, क्लाउडवॉच के मामले में एक लॉगिंग डेस्टिनेशन के रूप में, हम एक निश्चित समय अवधि के लिए अपने चैट लॉग को पुनः प्राप्त करने के लिए क्लाउडवॉच एसडीके का उपयोग कर सकते हैं। ऐसा करने के लिए, हमें , प्रारंभ और समाप्ति टाइमस्टैम्प (यूनिक्स टाइमस्टैम्प प्रारूप में), और आवश्यकता है। प्रारूप में होगा: तो ARN वाले चैट रूम के लिए, होगा। logGroupName logStreamNames की LogStreamName aws/IVSChatLogs/1.0/room_[suffix of chat room ARN] arn:aws:ivschat:us-east-1:[redacted]:room/0wgOPVl4ZRdu logStreamName aws/IVSChatLogs/1.0/room_0wgOPVl4ZRdu CloudWatch लॉग किए गए चैट संदेशों को पुनः प्राप्त करना यहाँ बताया गया है कि कैसे का उपयोग करके ( ) का निर्माण किया जाता है जिसका उपयोग चैट लॉग को पुनः प्राप्त करने के लिए किया जाता है। CloudWatchLogsClient FilterLogEventsCommand दस्तावेज़ import { CloudWatchLogsClient, FilterLogEventsCommand } from "@aws-sdk/client-cloudwatch-logs"; const cloudwatchClient = new CloudWatchLogsClient(); const filterLogEventsInput = { logGroupName: 'demo-chat-log-cw-group', logStreamNames: ['aws/IVSChatLogs/1.0/room_0wgOPVl4ZRdu'], startTime: 1672929210000, endTime: 1672929330000, }; const filterLogEventsRequest = new FilterLogEventsCommand(filterLogEventsInput); const filterLogEventsResponse = await cloudwatchClient.send(filterLogEventsRequest); const events = filterLogEventsResponse.events.map(e => JSON.parse(e.message)); याद रखें कि किसी चैनल पर स्ट्रीमिंग करते समय । यदि आप किसी विशिष्ट Amazon IVS लाइव स्ट्रीम के लिए चैट लॉग पुनर्प्राप्त करने का प्रयास कर रहे हैं, तो आप स्ट्रीम प्रारंभ और समाप्ति समय का उपयोग कर सकते हैं। मुझे कैसे पता चलेगा कि किस प्रारंभ और समाप्ति समय का उपयोग करना है? Amazon IVS इवेंटब्रिज को ईवेंट भेजता है ध्यान रखें, कि अनंत संख्या में ईवेंट नहीं लौटा सकता है। यदि आपकी समयावधि में SDK से एकल प्रतिक्रिया में फिट होने की तुलना में अधिक ईवेंट हैं, तो आपको के अस्तित्व के लिए की जाँच करनी पड़ सकती है और पृष्ठांकन को संभालना पड़ सकता है। अधिक जानकारी के लिए एसडीके देखें। FilterLogEventsCommand nextToken FilterLogEventsCommandOutput दस्तावेज़ डिफ़ॉल्ट रूप से, यह ऑपरेशन उतने लॉग इवेंट लौटाता है जितने 1 एमबी (10,000 लॉग इवेंट तक) या निर्दिष्ट समय सीमा के भीतर पाए जाने वाले सभी इवेंट में फिट हो सकते हैं। यदि परिणामों में एक टोकन शामिल है, तो इसका मतलब है कि अधिक लॉग इवेंट उपलब्ध हैं। बाद की कॉल में टोकन निर्दिष्ट करके आप अतिरिक्त परिणाम प्राप्त कर सकते हैं। टोकन के माध्यम से अधिक लॉग इवेंट उपलब्ध होने पर यह ऑपरेशन खाली परिणाम लौटा सकता है। इस बिंदु पर हम चैट लॉग के साथ जो चाहें कर सकते हैं। याद रखें, चैट लॉगिंग Amazon IVS चैट रूम में पोस्ट की गई लॉग करेगा, जिसमें कस्टम ईवेंट और चैट मॉडरेशन से संबंधित ईवेंट शामिल हैं। अगर हम चैट स्ट्रीम को फिर से चलाना चाहते हैं, तो हमें मॉडरेट किए गए संदेशों को साफ़ करने और संदेशों की "पुनः चलाने योग्य" स्ट्रीम बनाने के लिए शायद ईवेंट को थोड़ा सा पार्स करने की आवश्यकता होगी। सभी घटनाओं को : यदि आपने उन्हें अभी तक नहीं पढ़ा है, तो Amazon IVS चैट के साथ और चैट मॉडरेशन पर मेरे ब्लॉग पोस्ट देखें। चैट मॉडरेट करने के बारे में अधिक जानकारी स्वचालित मैन्युअल लॉग किए गए ईवेंट को पार्स करने के लिए एक फ़ंक्शन ऐसा दिखाई दे सकता है। आपकी माइलेज भिन्न हो सकती है! const parseEvents = (events) => { let parsedEvents = []; events.forEach(e => { switch (e.type) { case 'MESSAGE': parsedEvents.push(e); break; case 'EVENT': if (e.payload.EventName === 'aws:DELETE_MESSAGE') { const existingEventIdx = parsedEvents.findIndex(parsedEvent => { return parsedEvent.payload.Id === e.payload.Attributes.MessageID }); if (existingEventIdx > -1) { parsedEvents.splice(existingEventIdx, 1); } } break; } }); return parsedEvents; }; यह फ़ंक्शन चैट लॉग से हटाए गए मॉडरेट संदेशों के साथ चैट रीप्ले उद्देश्यों के लिए उपयुक्त एक सरणी लौटाएगा। इवेंट स्ट्रीम कैसी दिख सकती है, इसका एक छोटा सा उदाहरण यहां दिया गया है। [ { "event_timestamp": "2023-01-05T14:33:32.894Z", "type": "MESSAGE", "payload": { "Type": "MESSAGE", "Id": "WhO6MW6iRdS5", "RequestId": "", "Attributes": { "username": "gleningp" }, "Content": "bbiab!", "SendTime": "2023-01-05T14:33:32.894089757Z", "Sender": { "UserId": "75758272-f3f2-4f65-83c5-9b8f144116b8", "Attributes": {} } }, "version": "1.0" }, { "event_timestamp": "2023-01-05T14:33:39.896Z", "type": "MESSAGE", "payload": { "Type": "MESSAGE", "Id": "VwEPwPV74GN3", "RequestId": "", "Attributes": { "username": "rpeirazzia" }, "Content": "perfect", "SendTime": "2023-01-05T14:33:39.896519733Z", "Sender": { "UserId": "704D6BF8-22D2-4A52-B6A7-BDEFB115ECE5", "Attributes": {} } }, "version": "1.0" }, { "event_timestamp": "2023-01-05T14:33:47.330Z", "type": "MESSAGE", "payload": { "Type": "MESSAGE", "Id": "00kqu1sPa6dF", "RequestId": "", "Attributes": { "username": "jmycroft2" }, "Content": "🔥🔥🔥", "SendTime": "2023-01-05T14:33:47.330983449Z", "Sender": { "UserId": "2F12AA2D-DF65-42CF-AE99-133A5A06F7B4", "Attributes": {} } }, "version": "1.0" } ] सारांश इस पोस्ट में, हमने सीखा कि Amazon IVS चैट रूम में पोस्ट किए गए संदेशों को कैसे लॉग करना है। हमारी अगली पोस्ट में, हम एक उपयुक्त "ऑन-डिमांड" रिप्ले उपयोगकर्ता अनुभव बनाने के लिए एक एप्लिकेशन में ऑटो-रिकॉर्डेड लाइव स्ट्रीम और लॉग चैट संदेशों को एक साथ लाने पर ध्यान देंगे।