जब आप बड़े और बूढ़े हो रहे हैं तो आप नहीं करते हैं इस तरह की कुछ साइटों और ब्लॉगों को होस्ट करने के लिए एक सर्वर को और बनाए रखना नहीं चाहते हैं, निगरानी करें कि क्या पुरानी पुरानी साइटों पर भी प्रमाणपत्र को एन्क्रिप्ट करने देता है और इसी तरह कम से कम यह सच है me :) और मैंने इसे किसी पूर्ण-प्रबंधित प्लेटफ़ॉर्म पर ले जाने का निर्णय लिया। पहली नज़र के लिए Google क्लाउड स्टोरेज पर्याप्त समाधान था, लेकिन बकेट बनाने के बाद, और पूरा ट्यूटोरियल फेंकने के बाद मैं समझता हूं कि https को सक्षम करना न तो आसान होगा (लोड बैलेंसर का उपयोग करना और इसी तरह) न तो सस्ता (ità ¢  ) ÃÂs $0.025 प्रति पहले 5 नियम प्रति घंटा =>$18 प्रति माह) बस कुछ एपीआई के लिए Google क्लाउड रन का उपयोग किया और यह केवल उपयोग किए गए समय/सीपीयू/रैम के लिए भुगतान किया जाता है, लेकिन बहुत सक्रिय वेबसाइट नहीं होने की स्थिति में फ्री टियर भी कुछ वेबसाइटों को पूरी तरह से होस्ट करने के लिए पर्याप्त है मुक्त करने के लिए प्रलेखन को पढ़ने के बाद यह बहुत ही सरल दिखता है, आपको GCP क्लाइंट लाइब्रेरी का उपयोग करते समय क्लाउड रन (पूरी तरह से प्रबंधित) कंटेनर इंस्टेंस के अंदर मैन्युअल रूप से क्रेडेंशियल्स प्रदान करने की आवश्यकता नहीं है! पीएस .: अगर आप अपने कंटेनर को तैनात करने के लिए अंतिम कोड चाहते हैं तो कृपया github.com/kanocz/gclwebgcs पर जाएं पहले हमें द्वारा प्रदान किए गए बंदरगाह पर सुनने की जरूरत है पोर्ट env चर: http.ListenAndServe + os.Getenv(âÃÂÃÂपोर्ट शून्य) के जरिए GCS env हम Google क्लाउड स्टोरेज बकेट नाम निर्दिष्ट करेंगे (उसी प्रोजेक्ट में होने की आवश्यकता है) सीटीएक्स: = संदर्भ। बैकग्राउंड () क्लाइंट, इरेट: = स्टोरेज। न्यू क्लाइंट (सीटीएक्स) बकेट = क्लाइंट। और भेजने के लिए वस्तु पढ़ना: obj := Bucket.Object(r.URL.Path[1 // स्ट्रिप firstobjAttrs, err := obj.Attrs(ctx) obj = obj.ReadCompressed(true) // हम donâÃÂàहस्तांतरण // कॉपी हेडर w.HeaderSet(âÃÂÃÂContent-TypeâÃÂÃÂ, objAttrs.ContentType) के लिए इसे फिर से डीकंप्रेस और कंप्रेस नहीं करना चाहता w.HeaderSet(âÃÂÂÂÂÂContent-EncodingâÃÂÃÂ, objAttrs.ContentEncoding) w.HeaderSet(âÃÂàसामग्री-लंबाई एक  ¢ एक एक  , strconv.Itoa (int (objAttrs. आकार w.HeaderSet (à एक ¢ एक  एक एक   सामग्री-Dispositionà एक ¢ एक Â। ÃÂ, objAttrs.ContentDisposition) w.HeaderSet(âÃÂÃÂCache-ControlâÃÂÃÂ, objAttrs.CacheControl) w.HeaderSet(à  ¢    ETagà  ¢ ÂÂà Â, objAttrs.Etag) // और डेटा रीडर भेजें, गलती:= obj.NewReader(ctx) io.Copy(w, पाठक) वास्तव में वेबसाइट की सेवा के लिए हमें सर्वर इंडेक्स की भी आवश्यकता होती है, त्रुटियों को नहीं मिला और इसी तरह, लेकिन यह भी इतना जटिल नहीं है बनाना न भूलें Google क्लाउड बिल्ड में सहायता के लिए go.mod :) कंटेनर रजिस्ट्री में तैनाती से यह सिर्फ gcloud बिल्ड सबमिट --tag gcr.io/project1/gclwebgcs (कृपया बदलें प्रोजेक्ट 1 आपके प्रोजेक्ट नाम के साथ) और सेवा का उपयोग करके/अद्यतन करें gcloud बीटा रन परिनियोजन --image gcr.io/project1/gclwebgcs \ --प्लेटफ़ॉर्म प्रबंधित --set-env-vars=GCS=GCSbucketName serviceName पर फ़ाइलें अपलोड करना न भूलें GCSbucketName एक ही प्रोजेक्ट में और नई सेवा के लिए डोमेन नाम असाइन करें, ssl प्रमाणपत्र प्रदान किया जाएगा और स्वचालित रूप से प्रबंधित किया जाएगा! वह सब :)