پشتیبان‌گیری خودکار Airtable به AWS S3 با n8n

پشتیبان‌گیری خودکار Airtable به AWS S3 با n8n

10 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۲۷

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 4302 · منبع: کاتالوگ Axeto

خودکارسازی پشتیبان‌گیری از پایگاه‌های Airtable در AWS S3

این گردش کار راه حلی قوی برای خودکارسازی پشتیبان‌گیری کامل هفتگی از پایگاه‌های Airtable شما ارائه می‌دهد. این گردش کار تمام جداول را به عنوان فایل‌های CSV صادر می‌کند، آن‌ها را در یک سطل AWS S3 مشخص آپلود می‌کند و شامل فرآیند پاکسازی ماهانه برای حذف پشتیبان‌های قدیمی است که مدیریت کارآمد فضای ذخیره‌سازی را تضمین می‌کند. برای بازخورد فوری، گردش کار پس از اتمام موفقیت‌آمیز پشتیبان‌گیری، اعلان‌هایی را به Slack ارسال می‌کند.

شما می‌توانید این گردش کار و موارد دیگر را در کاتالوگ n8n Axeto.ai ما بیابید.

نمای کلی گردش کار

این گردش کار به دو فرآیند اصلی تقسیم می‌شود که به طور مستقل راه‌اندازی می‌شوند:

1. فرآیند پشتیبان‌گیری هفتگی: این فرآیند به صورت هفتگی اجرا می‌شود تا از پایگاه داده Airtable شما یک نسخه پشتیبان کامل ایجاد کند. این فرآیند شامل موارد زیر است:

* ایجاد یک پوشه جدید با تاریخ در سطل S3 شما.

* دریافت اسکیمای پایگاه داده Airtable شما برای شناسایی تمام جداول.

* صادر کردن رکوردهای هر جدول به یک فایل CSV جداگانه.

* آپلود این فایل‌های CSV در پوشه هفتگی که به تازگی در S3 ایجاد شده است.

* ارسال یک پیام تأیید به Slack.

2. فرآیند پاکسازی ماهانه: این فرآیند به صورت ماهانه برای مدیریت فضای ذخیره‌سازی با حذف داده‌های پشتیبان قدیمی اجرا می‌شود. این فرآیند:

* تمام پوشه‌های پشتیبان را در سطل S3 شما شناسایی می‌کند.

* سن هر پوشه را با یک آستانه یک ماهه مقایسه می‌کند.

* هر پوشه پشتیبان قدیمی‌تر از یک ماه را حذف می‌کند.

تجزیه و تحلیل گره (Node) دقیق

فرآیند پشتیبان‌گیری هفتگی

این بخش گره‌های مسئول انجام پشتیبان‌گیری هفتگی را شرح می‌دهد.

گره‌های درگیر:

  • Weekly Backup (Schedule Trigger)
  • Set Week (Set)
  • Create Folder (AWS S3)
  • Airtable (گره Airtable برای دریافت طرحواره پایگاه داده)
  • Loop Over Items (SplitInBatches)
  • Create Table Metadata (Set)
  • Pull Records (گره Airtable برای دریافت رکوردهای جدول)
  • Convert to File (ConvertToFile)
  • AWS S3 (آپلود AWS S3)
  • Aggregate (Aggregate)
  • Slack (اطلاع‌رسانی Slack)

جزئیات گره‌ها:

1. Weekly Backup (Schedule Trigger)

* نقش: فرآیند پشتیبان‌گیری هفتگی را آغاز می‌کند.

* پیکربندی: برای فعال شدن هر هفته ساعت ۱۲:۰۰ تنظیم شده است (منطقه زمانی مشخص نشده است).

* ورودی: ندارد.

* خروجی: اجرای گردش کار را شروع می‌کند.

2. Set Week (Set)

* نقش: رشته‌ای را که نشان‌دهنده هفته جاری است (مثلاً "2024-W23") تولید می‌کند تا به عنوان نام پوشه S3 استفاده شود.

* عبارت (Expression): $now.toFormat("kkkk-'W'WW") (از فرمت هفته-سال ISO استفاده می‌کند).

* ورودی: خروجی Weekly Backup.

* خروجی: فیلد currentWeek را به داده‌ها اضافه می‌کند.

3. Create Folder (AWS S3)

* نقش: پوشه‌ای جدید در سطل S3 شما با نامی بر اساس مقدار currentWeek ایجاد می‌کند.

* پارامترها:

* Bucket: aired-out (نام سطل خود را جایگزین کنید).

* Folder Name: ={{ $json.currentWeek }}.

