Tusaalaha arjiga ay wadaan ee ku salaysan webhooks ee kaydinta shayga S3 Mail.ru Cloud Solutions

Tusaalaha arjiga ay wadaan ee ku salaysan webhooks ee kaydinta shayga S3 Mail.ru Cloud Solutions
Rube Goldberg mashiinka kafeega

Nashqada-dhaqdhaqaaqa ay wadaan waxay kordhiyaan hufnaanta kharashka ee agabka la isticmaalo sababtoo ah waxaa la isticmaalaa oo kaliya wakhtiga loo baahan yahay. Waxaa jira xulashooyin badan oo ku saabsan sida tan loo hirgeliyo oo aan loo abuurin qaybaha daruuriga ah ee codsiyada shaqaalaha. Maantana ka hadli maayo FaaS, laakiin waxaan ka hadli doonaa webhooks. Waxaan tusi doonaa tusaale waxbarsho oo ku saabsan maaraynta dhacdooyinka addoo isticmaalaya sheyga kaydinta shabkada

Dhawr kelmadood oo ku saabsan kaydinta shayga iyo shabkada Kaydinta shayada waxay kuu ogolaanaysaa inaad ku kaydiso xog kasta oo daruur ah qaab walxo, laga heli karo S3 ama API kale (waxay kuxirantahay hirgelinta) HTTP/HTTPS. Webhooks guud ahaan waa dib u soo yeerida HTTP caadada u ah. Caadi ahaan waxaa kiciyay dhacdo, sida kood lagu riixo meel kayd ah ama faallo lagu dhejiyo blog. Marka ay dhacdo dhacdo, goobta asalka ahi waxay u dirtaa codsi HTTP URL-ka loo cayimay hook webka. Natiijo ahaan, waxaad samayn kartaa dhacdooyinka hal goob ku kicinaya ficillo kale (wiki). Xaaladda halka goobta isha ay tahay kayd shay, dhacdooyinku waxay u dhaqmaan sida isbeddelka waxa ku jira.

Tusaalooyinka kiisaska fudud marka otomaatigyada noocaas ah la isticmaali karo:

  1. Abuuritaanka koobiyada dhammaan walxaha ku jira kaydinta daruuraha kale. Nuqullada waa in la abuuraa duullimaad mar kasta oo faylasha lagu daro ama la beddelo.
  2. Abuur otomaatig ah oo taxane ah oo thumbnails ah oo ah faylal garaafyo, ku darista calamadaha biyaha sawirada, iyo wax ka beddelka sawirka kale.
  3. Ogeysiinta ku saabsan imaatinka dukumeentiyada cusub (tusaale ahaan, adeegga xisaabinta ee la qaybiyay waxay soo geliyaan warbixinnada daruuraha, iyo la socodka maaliyadeed waxay helayaan ogeysiisyo ku saabsan warbixinnada cusub, hubinta iyo falanqaynta iyaga).
  4. Kiisas yar oo kakan ayaa ku lug leh, tusaale ahaan, abuurista codsi Kubernetes, kaas oo abuuraya boodh ay ku jiraan weelasha lagama maarmaanka ah, u gudbiya cabirrada hawsha, ka dib marka la farsameeyo weelka wuu dumaa.

Tusaale ahaan, waxaanu samayn doonaa kala duwanaansho hawsha 1, marka isbeddelada Mail.ru Cloud Solutions (MCS) baaldiyada kaydinta shayga lagu daro kaydinta walxaha AWS iyadoo la adeegsanayo webhooks. Kiis dhab ah oo la raray, shaqada asynchronous waa in lagu bixiyaa diwaangelinta webhooks ee safka, laakiin hawsha tababarka waxaan sameyn doonaa hirgelinta tan la'aanteed.

Nidaamka shaqada

