په S3 آبجیکٹ ذخیره کې د ویب هکس پراساس د پیښې پرمخ وړونکي غوښتنلیک بیلګه Mail.ru کلاوډ حلونه

په S3 آبجیکٹ ذخیره کې د ویب هکس پراساس د پیښې پرمخ وړونکي غوښتنلیک بیلګه Mail.ru کلاوډ حلونه
د روب گولډبرګ کافي ماشین

د پیښې پرمخ وړل شوي جوړښت د کارول شوي سرچینو لګښت موثریت ډیروي ځکه چې دوی یوازې هغه وخت کارول کیږي کله چې ورته اړتیا وي. د دې پلي کولو څرنګوالي په اړه ډیری اختیارونه شتون لري او د کارګر غوښتنلیکونو په توګه اضافي کلاوډ ادارې رامینځته نه کړئ. او نن به زه د FaaS په اړه نه، مګر د ویب هکسونو په اړه وغږیږم. زه به د شیانو ذخیره کولو ویب هکسونو په کارولو سره د پیښو اداره کولو لپاره د ښوونې مثال وښایم.

د شیانو ذخیره کولو او ویب هکسونو په اړه یو څو ټکي. د آبجیکٹ ذخیره تاسو ته اجازه درکوي په بادل کې هر ډول ډاټا د شیانو په بڼه ذخیره کړئ، د S3 یا بل API له لارې د لاسرسي وړ (د تطبیق پورې اړه لري) د HTTP/HTTPS له لارې. ویب هکس عموما دودیز HTTP کال بیکونه دي. دوی عموما د یوې پیښې لخوا رامینځته کیږي، لکه کوډ چې ذخیره ته لیږدول کیږي یا په بلاګ کې یو تبصره پوسټ کیږي. کله چې پیښه رامنځ ته شي، اصلي سایټ د ویب هک لپاره ټاکل شوي URL ته د HTTP غوښتنه لیږي. د پایلې په توګه، تاسو کولی شئ په یوه سایټ کې پیښې په بل کې د کړنو محرک کړئ (ويکي). په هغه حالت کې چې د سرچینې سایټ د اعتراض ذخیره وي، پیښې د هغې مینځپانګې ته د بدلون په توګه عمل کوي.

د ساده قضیو مثالونه کله چې دا ډول اتومات کارول کیدی شي:

  1. په بل کلاوډ ذخیره کې د ټولو شیانو کاپي جوړول. کاپي باید په الوتنه کې رامینځته شي کله چې فایلونه اضافه یا بدل شي.
  2. د ګرافیک فایلونو د تمبیلونو لړۍ اتوماتیک رامینځته کول ، په عکسونو کې د واټر مارکونو اضافه کول ، او د عکس نور بدلونونه.
  3. د نوي اسنادو د رارسیدو په اړه خبرتیا (د بیلګې په توګه، د توزیع شوي محاسبې خدمت بادل ته راپورونه اپلوډ کوي، او مالي څارنه د نوي راپورونو په اړه خبرتیاوې ترلاسه کوي، چک او تحلیل کوي).
  4. یو څه پیچلې قضیې شاملې دي، د بیلګې په توګه، کوبرنیټس ته د غوښتنې رامینځته کول، کوم چې د اړین کانټینرونو سره پوډ جوړوي، د کار پیرامیټونه یې لیږدوي، او د پروسس کولو وروسته کانټینر سقوط کوي.

د مثال په توګه، موږ به د ټاسک 1 یو ډول جوړ کړو، کله چې د Mail.ru کلاوډ حلونو (MCS) د آبجیکٹ ذخیره کولو بالټ کې بدلونونه د ویب هکس په کارولو سره د AWS آبجیکٹ ذخیره کې همغږي کیږي. په ریښتیني بار شوي قضیه کې ، غیر متناسب کار باید په کتار کې د ویب هکسونو ثبتولو سره چمتو شي ، مګر د روزنې دندې لپاره به موږ له دې پرته پلي کوو.

کاري پلان

