ProHoster > Блог > Whakahaerenga > He tauira o te tono-a-takahanga i runga i nga matapae tukutuku i roto i te rokiroki ahanoa S3 Mail.ru Cloud Solutions
He tauira o te tono-a-takahanga i runga i nga matapae tukutuku i roto i te rokiroki ahanoa S3 Mail.ru Cloud Solutions
Ko te hoahoanga-a-takahanga ka piki ake te pai o te utu o nga rauemi i whakamahia na te mea ka whakamahia noa i te waa e hiahiatia ana. He maha nga whiringa mo te whakatinana i tenei me te kore e hanga i etahi atu hinonga kapua hei tono kaimahi. A i tenei ra kaore au e korero mo te FaaS, engari mo nga maataki tukutuku. Ka whakaatu ahau i tetahi tauira akoranga mo te whakahaere i nga huihuinga ma te whakamahi i nga maau tukutuku rokiroki ahanoa.
He kupu torutoru mo te rokiroki ahanoa me nga matau tukutuku. Ko te rokiroki ahanoa ka taea e koe te penapena i nga raraunga i roto i te kapua i roto i te ahua o nga taonga, ka taea ma te S3 tetahi atu API ranei (i runga i te whakatinanatanga) ma te HTTP/HTTPS. Ko nga Webhooks te tikanga he waea hokinga HTTP ritenga. I te nuinga o te wa ka puta mai i tetahi huihuinga, penei i te peia o te waehere ki tetahi putunga, he korero ranei e whakairihia ana ki runga i te rangitaki. Ina puta he takahanga, ka tukuna e te pae takenga he tono HTTP ki te URL kua tohua mo te maatukutuku. Ko te mutunga, ka taea e koe te hanga takahanga ki tetahi pae ka whakaoho i nga mahi ki tetahi atu (wiki). Mēnā he rokiroki ahanoa te pae pūtake, ka huri ngā takahanga ki ōna ihirangi.
Ko nga tauira o nga keehi ngawari ka taea te whakamahi i enei mahi aunoa:
Te hanga kape o nga mea katoa ki tetahi atu putunga kapua. Me hanga kape i runga i te rere i nga wa ka taapirihia nga konae ka whakarerekehia ranei.
Te hanga aunoa i te raupapa karakōnui o nga konae whakairoiro, te taapiri tohuwai ki nga whakaahua, me etahi atu whakarereketanga ahua.
Ko te whakamohiotanga mo te taenga mai o nga tuhinga hou (hei tauira, ka tukuna e te ratonga kaute kaute nga purongo ki te kapua, ka whiwhi panui te aroturuki putea mo nga purongo hou, ka tirohia me te tātari).
Ko nga keehi uaua iti ake, hei tauira, ko te whakaputa tono ki a Kubernetes, ka hangaia he putea me nga ipu e tika ana, ka tukuna nga tawhā mahi ki a ia, ka mutu te tukatuka ka hinga te ipu.
Hei tauira, ka mahia e matou he rereke o te mahi 1, i te wa e tukutahia ai nga huringa o te peere rokiroki ahanoa Mail.ru Cloud Solutions (MCS) ki te rokiroki ahanoa AWS ma te whakamahi i nga matapae tukutuku. I roto i te keehi tino utaina, me tuku nga mahi tukutahi ma te rehita i nga webhooks i roto i te rarangi, engari mo te mahi whakangungu ka mahia e matou te whakatinanatanga me te kore tenei.
Mahere mahi
Ko te kawa taunekeneke e whakaahuahia ana i roto Aratohu mo te S3 webhooks i MCS. Kei roto i te kaupapa mahi nga waahanga e whai ake nei:
Ratonga whakaputa, kei te taha rokiroki S3 me te whakaputa i nga tono HTTP i te wa e whakaohohia ana te webnhook.
Tukutuku whiwhi tūmau, e whakarongo ana ki nga tono mai i te ratonga whakaputa HTTP me te mahi i nga mahi tika. Ka taea te tuhi i te tūmau i roto i tetahi reo; i roto i to maatau tauira, ka tuhia e matou te tūmau i roto i te Haere.
Ko tetahi ahuatanga motuhake o te whakatinanatanga o nga webhooks i roto i te S3 API ko te rehitatanga o te kaitoro whiwhi webhook i runga i te ratonga whakaputa. Otirā, me whakaū te tūmau whiwhi webhook i te ohaurunga ki nga karere mai i te ratonga whakaputa (i etahi atu whakatinanatanga webhook, ko te nuinga o te waa kaore e hiahiatia te whakamana ohaurunga).
Na reira, me tautoko te tūmau whiwhi webhook kia rua nga mahi matua:
whakautu ki te tono a te ratonga whakaputa kia whakamanahia te rehitatanga,
te tukatuka i nga kaupapa taumai.
Tāuta ana i te tūmau whiwhi webhook
Hei whakahaere i te tūmau whiwhi webhook, me hiahia koe ki te tūmau Linux. I roto i tenei tuhinga, hei tauira, ka whakamahia e matou he tauira mariko ka tukuna e matou ki runga MCS.
Tāutahia te pūmanawa e tika ana ka whakarewahia te tūmau whiwhi 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) ...
Haere ki te peere ka whirihorahia e matou nga matau tukutuku ka paato i te taputapu:
Haere ki te ripa Webhooks ka paato Tāpiri:
Whakakiia nga mara:
ID — te ingoa o te matukutuku.
Takahanga - ko nga huihuinga hei tuku. Kua tautuhia e matou te tuku o nga huihuinga katoa ka puta i te wa e mahi ana me nga konae (te taapiri me te whakakore).
URL — webhook whiwhi wāhitau tūmau.
Ko te tātari prefix/suffix he tātari e taea ai e koe te whakaputa i nga matau tukutuku mo nga mea e rite ana nga ingoa ki etahi ture. Hei tauira, kia taea e te webhook te whakaoho i nga konae me te toronga .png, i roto Tātari kūmuri me tuhi koe "png".
I tenei wa, ko nga tauranga 80 me te 443 anake e tautokohia ana mo te uru atu ki te tūmau whiwhi webhook.
Kia paato tatou Tāpiri matau a ka kite tatou i nga mea e whai ake nei:
Kua tapirihia te matau.
E whakaatu ana te tūmau whiwhi webhook i roto i ana rangitaki te ahunga whakamua o te tukanga rehita matau:
Ping() - he ara e whakautu ana ma te URL/ping, te whakatinanatanga ngawari o te rangahau ora.
Webhook() - ara matua, URL/kaiwhakahaere maau:
ka whakamana i te rehitatanga ki te ratonga whakaputa (haere ki te mahi Whakaaetanga Ohaurunga),
ka tukatuka i nga matapae tukutuku taumai (mahi Gorecords).
Ko nga Mahi HmacSha256 me HmacSha256hex he whakatinanatanga o te HMAC-SHA256 me te HMAC-SHA256 algorithms whakamunatanga me te putanga hei aho o nga tau hautekauono mo te tatau i te waitohu.
Ko te matua te mahi matua, ka whakahaere i nga tawhā raina whakahau me te rehita i nga kaikawe URL.
Ko nga tawhā raina whakahau e whakaaetia ana e te tūmau:
-port ko te tauranga e whakarongo ai te tūmau.
-wāhitau - wāhitau IP ka whakarongo te tūmau.
-Ko te tuhinga he kaupapa o waho e kiia ana mo ia matau taumai.
Kia ata titiro tatou ki etahi o nga mahi:
//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)
}
}
Ma tenei mahi e whakatau mena kua tae mai he tono ki te whakau i te rehitatanga, he maau tukutuku ranei. E whai ake nei mai tuhinga, ki te whakamanahia te rehitatanga, ko te hanganga Json e whai ake nei ka whakawhiwhia ki te tono Post:
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»
}
Na reira, i runga i te tono, me maarama koe me pehea te tukatuka i nga raraunga. I whiriwhiria e au te urunga hei tohu "Type":"SubscriptionConfirmation", no te mea kei roto i te tono whakau ohaurunga, kaore i te waahi i te webhook. I runga i te aroaro/kore o tenei urunga i roto i te tono POST, ka haere tonu te mahi o te papatono ki te mahi SubscriptionConfirmation, ki te mahi ranei GotRecords.
E kore matou e whai whakaaro mo te mahi Whakaaetanga Ohaurunga; kua whakatinanahia i runga i nga maapono kua whakatakotoria ki roto tuhinga. Ka taea e koe te tiro i te waehere puna mo tenei mahi i kaupapa git repositories.
Ko te mahi a GotRecords ka poroporoaki i tetahi tono taumai, a mo ia ahanoa Rekoata ka karanga he tuhi waho (ko tona ingoa i tukuna ki te tawhā -script) me nga tawhā:
ingoa peere
kī ahanoa
mahi:
kape - mena kei te tono taketake EventName = ObjectCreated | PutObject | PutObjectCopy
muku - mena kei te tono taketake EventName = ObjectRemoved | Mukua Ahanoa
No reira, ki te tae mai he matau me te tono Panui, pera me te korero teitei, me te tawhā -script=script.sh katahi ka kiia te tuhinga penei:
script.sh bucketA some-file-to-bucket copy
Me mohio ko tenei tūmau whiwhi webhook ehara i te otinga whakaputa katoa, engari he tauira ngawari o te whakatinanatanga ka taea.
He tauira mahi
Me tukutahi nga konae mai i te peere matua i MCS ki te peere taapiri i AWS. Ko te peere matua e kiia ana ko myfiles-ash, ko te taapiri ko te myfiles-backup (ko te whirihoranga peere i AWS kei tua atu i te waahanga o tenei tuhinga). No reira, ka tuuhia he konae ki roto i te peere matua, me puta tana kape ki roto i te taarua, a ka mukua mai i te peere matua, me whakakorea ki te peera.
Ka mahi tahi matou me nga peere ma te whakamahi i te taputapu awscli, he hototahi ki te rokiroki kapua MCS me te rokiroki kapua 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) ...
Me whirihora te uru ki te 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]:
Me whirihora te uru ki te 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]:
Kia tirohia nga urunga:
Ki AWS:
ubuntu@ubuntu-basic-1-2-10gb:~$ aws s3 ls --profile aws
2020-07-06 08:44:11 myfiles-backup
Mo te MCS, i te wa e whakahaere ana i te tono me taapiri —endpoint-url:
Kia kite tatou pehea te mahi. Na roto Atanga tukutuku MCS tāpirihia te kōnae test.txt ki te peere myfiles-ash. Ko nga raarangi papatohu e whakaatu ana i tukuna he tono ki te tūmau 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
Kia tirohia nga ihirangi o te peere myfiles-backup i AWS:
Na, na roto i te atanga tukutuku, ka mukua e matou te konae mai i te peere myfiles-ash.
Rangitaki tūmau:
2020/07/06 09:44:46 [POST] incoming HTTP request from
95.163.216.92:58224
delete: s3://myfiles-backup/test.txt
Nga ihirangi peere:
ubuntu@ubuntu-basic-1-2-10gb:~/s3-webhook$ aws s3 --profile aws ls
myfiles-backup
ubuntu@ubuntu-basic-1-2-10gb:~$
Kua mukua te konae, kua whakatauhia te raru.
Whakamutunga me te Mahi
Ko nga waehere katoa e whakamahia ana i tenei tuhinga i roto i taku putunga. He tauira ano mo nga tuhinga tuhi me nga tauira mo te tatau i nga hainatanga mo te rehita i nga maataki tukutuku.
Ko tenei waehere he tauira noa mo te whakamahi i nga matapae tukutuku S3 i roto i o mahi. Ka rite ki taku korero i te timatanga, ki te whakamahere koe ki te whakamahi i taua tuumau i roto i te whakaputanga, me tuhi ano koe i te kaimau mo nga mahi koretake: rehitahia nga maataki tukutuku taumai i roto i te rarangi (RabbitMQ, NATS ranei), a mai i reira ka poroporoaki ka tukatukahia. me nga tono kaimahi. Ki te kore, ka tae nui mai nga webhooks, ka tupono pea koe ki te kore rawa o nga rauemi tūmau hei whakaoti i nga mahi. Ko te aroaro o nga rarangi ka taea e koe te tohatoha i te kaimau me nga kaimahi, me te whakaoti rapanga me te whakahoki ano i nga mahi mena he rahua. He mea tika ano kia huri i te rakaraka ki tetahi atu taipitopito me te paerewa ake.