* اعتبارنامه‌ها (Credentials): دسترسی AWS S3 با مجوزهای لازم.

* ورودی: داده‌های Set Week.

* خروجی: تأیید ایجاد پوشه.

4. Airtable (Airtable)

* نقش: طرحواره پایگاه داده Airtable شما را دریافت می‌کند و لیستی از تمام جداول را ارائه می‌دهد.

* پارامترها:

* Operation: getSchema.

* Base: yourbase (شناسه پایگاه داده Airtable خود را جایگزین کنید).

* اعتبارنامه‌ها: توکن API Airtable.

* ورودی: داده‌های Create Folder.

* خروجی: فراداده (Metadata) برای تمام جداول در پایگاه داده.

5. Loop Over Items (SplitInBatches)

* نقش: از طریق هر جدول دریافت شده از طرحواره Airtable تکرار می‌شود و آن‌ها را به صورت جداگانه پردازش می‌کند تا از بارگذاری بیش از حد جلوگیری شود.

* ورودی: لیست جداول از گره Airtable.

* خروجی: فراداده هر جدول را برای پردازش به پایین دست ارسال می‌کند.

6. Create Table Metadata (Set)

* نقش: نام جدول را برای ایجاد یک نام فایل معتبر پاکسازی می‌کند و فراداده لازم (شناسه و نام جدول) را برای عملیات بعدی استخراج می‌کند.

* عبارات (Expressions):

* fileName: نام جدول پاکسازی شده (کاراکترهای غیرمجاز را حذف می‌کند، فاصله‌ها را با زیرخط جایگزین می‌کند).

* tableName: نام اصلی جدول.

* tableID: شناسه جدول برای پرس و جوی رکوردها.

* ورودی: داده‌های Loop Over Items.

* خروجی: فراداده غنی شده برای نام‌گذاری فایل و بازیابی رکورد.

7. Pull Records (Airtable)

* نقش: تمام رکوردها را از جدول فعلی با استفاده از عملیات search بازیابی می‌کند.

* پارامترها:

* Base: yourbase (شناسه پایگاه داده Airtable خود را جایگزین کنید).

* Table: ={{ $json.tableID }}.

* اعتبارنامه‌ها: توکن API Airtable.

* ورودی: داده‌های Create Table Metadata.

* خروجی: تمام رکوردها برای جدول فعلی.

8. Convert to File (ConvertToFile)

* نقش: داده‌های JSON رکوردهای جدول را به فرمت فایل CSV تبدیل می‌کند.

* پارامترها:

* Filename: ={{ $('Create Table Metadata').item.json.fileName }}.csv.

* ورودی: رکوردها از Pull Records.

* خروجی: داده‌های باینری فایل CSV.

9. AWS S3 (AWS S3)

* نقش: فایل CSV تولید شده را در سطل S3 مشخص شده در پوشه هفته جاری آپلود می‌کند.

* پارامترها:

* Operation: upload.

* Bucket Name: aired-out (نام سطل خود را جایگزین کنید).

* File Name: همان نام فایل CSV.

* Parent Folder Key: ={{ $json.currentWeek }} (نام پوشه از Set Week).

* اعتبارنامه‌ها: دسترسی AWS S3.

* ورودی: داده‌های فایل CSV از Convert to File.

* خروجی: تأیید آپلود فایل.

10. Aggregate (Aggregate)

* نقش: خروجی‌های تمام دسته‌های جدول پردازش شده را جمع‌آوری و ترکیب می‌کند تا در یک آرایه واحد قرار گیرند. این کار قبل از ارسال اعلان نهایی Slack ضروری است.

* ورودی: خروجی اصلی از Loop Over Items.

* خروجی: نتایج تجمیع شده.

11. Slack (Slack)

* نقش: پس از اتمام فرآیند پشتیبان‌گیری، یک پیام موفقیت‌آمیز را به یک کانال Slack تعیین شده ارسال می‌کند.

* پارامترها:

Text: :floppy_disk: Airtable Backup Complete*.

* Channel: general (شناسه کانال خود را جایگزین کنید، مثلاً C08GPG2HTA4).

* اعتبارنامه‌ها: توکن API ربات Slack.

* ورودی: داده‌های Aggregate.

* خروجی: تأیید ارسال پیام Slack.