د تعامل پروتوکول په تفصیل سره تشریح شوی په MCS کې د S3 ویب هکس لارښود. د کار سکیم لاندې عناصر لري:

  • د خپرولو خدمت، کوم چې د S3 ذخیره کولو اړخ کې دی او د HTTP غوښتنې خپروي کله چې ویب هوک پیل شي.
  • د ویب هک ترلاسه کولو سرور، کوم چې د HTTP خپرولو خدمت څخه غوښتنې اوري او مناسب عملونه ترسره کوي. سرور په هره ژبه لیکل کیدی شي؛ زموږ په مثال کې، موږ به سرور په Go کې ولیکو.

په S3 API کې د ویب هکونو پلي کولو یوه ځانګړې ځانګړتیا د خپرولو خدمت کې د ویب هک ترلاسه کونکي سرور ثبت کول دي. په ځانګړې توګه، د ویب هک ترلاسه کونکي سرور باید د خپرولو خدمت څخه پیغامونو ته د ګډون تصدیق وکړي (په نورو ویب هک تطبیقونو کې، د ګډون تایید معمولا اړتیا نلري).

په دې اساس، د ویب هک ترلاسه کونکي سرور باید د دوه اصلي عملیاتو ملاتړ وکړي:

  • د نوم لیکنې تصدیق کولو لپاره د خپرونې خدمت غوښتنې ته ځواب ووایی،
  • د راتلونکو پیښو پروسس کول.

د ویب هک ترلاسه کولو سرور نصب کول

د ویب هک ترلاسه کونکي سرور چلولو لپاره ، تاسو د لینکس سرور ته اړتیا لرئ. په دې مقاله کې، د مثال په توګه، موږ یو مجازی مثال کاروو چې موږ په MCS کې ځای پرځای کوو.

راځئ چې اړین سافټویر نصب کړو او د ویب هک ترلاسه کولو سرور پیل کړو.

ubuntu@ubuntu-basic-1-2-10gb:~$ sudo apt-get install git
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  bc dns-root-data dnsmasq-base ebtables landscape-common liblxc-common 
liblxc1 libuv1 lxcfs lxd lxd-client python3-attr python3-automat 
python3-click python3-constantly python3-hyperlink
  python3-incremental python3-pam python3-pyasn1-modules 
python3-service-identity python3-twisted python3-twisted-bin 
python3-zope.interface uidmap xdelta3
Use 'sudo apt autoremove' to remove them.
Suggested packages:
  git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui 
gitk gitweb git-cvs git-mediawiki git-svn
The following NEW packages will be installed:
  git
0 upgraded, 1 newly installed, 0 to remove and 46 not upgraded.
Need to get 3915 kB of archives.
After this operation, 32.3 MB of additional disk space will be used.
Get:1 http://MS1.clouds.archive.ubuntu.com/ubuntu bionic-updates/main 
amd64 git amd64 1:2.17.1-1ubuntu0.7 [3915 kB]
Fetched 3915 kB in 1s (5639 kB/s)
Selecting previously unselected package git.
(Reading database ... 53932 files and directories currently installed.)
Preparing to unpack .../git_1%3a2.17.1-1ubuntu0.7_amd64.deb ...
Unpacking git (1:2.17.1-1ubuntu0.7) ...
Setting up git (1:2.17.1-1ubuntu0.7) ...

فولډر د ویب هک ترلاسه کونکي سرور سره کلون کړئ:

ubuntu@ubuntu-basic-1-2-10gb:~$ git clone
https://github.com/RomanenkoDenys/s3-webhook.git
Cloning into 's3-webhook'...
remote: Enumerating objects: 48, done.
remote: Counting objects: 100% (48/48), done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 114 (delta 20), reused 45 (delta 18), pack-reused 66
Receiving objects: 100% (114/114), 23.77 MiB | 20.25 MiB/s, done.
Resolving deltas: 100% (49/49), done.

راځئ چې سرور پیل کړو:

ubuntu@ubuntu-basic-1-2-10gb:~$ cd s3-webhook/
ubuntu@ubuntu-basic-1-2-10gb:~/s3-webhook$ sudo ./s3-webhook -port 80

