Isibonelo sohlelo lokusebenza oluqhutshwa umcimbi olususelwe kuma-webhooks kusitoreji sento ye-S3 se-Mail.ru Cloud Solutions

Isibonelo sohlelo lokusebenza oluqhutshwa umcimbi olususelwe kuma-webhooks kusitoreji sento ye-S3 se-Mail.ru Cloud Solutions
Umshini wekhofi weRube Goldberg

Izakhiwo eziqhutshwa umcimbi zandisa ukusebenza kahle kwezindleko zezinsiza ezisetshenziswayo ngoba zisetshenziswa kuphela ngesikhathi lapho zidingeka khona. Kunezinketho eziningi zokuthi ungakwenza kanjani lokhu futhi ungadali izinhlangano zamafu ezengeziwe njengezinhlelo zokusebenza zabasebenzi. Futhi namuhla ngeke ngikhulume nge-FaaS, kodwa ngama-webhooks. Ngizobonisa isibonelo sokufundisa sokusingatha imicimbi ngisebenzisa ama-webhook esitoreji sezinto.

Amagama ambalwa mayelana nokugcinwa kwento kanye nama-webhooks. Isitoreji sento sikuvumela ukuthi ugcine noma iyiphi idatha emafini esesimweni sezinto, efinyeleleka nge-S3 noma enye i-API (kuye ngokusetshenziswa) nge-HTTP/HTTPS. Ama-Webhooks ngokuvamile ama-callback we-HTTP angokwezifiso. Ngokuvamile zibangelwa umcimbi, njengokuthi ikhodi iphushelwe endaweni yokugcina noma amazwana afakwe kubhulogi. Uma kwenzeka umcimbi, isiza soqobo sithumela isicelo se-HTTP ku-URL eshiwo ku-webhook. Njengomphumela, ungenza imicimbi kusayithi elilodwa icuphe izenzo kwenye (wiki). Esimeni lapho isayithi lomthombo liwukugcina into, imicimbi isebenza njengezinguquko kokuqukethwe kwayo.

Izibonelo zamacala alula lapho okuzenzakalelayo okunjalo kungasetshenziswa:

  1. Ukudala amakhophi azo zonke izinto kwesinye isitoreji samafu. Amakhophi kufanele adalwe ngokuphazima kweso noma nini lapho amafayela engezwa noma eshintshwa.
  2. Ukudala ngokuzenzakalelayo uchungechunge lwezithonjana zamafayela ayingcaca, ukwengeza ama-watermark ezithombeni, nokunye ukuguqulwa kwesithombe.
  3. Isaziso mayelana nokufika kwamadokhumenti amasha (isibonelo, isevisi yokubalwa kwezimali esabalalisiwe ilayisha imibiko emafini, futhi ukuqapha kwezezimali kuthola izaziso mayelana nemibiko emisha, ihlole futhi iyihlaziye).
  4. Amacala ayinkimbinkimbi kancane ahilela, isibonelo, ukukhiqiza isicelo ku-Kubernetes, okwenza i-pod eneziqukathi ezidingekayo, idlulisele imingcele yomsebenzi kuyo, futhi ngemva kokucubungula kugoqe isitsha.

Njengesibonelo, sizokwenza okuhlukile komsebenzi 1, lapho izinguquko kubhakede lokugcina into ye-Mail.ru Cloud Solutions (MCS) zivumelaniswa kusitoreji sento ye-AWS kusetshenziswa ama-webhooks. Esimweni esilayishiwe sangempela, umsebenzi we-asynchronous kufanele unikezwe ngokubhalisa ama-webhooks emgqeni, kodwa ngomsebenzi wokuqeqesha sizokwenza ukuqaliswa ngaphandle kwalokhu.

Isikimu somsebenzi