Habka is dhexgalka ayaa si faahfaahsan loogu qeexay Hagaha S3 webhooks ee MCS. Nidaamka shaqadu wuxuu ka kooban yahay waxyaabaha soo socda:

  • Adeegga daabacaadda, kaas oo ku yaal dhinaca kaydinta S3 oo daabaca codsiyada HTTP marka webnhook la kiciyo.
  • Webhook helaya server-ka, kaas oo dhagaysta codsiyada adeega daabacaadda HTTP oo fuliya ficilada ku haboon. Server-ku waxa lagu qori karaa luqad kasta, tusaale ahaan, waxa aanu ku qori doonaa Server-ka gudaha Go.

Muuqaal gaar ah oo ka mid ah hirgelinta webhooks ee S3 API waa diiwaangelinta server-ka hela webhook ee adeegga daabacaadda. Gaar ahaan, server-ka helaya webhook waa inuu xaqiijiyaa rukhsadda fariimaha ka imanaya adeegga daabacaadda (fulinta webhook kale, xaqiijinta is-diiwaangelinta inta badan looma baahna).

Sidaa darteed, server-ka helaya webhook waa inuu taageeraa laba hawlood oo waaweyn:

  • ka jawaab codsiga adeegga daabacaadda si loo xaqiijiyo diiwaangelinta,
  • ka baaraandegto dhacdooyinka soo socda.

Rakibaadda server-ka hesha webhook

Si aad u socodsiiso server-ka helaya webhook, waxaad u baahan tahay server Linux ah. Maqaalkan, tusaale ahaan, waxaanu isticmaalnaa tusaale wax ku ool ah oo aan geyno MCS.

Aan rakibno software-ka lagama maarmaanka ah oo aan bilowno server-ka helaya webhook.

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) ...

Xir galka leh webhook helaya serverka:

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.

Aan bilowno serverka:

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

Ku biir adeegga daabacaadda

Waxaad iska diiwaan gelin kartaa server-kaaga helitaanka webhook adoo isticmaalaya API ama interface interface. Si ay u fududaato, waxaanu isku diiwaan gelin doonaa interneedka shabakada:

  1. Aan tagno qaybta baaldiyada qolka kantaroolka.
  2. Tag baaldiga kaas oo aan u habeyn doono webhooks oo guji qalabka:

Tusaalaha arjiga ay wadaan ee ku salaysan webhooks ee kaydinta shayga S3 Mail.ru Cloud Solutions

Tag tabka Webhooks oo guji Add:

Tusaalaha arjiga ay wadaan ee ku salaysan webhooks ee kaydinta shayga S3 Mail.ru Cloud Solutions
Buuxi meelaha:

Tusaalaha arjiga ay wadaan ee ku salaysan webhooks ee kaydinta shayga S3 Mail.ru Cloud Solutions

Aqoonsiga - magaca webhook.

Dhacdada - dhacdooyinka la gudbiyo. Waxaanu dejinay gudbinta dhammaan dhacdooyinka dhaca marka la shaqaynayo faylasha (ku-darka iyo tirtiridda).

URL - webhook helaya ciwaanka serverka.

Filter horgale/kabo-dheeri waa shaandheyn kuu oggolaaneysa inaad abuurto shayga internetka oo keliya walxaha magacyadoodu ku habboon yihiin xeerarka qaarkood. Tusaale ahaan, si uu webhookku u kiciyo oo keliya faylasha leh kordhinta .png, gudaha Shaandhayso daba-galka waxaad u baahan tahay inaad qorto "png".

Hadda, kaliya dekedaha 80 iyo 443 ayaa lagu taageeray gelitaanka server-ka hela webhook.

Aynu gujino Ku dar jillaab waxaana arki doona kuwa soo socda:

Tusaalaha arjiga ay wadaan ee ku salaysan webhooks ee kaydinta shayga S3 Mail.ru Cloud Solutions
Hook ayaa ku daray.

Adeegga helaya webhook wuxuu ku tusayaa diiwaankiisa horumarka nidaamka diiwaangelinta jillaabyada:

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