د خپرونې خدمت کې ګډون وکړئ

تاسو کولی شئ خپل ویب هک ترلاسه کونکي سرور د API یا ویب انٹرفیس له لارې ثبت کړئ. د سادګۍ لپاره، موږ به د ویب انٹرفیس له لارې راجستر کړو:

  1. راځئ چې د بالټ برخې ته لاړ شو په کنټرول خونه کې.
  2. بالټ ته لاړ شئ د کوم لپاره چې موږ به ویب هکونه تنظیم کړو او په ګیر کلیک وکړئ:

په S3 آبجیکٹ ذخیره کې د ویب هکس پراساس د پیښې پرمخ وړونکي غوښتنلیک بیلګه Mail.ru کلاوډ حلونه

د Webhooks ټب ته لاړ شئ او په Add کلیک وکړئ:

په S3 آبجیکٹ ذخیره کې د ویب هکس پراساس د پیښې پرمخ وړونکي غوښتنلیک بیلګه Mail.ru کلاوډ حلونه
ساحې ډک کړئ:

په S3 آبجیکٹ ذخیره کې د ویب هکس پراساس د پیښې پرمخ وړونکي غوښتنلیک بیلګه Mail.ru کلاوډ حلونه

ID - د ویب هک نوم.

پیښه - کوم پیښې چې لیږدول کیږي. موږ د ټولو پیښو لیږد تنظیم کړی چې پیښیږي کله چې د فایلونو سره کار کوي (زیاتول او حذف کول).

URL - ویب هک د سرور پته ترلاسه کوي.

د فلټر مخفف/سفیکس یو فلټر دی چې تاسو ته اجازه درکوي یوازې د شیانو لپاره ویب هکسونه رامینځته کړئ چې نومونه یې د ځانګړي مقرراتو سره سمون لري. د مثال په توګه، د ویب هک لپاره د دې لپاره چې یوازې د .png توسیع سره فایلونه متحرک کړي، په کې د فلټر ضمیمه تاسو اړتیا لرئ "png" ولیکئ.

اوس مهال، یوازې 80 او 443 بندرونه د ویب هک ترلاسه کونکي سرور ته د لاسرسي لپاره ملاتړ کیږي.

راځئ چې کلیک وکړو هک اضافه کړئ او موږ به لاندې وګورو:

په S3 آبجیکٹ ذخیره کې د ویب هکس پراساس د پیښې پرمخ وړونکي غوښتنلیک بیلګه Mail.ru کلاوډ حلونه
هوک زیاته کړه.

د ویب هک ترلاسه کونکي سرور په خپلو لاګونو کې د هک راجسټریشن پروسې پرمختګ ښیې:

ubuntu@ubuntu-basic-1-2-10gb:~/s3-webhook$ sudo ./s3-webhook -port 80
2020/06/15 12:01:14 [POST] incoming HTTP request from 
95.163.216.92:42530
2020/06/15 12:01:14 Got timestamp: 2020-06-15T15:01:13+03:00 TopicArn: 
mcs5259999770|myfiles-ash|s3:ObjectCreated:*,s3:ObjectRemoved:* Token: 
E2itMqAMUVVZc51pUhFWSp13DoxezvRxkUh5P7LEuk1dEe9y URL: 
http://89.208.199.220/webhook
2020/06/15 12:01:14 Generate responce signature: 
3754ce36636f80dfd606c5254d64ecb2fd8d555c27962b70b4f759f32c76b66d

نوم لیکنه بشپړه شوه. په راتلونکې برخه کې، موږ به د ویب هک ترلاسه کونکي سرور عملیات الګوریتم ته نږدې کتنه وکړو.

د ویب هک ترلاسه کونکي سرور توضیحات

زموږ په مثال کې، سرور په Go کې لیکل شوی. راځئ چې د هغې د عملیاتو اساسي اصول وګورو.

package main

// Generate hmac_sha256_hex
func HmacSha256hex(message string, secret string) string {
}