Iphrothokholi yokusebenzisana ichazwa ngokuningiliziwe ku Umhlahlandlela we-S3 webhooks ku-MCS. Uhlelo lokusebenza luqukethe izici ezilandelayo:

  • Isevisi yokushicilela, esohlangothini lwesitoreji se-S3 futhi ishicilele izicelo ze-HTTP lapho i-webnhook iqaliswa.
  • Iseva eyamukelayo yewebhu, elalela izicelo ezivela kusevisi yokushicilela ye-HTTP futhi yenze izenzo ezifanele. Iseva ingabhalwa nganoma yiluphi ulimi; esibonelweni sethu, sizobhala iseva kokuthi Go.

Isici esikhethekile sokusetshenziswa kwama-webhooks ku-S3 API ukubhaliswa kweseva eyamukelayo ye-webhook kusevisi yokushicilela. Ikakhulukazi, iseva eyamukelayo i-webhook kufanele iqinisekise ukubhaliswa kwemilayezo evela kusevisi yokushicilela (kokunye ukusetshenziswa kwe-webhook, ukuqinisekiswa kokubhalisa ngokuvamile akudingekile).

Ngokufanelekile, iseva eyamukelayo ye-webhook kufanele isekele imisebenzi emibili eyinhloko:

  • phendula isicelo sesevisi yokushicilela sokuqinisekisa ukubhaliswa,
  • cubungula imicimbi engenayo.

Ifaka iseva eyamukelayo yewebhu

Ukuze usebenzise iseva eyamukelayo ye-webhook, udinga iseva ye-Linux. Kulesi sihloko, njengesibonelo, sisebenzisa isenzakalo esibonakalayo esisisebenzisa ku-MCS.

Masifake isofthiwe edingekayo futhi siqalise iseva yokwamukela i-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) ...

Vala ifolda ngeseva eyamukelayo ye-webhook:

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.

Ake siqale iseva:

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

Bhalisela isevisi yokushicilela

Ungabhalisa iseva yakho yokwamukela i-webhook usebenzisa i-API noma isixhumi esibonakalayo sewebhu. Ukwenza kube lula, sizobhalisa sisebenzisa isixhumi esibonakalayo sewebhu:

  1. Ake siye esigabeni samabhakede ekamelweni lokulawula.
  2. Iya ebhakedeni esizolungiselela lona ama-webhooks bese uchofoza igiya:

Isibonelo sohlelo lokusebenza oluqhutshwa umcimbi olususelwe kuma-webhooks kusitoreji sento ye-S3 se-Mail.ru Cloud Solutions

Iya kuthebhu ye-Webhooks bese uchofoza okuthi Engeza:

Isibonelo sohlelo lokusebenza oluqhutshwa umcimbi olususelwe kuma-webhooks kusitoreji sento ye-S3 se-Mail.ru Cloud Solutions
Gcwalisa izinkambu:

Isibonelo sohlelo lokusebenza oluqhutshwa umcimbi olususelwe kuma-webhooks kusitoreji sento ye-S3 se-Mail.ru Cloud Solutions

I-ID β€” igama le-webhook.

Umcimbi - yiziphi izehlakalo okufanele zidluliselwe. Sisethe ukudluliswa kwazo zonke izehlakalo ezenzeka lapho sisebenza ngamafayela (ukwengeza nokususa).

I-URL β€” i-webhook yamukela ikheli leseva.

Isiqalo/isijobelelo sesihlungi siyisihlungi esikuvumela ukuthi ukhiqize ama-webhook kuphela ezinto amagama azo afana nemithetho ethile. Isibonelo, ukuze i-webhook iqalise amafayela kuphela ngesandiso se-.png, ku- Isijobelelo sesihlungi udinga ukubhala "png".

Okwamanje, izimbobo ezingu-80 kanye ne-443 kuphela ezisekelwayo zokufinyelela iseva eyamukelayo ye-webhook.

Masichofoze Engeza ihuku futhi sizobona okulandelayo:

Isibonelo sohlelo lokusebenza oluqhutshwa umcimbi olususelwe kuma-webhooks kusitoreji sento ye-S3 se-Mail.ru Cloud Solutions
I-Hook ingeziwe.