مشکلات بالقوه و مدیریت خطا:

  • محدودیت‌های API Airtable: تجاوز از محدودیت‌های نرخ API Airtable می‌تواند منجر به شکست در بازیابی رکوردها شود.
  • مجوزهای AWS S3: مجوزهای نادرست S3 یا مشکلات اتصال شبکه می‌تواند منجر به شکست در آپلود شود.
  • پاکسازی نام فایل: در حالی که عبارت منظم (regex) کاراکترهای رایج را مدیریت می‌کند، کاراکترهای یونیکد غیرمعمول در نام جداول ممکن است همچنان مشکل ایجاد کنند.
  • اطلاع‌رسانی‌های Slack: خطا در اعتبارنامه‌های API Slack یا مجوزهای کانال مانع از ارسال اطلاع‌رسانی‌ها می‌شود.
  • مهلت‌های زمانی (Timeouts): ممکن است مهلت‌های زمانی شبکه یا محدودیت‌های API رخ دهد؛ برای استحکام بیشتر، اجرای مجدد گردش کار را در نظر بگیرید (در اینجا به صراحت پیکربندی نشده است).

فرآیند پاکسازی ماهانه

این بخش گره‌های مسئول پاکسازی پشتیبان‌های قدیمی را شرح می‌دهد.

گره‌های درگیر:

  • Monthly Prune (Schedule Trigger)
  • Set Timestamps (Set)
  • List Folders (AWS S3)
  • If (If node)
  • Delete File (AWS S3)
  • No Operation, do nothing (NoOp)

جزئیات گره‌ها:

1. Monthly Prune (Schedule Trigger)

* نقش: فرآیند پاکسازی پشتیبان ماهانه را آغاز می‌کند.

* پیکربندی: برای فعال شدن یک بار در ماه تنظیم شده است (روز/زمان خاص قابل پیکربندی است).

* ورودی: ندارد.

* خروجی: گردش کار پاکسازی را شروع می‌کند.

2. Set Timestamps (Set)

* نقش: رشته تاریخ قطع (cutoff date) را محاسبه می‌کند که نشان‌دهنده یک ماه قبل از تاریخ فعلی در فرمت هفته ISO است.

* عبارت (Expression): $now.minus({ weeks: 4 }).toFormat("kkkk-'W'WW").

* خروجی: فیلد cutoffDate را برای مقایسه اضافه می‌کند.

3. List Folders (AWS S3)

* نقش: لیستی از تمام پوشه‌ها (که نشان‌دهنده هفته‌های پشتیبان هستند) را در سطل S3 مشخص شده بازیابی می‌کند.

* پارامترها:

* Resource: folder.

* Operation: getAll.

* Bucket Name: aired-out (نام سطل خود را جایگزین کنید).

* اعتبارنامه‌ها: دسترسی AWS S3.

* ورودی: داده‌های Set Timestamps.

* خروجی: لیستی از اشیاء پوشه، که هر کدام حاوی فیلد Key هستند.

4. If (If node)

* نقش: کلید (نام) هر پوشه لیست شده (پس از حذف اسلش انتهایی) را با cutoffDate مقایسه می‌کند.

* شرط: کلید پوشه (رشته) از نظر زمانی قبل از cutoffDate (رشته) باشد.

* ورودی: بر روی هر پوشه از List Folders تکرار می‌شود.

* خروجی:

* True: پوشه قدیمی‌تر از یک ماه است و به مرحله حذف می‌رود.

* False: پوشه جدید است و هیچ اقدامی انجام نمی‌شود.

5. Delete File (AWS S3)

* نقش: پوشه پشتیبان قدیمی شناسایی شده را از سطل S3 حذف می‌کند.

* پارامترها:

* Resource: folder.

* Operation: delete.

* Bucket Name: aired-out (نام سطل خود را جایگزین کنید).

* Folder Key: Key پوشه از List Folders.

* اعتبارنامه‌ها: دسترسی AWS S3.

* ورودی: داده‌ها از شاخه True گره If.

* خروجی: تأیید حذف پوشه.

6. No Operation, do nothing (NoOp)

* نقش: به عنوان یک placeholder برای شاخه False گره If عمل می‌کند و پایان تمیزی را برای پوشه‌هایی که حذف نمی‌شوند تضمین می‌کند.

* ورودی: داده‌ها از شاخه False گره If.

* خروجی: شاخه را بدون انجام هیچ اقدامی پایان می‌دهد.