// Generate hmac_sha256
func HmacSha256(message string, secret string) string {
}

// Send subscription confirmation
func SubscriptionConfirmation(w http.ResponseWriter, req *http.Request, body []byte) {
}

// Send subscription confirmation
func GotRecords(w http.ResponseWriter, req *http.Request, body []byte) {
}

// Liveness probe
func Ping(w http.ResponseWriter, req *http.Request) {
    // log request
    log.Printf("[%s] incoming HTTP Ping request from %sn", req.Method, req.RemoteAddr)
    fmt.Fprintf(w, "Pongn")
}

//Webhook
func Webhook(w http.ResponseWriter, req *http.Request) {
}

func main() {

    // get command line args
    bindPort := flag.Int("port", 80, "number between 1-65535")
    bindAddr := flag.String("address", "", "ip address in dot format")
    flag.StringVar(&actionScript, "script", "", "external script to execute")
    flag.Parse()

    http.HandleFunc("/ping", Ping)
    http.HandleFunc("/webhook", Webhook)

log.Fatal(http.ListenAndServe(*bindAddr+":"+strconv.Itoa(*bindPort), nil))
}

اصلي دندې په پام کې ونیسئ:

  • Ping() - یوه لاره چې د URL/ping له لارې ځواب ورکوي، د ژوندانه تحقیقاتو ساده پلي کول.
  • Webhook() - اصلي لاره، URL/webhook سمبالونکی:
    • د خپرونې خدمت کې راجسټریشن تاییدوي (د ګډون تصدیق فعالیت ته لاړ شئ)
    • د راتلوونکي ویب هکس پروسس کوي (د ګورکورډ فعالیت).
  • فنکشنونه HmacSha256 او HmacSha256hex د HMAC-SHA256 او HMAC-SHA256 کوډ کولو الګوریتم پلي کول دي چې د نښان محاسبه کولو لپاره د هیکساډیسیمل شمیرو د تار په توګه محصول لري.
  • main اصلي دنده ده، د کمانډ لاین پیرامیټونه پروسس کوي او د URL هینډلر راجستر کوي.

د کمانډ لاین پیرامیټونه د سرور لخوا منل شوي:

  • -پورټ هغه بندر دی چې سرور به یې اوري.
  • -address - IP پته چې سرور به یې اوري.
  • -سکریپټ یو بهرنی برنامه ده چې د هر راتلونکي هک لپاره ویل کیږي.

راځئ چې ځینې دندو ته نږدې وګورو:

//Webhook
func Webhook(w http.ResponseWriter, req *http.Request) {

    // Read body
    body, err := ioutil.ReadAll(req.Body)
    defer req.Body.Close()
    if err != nil {
        http.Error(w, err.Error(), 500)
        return
    }

    // log request
    log.Printf("[%s] incoming HTTP request from %sn", req.Method, req.RemoteAddr)
    // check if we got subscription confirmation request
    if strings.Contains(string(body), 
""Type":"SubscriptionConfirmation"") {
        SubscriptionConfirmation(w, req, body)
    } else {
        GotRecords(w, req, body)
    }

}

دا فنکشن مشخص کوي چې ایا د راجسټریشن تصدیق کولو غوښتنه یا ویب هک راغلی دی. لکه څنګه چې په لاندې ډول دي اسناد، که نوم لیکنه تایید شي ، لاندې Json جوړښت د پوسټ غوښتنې کې ترلاسه کیږي:

POST http://test.com HTTP/1.1
x-amz-sns-messages-type: SubscriptionConfirmation
content-type: application/json

{
    "Timestamp":"2019-12-26T19:29:12+03:00",
    "Type":"SubscriptionConfirmation",
    "Message":"You have chosen to subscribe to the topic $topic. To confirm the subscription you need to response with calculated signature",
    "TopicArn":"mcs2883541269|bucketA|s3:ObjectCreated:Put",
    "SignatureVersion":1,
    "Token":«RPE5UuG94rGgBH6kHXN9FUPugFxj1hs2aUQc99btJp3E49tA»
}