Iseva eyamukelayo i-webhook ibonisa kulogi yayo ukuqhubeka kwenqubo yokubhalisa ihuku:

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

Ukubhalisa kuqediwe. Esigabeni esilandelayo, sizobhekisisa i-algorithm yokusebenza kweseva eyamukelayo ye-webhook.

Incazelo yeseva eyamukelayo yewebhu

Esibonelweni sethu, iseva ibhalwe kokuthi Go. Ake sibheke izimiso eziyisisekelo zokusebenza kwayo.

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

Cabangela imisebenzi eyinhloko:

  • I-Ping() - umzila ophendula nge-URL/ping, ukusetshenziswa okulula kophenyo oluphilayo.
  • I-Webhook() - umzila oyinhloko, i-URL/isibambi sewebhu:
    • iqinisekisa ukubhaliswa kwensizakalo yokushicilela (yiya kokuthi SubscriptionConfirmation function),
    • icubungula ama-webhooks angenayo (umsebenzi weGorecords).
  • Imisebenzi i-HmacSha256 kanye ne-HmacSha256hex iwukusetshenziswa kwama-algorithms wokubethela we-HMAC-SHA256 kanye ne-HMAC-SHA256 ngokuphumayo njengochungechunge lwezinombolo ze-hexadecimal ukuze kubalwe isiginesha.
  • okuyinhloko kuwumsebenzi oyinhloko, icubungula imingcele yomugqa womyalo futhi irejista izibambi ze-URL.

Amapharamitha womugqa womyalo amukelwe iseva:

  • -port yimbobo lapho iseva izolalela khona.
  • -ikheli - Ikheli le-IP iseva elizolilalela.
  • -script wuhlelo lwangaphandle olubizelwa ihuku ngayinye engenayo.

Ake sibhekisise eminye yemisebenzi:

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

}

Lo msebenzi unquma ukuthi isicelo sokuqinisekisa ukubhaliswa noma i-webhook sesifikile. Ngokulandelayo kusuka imibhalo, uma ukubhaliswa kuqinisekiswa, isakhiwo esilandelayo se-Json sitholwa esicelweni sokuthunyelwe:

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

Lo mbuzo udinga ukuphendulwa:

content-type: application/json

{"signature":Β«ea3fce4bb15c6de4fec365d36bcebbc34ccddf54616d5ca12e1972f82b6d37afΒ»}

Lapho isiginesha ibalwa njenge:

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

Uma i-webhook ifika, ukwakheka kwesicelo sokuthunyelwe kubukeka kanje:

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

Ngokufanelekile, kuye ngesicelo, udinga ukuqonda indlela yokucubungula idatha. Ngikhethe okufakiwe njengenkomba "Type":"SubscriptionConfirmation", njengoba likhona esicelweni sokuqinisekisa ukubhalisa futhi lingekho ku-webhook. Ngokusekelwe ekubeni khona/ukungabikho kwalokhu okufakiwe esicelweni SOTHUMELA, ukwenziwa okwengeziwe kohlelo kuya emsebenzini. SubscriptionConfirmation, noma kuhlelo GotRecords.

Ngeke sicabangele umsebenzi we-SubscriptionConfirmation ngokuningiliziwe; wenziwa ngokuya ngemigomo ebekwe kuyo imibhalo. Ungabuka ikhodi yomthombo yalo msebenzi kokuthi iphrojekthi ye-git yokugcina.

Umsebenzi we-GotRecords ucubungula isicelo esingenayo futhi entweni ngayinye Yokurekhoda ibiza iskripthi sangaphandle (igama laso eliphasiswe kupharamitha ye-script) ngamapharamitha:

  • igama lebhakede
  • ukhiye wento
  • isenzo:
    • kopisha - uma kusicelo sokuqala EventName = ObjectCreated | I-PutObject | I-PutObjectCopy
    • susa - uma kusicelo sokuqala EventName = ObjectRemoved | SusaObject

