اتصال به فضای باکت S3 از طریق ویندوز سرور و اوبونتو
در این مقاله میخوانید
سرویس ذخیرهسازی آمازون (Amazon S3) سرویسی بسیار ایمن و کارآمد است که میتوان از آن برای ذخیرهسازی تعداد نامحدودی از فایلها استفاده کرد. این قابلیت بهویژه برای منابع استاتیک وبسایتها (منابع بدون نیاز به تغییر) و اپلیکیشنهای تلفنهمراه، پشتیبانگیری و بازیابی اطلاعات، بایگانی، تجزیهوتحلیل کلاندادهها (Big Dataها) و… کاربرد دارد. نکته جذاب درباره سرویس S3 آمازون این است که مدیریت فایلها با استفاده از داشبورد کاربرپسند بسیار ساده است. در این مقاله، قصد داریم درباره اتصال به باکت S3 ازطریق فضای ابری در سیستمعامل ویندوز و لینوکس صحبت و به نکاتی اشاره کنیم که برای انجام این کار به آن نیاز خواهید داشت.
نصب باکت S3 روی ویندوز سرور 2016
نصب باکت S3 روی سیستمعامل ویندوز با مشکلات متعددی همراه است. در این مطلب، ما از rclone، ابزار خط فرمان منبعباز برای مدیریت فایلها در فضای ابری، استفاده خواهیم کرد. درادامه، مراحل انجام این کار را گامبهگام به شما آموزش خواهیم داد.
۱. سرویس فضای ابری Bucket پارس پک
درصورت تهیه سرویس باکت، مشخصات و وضعیت آن را از قسمت فضای ابری در پنل پارس پک میتوانیم مشاهده کنیم:
از قسمت جزئیات میتوانیم مشخصات اتصال به فضای ابری را بررسی کنیم:
از قسمت دامنهها نیز میتوانیم دامنهای را به فضای ابری متصل و برای اتصال از آن دامنه استفاده کنیم:
درصورت اتصال صحیح دامنه به فضای باکت، امکان فعالسازی و بررسی وضعیت گواهی امنیتی SSL از همین قسمت میسر است.
۲. راه اندازی ویندوز سرور 2016 در فضای ابری
در گام اول، باید Windows Server 2016 EC2 را با دسترسی به اینترنت و با پروفایل نمونهای راهاندازی کنیم که مجوز دسترسی به باکت S3 را به ما میدهد. برای این مثال، باکتی به نام c878579 در پارس پک تهیه کردهایم که مشخصات آن ازاینقرار است:
آدرس FTP: | FTP://c878579.parspack.net |
پورت FTP : | 21 |
آدرس مدیریتی: | c878579.parspack.net
bucket.sepehryr.ir |
نام باکت: | c878579 |
فضای مجاز: | 1,024 مگابایت |
نام کاربری (Access key): | yudODZoSzzYE4 |
کلمه عبور (Secret Key): | bXvplrQiJAkuXEDlLicaiVbRWJ8 |
برای نصب باکت S3 روی سرور داخلی ویندوز، باید با اعتبارنامه AWS کار کنیم. این موضوع اصلی مقاله حاضر نیست؛ بااینحال، توضیحات بیشتر درباره این موضوع در وبسایت رسمی آمازون به نشانی درج شده است. در گام بعدی، باید باکت S3 را روی سیستمعامل ویندوز نصب کنیم.
۳. نصب باکت S3 روی سیستم عامل ویندوز
برای این منظور، مراحل زیر را بهترتیب دنبال میکنیم:
۱. جدیدترین نسخه rclone را از این لینک دانلود و پس از اتمام دانلود، آن را از حالت فشرده خارج میکنیم.
۲. یک دایرکتوری در مسیر c:\Program Files\rclone ایجاد میکنیم و محتواهای دانلودشده را در آن قرار میدهیم و اکسترکت میکنیم:
۳. مسیر دایرکتوری اضافهشده در مرحله قبل (یعنی C:\Program Files\rclone\) را به Windows Environment Variables اضافه میکنیم. مراحل این کار بدین صورت است:
- با کلیکراست روی My PC وارد قسمت Properties میشویم.
- از قسمت Advanced System Setting، گزینه Environment Variables را انتخاب میکنیم.
- از قسمت System Variables ردیف Path را انتخاب و Edit میکنیم.
- با کلیک روی New یک Variable جدیدی تعریف میکنیم. بدینمنظور rclone را که قبلتر در مسیر c:\Program Files\rclone قرار داده بودیم، وارد میکنیم. در این صورت، با موفقیت rclone به Variableهای ویندوز اضافه شده است:
پس از انجام مراحل قبل، درصورتیکه دستور rclone را در کنسول پاورشل ویندوز تایپ کنیم، میتوانیم تمامی دستورهای موجود را ببینیم:
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. Try the new cross-platform PowerShell https://aka.ms/pscore6 PS C:\Users\pars> rclone Usage: rclone [flags] rclone [command] Available Commands: about Get quota information from the remote. authorize Remote authorization. backend Run a backend-specific command. bisync Perform bidirectional synchronization between two paths. cat Concatenates any files and sends them to stdout. check Checks the files in the source and destination match. checksum Checks the files in the source against a SUM file. cleanup Clean up the remote if possible. completion Generate the autocompletion script for the specified shell config Enter an interactive configuration session. copy Copy files from source to dest, skipping identical files. copyto Copy files from source to dest, skipping identical files. copyurl Copy url content to dest. cryptcheck Cryptcheck checks the integrity of a crypted remote. cryptdecode Cryptdecode returns unencrypted file names. dedupe Interactively find duplicate filenames and delete/rename them. delete Remove the files in path. deletefile Remove a single file from remote. genautocomplete Output completion script for a given shell. gendocs Output markdown docs for rclone to the directory supplied. hashsum Produces a hashsum file for all the objects in the path. help Show help for rclone commands, flags and backends. link Generate public link to file/folder. listremotes List all the remotes in the config file. ls List the objects in the path with size and path. lsd List all directories/containers/buckets in the path. lsf List directories and objects in remote:path formatted for parsing. lsjson List directories and objects in the path in JSON format. lsl List the objects in path with modification time, size and path. md5sum Produces an md5sum file for all the objects in the path. mkdir Make the path if it doesn't already exist. mount Mount the remote as file system on a mountpoint. move Move files from source to dest. moveto Move file or directory from source to dest. ncdu Explore a remote with a text based user interface. obscure Obscure password for use in the rclone config file. purge Remove the path and all of its contents. rc Run a command against a running rclone. rcat Copies standard input to file on remote. rcd Run rclone listening to remote control commands only. rmdir Remove the empty directory at path. rmdirs Remove empty directories under the path. selfupdate Update the rclone binary. serve Serve a remote over a protocol. settier Changes storage class/tier of objects in remote. sha1sum Produces an sha1sum file for all the objects in the path. size Prints the total size and number of objects in remote:path. sync Make source and dest identical, modifying destination only. test Run a test command touch Create new file or change file modification time. tree List the contents of the remote in a tree like fashion. version Show the version number. Use "rclone [command] --help" for more information about a command. Use "rclone help flags" for to see the global flags. Use "rclone help backends" for a list of supported services. PS C:\Users\pars>
تا اینجا، توانستهایم rclone را با موفقیت نصب کنیم. حالا با تایپ دستور rclone config، میتوانیم پیکربندی را ادامه دهیم. برای این منظور، مراحل زیر را بهترتیب طی میکنیم:
۱. با استفاده از کاراکتر n، پیکربندی ریموت را شروع میکنیم:
۲. نامی برای Connection خود انتخاب میکنیم. در این مثال، از نام pspk استفاده کردهایم:
۳. حالا باید از بین گزینههایی که در خروجی نشان داده شده است، گزینه ۵ یعنی Amazon S3 Compliant Storage Providers را انتخاب کنیم. ناگفته نماند ممکن است شماره گزینهها بین نسخههای مختلف متفاوت باشد؛ ولی باید شماره گزینه Amazon S3 انتخاب شود:
۴. درادامه، گزینه مربوط به شرکت ارائهدهنده (Provider) را باید Minio انتخاب کنیم که در این نسخه گزینه ۱۵ است:
۵. در مرحله بعد، باید Environment Variables را False یعنی گزینه ۱ انتخاب و سپس Access_key و Secret_key را وارد کنیم:
۶. در اینجا، نیازی نیست در گزینه موقعیت (Region) موردی را وارد کنیم:
۷. در مرحله بعد، آدرس باکت را باید وارد کنیم. از آدرس پیشفرض یا دامنهای که به فضای باکت اضافه کردهایم، میتوانیم استفاده کنیم. البته آدرس را بهصورت https:// وارد میکنیم:
۸. در اینجا نیز، نیازی نیست مقداری برای location_constraint وارد کنیم:
۹. گزینه acl را هم بدون واردکردن مقداری رد میکنیم:
۱۰. گزینه server_side_encryption را بدون واردکردن مقداری رد میکنیم:
۱۱. گزینه sse_kms_key_id را نیز بدون واردکردن مقداری رد میکنیم:
۱۲. در این مرحله، به تنظیمات پیشرفته نیازی نیست و گزینه No را وارد میکنیم یا بدون واردکردن هیچ مقداری Enter را میزنیم:
۱۳. درنهایت، تنظیمات انجامشده بهصورت خلاصه نمایش داده میشود و با فشردن کلید Enter یا واردکردن Y مراحل تنظیمات را بهاتمام میرسانیم:
۱۴. درادامه با واردکردن Q، از فضای rclone config خارج میشویم:
۱۵. با اجرای دستور rclone listremotes، میتوانیم فهرستی از فضاهای تعریفشده را مشاهده کنیم. در این حالت، دو فضا با نامهای ps3 و pspk تعریف کردهایم:
۱۶. برای بررسی صحت اطلاعات واردشده و اتصال به هریک از فضاها، این دستور را وارد میکنیم (نام فضای remote تعریفشده pspk و نام فضای باکت پارس پک ما c878579 است):
rclone lsf <RemoteName>:<BucketName>
که به این صورت میشود:
rclone lsf pspk:c878579
با اجرای این دستور، دایرکتوریهای فضای باکت را میتوانیم ببینیم و از اتصال صحیح به فضای باکت مطمئن شویم. در این حالت، استفاده از فضای باکت کمی دشوار است. بهمنظور راحتترکردن نحوه استفاده از آن، میتوانیم از این فضا بهعنوان درایو هارد استفاده کنیم. درادامه، قصد داریم این عملیات را باهم انجام دهیم.
برای Mountکردن فضای باکت به سیستمعامل ویندوز، به نصب winfsp نیاز داریم. درواقع، winfsp نوعی پروکسی سیستم فایل منبعباز برای ویندوز است که نوشتن فایل سیستمهای مربوط به محیط کاربر را در ویندوز ساده میکند. همچنین، winfsp لایه شبیهسازی FUSE را فراهم میکند که rclone در ترکیب با cgofuse از آن بهره میبرد. بنابراین، برای اینکه این پیغام خطا را رفع کنیم، باید winfsp-1.7.20172.msi را دانلود و نصب کنیم. این نرمافزار را میتوانیم ازطریق این لینک دانلود کنیم.
۱۷. درادامه در Powershell ویندوز، دستور rclone mount را برای مانتکردن فضای باکت به ویندوز بدینصورت اجرا میکنیم:
rclone mount <RemoteName>:<BucketName> <WindowsDrive>: --vfs-cache-mode full
که برای این مثال بهصورت زیر است:
rclone mount pspk:c878579 S: --vfs-cache-mode full
اکنون اگر Mypc را مشاهده کنیم، درایو جدیدی با نام S ایجاد شده است:
با بازکردن این فضا، میتوانیم محتویات آن را مانند سایر درایورهای معمولی ببینیم:
۴. خودکارسازی تمامی فرایندها
اگرچه تاکنون ظاهراً همهچیز بهدرستی انجام شده است، هنوز خودکارسازی فرایندها را انجام ندادهایم. بهعبارتدیگر، در هر بار شروع باید از همان دستور اولیه استفاده کنیم؛ اما برای رفع این مشکل میتوانیم از قابلیت Task Scheduler ویندوز استفاده کنیم.
با استفاده از دستورهای زیر در PowerShell، میتوانیم دستور rclone را در تسکهای زمانبندیشده ویندوز اضافه کنیم. فراموش نکنید که برای اجرای این دستورها به دسترسی Administrator نیاز داریم. برای این منظور با کلیکراست روی PowerShell، Run As Administrator را انتخاب میکنیم:
PS C:\Windows\system32> Start-ScheduledTask -TaskName "pspk" PS C:\Windows\system32> PS C:\Windows\system32> PS C:\Windows\system32> PS C:\Windows\system32> $time = New-ScheduledTaskTrigger -AtStartup PS C:\Windows\system32> $action = New-ScheduledTaskAction -Execute PowerShell.exe -Argument '-WindowStyle Hidden -Command "rclone mount pspk:c878579 S: --vfs-cache-mode full"' PS C:\Windows\system32> $setting = New-ScheduledTaskSettingsSet -ExecutionTimeLimit 0 PS C:\Windows\system32> Register-ScheduledTask -TaskName "pspk" -Action $action -RunLevel Highest -Trigger $time -Settings $setting TaskPath TaskName State -------- -------- ----- \ pspk Ready PS C:\Windows\system32> Start-ScheduledTask -TaskName "pspk"
درصورتیکه در Task Scheduler ویندوز فهرست تسکها را بررسی کنیم، تسک اضافهشده را با نام pspk میتوانیم مشاهده کنیم:
فضای ذخیره سازی ابری چیست؟ چند نوع ذخیره سازی ابری وجود دارد؟ هر کدام از آنها چه کاربردی دارند؟ در مقاله زیر بخوانید.
نصب باکت S3 روی توزیع اوبونتو 20.04 با استفاده از rclone
خوشبختانه نصب باکت S3 روی لینوکس بسیار سادهتر از ویندوز است. بهترین راهکار برای این منظور، استفاده از s3fs است که هم در لینوکس و هم در macOS به ما امکان میدهد تا باکت S3 را ازطریق FUSE نصب کنیم. دیگر مزیت استفاده از s3fs این است که امکان استفاده از ابزارهای دیگر مانند AWS CLI را فراهم میکند.
سرویس rclone برای توزیعهای مختلف لینوکس هم موجود است و بهراحتی میتوان آن را نصب کرد. سایر دستورهای آن نیز مانند دستورهای ویندوز است و بهراحتی میتوان آن را کانفیگ کرد. درادامه، در سرور لینوکس Ubuntu 20.04 این فضا را نصب و کانفیگ میکنیم:
# apt update # apt install rclone
# rclone config 2023/01/30 21:48:46 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults No remotes found - make a new one n) New remote s) Set configuration password q) Quit config n/s/q> n name> pspk
Type of storage to configure. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc) \ "s3" Storage> 4 ** See help for s3 backend at: https://rclone.org/s3/ **
Choose your S3 provider. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 7 / Minio Object Storage \ "Minio" provider> 7 Get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars). Only applies if access_key_id and secret_access_key is blank. Enter a boolean value (true or false). Press Enter for the default ("false"). Choose a number from below, or type in your own value 1 / Enter AWS credentials in the next step \ "false" env_auth> 1
AWS Access Key ID. Leave blank for anonymous access or runtime credentials. Enter a string value. Press Enter for the default (""). access_key_id> yudODZoczDSzzYE4 AWS Secret Access Key (password) Leave blank for anonymous access or runtime credentials. Enter a string value. Press Enter for the default (""). secret_access_key> bXvplrQiJAkuXRwzp3EDlLicaiVbRWJ8
Region to connect to. Leave blank if you are using an S3 clone and you don't have a region. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / Use this if unsure. Will use v4 signatures and an empty region. \ "" 2 / Use this only if v4 signatures don't work, eg pre Jewel/v10 CEPH. \ "other-v2-signature" region>
Endpoint for S3 API. Required when using an S3 clone. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value endpoint> https://c878579.parspack.net
Location constraint - must be set to match the Region. Leave blank if not sure. Used when creating buckets only. Enter a string value. Press Enter for the default (""). location_constraint>
Canned ACL used when creating buckets and storing or copying objects. This ACL is used for creating objects and if bucket_acl isn't set, for creating buckets too. For more info visit https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl Note that this ACL is applied when server side copying objects as S3 doesn't copy the ACL from the source but rather writes a fresh one. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value acl>
Edit advanced config? (y/n) y) Yes n) No y/n> n Remote config -------------------- [pspk] provider = Minio env_auth = false access_key_id = yudODZoczDSzzYE4 secret_access_key = bXvplrQiJAkuXRwzp3EDlLicaiVbRWJ8 endpoint = https://c878579.parspack.net -------------------- y) Yes this is OK e) Edit this remote d) Delete this remote y/e/d> y Current remotes: Name Type ==== ==== pspk s3 e) Edit existing remote n) New remote d) Delete remote r) Rename remote c) Copy remote s) Set configuration password q) Quit config e/n/d/r/c/s/q> q
درنهایت با اجرای دستور rclone lsf، از اتصال صحیح به فضای باکت مطمئن میشویم (با این دستور محتویات فضای باکت را میتوانیم ببینیم):
# rclone lsf pspk:c878579 .bash_history downloads/ fortest/ parspack/ pary/ sepehr/ site/ upload/
برای Mountکردن فضای باکت، ابتدا مسیر دلخواه ایجاد میکنیم:
# mkdir /mnt/pspk
سپس، کافی است دستور rclone mount را بهصورت زیر اجرا کنیم:
(rclone mount remote:path/to/files /path/to/local/mount) # rclone mount pspk:c878579 /mnt/pspk
درادامه، ترمینال دیگری را باز و مسیر مانتشده را بررسی میکنیم. درصورت درستبودن تنظیمات، محتویات فضای باکت را میتوانیم مشاهده کنیم:
# ls -lah /mnt/pspk/ total 1.0K -rw-r--r-- 1 root root 863 Dec 2 16:53 .bash_history drwxr-xr-x 1 root root 0 Jan 30 22:04 downloads drwxr-xr-x 1 root root 0 Jan 30 22:04 fortest drwxr-xr-x 1 root root 0 Jan 30 22:04 parspack drwxr-xr-x 1 root root 0 Jan 30 22:04 pary drwxr-xr-x 1 root root 0 Jan 30 22:04 sepehr drwxr-xr-x 1 root root 0 Jan 30 22:04 site drwxr-xr-x 1 root root 0 Jan 30 22:04 upload
معرفی فضای ابری پارس پک و راهنمای خرید و اتصال به آن از طریق پنل کاربری و AWS SDK را در مقاله زیر بخوانید.
نصب باکت S3 روی توزیع اوبونتو 20.04 با استفاده از s3fs
در این مثال، قصد داریم تا باکت S3 را روی توزیع Ubuntu 20.04 با همان پروفایل اشارهشده در ویندوز نصب کنیم.
برای این منظور از دستورهای زیر استفاده میکنیم. هنگامیکه نمونه مدنظر راهاندازی و اجرا شد، تنها سه گام دیگر برای اتمام این فرایند موردنیاز است:
- نصب s3fs با استفاده از apt
- ایجاد دایرکتوری در مسیر mnt/s3
- نصب باکت S3 روی دایرکتوری ایجادشده
این سه فرایند را با استفاده از کدهای زیر میتوان انجام داد:
apt-get install -y s3fs mkdir /mnt/s3 s3fs tmp-prenard /mnt/s3 -o iam_role
با اجرای دستور ls نیز میتوانیم فایل قبلاً ایجادشده را مشاهده کنیم:
$ ls /mnt/s3/ hello_world.txt
جمعبندی
S3 نوعی سرویس ذخیرهسازی محسوب میشود که آمازون آن را ارائه داده است. استفاده از این سرویس بهدلیل امنیت و کارایی فراوانش بسیار محبوب است. باوجوداین، یکی از مشکلات کاربران برای استفاده از این سرویس اتصال به باکت است؛ بههمیندلیل، این مقاله از بلاگ پارس پک را به اتصال S3 به باکت ازطریق فضای ابری اختصاص و نحوه انجام این کار در سیستمعامل ویندوز و توزیع اوبونتو را بهطورکامل توضیح دادیم.
سؤالات متداول
۱. S3 چیست؟
Amazon S3 یا Amazon Simple Storage Service را وبسرویس آمازون ارائه میدهد و امکان ذخیرهسازی فایلها بدون محدودیت در تعداد را برای کاربران فراهم میکند.
۲. سرویس S3 چه کاربردی دارد؟
S3 آمازون سرویسی است که امکان ذخیرهسازی ایمن و با عملکرد بالا را برای کاربران بهارمغان میآورد. شما میتوانید در هرزمان و هرمکان از Amazon S3 برای ذخیرهسازی هر مقدار داده استفاده کنید.
۳. باکت S3 چیست؟
باکت S3 را میتوان به ظرفی تشبیه کرد که اطلاعات شما در آن قرار خواهد گرفت.
۴. چه تعداد باکت را میتوان روی هر حساب S3 قرار داد؟
شما میتوانید ۱۰۰ باکت را در حساب خود داشته باشید. گفتنی است قرارگیری فایلها در هر باکت محدودیتی ندارد.