ปกติการส่งไฟล์ออกจาก azure ไป cloud provider เจ้าอื่น ปกติใช้วิธีไหนกันบ้างครับ

พอดีว่าทำ Data pipeline แล้วใช้ ADF เป็นหลัก ไปเจอมาว่าเราสามารถส่งไฟล์แบบ schedule โดยใช้ RESTAPI ที่คุยกันด้วย HTTP ได้ แต่มันมีข้อจำกัดเรื่อง Token/secret key ของแต่ละเจ้าก็กำหนดไม่เหมือนกัน เลยอยากทราบว่าปกติใช้วิธีไหนในการส่ง data ไป outbound กันบ้างครับ

2 Likes

เรื่อง token/secret ของแต่ละเจ้าที่ไม่เหมือนกันนี่ผมทำใจยอมรับมันเลยครับ แหะๆ เป็น challenge ที่ยังไงก็ต้องเจอ :joy:

เนื่องจากตอนนี้ทางผมใช้ Airflow เป็นหลัก (คิดว่า concept อาจจะเอาไปประยุกต์ใช้ได้กับ ADF เช่นกัน) คือใน Airflow เค้าจะมีให้เราสามารถสร้าง connection ได้ ซึ่งมันก็จะมีหลายๆ type ให้เลือก เช่น BigQuery หรือ S3 หรือ Redshift อะไรแบบนี้ ลองดูรูปด้านล่างประกอบครับ

ซึ่งเวลาที่เราเปลี่ยน connection type ตัว form ก็จะเปลี่ยนช่องตามไปด้วยรอบรับกับความแตกต่างของ cloud แต่ละเจ้า

โดยที่ตัวโค้ดด้านในของ Airflow เค้าจะเขียนเป็นคล้ายๆ wrapper เอาไว้ เวลาที่เราหยิบเอามาใช้เราจะอ้างอิงแค่ connection ID ทำให้ตอนสร้าง data pipeline เราไม่ต้องสนใจว่าใน connection เราเซตค่าแบบไหนไว้ครับ

ตัว data pipeline ตัวอื่นๆ อย่างเช่น Dagster ก็ทำคล้ายๆ กัน (มีบางโปรเจคใช้อยู่)

สรุปคือทีมผมใช้วิธีด้านบนนี้เป็นหลักครับ ในการส่งข้อมูลไป outbound เช่นจาก S3 ไป BigQuery :smiley:


ขอย้อนกลับมาชวนคุยเรื่อง REST API ครับ กำลังคิดว่าถ้าผมเจอสถานการณ์ที่ API หลายๆ ตัวที่ไปดึงข้อมูล หรือส่งข้อมูล มีความแตกต่างกันกัน ผมอาจจะเลือกเขียน wrapper ขึ้นมาประมาณว่า

  • อะไรที่เหมือนๆ กันของแต่ละ API ที่ค่อนข้าง common อย่างเช่น host/domain เราก็มีช่องให้ใส่ host หรืออาจจะมีช่อง body เพิ่มเข้ามา

  • ส่วนของที่ดูแตกต่างกัน และค่อนข้าง specific กับแต่ละ API เลย อาจจะสร้างอีกฟิลด์หนึ่งขึ้นมาชื่อ extra

    เสร็จแล้วเราก็เขียนโค้ดด้านในแกะ extra ออกมาให้เป็นไปตามของแต่ละ host/domain ของ API นั้นๆ

เดี๋ยวรอท่านอื่นมาเสริมครับ อิอิ :blush:

4 Likes

เห็นด้วยกับพี่กานต์ค่ะ ที่เคยทำใช้ Airflow operator ผ่าน connection ที่เซ็ตไว้เหมือนกัน แต่ถ้าเป็น ADF น่าจะจำกัดกว่า

สำหรับที่ถามว่า cloud provider เจ้าอื่นๆ ถ้าเป็น Google Cloud จะมีบริการชื่อ Storage Transfer Service รองรับการย้ายไฟล์จาก S3 หรือ Azure Blob storage มาที่ Google Cloud Storage ค่ะ (gsutil ก็สามารถต่อกับ s3 ได้ ทาง Azure ก็มี AzCopy command line tool อาจจะช่วยได้บางเคส) คิดว่าสำหรับเจ้าอื่นๆ น่าจะมีบริการคล้ายๆกันเหมือนกัน อยู่ที่อยากย้ายไป cloud ไหน

Trick น่าจะอยู่ที่ ให้ลองหาบริการที่ migrate ข้อมูล"ขาเข้า"ค่ะ เพราะ cloud พวกนี้อยากให้ข้อมูลมายู่ในระบบตัวเองมากกว่า ออกไปหา provider อื่น…แต่ก็ไม่เสมอไปค่ะ 55

1 Like

ขอบคุณมากๆครับ ตอบละเอียดมากเลย ขอตัวไปศึกษาเพิ่มเติมแปป 55

1 Like