دې پوښتنې ته باید ځواب ورکړل شي:

content-type: application/json

{"signature":«ea3fce4bb15c6de4fec365d36bcebbc34ccddf54616d5ca12e1972f82b6d37af»}

چیرې چې لاسلیک محاسبه کیږي:

signature = hmac_sha256(url, hmac_sha256(TopicArn, 
hmac_sha256(Timestamp, Token)))

که یو ویب هک راشي، د پوسټ غوښتنې جوړښت داسې ښکاري:

POST <url> HTTP/1.1
x-amz-sns-messages-type: SubscriptionConfirmation

{ "Records":
    [
        {
            "s3": {
                "object": {
                    "eTag":"aed563ecafb4bcc5654c597a421547b2",
                    "sequencer":1577453615,
                    "key":"some-file-to-bucket",
                    "size":100
                },
            "configurationId":"1",
            "bucket": {
                "name": "bucketA",
                "ownerIdentity": {
                    "principalId":"mcs2883541269"}
                },
                "s3SchemaVersion":"1.0"
            },
            "eventVersion":"1.0",
            "requestParameters":{
                "sourceIPAddress":"185.6.245.156"
            },
            "userIdentity": {
                "principalId":"2407013e-cbc1-415f-9102-16fb9bd6946b"
            },
            "eventName":"s3:ObjectCreated:Put",
            "awsRegion":"ru-msk",
            "eventSource":"aws:s3",
            "responseElements": {
                "x-amz-request-id":"VGJR5rtJ"
            }
        }
    ]
}

په دې اساس، د غوښتنې پورې اړه لري، تاسو اړتیا لرئ پوه شئ چې د معلوماتو پروسس کولو څرنګوالی. ما ننوت د شاخص په توګه غوره کړ "Type":"SubscriptionConfirmation"، ځکه چې دا د ګډون تصدیق غوښتنې کې شتون لري او په ویب هک کې شتون نلري. د POST په غوښتنه کې د دې ننوتلو شتون/نه شتون پراساس، د پروګرام نور اجرا کول یا هم فعالیت ته ځي SubscriptionConfirmation، یا په فعالیت کې GotRecords.

موږ به د ګډون تصدیق فعالیت په تفصیل سره په پام کې ونیسو؛ دا د اصولو سره سم پلي کیږي اسناد. تاسو کولی شئ د دې فنکشن لپاره د سرچینې کوډ وګورئ د پروژې git ذخیره.

د GotRecords فنکشن راتلونکی غوښتنه پارس کوي او د هر ریکارډ اعتراض لپاره یو بهرنی سکریپټ غږوي (د کوم نوم چې په -script پیرامیټر کې تیر شوی و) د پیرامیټونو سره:

  • د بالټ نوم
  • د څیز کیلي
  • عمل:
    • کاپي - که په اصلي غوښتنه کې وي EventName = ObjectCreated | PutObject | PutObjectCopy
    • حذف - که په اصلي غوښتنه کې EventName = ObjectRemoved | آبجیکٹ حذف کړئ

په دې توګه، که یو هک د پوسټ غوښتنې سره راشي، لکه څنګه چې تشریح شوي د لوړو، او پیرامیټر -script=script.sh نو سکریپټ به په لاندې ډول ویل کیږي:

script.sh  bucketA some-file-to-bucket copy

دا باید پوه شي چې د دې ویب هک ترلاسه کولو سرور د بشپړ تولید حل نه دی، مګر د ممکنه پلي کولو ساده مثال دی.

د کار بېلګه

راځئ چې فایلونه په MCS کې د اصلي بالټ څخه په AWS کې بیک اپ بالټ سره همغږي کړو. اصلي بالټ ته د myfiles-ash په نوم یادیږي، بیک اپ یو ته myfiles-backup ویل کیږي (په AWS کې د بالټ ترتیب د دې مقالې له دائرې څخه بهر دی). په دې اساس، کله چې یو فایل په اصلي بالټ کې کیښودل شي، د هغې کاپي باید په بیک اپ کې ښکاره شي، او کله چې دا له اصلي څخه حذف شي، دا باید په بیک اپ کې حذف شي.