Ngakho-ke, uma ihhuku ifika nesicelo sokuthunyelwe, njengoba kuchaziwe ephakeme, kanye nepharamitha -script=script.sh bese umbhalo uzobizwa ngale ndlela elandelayo:

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

Kufanele kuqondwe ukuthi le seva eyamukelayo i-webhook ayisona isisombululo sokukhiqiza esiphelele, kodwa isibonelo esenziwe lula sokusebenza okungenzeka.

Isibonelo somsebenzi

Ake sivumelanise amafayela ukusuka kubhakede elikhulu ku-MCS ukuya kubhakede eliyisipele ku-AWS. Ibhakede eliyinhloko libizwa ngokuthi i-myfiles-ash, eliyisipele libizwa ngokuthi i-myfiles-backup (ukucushwa kwebhakede ku-AWS kungaphezu kobubanzi balesi sihloko). Ngakho-ke, lapho ifayela lifakwa ebhakedeni eliyinhloko, ikhophi yalo kufanele ivele kweyokugcina ikhophi, futhi lapho isuswa kweyinhloko, kufanele isuswe kukhophi eyisipele.

Sizosebenza namabhakede sisebenzisa insiza ye-awscli, ehambisana nakho kokubili isitoreji samafu se-MCS kanye nesitoreji samafu se-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) ...

Ake silungiselele ukufinyelela ku-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]:

Ake silungiselele ukufinyelela ku-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]:

Ake sihlole ukufinyelela:

Ku-AWS:

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

Ku-MCS, lapho usebenzisa umyalo odinga ukuwengezaβ€”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

Kufinyelelwe.

Manje ake sibhale umbhalo wokucubungula ihuku engenayo, masiyibize 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

Ake siqale iseva:

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

Ake sibone ukuthi kusebenza kanjani. Ngokusebenzisa Isixhumanisi sewebhu se-MCS engeza ifayela le-test.txt ebhakedeni le-myfiles-ash. Amalogi ekhonsoli abonisa ukuthi isicelo senziwe kuseva ye-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

Ake sihlole okuqukethwe kwebhakede le-myfiles-backup ku-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

Manje, ngokusebenzisa isixhumi esibonakalayo sewebhu, sizosusa ifayela kubhakede le-myfiles-ash.

Izingodo zeseva:

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

Okuqukethwe kwebhakede:

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

Ifayela liyasuswa, inkinga ixazululiwe.

Isiphetho kanye neToDo

Wonke amakhodi asetshenziswe kulesi sihloko endaweni yami yokugcina. Kukhona futhi izibonelo zemibhalo nezibonelo zokubala amasiginesha okubhalisa ama-webhook.

Le khodi ayilutho ngaphandle kwesibonelo sokuthi ungasebenzisa kanjani ama-webhook e-S3 emisebenzini yakho. Njengoba ngishilo ekuqaleni, uma uhlela ukusebenzisa iseva enjalo ekukhiqizeni, udinga ukuthi okungenani ubhale kabusha iseva ngomsebenzi ongavumelanisi: bhalisa ama-webhooks angenayo emgqeni (RabbitMQ noma i-NATS), bese usuka lapho uwahlukanise futhi uwacubungule. ngezicelo zabasebenzi. Uma kungenjalo, lapho ama-webhooks efika ngobuningi, ungase uhlangabezane nokuntuleka kwezinsiza zeseva ukuze uqedele imisebenzi. Ukuba khona kolayini kukuvumela ukuthi usabalalise iseva nabasebenzi, futhi uxazulule izinkinga ngokuphindaphinda imisebenzi uma kwenzeka ukwehluleka. Kuyatuseka futhi ukuthi uguqule ukugawulwa kwemithi kube enemininingwane eminingi futhi esezingeni eliphakeme.

Good luck!

Funda okwengeziwe ngesihloko:

Source: www.habr.com

Engeza amazwana