เดเดตเดจเตเดฑเต-เดกเตเดฐเตเดตเต เดเตผเดเตเดเดฟเดเตเดเตเดเตผ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดตเดฟเดญเดตเดเตเดเดณเตเดเต เดเตเดฒเดตเต เดเดพเดฐเตเดฏเดเตเดทเดฎเดค เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต, เดเดพเดฐเดฃเด เด
เดต เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดจเดฟเดฎเดฟเดทเดคเตเดคเดฟเตฝ เดฎเดพเดคเตเดฐเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เดเดคเต เดเดเตเดเดจเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเดฎเตเดจเตเดจเตเด เด
เดงเดฟเด เดเตเดฒเตเดกเต เดเดจเตเดฑเดฟเดฑเตเดฑเดฟเดเตพ เดตเตผเดเตเดเตผ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเดพเดฏเดฟ เดธเตเดทเตเดเดฟเดเตเดเดฐเตเดคเตเดจเตเดจเตเด เดจเดฟเดฐเดตเดงเดฟ เดเดชเตเดทเดจเตเดเตพ เดเดฃเตเดเต. เดเดจเตเดจเต เดเดพเตป เดธเดเดธเดพเดฐเดฟเดเตเดเตเดจเตเดจเดคเต FaaS เดจเตเดเตเดเตเดฑเดฟเดเตเดเดฒเตเดฒ, webhooks เดจเตเดเตเดเตเดฑเดฟเดเตเดเดพเดฃเต. เดเดฌเตโเดเดเตเดฑเตเดฑเต เดธเตเดฑเตเดฑเตเดฑเตเดเต เดตเตเดฌเตโเดนเตเดเตเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดตเดจเตเดฑเตเดเตพ เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเตเดฏเตเดเตเดเตเดฑเดฟเดฏเตฝ เดเดฆเดพเดนเดฐเดฃเด เดเดพเตป เดเดพเดฃเดฟเดเตเดเตเด.
เดเดฌเตโเดเดเตโเดฑเตเดฑเต เดธเดเดญเดฐเดฃเดคเตเดคเตเดฏเตเด เดตเตเดฌเตโเดนเตเดเตเดเดฟเดจเตเดฏเตเด เดเตเดฑเดฟเดเตเดเต เดเตเดฑเดเตเดเต เดตเดพเดเตเดเตเดเตพ. เดเดฌเตโเดเดเตเดฑเตเดฑเต เดธเตเดฑเตเดฑเตเดฑเตเดเต เดจเดฟเดเตเดเดณเต เดเตเดฒเตเดกเดฟเตฝ เดเดฌเตโเดเดเตเดฑเตเดฑเตเดเดณเตเดเต เดฐเตเดชเดคเตเดคเดฟเตฝ เดธเดเดญเดฐเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต, S3 เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฎเดฑเตเดฑเตเดฐเต API เดตเดดเดฟ เดเดเตโเดธเดธเต เดเตเดฏเตเดฏเดพเดจเดพเดเตเด (เดจเดเดชเตเดชเดพเดเตเดเดฒเดฟเดจเต เดเดถเตเดฐเดฏเดฟเดเตเดเต) HTTP/HTTPS เดตเดดเดฟ. เดตเตเดฌเตโเดนเตเดเตเดเตเดเตพ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดเดทเตโเดเดพเดจเตเดธเตเดค HTTP เดเตเตพเดฌเดพเดเตเดเตเดเดณเดพเดฃเต. เดเตเดกเต เดเดฐเต เดถเตเดเดฐเดคเตเดคเดฟเดฒเตเดเตเดเต เดคเดณเตเดณเตเดจเตเดจเดคเต เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดฌเตเดฒเตเดเดฟเตฝ เดชเตเดธเตเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดชเตเดฒเตเดฏเตเดณเตเดณ เดเดฐเต เดเดตเดจเตเดฑเต เดตเดดเดฟเดฏเดพเดฃเต เด
เดต เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดเตเดฐเดฟเดเตผ เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเดคเต. เดเดฐเต เดเดตเดจเตเดฑเต เดธเดเดญเดตเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดตเตเดฌเตโเดนเตเดเตเดเดฟเดจเดพเดฏเดฟ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏ URL-เดฒเตเดเตเดเต เดเดคเตเดญเดต เดธเตเดฑเตเดฑเต เดเดฐเต HTTP เด
เดญเตเดฏเตผเดคเตเดฅเดจ เด
เดฏเดฏเตโเดเตเดเตเดจเตเดจเต. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดธเตเดฑเตเดฑเดฟเดฒเต เดเดตเดจเตเดฑเตเดเตพ เดฎเดฑเตเดฑเตเดจเตเดจเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด (
เด เดคเตเดคเดฐเด เดเดเตเดเตเดฎเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเดพเดตเตเดจเตเดจ เดฒเดณเดฟเดคเดฎเดพเดฏ เดเตเดธเตเดเดณเตเดเต เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ:
- เดฎเดฑเตเดฑเตเดฐเต เดเตเดฒเตเดกเต เดธเตเดฑเตเดฑเตเดฑเตเดเดฟเตฝ เดเดฒเตเดฒเดพ เดตเดธเตเดคเตเดเตเดเดณเตเดเตเดฏเตเด เดชเดเตผเดชเตเดชเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต. เดซเดฏเดฒเตเดเตพ เดเตเตผเดเตเดเตเดฎเตเดชเตเดดเต เดฎเดพเดฑเตเดฑเตเดฎเตเดชเตเดดเต เดชเดเตผเดชเตเดชเตเดเตพ เดเดเตเดเดฏเดฟเตฝ เดธเตเดทเตเดเดฟเดเตเดเดฃเด.
- เดเตเดฐเดพเดซเดฟเดเต เดซเดฏเดฒเตเดเดณเตเดเต เดฒเดเตเดเดฟเดคเตเดฐเดเตเดเดณเตเดเต เดเดฐเต เดชเดฐเดฎเตเดชเดฐ เดธเตเดตเดฏเดฎเตเดต เดธเตเดทเตเดเดฟเดเตเดเตฝ, เดซเตเดเตเดเตเดเตเดฐเดพเดซเตเดเดณเดฟเตฝ เดตเดพเดเตเดเตผเดฎเดพเตผเดเตเดเตเดเตพ เดเตเตผเดเตเดเตฝ, เดฎเดฑเตเดฑเต เดเดฎเตเดเต เดชเดฐเดฟเดทเตเดเตเดเดฐเดฃเดเตเดเตพ.
- เดชเตเดคเดฟเดฏ เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเดณเตเดเต เดตเดฐเดตเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เด เดฑเดฟเดฏเดฟเดชเตเดชเต (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดค เด เดเตเดเตเดฃเตเดเดฟเดเดเต เดธเตเดตเดจเด เดเตเดฒเตเดกเดฟเดฒเตเดเตเดเต เดฑเดฟเดชเตเดชเตเตผเดเตเดเตเดเตพ เด เดชเตโเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต, เดเตเดเดพเดคเต เดธเดพเดฎเตเดชเดคเตเดคเดฟเด เดจเดฟเดฐเตเดเตเดทเดฃเดคเตเดคเดฟเดจเต เดชเตเดคเดฟเดฏ เดฑเดฟเดชเตเดชเตเตผเดเตเดเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เด เดฑเดฟเดฏเดฟเดชเตเดชเตเดเตพ เดฒเดญเดฟเดเตเดเตเดจเตเดจเต, เด เดต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต, เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเต).
- เดเตเดฑเดเตเดเตเดเตเดเดฟ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เดเตเดธเตเดเดณเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดจเตเดจเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเดฟเดฒเตเดเตเดเต เดเดฐเต เด เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต, เด เดคเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดชเดพเดคเตเดฐเดเตเดเดณเตเดณเตเดณ เดเดฐเต เดชเตเดกเต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต, เด เดคเดฟเดฒเตเดเตเดเต เดเดพเดธเตโเดเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเตเดฎเดพเดฑเตเดจเตเดจเต, เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเดฟเดจเต เดถเตเดทเด เดเดฃเตเดเตเดฏเตเดจเตผ เดคเดเดฐเตเดจเตเดจเต.
เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ, Mail.ru เดเตเดฒเตเดกเต เดธเตเดฒเตเดฏเตเดทเตปเดธเต (MCS) เดเดฌเตโเดเดเตเดฑเตเดฑเต เดธเตเดฑเตเดฑเตเดฑเตเดเต เดฌเดเตเดเดฑเตเดฑเดฟเดฒเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเตเดฌเตโเดนเตเดเตเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต AWS เดเดฌเตโเดเดเตเดฑเตเดฑเต เดธเตเดฑเตเดฑเตเดฑเตเดเดฟเตฝ เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเดเตเดเตพ เดเดพเดธเตโเดเต 1-เดจเตเดฑเต เดเดฐเต เดตเดเดญเตเดฆเด เดเดฃเตเดเดพเดเตเดเตเด. เดเดฐเต เดฏเดฅเดพเตผเดคเตเดฅ เดฒเตเดกเต เดเตเดฏเตเดค เดเตเดธเดฟเตฝ, เดเดฐเต เดเตเดฏเตเดตเดฟเตฝ เดตเตเดฌเตเดนเตเดเตเดเตเดเตพ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดคเตเดเตเดฃเตเดเต เด เดธเดฟเตปเดเตเดฐเดฃเดธเต เดตเตผเดเตเดเต เดจเตฝเดเดฃเด, เดเดจเตเดจเดพเตฝ เดชเดฐเดฟเดถเตเดฒเดจ เดเตเดฎเดคเดฒเดฏเตเดเตเดเดพเดฏเดฟ เดเดเตเดเตพ เดเดคเต เดเตเดเดพเดคเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเด.
เดตเตผเดเตเดเต เดธเตเดเตเด
เดเตปเดฑเดฑเดพเดเตเดทเตป เดชเตเดฐเตเดเตเดเตเดเตเดเตเตพ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต
- เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฃ เดธเตเดตเดจเด, S3 เดธเตเดฑเตเดฑเตเดฑเตเดเต เดตเดถเดคเตเดคเตเดณเตเดณเดคเตเด webnhook เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดฎเตเดชเตเตพ HTTP เด เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเตเดฎเดพเดฃเต.
- Webhook เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดธเตเตผเดตเตผ, เดเดคเต HTTP เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฃ เดธเตเดตเดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดเดฏเตเด เดเดเดฟเดคเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดจเดเดคเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดธเตเตผเดตเตผ เดเดคเต เดญเดพเดทเดฏเดฟเดฒเตเด เดเดดเตเดคเดพเด; เดเดเตเดเดณเตเดเต เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดเดเตเดเตพ เดเตเดฏเดฟเตฝ เดธเตเตผเดตเตผ เดเดดเตเดคเตเด.
S3 API-เดฏเดฟเตฝ เดตเตเดฌเตโเดนเตเดเตเดเตเดเตพ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดธเดตเดฟเดถเตเดทเดค เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฃ เดธเตเดตเดจเดคเตเดคเดฟเตฝ เดตเตเดฌเตโเดนเตเดเตเดเต เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดธเตเตผเดตเดฑเดฟเดจเตเดฑเต เดฐเดเดฟเดธเตโเดเตเดฐเตเดทเดจเดพเดฃเต. เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเตเด, เดตเตเดฌเตโเดนเตเดเตเดเต เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดธเตเตผเดตเตผ เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฃ เดธเตเดตเดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดธเดจเตเดฆเตเดถเดเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดธเดฌเตโเดธเตโเดเตเดฐเดฟเดชเตโเดทเตป เดธเตเดฅเดฟเดฐเตเดเดฐเดฟเดเตเดเดฃเด (เดฎเดฑเตเดฑเต เดตเตเดฌเตโเดนเตเดเตเดเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดฒเตเดเดณเดฟเตฝ, เดธเดฌเตโเดธเตโเดเตเดฐเดฟเดชเตโเดทเดจเตเดฑเต เดธเตเดฅเดฟเดฐเตเดเดฐเดฃเด เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ).
เด เดคเดจเตเดธเดฐเดฟเดเตเดเต, webhook เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดธเตเตผเดตเตผ เดฐเดฃเตเดเต เดชเตเดฐเดงเดพเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเต เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเดฃเด:
- เดฐเดเดฟเดธเตเดเตเดฐเตเดทเตป เดธเตเดฅเดฟเดฐเตเดเดฐเดฟเดเตเดเดพเดจเตเดณเตเดณ เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฃ เดธเตเดตเดจเดคเตเดคเดฟเดจเตเดฑเต เด เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดเต เดชเตเดฐเดคเดฟเดเดฐเดฟเดเตเดเตเด,
- เดเตปเดเดฎเดฟเดเดเต เดเดตเดจเตเดฑเตเดเตพ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเด.
เดเดฐเต webhook เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดธเตเตผเดตเตผ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเต
webhook เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดธเตเตผเดตเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต Linux เดธเตเตผเดตเตผ เดเดตเดถเตเดฏเดฎเดพเดฃเต. เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ, เดเดฐเต เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ, เดเดเตเดเตพ 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 เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดตเตเดฌเต เดเดจเตเดฑเตผเดซเตเดธเต เดตเดดเดฟ เดจเดฟเดเตเดเดณเตเดเต webhook เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดธเตเตผเดตเตผ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเดพเด. เดฒเดพเดณเดฟเดคเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ, เดเดเตเดเตพ เดตเตเดฌเต เดเดจเตเดฑเตผเดซเตเดธเต เดตเดดเดฟ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเด:
เดจเดฎเตเดเตเดเต เดฌเดเตเดเดฑเตเดฑเต เดตเดฟเดญเดพเดเดคเตเดคเดฟเดฒเตเดเตเดเต เดชเตเดเดพเด เดเตบเดเตเดฐเตเตพ เดฑเตเดฎเดฟเตฝ.- เดเดเตเดเตพ เดตเตเดฌเตโเดนเตเดเตเดเตเดเตพ เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดจเตเดจ เดฌเดเตเดเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดชเตเดฏเดฟ เดเดฟเดฏเดฑเดฟเตฝ เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเตเด:
Webhooks เดเดพเดฌเดฟเดฒเตเดเตเดเต เดชเตเดฏเดฟ เดเตเตผเดเตเดเตเด เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเตเด:
เดซเตเตฝเดกเตเดเตพ เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเดเตเด:
เดเดกเดฟ - เดตเตเดฌเตเดนเตเดเตเดเดฟเดจเตเดฑเต เดชเตเดฐเต.
เดเดตเดจเตเดฑเต - เดเดคเต เดเดตเดจเตเดฑเตเดเตพ เดเตเดฎเดพเดฑเดฃเด. เดซเดฏเดฒเตเดเดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดฎเตเดชเตเตพ เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจ เดเดฒเตเดฒเดพ เดเดตเดจเตเดฑเตเดเดณเตเดเตเดฏเตเด เดธเดเดชเตเดฐเตเดเตเดทเดฃเด เดเดเตเดเตพ เดธเดเตเดเดฎเดพเดเตเดเดฟ (เดเตเตผเดเตเดเตเดเดฏเตเด เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด).
URL โ webhook เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดธเตเตผเดตเตผ เดตเดฟเดฒเดพเดธเด.
เดเดฟเดฒ เดจเดฟเดฏเดฎเดเตเดเดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจ เดเดฌเตโเดเดเตเดฑเตเดฑเตเดเตพเดเตเดเดพเดฏเดฟ เดฎเดพเดคเตเดฐเด เดตเตเดฌเตโเดนเตเดเตเดเตเดเตพ เดธเตเดทเตโเดเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดซเดฟเตฝเดเตเดเดฑเดพเดฃเต เดซเดฟเตฝเดเตเดเตผ เดชเตเดฐเดฟเดซเดฟเดเตโเดธเต/เดธเดซเดฟเดเตโเดธเต. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, .png เดตเดฟเดชเตเดฒเตเดเดฐเดฃเดคเตเดคเตเดเตเดเตเดเดฟเดฏ เดซเดฏเดฒเตเดเตพ เดฎเดพเดคเตเดฐเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเต webhook, in เดซเดฟเตฝเดเตเดเตผ เดชเตเดฐเดคเตเดฏเดฏเด เดจเดฟเดเตเดเตพ "png" เดเดดเตเดคเตเดฃเตเดเดคเตเดฃเตเดเต.
เดจเดฟเดฒเดตเดฟเตฝ, เดตเตเดฌเตโเดนเตเดเตเดเต เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดธเตเตผเดตเตผ เดเดเตโเดธเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต 80, 443 เดชเตเตผเดเตเดเตเดเตพ เดฎเดพเดคเตเดฐเดฎเต เดชเดฟเดจเตเดคเตเดฃเดฏเตโเดเตเดเตเดจเตเดจเตเดณเตเดณเต.
เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเดพเด เดนเตเดเตเดเต เดเตเตผเดเตเดเตเด เดเดเตเดเตพ เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดเดพเดฃเตเด:
เดนเตเดเตเดเต เดเตเดเตเดเดฟเดเตเดเตเตผเดคเตเดคเต.
เดตเตเดฌเตโเดนเตเดเตเดเต เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดธเตเตผเดตเตผ เด เดคเดฟเดจเตเดฑเต เดฒเตเดเตเดเดณเดฟเตฝ เดนเตเดเตเดเต เดฐเดเดฟเดธเตเดเตเดฐเตเดทเตป เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเดเต เดชเตเดฐเตเดเดคเดฟ เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเต:
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 เดเตปเดเตเดฐเดฟเดชเตเดทเตป เด เตฝเดเตเดฐเดฟเดคเดเตเดเดณเตเดเต เดจเดฟเตผเดตเตเดตเดนเดฃเดเตเดเดณเดพเดฃเต.
- เดชเตเดฐเดงเดพเดจ เดเดจเตเดจเดคเต เดชเตเดฐเดงเดพเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฎเดพเดฃเต, เดเดฎเดพเตปเดกเต เดฒเตเตป เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดเดฏเตเด URL เดนเดพเตปเดกเตโเดฒเดฑเตเดเตพ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดธเตเตผเดตเตผ เด เดเดเตเดเดฐเดฟเดเตเด เดเดฎเดพเตปเดกเต เดฒเตเตป เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ:
- -port เดเดจเตเดจเดคเต เดธเตเตผเดตเตผ เดเตเตพเดเตเดเตเดจเตเดจ เดชเตเตผเดเตเดเต เดเดฃเต.
- -เดตเดฟเดฒเดพเดธเด - เดธเตเตผเดตเตผ เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดจเตเดจ 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)
}
}
เดฐเดเดฟเดธเตเดเตเดฐเตเดทเตป เดธเตเดฅเดฟเดฐเตเดเดฐเดฟเดเตเดเดพเดจเตเดณเตเดณ เด
เดญเตเดฏเตผเดคเตเดฅเดจเดฏเต เดตเตเดฌเตโเดนเตเดเตเดเต เดตเดจเตเดจเต เดเดจเตเดจเต เด เดซเดเดเตโเดทเตป เดจเดฟเตผเดฃเตเดฃเดฏเดฟเดเตเดเตเดจเตเดจเต. เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต
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
.
เดธเดฌเตโเดธเตโเดเตเดฐเดฟเดชเตโเดทเตป เดธเตเดฅเดฟเดฐเตเดเดฐเดฃ เดซเดเดเตโเดทเตป เดเดเตเดเตพ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเดฐเดฟเดเดฃเดฟเดเตเดเดฟเดฒเตเดฒ; เด
เดคเดฟเตฝ เดชเดฑเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดคเดคเตเดตเดเตเดเตพเดเตเดเดจเตเดธเตเดคเดฎเดพเดฏเดพเดฃเต เดเดคเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเต
GotRecords เดซเดเดเตโเดทเตป เดเดฐเต เดเตปเดเดฎเดฟเดเดเต เด เดญเตเดฏเตผเดคเตเดฅเดจ เดชเดพเดดเตโเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเต, เดเตเดเดพเดคเต เดเดฐเต เดฑเตเดเตเดเตเตผเดกเต เดเดฌเตโเดเดเตเดฑเตเดฑเดฟเดจเตเด เดชเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดฌเดพเดนเตเดฏ เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดจเต (-เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเดฟเตฝ เด เดฏเดเตเด เดชเตเดฐเต) เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต:
- เดฌเดเตเดเดฑเตเดฑเต เดชเตเดฐเต
- เดเดฌเตเดเดเตเดฑเตเดฑเต เดเต
- เดจเดเดชเดเดฟ:
- เดเตเดชเตเดชเดฟ - เดฏเดฅเดพเตผเดคเตเดฅ เด เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดฟเดฒเดพเดฃเตเดเตเดเดฟเตฝ EventName = ObjectCreated | PutObject | PutObjectCopy
- เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเด - เดฏเดฅเดพเตผเดคเตเดฅ เด เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดฟเดฒเดพเดฃเตเดเตเดเดฟเตฝ EventName = ObjectRemoved | เดเดฌเตเดเดเตเดฑเตเดฑเต เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเด
เด
เดเตเดเดจเต, เดตเดฟเดตเดฐเดฟเดเตเดเดคเตเดชเตเดฒเต, เดเดฐเต เดชเตเดธเตเดฑเตเดฑเต เด
เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดฎเดพเดฏเดฟ เดเดฐเต เดนเตเดเตเดเต เดตเดจเตเดจเดพเตฝ
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:
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
เดเดคเต เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดจเตเดเตเดเดพเด. เดตเดดเดฟ
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) เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเด, เด เดตเดฟเดเต เดจเดฟเดจเตเดจเต เด เดต เดชเดพเดดเตโเดธเต เดเตเดฏเตเดคเต เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเด. เดคเตเดดเดฟเดฒเดพเดณเดฟ เด เดชเตเดเตเดทเดเตพเดเตเดเตเดชเตเดชเด. เด เดฒเตเดฒเตเดเตเดเดฟเตฝ, เดตเตเดฌเตโเดนเตเดเตเดเตเดเตพ เดตเตปเดคเตเดคเดฟเตฝ เดเดคเตเดคเตเดฎเตเดชเตเตพ, เดเดพเดธเตโเดเตเดเตเดเตพ เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเตเตผเดตเตผ เดเดฑเดตเดฟเดเดเตเดเดณเตเดเต เด เดญเดพเดตเด เดจเดฟเดเตเดเตพเดเตเดเต เดจเตเดฐเดฟเดเดพเด. เดเตเดฏเตเดเดณเตเดเต เดธเดพเดจเตเดจเดฟเดงเตเดฏเด เดธเตเตผเดตเดฑเตเด เดคเตเดดเดฟเดฒเดพเดณเดฟเดเดณเตเด เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดฏเดพเดจเตเด เดชเดฐเดพเดเดฏเดเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดตเตผเดคเตเดคเดฟเดเตเดเตเดณเตเดณ เดเตเดฒเดฟเดเดณเดฟเดฒเต เดชเตเดฐเดถเตเดจเดเตเดเตพ เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเดจเตเด เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดฒเตเดเดฟเดเดเต เดเตเดเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดคเตเด เดเตเดเตเดคเตฝ เดธเตเดฑเตเดฑเดพเตปเดกเตเตผเดกเต เดเดฏเดคเตเดฎเดพเดฏ เดเดจเตเดจเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเตเด เดเดเดฟเดคเดฎเดพเดฃเต.
เดเตเดกเต เดฒเดเตเดเต!
เดตเดฟเดทเดฏเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเตเดเตเดคเตฝ เดตเดพเดฏเดจ:
เดเดฐเต เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเดฎเดพเดฏเดฟ Mail.ru เดเตเดฒเตเดกเต เดธเตเดฒเตเดฏเตเดทเตปเดธเต S3 เดเดฌเตเดเดเตเดฑเตเดฑเต เดธเตเดฑเตเดฑเตเดฑเตเดเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต. เดฎเดคเตเดธเดฐเดคเตเดคเต เดคเตเตฝเดชเตเดชเดฟเดเตเดเดพเตป เดเดฌเตโเดเดเตเดฑเตเดฑเต เดธเตเดฑเตเดฑเตเดฑเตเดเต เดเดเตเดเดจเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต.
เด เดตเดฒเดเดฌเด: www.habr.com