Diiwaangelintu way dhammaatay. Qaybta soo socota, waxaan si dhow u eegi doonaa algorithm-ka hawlgalka ee server-ka hela webhook.

Sharaxaada server-ka hela webhook

Tusaalahayaga, server-ku wuxuu ku qoran yahay Go. Aynu eegno mabaadi'da aasaasiga ah ee hawlgalkeeda.

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))
}

Tixgeli hawlaha ugu muhiimsan:

  • Ping() - dariiq ka jawaaba URL/ping, oo ah habka ugu fudud ee baadhitaanka nolosha
  • Webhook() - dariiqa ugu muhiimsan, URL/maamulaha webhook:
    • wuxuu xaqiijinayaa diiwaangelinta adeegga daabacaadda ( tag shaqada Xaqiijinta Rukunka),
    • waxa uu ka shaqeeyaa webhooks soo gala (Gorecords function).
  • Hawlaha HmacSha256 iyo HmacSha256hex waa hirgalinta HMAC-SHA256 iyo HMAC-SHA256 algorithms-ka sireed oo leh wax soo saar ahaan tirooyin tirooyin hexadecimal ah oo lagu xisaabinayo saxeexa.
  • Muhiimadu waa shaqada ugu weyn, waxay socodsiisaa halbeegyada xariiqda taliska waxayna diiwaangelisaa maamulayaasha URL.

Halbeegyada khadka taliska ee uu aqbalay seerfarku:

  • -dekeddu waa dekedda uu seerfarku ku dhegaysan doono.
  • Cinwaanka - Cinwaanka IP-ga ee adeeguhu dhegaysan doono.
  • -script waa barnaamij dibadda ah oo loogu yeero jillaab kasta oo soo gala.

Aynu si qoto dheer u eegno qaar ka mid ah hawlaha:

//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)
    }

}

Shaqadani waxay go'aaminaysaa in codsiga xaqiijinta diiwaangelinta ama webhook uu yimid. Sida soo socota dukumentiyo, haddii diiwaangelinta la xaqiijiyo, qaabka soo socda ee Json waxaa lagu helay codsiga Boostada:

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Β»
}

Weydiintan waxay u baahan tahay in laga jawaabo:

content-type: application/json

{"signature":Β«ea3fce4bb15c6de4fec365d36bcebbc34ccddf54616d5ca12e1972f82b6d37afΒ»}

Halka saxiixa loo xisaabiyo sida:

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

Haddi uu yimaad qab-qabsigu, qaab dhismeedka codsigu waxa uu u egyahay sidan:

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"
            }
        }
    ]
}

Sidaa darteed, iyadoo ku xiran codsiga, waxaad u baahan tahay inaad fahamto sida loo farsameeyo xogta. Waxaan u doortay gelitaanka tilmaame ahaan "Type":"SubscriptionConfirmation", maadaama ay ku jirto codsiga xaqiijinta isdiiwaangelinta oo aanay ku jirin webhook. Iyada oo ku saleysan joogitaanka/maqnaanshaha galitaankan ee codsiga POST, fulinta dheeraadka ah ee barnaamijku waxa ay tagtaa shaqada SubscriptionConfirmation, ama galay hawl GotRecords.

Ma tixgelin doono si faahfaahsan hawsha Xaqiijinta Diiwaangelinta; waxaa loo fuliyaa si waafaqsan mabaadi'da lagu dejiyay dukumentiyo. Waxaad ka arki kartaa koodhka isha ee hawshan kaydka mashruuca git.

Shaqada GotRecords waxay kala saartaa codsiga soo socda oo shay kasta oo Diiwaangelin ah wuxuu wacaa qoraal dibadeed (magaciisa lagu dhex maray halbeeg-script) oo leh cabbirro:

  • magaca baaldiga
  • furaha shayga
  • ficil:
    • nuqul - haddii codsiga asalka ah ee EventName = Shayga la sameeyay | PutObject | PutObjectCopy
    • tirtir - haddii codsiga asalka ah ee EventName = Shayga la saaray | DeleteObject

