ಈವೆಂಟ್-ಚಾಲಿತ ವಾಸ್ತುಶಿಲ್ಪವು ಬಳಸಿದ ಸಂಪನ್ಮೂಲಗಳ ವೆಚ್ಚದ ದಕ್ಷತೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ ಏಕೆಂದರೆ ಅವುಗಳು ಅಗತ್ಯವಿರುವ ಕ್ಷಣದಲ್ಲಿ ಮಾತ್ರ ಬಳಸಲ್ಪಡುತ್ತವೆ. ಇದನ್ನು ಹೇಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕು ಮತ್ತು ಹೆಚ್ಚುವರಿ ಕ್ಲೌಡ್ ಘಟಕಗಳನ್ನು ವರ್ಕರ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಾಗಿ ರಚಿಸಬಾರದು ಎಂಬುದಕ್ಕೆ ಹಲವು ಆಯ್ಕೆಗಳಿವೆ. ಮತ್ತು ಇಂದು ನಾನು FaaS ಬಗ್ಗೆ ಮಾತನಾಡುವುದಿಲ್ಲ, ಆದರೆ webhooks ಬಗ್ಗೆ. ವಸ್ತು ಸಂಗ್ರಹಣೆ ವೆಬ್ಹೂಕ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಈವೆಂಟ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಟ್ಯುಟೋರಿಯಲ್ ಉದಾಹರಣೆಯನ್ನು ನಾನು ತೋರಿಸುತ್ತೇನೆ.
ವಸ್ತು ಸಂಗ್ರಹಣೆ ಮತ್ತು ವೆಬ್ಹೂಕ್ಗಳ ಬಗ್ಗೆ ಕೆಲವು ಪದಗಳು. ಆಬ್ಜೆಕ್ಟ್ ಸಂಗ್ರಹಣೆಯು ಕ್ಲೌಡ್ನಲ್ಲಿ ಯಾವುದೇ ಡೇಟಾವನ್ನು ವಸ್ತುಗಳ ರೂಪದಲ್ಲಿ ಸಂಗ್ರಹಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, S3 ಅಥವಾ ಇನ್ನೊಂದು API ಮೂಲಕ ಪ್ರವೇಶಿಸಬಹುದು (ಅನುಷ್ಠಾನವನ್ನು ಅವಲಂಬಿಸಿ) HTTP/HTTPS ಮೂಲಕ. ವೆಬ್ಹೂಕ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಕಸ್ಟಮ್ HTTP ಕಾಲ್ಬ್ಯಾಕ್ಗಳಾಗಿವೆ. ಕೋಡ್ ಅನ್ನು ರೆಪೊಸಿಟರಿಗೆ ತಳ್ಳುವುದು ಅಥವಾ ಬ್ಲಾಗ್ನಲ್ಲಿ ಪೋಸ್ಟ್ ಮಾಡಲಾದ ಕಾಮೆಂಟ್ನಂತಹ ಈವೆಂಟ್ನಿಂದ ಅವು ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರಚೋದಿಸಲ್ಪಡುತ್ತವೆ. ಈವೆಂಟ್ ಸಂಭವಿಸಿದಾಗ, ಮೂಲ ಸೈಟ್ ವೆಬ್ಹೂಕ್ಗಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ URL ಗೆ HTTP ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ. ಪರಿಣಾಮವಾಗಿ, ನೀವು ಒಂದು ಸೈಟ್ನಲ್ಲಿ ಈವೆಂಟ್ಗಳನ್ನು ಇನ್ನೊಂದು ಸೈಟ್ನಲ್ಲಿ ಕ್ರಿಯೆಗಳನ್ನು ಪ್ರಚೋದಿಸಬಹುದು (ವಿಕಿ) ಮೂಲ ಸೈಟ್ ಆಬ್ಜೆಕ್ಟ್ ಸ್ಟೋರೇಜ್ ಆಗಿರುವ ಸಂದರ್ಭದಲ್ಲಿ, ಈವೆಂಟ್ಗಳು ಅದರ ವಿಷಯಗಳಿಗೆ ಬದಲಾವಣೆಗಳಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ.
ಅಂತಹ ಯಾಂತ್ರೀಕರಣವನ್ನು ಬಳಸಬಹುದಾದ ಸರಳ ಪ್ರಕರಣಗಳ ಉದಾಹರಣೆಗಳು:
ಮತ್ತೊಂದು ಕ್ಲೌಡ್ ಸಂಗ್ರಹಣೆಯಲ್ಲಿ ಎಲ್ಲಾ ವಸ್ತುಗಳ ನಕಲುಗಳನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ. ಫೈಲ್ಗಳನ್ನು ಸೇರಿಸಿದಾಗ ಅಥವಾ ಬದಲಾಯಿಸಿದಾಗಲೆಲ್ಲಾ ನಕಲುಗಳನ್ನು ಫ್ಲೈನಲ್ಲಿ ರಚಿಸಬೇಕು.
ಗ್ರಾಫಿಕ್ ಫೈಲ್ಗಳ ಥಂಬ್ನೇಲ್ಗಳ ಸರಣಿಯ ಸ್ವಯಂಚಾಲಿತ ರಚನೆ, ಛಾಯಾಚಿತ್ರಗಳಿಗೆ ನೀರುಗುರುತುಗಳನ್ನು ಸೇರಿಸುವುದು ಮತ್ತು ಇತರ ಚಿತ್ರ ಮಾರ್ಪಾಡುಗಳು.
ಹೊಸ ದಾಖಲೆಗಳ ಆಗಮನದ ಕುರಿತು ಅಧಿಸೂಚನೆ (ಉದಾಹರಣೆಗೆ, ವಿತರಿಸಿದ ಲೆಕ್ಕಪರಿಶೋಧಕ ಸೇವೆಯು ಕ್ಲೌಡ್ಗೆ ವರದಿಗಳನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಹಣಕಾಸಿನ ಮೇಲ್ವಿಚಾರಣೆಯು ಹೊಸ ವರದಿಗಳ ಕುರಿತು ಅಧಿಸೂಚನೆಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ, ಅವುಗಳನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ವಿಶ್ಲೇಷಿಸುತ್ತದೆ).
ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾದ ಪ್ರಕರಣಗಳು, ಉದಾಹರಣೆಗೆ, ಕುಬರ್ನೆಟ್ಸ್ಗೆ ವಿನಂತಿಯನ್ನು ರಚಿಸುವುದು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಇದು ಅಗತ್ಯವಾದ ಪಾತ್ರೆಗಳೊಂದಿಗೆ ಪಾಡ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ, ಅದಕ್ಕೆ ಕಾರ್ಯ ನಿಯತಾಂಕಗಳನ್ನು ರವಾನಿಸುತ್ತದೆ ಮತ್ತು ಸಂಸ್ಕರಿಸಿದ ನಂತರ ಧಾರಕವನ್ನು ಕುಸಿಯುತ್ತದೆ.
ಉದಾಹರಣೆಯಾಗಿ, Mail.ru ಕ್ಲೌಡ್ ಸೊಲ್ಯೂಷನ್ಸ್ (MCS) ಆಬ್ಜೆಕ್ಟ್ ಶೇಖರಣಾ ಬಕೆಟ್ನಲ್ಲಿನ ಬದಲಾವಣೆಗಳನ್ನು ವೆಬ್ಹೂಕ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು AWS ಆಬ್ಜೆಕ್ಟ್ ಸಂಗ್ರಹಣೆಯಲ್ಲಿ ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡಿದಾಗ ನಾವು ಕಾರ್ಯ 1 ರ ರೂಪಾಂತರವನ್ನು ಮಾಡುತ್ತೇವೆ. ನಿಜವಾದ ಲೋಡ್ ಮಾಡಲಾದ ಪ್ರಕರಣದಲ್ಲಿ, ಸರದಿಯಲ್ಲಿ ವೆಬ್ಹೂಕ್ಗಳನ್ನು ನೋಂದಾಯಿಸುವ ಮೂಲಕ ಅಸಮಕಾಲಿಕ ಕೆಲಸವನ್ನು ಒದಗಿಸಬೇಕು, ಆದರೆ ತರಬೇತಿ ಕಾರ್ಯಕ್ಕಾಗಿ ನಾವು ಇದನ್ನು ಮಾಡದೆಯೇ ಅನುಷ್ಠಾನವನ್ನು ಮಾಡುತ್ತೇವೆ.
ಪ್ರಕಾಶನ ಸೇವೆ, ಇದು S3 ಸಂಗ್ರಹಣೆಯ ಭಾಗದಲ್ಲಿದೆ ಮತ್ತು ವೆಬ್ಹೂಕ್ ಅನ್ನು ಪ್ರಚೋದಿಸಿದಾಗ HTTP ವಿನಂತಿಗಳನ್ನು ಪ್ರಕಟಿಸುತ್ತದೆ.
ವೆಬ್ಹುಕ್ ಸ್ವೀಕರಿಸುವ ಸರ್ವರ್, ಇದು HTTP ಪ್ರಕಾಶನ ಸೇವೆಯಿಂದ ವಿನಂತಿಗಳನ್ನು ಆಲಿಸುತ್ತದೆ ಮತ್ತು ಸೂಕ್ತ ಕ್ರಮಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಸರ್ವರ್ ಅನ್ನು ಯಾವುದೇ ಭಾಷೆಯಲ್ಲಿ ಬರೆಯಬಹುದು; ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಾವು ಸರ್ವರ್ ಅನ್ನು ಗೋದಲ್ಲಿ ಬರೆಯುತ್ತೇವೆ.
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) ...
ವೆಬ್ಹೂಕ್ ಸ್ವೀಕರಿಸುವ ಸರ್ವರ್ನೊಂದಿಗೆ ಫೋಲ್ಡರ್ ಅನ್ನು ಕ್ಲೋನ್ ಮಾಡಿ:
ನಾವು ವೆಬ್ಹೂಕ್ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವ ಬಕೆಟ್ಗೆ ಹೋಗಿ ಮತ್ತು ಗೇರ್ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿ:
Webhooks ಟ್ಯಾಬ್ಗೆ ಹೋಗಿ ಮತ್ತು ಸೇರಿಸು ಕ್ಲಿಕ್ ಮಾಡಿ:
ಕ್ಷೇತ್ರಗಳನ್ನು ಭರ್ತಿ ಮಾಡಿ:
ID - ವೆಬ್ಹೂಕ್ನ ಹೆಸರು.
ಈವೆಂಟ್ - ಯಾವ ಘಟನೆಗಳನ್ನು ರವಾನಿಸಬೇಕು. ಫೈಲ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಸಂಭವಿಸುವ ಎಲ್ಲಾ ಈವೆಂಟ್ಗಳ ಪ್ರಸರಣವನ್ನು ನಾವು ಹೊಂದಿಸಿದ್ದೇವೆ (ಸೇರಿಸುವುದು ಮತ್ತು ಅಳಿಸುವುದು).
URL - ವೆಬ್ಹೂಕ್ ಸ್ವೀಕರಿಸುವ ಸರ್ವರ್ ವಿಳಾಸ.
ಫಿಲ್ಟರ್ ಪೂರ್ವಪ್ರತ್ಯಯ/ಪ್ರತ್ಯಯವು ಒಂದು ಫಿಲ್ಟರ್ ಆಗಿದ್ದು ಅದು ಕೆಲವು ನಿಯಮಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುವ ಹೆಸರುಗಳಿಗೆ ಮಾತ್ರ ವೆಬ್ಹೂಕ್ಗಳನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ವೆಬ್ಹೂಕ್ .png ವಿಸ್ತರಣೆಯೊಂದಿಗೆ ಫೈಲ್ಗಳನ್ನು ಮಾತ್ರ ಪ್ರಚೋದಿಸಲು, in ಫಿಲ್ಟರ್ ಪ್ರತ್ಯಯ ನೀವು "png" ಎಂದು ಬರೆಯಬೇಕಾಗಿದೆ.
ಪ್ರಸ್ತುತ, ವೆಬ್ಹೂಕ್ ಸ್ವೀಕರಿಸುವ ಸರ್ವರ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಪೋರ್ಟ್ಗಳು 80 ಮತ್ತು 443 ಮಾತ್ರ ಬೆಂಬಲಿತವಾಗಿದೆ.
ಕ್ಲಿಕ್ ಮಾಡೋಣ ಹುಕ್ ಸೇರಿಸಿ ಮತ್ತು ನಾವು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ನೋಡುತ್ತೇವೆ:
ಹುಕ್ ಸೇರಿಸಲಾಗಿದೆ.
ವೆಬ್ಹೂಕ್ ಸ್ವೀಕರಿಸುವ ಸರ್ವರ್ ತನ್ನ ಲಾಗ್ಗಳಲ್ಲಿ ಹುಕ್ ನೋಂದಣಿ ಪ್ರಕ್ರಿಯೆಯ ಪ್ರಗತಿಯನ್ನು ತೋರಿಸುತ್ತದೆ:
HmacSha256 ಮತ್ತು HmacSha256hex ಕಾರ್ಯಗಳು HMAC-SHA256 ಮತ್ತು HMAC-SHA256 ಎನ್ಕ್ರಿಪ್ಶನ್ ಅಲ್ಗಾರಿದಮ್ಗಳ ಅಳವಡಿಕೆಯಾಗಿದ್ದು, ಸಹಿಯನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ಹೆಕ್ಸಾಡೆಸಿಮಲ್ ಸಂಖ್ಯೆಗಳ ಸ್ಟ್ರಿಂಗ್ನಂತೆ ಔಟ್ಪುಟ್ ಆಗಿದೆ.
ಮುಖ್ಯವು ಮುಖ್ಯ ಕಾರ್ಯವಾಗಿದೆ, ಆಜ್ಞಾ ಸಾಲಿನ ನಿಯತಾಂಕಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ ಮತ್ತು URL ಹ್ಯಾಂಡ್ಲರ್ಗಳನ್ನು ನೋಂದಾಯಿಸುತ್ತದೆ.
ಸರ್ವರ್ ಸ್ವೀಕರಿಸಿದ ಕಮಾಂಡ್ ಲೈನ್ ನಿಯತಾಂಕಗಳು:
-ಪೋರ್ಟ್ ಎನ್ನುವುದು ಸರ್ವರ್ ಕೇಳುವ ಪೋರ್ಟ್ ಆಗಿದೆ.
-ವಿಳಾಸ - ಸರ್ವರ್ ಕೇಳುವ 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»
}
ಅಂತೆಯೇ, ವಿನಂತಿಯನ್ನು ಅವಲಂಬಿಸಿ, ಡೇಟಾವನ್ನು ಹೇಗೆ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಬೇಕು ಎಂಬುದನ್ನು ನೀವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. ನಾನು ಪ್ರವೇಶವನ್ನು ಸೂಚಕವಾಗಿ ಆಯ್ಕೆ ಮಾಡಿದ್ದೇನೆ "Type":"SubscriptionConfirmation", ಇದು ಚಂದಾದಾರಿಕೆ ದೃಢೀಕರಣ ವಿನಂತಿಯಲ್ಲಿ ಇರುವುದರಿಂದ ಮತ್ತು ವೆಬ್ಹೂಕ್ನಲ್ಲಿ ಇರುವುದಿಲ್ಲ. POST ವಿನಂತಿಯಲ್ಲಿ ಈ ನಮೂದು ಇರುವಿಕೆ/ಅನುಪಸ್ಥಿತಿಯ ಆಧಾರದ ಮೇಲೆ, ಕಾರ್ಯಕ್ರಮದ ಮತ್ತಷ್ಟು ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯು ಕಾರ್ಯಕ್ಕೆ ಹೋಗುತ್ತದೆ SubscriptionConfirmation, ಅಥವಾ ಒಂದು ಕಾರ್ಯಕ್ಕೆ GotRecords.
ನಾವು ಚಂದಾದಾರಿಕೆ ದೃಢೀಕರಣ ಕಾರ್ಯವನ್ನು ವಿವರವಾಗಿ ಪರಿಗಣಿಸುವುದಿಲ್ಲ; ಇದನ್ನು ನಿಗದಿಪಡಿಸಿದ ತತ್ವಗಳ ಪ್ರಕಾರ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ ದಸ್ತಾವೇಜನ್ನು. ಈ ಕಾರ್ಯಕ್ಕಾಗಿ ನೀವು ಮೂಲ ಕೋಡ್ ಅನ್ನು ಇಲ್ಲಿ ವೀಕ್ಷಿಸಬಹುದು ಪ್ರಾಜೆಕ್ಟ್ ಜಿಟ್ ರೆಪೊಸಿಟರಿಗಳು.
GotRecords ಕಾರ್ಯವು ಒಳಬರುವ ವಿನಂತಿಯನ್ನು ಪಾರ್ಸ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ರೆಕಾರ್ಡ್ ಆಬ್ಜೆಕ್ಟ್ಗೆ ಬಾಹ್ಯ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಕರೆಯುತ್ತದೆ (ಅವರ ಹೆಸರನ್ನು -ಸ್ಕ್ರಿಪ್ಟ್ ಪ್ಯಾರಾಮೀಟರ್ನಲ್ಲಿ ರವಾನಿಸಲಾಗಿದೆ) ನಿಯತಾಂಕಗಳೊಂದಿಗೆ:
ಬಕೆಟ್ ಹೆಸರು
ವಸ್ತುವಿನ ಕೀ
ಕ್ರಿಯೆ:
ನಕಲು - ಮೂಲ ವಿನಂತಿಯಲ್ಲಿದ್ದರೆ EventName = ObjectCreated | PutObject | PutObjectCopy
ಅಳಿಸಿ - ಮೂಲ ವಿನಂತಿಯಲ್ಲಿದ್ದರೆ EventName = ಆಬ್ಜೆಕ್ಟ್ ತೆಗೆದ | ವಸ್ತುವನ್ನು ಅಳಿಸಿ
ಹೀಗಾಗಿ, ವಿವರಿಸಿದಂತೆ ಪೋಸ್ಟ್ ವಿನಂತಿಯೊಂದಿಗೆ ಕೊಕ್ಕೆ ಬಂದರೆ ಹೆಚ್ಚಿನ, ಮತ್ತು ಪ್ಯಾರಾಮೀಟರ್ -script=script.sh ನಂತರ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಈ ಕೆಳಗಿನಂತೆ ಕರೆಯಲಾಗುತ್ತದೆ:
script.sh bucketA some-file-to-bucket copy
ಈ ವೆಬ್ಹೂಕ್ ಸ್ವೀಕರಿಸುವ ಸರ್ವರ್ ಸಂಪೂರ್ಣ ಉತ್ಪಾದನಾ ಪರಿಹಾರವಲ್ಲ, ಆದರೆ ಸಂಭವನೀಯ ಅನುಷ್ಠಾನದ ಸರಳೀಕೃತ ಉದಾಹರಣೆಯಾಗಿದೆ ಎಂದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು.
ಕೆಲಸದ ಉದಾಹರಣೆ
MCS ನಲ್ಲಿನ ಮುಖ್ಯ ಬಕೆಟ್ನಿಂದ AWS ನಲ್ಲಿನ ಬ್ಯಾಕಪ್ ಬಕೆಟ್ಗೆ ಫೈಲ್ಗಳನ್ನು ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡೋಣ. ಮುಖ್ಯ ಬಕೆಟ್ ಅನ್ನು myfiles-ash ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಬ್ಯಾಕಪ್ ಒಂದನ್ನು myfiles-backup ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ (AWS ನಲ್ಲಿನ ಬಕೆಟ್ ಕಾನ್ಫಿಗರೇಶನ್ ಈ ಲೇಖನದ ವ್ಯಾಪ್ತಿಯನ್ನು ಮೀರಿದೆ). ಅಂತೆಯೇ, ಫೈಲ್ ಅನ್ನು ಮುಖ್ಯ ಬಕೆಟ್ನಲ್ಲಿ ಇರಿಸಿದಾಗ, ಅದರ ನಕಲು ಬ್ಯಾಕ್ಅಪ್ ಒಂದರಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳಬೇಕು ಮತ್ತು ಅದನ್ನು ಮುಖ್ಯದಿಂದ ಅಳಿಸಿದಾಗ, ಅದನ್ನು ಬ್ಯಾಕಪ್ ಒಂದರಲ್ಲಿ ಅಳಿಸಬೇಕು.
MCS ಕ್ಲೌಡ್ ಸಂಗ್ರಹಣೆ ಮತ್ತು AWS ಕ್ಲೌಡ್ ಸಂಗ್ರಹಣೆ ಎರಡಕ್ಕೂ ಹೊಂದಿಕೆಯಾಗುವ awscli ಉಪಯುಕ್ತತೆಯನ್ನು ಬಳಸಿಕೊಂಡು ನಾವು ಬಕೆಟ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತೇವೆ.
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:
ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ನೋಡೋಣ. ಮೂಲಕ MCS ವೆಬ್ ಇಂಟರ್ಫೇಸ್ myfiles-ash ಬಕೆಟ್ಗೆ test.txt ಫೈಲ್ ಅನ್ನು ಸೇರಿಸಿ. ವೆಬ್ಹೂಕ್ ಸರ್ವರ್ಗೆ ವಿನಂತಿಯನ್ನು ಮಾಡಲಾಗಿದೆ ಎಂದು ಕನ್ಸೋಲ್ ಲಾಗ್ಗಳು ತೋರಿಸುತ್ತವೆ:
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-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:~$
ಫೈಲ್ ಅನ್ನು ಅಳಿಸಲಾಗಿದೆ, ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲಾಗಿದೆ.
ತೀರ್ಮಾನ ಮತ್ತು ToDo
ಈ ಲೇಖನದಲ್ಲಿ ಬಳಸಲಾದ ಎಲ್ಲಾ ಕೋಡ್ ನನ್ನ ಭಂಡಾರದಲ್ಲಿ. ವೆಬ್ಹೂಕ್ಗಳನ್ನು ನೋಂದಾಯಿಸಲು ಸ್ಕ್ರಿಪ್ಟ್ಗಳ ಉದಾಹರಣೆಗಳು ಮತ್ತು ಸಹಿಗಳನ್ನು ಎಣಿಸುವ ಉದಾಹರಣೆಗಳೂ ಇವೆ.
ಈ ಕೋಡ್ ನಿಮ್ಮ ಚಟುವಟಿಕೆಗಳಲ್ಲಿ S3 ವೆಬ್ಹೂಕ್ಗಳನ್ನು ಹೇಗೆ ಬಳಸಬಹುದು ಎಂಬುದಕ್ಕೆ ಒಂದು ಉದಾಹರಣೆಗಿಂತ ಹೆಚ್ಚೇನೂ ಅಲ್ಲ. ನಾನು ಆರಂಭದಲ್ಲಿ ಹೇಳಿದಂತೆ, ನೀವು ಉತ್ಪಾದನೆಯಲ್ಲಿ ಅಂತಹ ಸರ್ವರ್ ಅನ್ನು ಬಳಸಲು ಯೋಜಿಸಿದರೆ, ಅಸಮಕಾಲಿಕ ಕೆಲಸಕ್ಕಾಗಿ ನೀವು ಕನಿಷ್ಟ ಸರ್ವರ್ ಅನ್ನು ಪುನಃ ಬರೆಯಬೇಕಾಗಿದೆ: ಒಳಬರುವ ವೆಬ್ಹೂಕ್ಗಳನ್ನು ಸರದಿಯಲ್ಲಿ ನೋಂದಾಯಿಸಿ (RabbitMQ ಅಥವಾ NATS), ಮತ್ತು ಅಲ್ಲಿಂದ ಅವುಗಳನ್ನು ಪಾರ್ಸ್ ಮಾಡಿ ಮತ್ತು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ ಕಾರ್ಮಿಕರ ಅರ್ಜಿಗಳೊಂದಿಗೆ. ಇಲ್ಲದಿದ್ದರೆ, ವೆಬ್ಹೂಕ್ಗಳು ಬೃಹತ್ ಪ್ರಮಾಣದಲ್ಲಿ ಬಂದಾಗ, ಕಾರ್ಯಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಸರ್ವರ್ ಸಂಪನ್ಮೂಲಗಳ ಕೊರತೆಯನ್ನು ನೀವು ಎದುರಿಸಬಹುದು. ಸರತಿ ಸಾಲುಗಳ ಉಪಸ್ಥಿತಿಯು ಸರ್ವರ್ ಮತ್ತು ಕೆಲಸಗಾರರನ್ನು ವಿತರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಹಾಗೆಯೇ ವೈಫಲ್ಯಗಳ ಸಂದರ್ಭದಲ್ಲಿ ಪುನರಾವರ್ತಿತ ಕಾರ್ಯಗಳೊಂದಿಗೆ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸುತ್ತದೆ. ಲಾಗಿಂಗ್ ಅನ್ನು ಹೆಚ್ಚು ವಿವರವಾದ ಮತ್ತು ಹೆಚ್ಚು ಪ್ರಮಾಣಿತವಾಗಿ ಬದಲಾಯಿಸಲು ಸಹ ಸಲಹೆ ನೀಡಲಾಗುತ್ತದೆ.