วันนี้เราจะมาสร้างสิ่งที่เรียกว่า ฟังก์ชันยานเดกซ์ (ชื่อเป็นทางการ
ฉันยังเป็นคู่ต่อสู้ (แต่ไม่มีความคลั่งไคล้) ของเซิร์ฟเวอร์แบบดั้งเดิมและเป็นผู้สนับสนุนสิ่งที่เรียกว่า serverless โซลูชัน (ไร้เซิร์ฟเวอร์) เพราะฉันไม่ชอบ (และฉันไม่รู้วิธี) จัดการเซิร์ฟเวอร์ และยิ่งกว่านั้นคือต้องจ่ายเงินตามเวลาที่ไม่ได้โหลด อีกสิ่งหนึ่งคือฟังก์ชั่น มีคนให้บริการโดยไม่มีฉัน และฉันจ่ายเฉพาะค่าโทรเท่านั้น เมื่อต้นเดือนตุลาคม 2019 Yandex นำเสนอ ฟังก์ชั่นยานเดกซ์คลาวด์ - ดูเหมือนจะเป็นแห่งแรกในสหพันธรัฐรัสเซีย serverless. และสิ่งที่ดีเป็นพิเศษก็คือทักษะของอลิซโดยทั่วไปนั้นเป็นอิสระ ดังนั้นทักษะเหล่านี้จึงอยู่ในการมองเห็นของฉันตั้งแต่นั้นเป็นต้นมา แต่มาเริ่มกันเลย
ลองจินตนาการถึงสถานการณ์นี้ ใบสมัครของคุณ (เช่น ทักษะของอลิซ
เกี่ยวกับ วิธีการ จาก ฟังก์ชั่นยานเดกซ์ ทำรายการในฐานข้อมูล คลาวด์ไฟร์สโตร์ เราได้ดูไปแล้วในบทช่วยสอน
1. สร้างบัญชีใน SendGrid
หมายเหตุSendGrid เป็นเพียงตัวเลือกของฉัน ซึ่งฉันทำด้วยเหตุผลหลายประการ เหตุผลหลักคือพวกเขามี SDK สำเร็จรูปสำหรับ Node.js คุณสามารถเลือกบริการส่งไปรษณีย์อื่น ๆ ได้
เราผ่าน
ในขั้นตอนถัดไปเราเลือก Node.js:
ต่อไปเรามากับของเรา API-ชื่อคีย์ (จะแสดงเฉพาะในคอนโซลในรายการคีย์และไม่เกี่ยวข้องกับโค้ดในอนาคตของเรา ฉันพบสิ่งที่ไม่เสื่อมคลาย สาธิต API คีย์) แล้วกดปุ่ม สร้างคีย์:
คีย์จะถูกสร้างขึ้น เราจะคัดลอกและเก็บไว้เป็นความลับอย่างสุดซึ้ง และเราจะมีหน้าจอที่มีปุ่ม ตรวจสอบการรวมระบบดังภาพด้านล่าง แต่เราจะไม่คลิกมัน แต่มาเขียนโค้ดกันต่อ:
2. การเขียนโค้ด
แต่อย่างที่คุณเห็นโค้ดนั้นมีขนาดเล็กมาก - 22 บรรทัด!
ในสาย #8 อีเมลของฉันเป็นแบบฮาร์ดโค้ด (และซ่อนไว้อย่างเขินอาย) - โปรดระบุอีเมลของคุณ ในชีวิตจริงเราจะได้รับข้อมูลทั้งหมด (รวมถึง อีเมล) จากวัตถุ เหตุการณ์. เช่นถ้าวิธีการ POST วัตถุถูกส่งไปยังฟังก์ชันของเรา ผู้ใช้งาน พร้อมสนาม (ทรัพย์สิน) อีเมลสามารถรับค่าของฟิลด์นี้ได้ดังนี้:
const { user } = event;
const email = user.email;
และหากที่อยู่อีเมลถูกส่งผ่านไปยังฟังก์ชันโดยใช้วิธีการ GETตัวอย่างเช่น: https://functions.yandexcloud.net/123abc?[email protected]
ค่าพารามิเตอร์ อีเมล คุณสามารถได้สิ่งนี้:
const email = event.queryStringParameters.email;
เพื่อดูว่ามีอะไรอยู่ในวัตถุกันแน่ เหตุการณ์คุณสามารถสร้างสิ่งที่ง่ายที่สุดได้ ฟังก์ชันยานเดกซ์ และบิดมันด้วยคำถาม:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
มีการกล่าวถึงรายละเอียดเพิ่มเติม (แต่ไม่ชัดเจน) ในเอกสารอย่างเป็นทางการ
ดังนั้นให้สร้างไดเร็กทอรีโปรเจ็กต์ (เช่น จดหมาย) ไปที่มัน เริ่มต้นโปรเจ็กต์ ติดตั้งการขึ้นต่อกัน:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
ที่นี่ต้องใช้แพ็คเกจเท่านั้น @sendgrid/เมล. ถุงพลาสติก เครื่องมือตรวจสอบอีเมล ตรวจสอบความถูกต้องของที่อยู่อีเมล (ฉันไม่เดาทันทีได้อย่างไร) แต่ถ้าเราแน่ใจ (ตรวจสอบมานานแล้วโดยไม่มีเรา) เราก็ไม่จำเป็นต้องติดตั้ง (และของ แน่นอนเราไม่ต้องตรวจสอบในโค้ด) ถุงพลาสติก โดเทน ออกแบบมาเพื่ออ่านบันทึกจากไฟล์ .env เป็นตัวแปรรันไทม์ แต่ใน ฟังก์ชั่นยานเดกซ์ คุณสามารถวางตัวแปรเหล่านี้ลงในสภาพแวดล้อมรันไทม์ได้โดยตรง ยังไง? - ฉันจะแสดงมันด้านล่าง. ดังนั้นแพ็คเกจ โดเทน คุณยังไม่สามารถติดตั้งและไฟล์ได้ .env - อย่าสร้างและในขณะเดียวกันก็มีโค้ดอยู่ในไฟล์ index.js ห้ามเปลี่ยน. แต่ที่นี่เราได้ติดตั้งแพ็คเกจนี้แล้ว ดังนั้นเราจึงสร้างไฟล์ขึ้นมา index.js и .env:
touch index.js
touch .env
ในไฟล์ index.js เขียนโค้ด 22 บรรทัดที่แสดงในภาพหน้าจอด้านบน (เฉพาะในบรรทัดเท่านั้น) #8 เปลี่ยนอีเมลของคุณ) และในไฟล์ .env - (ไม่มีเครื่องหมายคำพูดหรือเครื่องหมายวรรคตอน) ระบุคู่ - ชื่อคีย์/ค่า APIซึ่งเราเพิ่งได้รับในคอนโซล SendGrid:
SENDGRID_API_KEY=คีย์ sendgrid-api-key ที่เป็นความลับของคุณ
และหากคุณต้องการงานน้อยลง ให้โคลนพื้นที่เก็บข้อมูลและติดตั้งแพ็คเกจ:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
ในไฟล์ index.js, ในบรรทัด #8 เปลี่ยนอีเมล สร้างไฟล์ในไดเร็กทอรีราก .envและในนั้นระบุชื่อ/ค่าของคีย์ APIดังที่แสดงไว้ด้านบน
3. ปรับใช้
ไม่มากก็น้อยชัดเจนและมีรายละเอียดเกี่ยวกับ Yandex.Cloud และวิธีการวางไว้ตรงนั้น ฟังก์ชันยานเดกซ์ อธิบายไว้ในบทความของฉัน
สร้าง ไปรษณีย์-archive (ลองเรียกมันว่าตัวอย่างเช่น mailer.zip) ซึ่งเรารวมไดเร็กทอรีไว้ด้วย node_modules และไฟล์ .env, index.js - ทุกอย่างจากแค็ตตาล็อกโครงการของเรา:
เราสร้างฟังก์ชั่นที่มีชื่อ... อย่างถูกต้อง - จดหมายในเมนูนำทางด้านซ้ายที่เราเข้าไป บรรณาธิการกรอกข้อมูลในช่องที่ต้องกรอก แล้วสลับไปที่แท็บ ไฟล์ ZIP ดาวน์โหลดไฟล์เก็บถาวรของเรา mailer.zip:
และนี่คือตัวเลือกการดาวน์โหลดที่กล่าวถึงก่อนหน้านี้ คีย์เอพีไอ โดยตรงที่นี่ แทนที่จะสร้างไฟล์ในโครงการ .envและไม่ต้องติดตั้งแพ็คเกจ โดเทน. แต่เราได้ทำทั้งหมดนี้แล้ว ดังนั้นผมจึงแสดงไว้เพื่อเป็นข้อมูลเท่านั้น นั่นคือไม่จำเป็นต้องทำซ้ำ!
ตอนนี้ที่มุมขวาบนให้คลิกปุ่ม สร้างเวอร์ชันและรอสองสามวินาที เมื่อทุกอย่างพร้อมเราจะไปที่ส่วนนั้นโดยอัตโนมัติ ทบทวน. ที่นั่นเราจะเปิดใช้งานตัวเลือก ฟังก์ชั่นสาธารณะเพื่อให้คุณสามารถโต้ตอบกับมันจากโลกภายนอกได้
คุณเห็นลิงค์สีน้ำเงินตรงข้ามกับคำจารึก ลิงค์โทร? คลิกมัน หน้าต่างเบราว์เซอร์ที่ว่างเปล่าจะเปิดขึ้น... แต่เดี๋ยวก่อน - ฉันได้รับอีเมล:
ตอนนี้คุณสามารถกลับไปที่คอนโซลได้แล้ว SendGridและกดปุ่ม ตรวจสอบการรวมระบบ. ระบบจะตรวจสอบทุกอย่างผ่านช่องทางของมัน และผลที่ได้ควรกลับมาหน้าจอดังนี้:
แค่นั้นแหละผู้ชาย (และเด็กผู้หญิงด้วย) - ทุกอย่างเรียบง่ายและสง่างามจริงๆ! จะมีบทความเพิ่มเติม หากใครสนใจอ่านเรื่องแบบนี้ Subscribe ไว้จะได้ไม่พลาด
4. การบริจาค
ที่มา: will.com