Haddaba, haddii jillaab la yimaado codsi Boostada, sida lagu sharraxay sare, iyo parameter -script=script.sh markaas qoraalka waxaa loogu yeeri doonaa sidan soo socota:

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

Waa in la fahamsan yahay in webhook-kan helaya server-ka uusan ahayn xal wax-soo-saar dhammaystiran, laakiin tusaale la fududeeyay ee hirgelinta suurtagalka ah.

Tusaalaha shaqada

Aynu isku dhejinno faylasha baaldiga weyn ee MCS ilaa baaldiga kaydka ah ee AWS. Baaldiga ugu weyn waxaa loo yaqaan myfiles-ash, mid ka mid ah kaydinta waxaa loo yaqaan myfiles-backup (qaabaynta baaldi ee AWS waa ka baxsan baaxadda qodobkan). Sidaas awgeed, marka faylka la geliyo baaldiga weyn, nuqulkiisu waa inuu ka soo baxaa kaydka, marka laga tirtiro midka ugu weyn, waa in lagu tirtiraa kaydka.

Waxaan la shaqayn doonaa baaldiyada anagoo adeegsanayna utility awscli, kaas oo ku habboon kaydinta daruuraha MCS iyo kaydinta daruuraha AWS labadaba.

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) ...

Aynu habeyno gelitaanka 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]:

Aynu habeyno gelitaanka 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]:

Aan hubino gelitaanka:

Ku socota AWS:

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

Wixii MCS ah, markaad wado amarka waxaad u baahan tahay inaad ku darto -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

la galay

Hadda aan qorno qoraal si aan u habaynno jillaabyada soo socda, aynu ugu yeedhno 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

Aan bilowno serverka:

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

Aan aragno sida ay u shaqeyso. Iyadoo loo marayo MCS web interface ku dar faylka test.txt baaldiga myfiles-ash. Diiwaanka console-ka ayaa muujinaya in codsi loo gudbiyay serfarka webhook:

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

Aynu hubino waxa ku jira baaldiga kaydka myfiles ee AWS:

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

Hadda, iyada oo loo marayo interface-ka shabakadda, waxaanu ka tirtiri doonaa faylka myfiles-ash baaldi.

Diiwaanada serverka:

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

Waxa ku jira baaldi

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

Faylka waa la tirtiray, dhibaatada waa la xalliyey.

Gabagabo iyo ToDo

Dhammaan koodka lagu isticmaalo maqaalkan waa kaydkayga ku jira. Waxa kale oo jira tusaalayaal qoraallo ah iyo tusaaleyaal tirinta saxeexyada diiwaangelinta webhooks.

Koodhkani ma aha wax ka badan tusaale sida aad u isticmaali karto S3 webhooks hawlahaaga. Sidii aan ku idhi bilowgiiba, haddii aad qorshaynayso inaad adeegsato server-ka noocaas ah ee wax soo saarka, waxaad u baahan tahay inaad ugu yaraan dib u qorto server-ka shaqada asynchronous: ku diwaangeli webhooks soo galaya safka (RabbitMQ ama NATS), halkaasna kala saar oo ka baaraandegi oo leh codsiyada shaqaalaha. Haddii kale, marka webhooks ay si weyn u yimaadaan, waxaa laga yaabaa inaad la kulanto la'aanta ilaha server si aad u dhamaystirto hawlaha. Joogitaanka safafka ayaa kuu oggolaanaya inaad qaybiso server-ka iyo shaqaalaha, iyo sidoo kale inaad xalliso dhibaatooyinka dib-u-celinta hawlaha haddii ay dhacdo guuldarrooyin. Waxa kale oo habboon in loo beddelo jarista mid faahfaahsan oo ka sii habaysan.

nasiib wacan!

Akhrin dheeraad ah oo ku saabsan mawduuca:

Source: www.habr.com

Add a comment