
پشتیبانگیری خودکار Airtable به AWS S3 با n8n
10 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۲۷
دانلود workflow
فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.
- فایل JSON را دانلود کنید.
- در n8n: Workflows → Import from File.
- Credentialهای هر node را متصل کنید.
- 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 Backup | Schedule Trigger | راهاندازی گردش کار پشتیبانگیری هفتگی | — | Set Week | ## پشتیبانگیری هفتگی Airtable<br>هر هفته تمام جداول یک پایگاه داده Airtable را در یک پوشه فرعی اختصاصی هفتگی در S3 پشتیبانگیری کنید. پس از اتمام اطلاعرسانی کنید. |
Set Week | Set | تعریف نام پوشه هفته جاری | Weekly Backup | Create Folder | |
Create Folder | AWS S3 | ایجاد پوشه S3 برای هفته جاری | Set Week | Airtable | |
Airtable | Airtable | دریافت شمای پایگاه داده (لیست جداول) | Create Folder | Loop Over Items | |
Loop Over Items | SplitInBatches | پردازش هر جدول به صورت جداگانه | Airtable | Aggregate, Create Table Metadata | |
Create Table Metadata | Set | پاکسازی نام جدول و استخراج فراداده | Loop Over Items | Pull Records | |
Pull Records | Airtable | واکشی رکوردهای جدول فعلی | Create Table Metadata | Convert to File | |
Convert to File | ConvertToFile | تبدیل JSON رکوردها به فایل CSV | Pull Records | AWS S3 | |
AWS S3 | AWS S3 | آپلود فایلهای CSV در باکت S3 | Convert to File | Loop Over Items | |
Aggregate | Aggregate | تجمیع خروجیهای دسته برای اطلاعرسانی | Loop Over Items | Slack | |
Slack | Slack | ارسال اطلاعرسانی اتمام به Slack | Aggregate | — | |
Monthly Prune | Schedule Trigger | راهاندازی گردش کار حذف ماهانه | — | Set Timestamps | ## حذف ماهانه Airtable<br>حذف پشتیبانهای قدیمیتر از ۱ ماه |
Set Timestamps | Set | محاسبه تاریخ قطع برای حذف | Monthly Prune | List Folders | |
List Folders | AWS S3 | لیست کردن تمام پوشههای پشتیبان در باکت S3 | Set Timestamps | If | |
If | If | بررسی قدیمیتر بودن پوشه از تاریخ قطع | List Folders | Delete File, NoOp | |
Delete File | AWS S3 | حذف پوشه پشتیبان قدیمی | If (شاخه True) | — | |
No Operation, do nothing | NoOp | جایگزین برای پوشههای حذف نشده | 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های مرتبط
- پاسخ خودکار به سوالات GitHub PR با GPT-4o، Notion و SlackEngineering
- خودکارسازی بهروزرسانی n8n با Coolify و API گیتهابDevOps
- اتوماسیون جستجوی لینکدین با GPT-4 و جستجوی بولی گوگلHR
- اتوماسیون خلاصهسازی جلسات با Google Drive و OpenAIAI
- تغییر نام خودکار گرههای n8n با هوش مصنوعیEngineering
- حسابرسی استفاده از اعتبارنامهها در n8n و ارسال به Google Sh…DevOps