مشکلات بالقوه و مدیریت خطا:

  • قرارداد نام‌گذاری پوشه: اگر کلیدهای پوشه از فرمت هفته مورد انتظار منحرف شوند (مثلاً افزودنی‌های دستی یا داده‌های خراب)، مقایسه‌های تاریخ ممکن است شکست بخورد.
  • مجوزهای AWS S3: مجوزهای ناکافی برای عملیات حذف منجر به شکست می‌شود.
  • تفاوت‌های منطقه زمانی: مغایرت بین زمان سرور و مناطق زمانی مورد انتظار می‌تواند به طور ظریف بر محاسبه تاریخ قطع تأثیر بگذارد.
  • سطل خالی: اگر سطل S3 حاوی هیچ پوشه پشتیبان نباشد، گردش کار بدون خطا تکمیل می‌شود.

جدول خلاصه

نام نود (Node Name)نوع نود (Node Type)نقش عملکردی (Functional Role)نود(های) ورودی (Input Node(s))نود(های) خروجی (Output Node(s))یادداشت چسبان (Sticky Note)
Weekly BackupSchedule Triggerراه‌اندازی گردش کار پشتیبان‌گیری هفتگیSet Week## پشتیبان‌گیری هفتگی Airtable<br>هر هفته تمام جداول یک پایگاه داده Airtable را در یک پوشه فرعی اختصاصی هفتگی در S3 پشتیبان‌گیری کنید. پس از اتمام اطلاع‌رسانی کنید.
Set WeekSetتعریف نام پوشه هفته جاریWeekly BackupCreate Folder
Create FolderAWS S3ایجاد پوشه S3 برای هفته جاریSet WeekAirtable
AirtableAirtableدریافت شمای پایگاه داده (لیست جداول)Create FolderLoop Over Items
Loop Over ItemsSplitInBatchesپردازش هر جدول به صورت جداگانهAirtableAggregate, Create Table Metadata
Create Table MetadataSetپاکسازی نام جدول و استخراج فرادادهLoop Over ItemsPull Records
Pull RecordsAirtableواکشی رکوردهای جدول فعلیCreate Table MetadataConvert to File
Convert to FileConvertToFileتبدیل JSON رکوردها به فایل CSVPull RecordsAWS S3
AWS S3AWS S3آپلود فایل‌های CSV در باکت S3Convert to FileLoop Over Items
AggregateAggregateتجمیع خروجی‌های دسته برای اطلاع‌رسانیLoop Over ItemsSlack
SlackSlackارسال اطلاع‌رسانی اتمام به SlackAggregate
Monthly PruneSchedule Triggerراه‌اندازی گردش کار حذف ماهانهSet Timestamps## حذف ماهانه Airtable<br>حذف پشتیبان‌های قدیمی‌تر از ۱ ماه
Set TimestampsSetمحاسبه تاریخ قطع برای حذفMonthly PruneList Folders
List FoldersAWS S3لیست کردن تمام پوشه‌های پشتیبان در باکت S3Set TimestampsIf
IfIfبررسی قدیمی‌تر بودن پوشه از تاریخ قطعList FoldersDelete File, NoOp
Delete FileAWS S3حذف پوشه پشتیبان قدیمیIf (شاخه True)
No Operation, do nothingNoOpجایگزین برای پوشه‌های حذف نشدهIf (شاخه False)

Nodeهای استفاده‌شده

سوالات متداول

این گردش کار n8n چه کاری انجام می‌دهد؟

این گردش کار به طور خودکار از پایگاه‌های Airtable شما پشتیبان‌گیری می‌کند، جداول را به فایل‌های CSV صادر کرده و آن‌ها را در AWS S3 آپلود می‌کند. همچنین به صورت ماهانه پشتیبان‌های قدیمی را پاکسازی کرده و پس از اتمام، اعلان‌هایی را به Slack ارسال می‌کند.

چه گره‌هایی در این گردش کار استفاده شده‌اند؟

این گردش کار از گره‌هایی مانند Schedule Trigger، Set، AWS S3، Airtable، SplitInBatches، ConvertToFile، Aggregate و Slack استفاده می‌کند.

چگونه می‌توانم این گردش کار را برای پایگاه داده Airtable خود تنظیم کنم؟

شما باید شناسه پایگاه داده Airtable خود را در گره Airtable و نام سطل S3 خود را در گره AWS S3 جایگزین کنید. همچنین نیاز به تنظیم اعتبارنامه‌های لازم برای Airtable و AWS S3 دارید.

فرآیند پاکسازی ماهانه چگونه کار می‌کند؟

فرآیند پاکسازی ماهانه تمام پوشه‌های پشتیبان در سطل S3 شما را بررسی کرده و هر پوشه‌ای که قدیمی‌تر از یک ماه باشد را حذف می‌کند تا فضای ذخیره‌سازی مدیریت شود.

workflowهای مرتبط

این workflow در کاتالوگ Axeto.ai بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.