موږ به د awscli افادیت په کارولو سره د بالټونو سره کار وکړو، کوم چې د MCS کلاوډ ذخیره او AWS کلاوډ ذخیره دواړه سره مطابقت لري.

ubuntu@ubuntu-basic-1-2-10gb:~$ sudo apt-get install awscli
Reading package lists... Done
Building dependency tree
Reading state information... Done
After this operation, 34.4 MB of additional disk space will be used.
Unpacking awscli (1.14.44-1ubuntu1) ...
Setting up awscli (1.14.44-1ubuntu1) ...

راځئ چې S3 MCS API ته لاسرسی تنظیم کړو:

ubuntu@ubuntu-basic-1-2-10gb:~$ aws configure --profile mcs
AWS Access Key ID [None]: hdywEPtuuJTExxxxxxxxxxxxxx
AWS Secret Access Key [None]: hDz3SgxKwXoxxxxxxxxxxxxxxxxxx
Default region name [None]:
Default output format [None]:

راځئ چې د AWS S3 API ته لاسرسی تنظیم کړو:

ubuntu@ubuntu-basic-1-2-10gb:~$ aws configure --profile aws
AWS Access Key ID [None]: AKIAJXXXXXXXXXXXX
AWS Secret Access Key [None]: dfuerphOLQwu0CreP5Z8l5fuXXXXXXXXXXXXXXXX
Default region name [None]:
Default output format [None]:

راځئ چې لاسرسی وګورو:

AWS ته:

ubuntu@ubuntu-basic-1-2-10gb:~$ aws s3 ls --profile aws
2020-07-06 08:44:11 myfiles-backup

د MCS لپاره، کله چې کمانډ چلول تاسو اړتیا لرئ اضافه کړئ —endpoint-url:

ubuntu@ubuntu-basic-1-2-10gb:~$ aws s3 ls --profile mcs --endpoint-url 
https://hb.bizmrg.com
2020-02-04 06:38:05 databasebackups-0cdaaa6402d4424e9676c75a720afa85
2020-05-27 10:08:33 myfiles-ash

لاسرسی.

اوس راځئ چې د راتلوونکي هک پروسس کولو لپاره سکریپټ ولیکو، راځئ چې ورته s3_backup_mcs_aws.sh ووایو

#!/bin/bash
# Require aws cli
# if file added — copy it to backup bucket
# if file removed — remove it from backup bucket
# Variables
ENDPOINT_MCS="https://hb.bizmrg.com"
AWSCLI_MCS=`which aws`" --endpoint-url ${ENDPOINT_MCS} --profile mcs s3"
AWSCLI_AWS=`which aws`" --profile aws s3"
BACKUP_BUCKET="myfiles-backup"

SOURCE_BUCKET=""
SOURCE_FILE=""
ACTION=""

SOURCE="s3://${SOURCE_BUCKET}/${SOURCE_FILE}"
TARGET="s3://${BACKUP_BUCKET}/${SOURCE_FILE}"
TEMP="/tmp/${SOURCE_BUCKET}/${SOURCE_FILE}"

case ${ACTION} in
    "copy")
    ${AWSCLI_MCS} cp "${SOURCE}" "${TEMP}"
    ${AWSCLI_AWS} cp "${TEMP}" "${TARGET}"
    rm ${TEMP}
    ;;

    "delete")
    ${AWSCLI_AWS} rm ${TARGET}
    ;;

    *)
    echo "Usage: 
