Yaşlandıkça yaşlanmıyorsunuz. Bunun gibi birkaç siteyi ve blogu barındırmak için bir sunucuya daha sahip olmak istemiyorum, eski modası geçmiş sitelerde bile yenilenen sertifikayı şifreleyip şifreleyemeyeceğinizi izleyin ve bu nedenle en azından bu durum şu durumlarda geçerlidir: ben :) Ve onu tam olarak yönetilen bir platforma taşımaya karar verdim. İlk bakış için Google Cloud depolama yeterince iyi bir çözümdü, ancak grup oluşturduktan ve eksiksiz eğitime gittikten sonra, https'yi etkinleştirmenin ne kolay ne de kolay (yük dengeleyici kullanmak vb.) Saatte ilk 5 kural başına 0,025 ABD doları =>ayda 18 ABD doları) Google Cloud Run'ı yalnızca birkaç API için kullandım ve yalnızca kullanılan süre/CPU/RAM için ödeniyor, ancak web sitesinin çok aktif olmaması durumunda Ücretsiz Katman bile bazı web sitelerini kesinlikle barındırmak için yeterli ücretsiz Belgeleri okuduktan sonra çok basit görünüyor, hatta GCP istemci kitaplıklarını kullanırken Cloud Run (tamamen yönetilen) kapsayıcı örneklerinde kimlik bilgilerini manuel olarak sağlamanıza bile gerek yok! Not: Kendi kapsayıcınızı konuşlandırmak için yalnızca son kodu istiyorsanız, lütfen github.com/kanocz/gclwebgcs adresini ziyaret edin. İlk önce tarafından sağlanan bağlantı noktasını dinlememiz gerekiyor. PORT ortam değişkeni: http.ListenAndServe + os.Getenv(âÃÂÃÂPORT sıfır) Üzerinden GCS ortamı, Google Cloud Storage grup adını belirteceğiz (aynı projede olması gerekir) ctx : = context.Background() client, err := storage.NewClient(ctx) grup = client.Bucket(os.Getenv(âÃÂÃÂGCS) Ve gönderilecek okuma nesnesi: obj := bucket.Object(r.URL.Path[1 // strip firstobjAttrs, err := obj.Attrs(ctx) obj = obj.ReadCompressed(true) // yapmıyoruzâÃÂàAktarmak // üstbilgileri kopyalamak için sıkıştırmayı açmak ve yeniden sıkıştırmak istiyorum w.HeaderSet(âÃÂÃÂContent-TypeâÃÂÃÂ, objAttrs.ContentType) w.HeaderSet(âÃÂÃÂContent-EncodingâÃÂÃÂ, objAttrs.ContentEncoding) w.HeaderSet(âÃÂàContent-LengthâÃÂÃÂ, strconv.Itoa(int(objAttrs.Size w.HeaderSet(âÃÂÃÂContent-DispositionâÃÂ) ÃÂ, objAttrs.ContentDisposition) w.HeaderSet(âÃÂÃÂCache-ControlâÃÂÃÂ, objAttrs.CacheControl) w.HeaderSet(à ¢ÃÂÃÂETagâÃÂÃÂ, objAttrs.Etag) // ve veri gönder okuyucu, err := obj.NewReader(ctx) io.Copy(w, okuyucu) Gerçekten de web sitesine hizmet vermek için sunucu dizinine, bulunamayan hataları işlemeye vb. ihtiyacımız var, ancak bu aynı zamanda o kadar da karmaşık değil Oluşturmayı unutmayın Google Cloud Build'e yardımcı olmak için go.mod :) Kapsayıcı kayıt defterine konuşlandırmadan daha gcloud derlemeleri gönder --tag gcr.io/project1/gclwebgcs (lütfen değiştirin proje adınızla birlikte proje1) ve kullanarak hizmet oluşturun/güncelleyin gcloud beta çalıştırma konuşlandırma --image gcr.io/project1/gclwebgcs \ --platform yönetilen --set-env-vars=GCS=GCSbucketName hizmetAdı Dosyaları şuraya yüklemeyi unutmayın: Aynı projede GCSbucketName ve alan adını yeni hizmete atayın, ssl sertifikası otomatik olarak sağlanacak ve yönetilecektir! Hepsi bu kadar :)