#!/bin/bash
# Require aws cli
# if file added — copy it to backup bucket
# if file removed — remove it from backup bucket
# Variables
ENDPOINT_MCS="https://hb.bizmrg.com"
AWSCLI_MCS=`which aws`" --endpoint-url ${ENDPOINT_MCS} --profile mcs s3"
AWSCLI_AWS=`which aws`" --profile aws s3"
BACKUP_BUCKET="myfiles-backup"
SOURCE_BUCKET="${1}"
SOURCE_FILE="${2}"
ACTION="${3}"
SOURCE="s3://${SOURCE_BUCKET}/${SOURCE_FILE}"
TARGET="s3://${BACKUP_BUCKET}/${SOURCE_FILE}"
TEMP="/tmp/${SOURCE_BUCKET}/${SOURCE_FILE}"
case ${ACTION} in
"copy")
${AWSCLI_MCS} cp "${SOURCE}" "${TEMP}"
${AWSCLI_AWS} cp "${TEMP}" "${TARGET}"
rm ${TEMP}
;;
"delete")
${AWSCLI_AWS} rm ${TARGET}
;;
*)
echo "Usage: ${0} sourcebucket sourcefile copy/delete"
exit 1
;;
esac
sourcebucket sourcefile copy/delete" exit 1 ;; esac

راځئ چې سرور پیل کړو:

ubuntu@ubuntu-basic-1-2-10gb:~/s3-webhook$ sudo ./s3-webhook -port 80 -
script scripts/s3_backup_mcs_aws.sh

راځئ وګورو چې دا څنګه کار کوي. له لارې د MCS ویب انٹرفیس د test.txt فایل myfiles-ash بالټ ته اضافه کړئ. د کنسول لاګونه ښیې چې د ویب هک سرور ته غوښتنه شوې وه:

2020/07/06 09:43:08 [POST] incoming HTTP request from 
95.163.216.92:56612
download: s3://myfiles-ash/test.txt to ../../../tmp/myfiles-ash/test.txt
upload: ../../../tmp/myfiles-ash/test.txt to 
s3://myfiles-backup/test.txt

راځئ چې په AWS کې د myfiles - بیک اپ بالټ مینځپانګه وګورو:

ubuntu@ubuntu-basic-1-2-10gb:~/s3-webhook$ aws s3 --profile aws ls 
myfiles-backup
2020-07-06 09:43:10       1104 test.txt

اوس، د ویب انٹرفیس له لارې، موږ به فایل د myfiles-ash بالټ څخه حذف کړو.

د سرور لاګونه:

2020/07/06 09:44:46 [POST] incoming HTTP request from 
95.163.216.92:58224
delete: s3://myfiles-backup/test.txt

د کڅوړې مینځپانګې:

ubuntu@ubuntu-basic-1-2-10gb:~/s3-webhook$ aws s3 --profile aws ls 
myfiles-backup
ubuntu@ubuntu-basic-1-2-10gb:~$

فایل حذف شوی ، ستونزه حل شوې.

پایله او ترسره کول

په دې مقاله کې کارول شوي ټول کوډ دی زما په ذخیره کې. د ویب هکونو راجستر کولو لپاره د سکریپټونو مثالونه او د شمیرلو لاسلیکونو مثالونه هم شتون لري.

دا کوډ د مثال په توګه بل څه ندي چې تاسو څنګه کولی شئ په خپلو فعالیتونو کې د S3 ویب هکس وکاروئ. لکه څنګه چې ما په پیل کې وویل، که تاسو پالن لرئ چې په تولید کې دا ډول سرور وکاروئ، تاسو اړتیا لرئ لږترلږه د غیر متناسب کار لپاره سرور بیا ولیکئ: په کتار کې راتلونکي ویب هکسونه راجستر کړئ (RabbitMQ یا NATS)، او له هغه ځایه یې تجزیه کړئ او پروسس یې کړئ. د کارګر غوښتنلیکونو سره. که نه نو، کله چې ویب هکونه په پراخه کچه راځي، تاسو ممکن د دندو بشپړولو لپاره د سرور سرچینو نشتوالي سره مخ شئ. د قطارونو شتون تاسو ته اجازه درکوي چې سرور او کارګران وویشئ، او همدارنګه د ناکامۍ په صورت کې د تکرار کارونو سره ستونزې حل کړئ. دا هم مشوره ورکول کیږي چې لاګنګ ډیر مفصل او ډیر معیاري ته بدل کړئ.

ښه چانس!

د موضوع په اړه نور لوستل:

سرچینه: www.habr.com

Add a comment