このようないくつかのサイトやブログをホストするためにサーバーを 1 つ以上維持したくない、古い古いサイトでも更新された証明書を暗号化できるかどうかを監視するなど、少なくともこれは真実です私 :) そして、私はそれを完全に管理されたプラットフォームに移動することにしました。一見したところ、Google Cloud ストレージは十分なソリューションでしたが、バケットを作成し、完全なチュートリアルを実行した後、https を有効にすることは (ロードバランサなどを使用して) 簡単でもなく、安くもありません (それは. 1 時間あたり最初の 5 つのルールごとに 0.025 USD =>1 か月あたり 18 USD) いくつかの API に Google Cloud Run を使用しただけで、使用時間/CPU/RAM に対してのみ料金が支払われますが、あまりアクティブでない Web サイトの場合は、いくつかの Web サイトを完全にホストするには無料利用枠で十分です。無料で ドキュメントを読んだ後は非常にシンプルに見えます。GCP クライアント ライブラリを使用する場合、Cloud Run(フルマネージド)コンテナ インスタンス内で認証情報を手動で提供する必要さえありません。 追伸: 自分のコンテナをデプロイするための最終的なコードが必要な場合は、github.com/kanocz/gclwebgcs にアクセスしてください。 まず、によって提供されるポートでリッスンする必要があります。 ポート環境変数: http.ListenAndServe + os.Getenv(ãâ¢ãâãâPORT nil) 経由 GCS 環境では、Google Cloud Storage バケット名を指定します(同じプロジェクトにある必要があります) ctx : = context.Background() client, err := storage.NewClient(ctx) バケット = client.Bucket(os.Getenv(ãâ¢ãâãâGCS そして、送信する読み取りオブジェクト: obj := bucket.Object(r.URL.Path[1 // firstobjAttrs, err := obj.Attrs(ctx) obj = obj.ReadCompressed(true) // 削除しません解凍して転送のために再度圧縮したくない // ヘッダーをコピーする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) // データを送信 Reader, err := obj.NewReader(ctx) io.Copy(w,読者) 実際にウェブサイトを提供するために、サーバー インデックス、見つからないエラーの処理なども必要ですが、それもそれほど複雑ではありません。 作成することを忘れないでください go.mod は Google Cloud Build を支援します :) コンテナ レジストリへのデプロイよりも gcloud builds submit --tag gcr.io/project1/gclwebgcs (交換してください project1 にプロジェクト名を付けます) を使用してサービスを作成/更新します gcloud beta run deploy --image gcr.io/project1/gclwebgcs \ --platform managed --set-env-vars=GCS=GCSbucketName serviceName にファイルをアップロードすることを忘れないでください 同じプロジェクトで GCSbucketName を作成し、新しいサービスにドメイン名を割り当てると、ssl 証明書が自動的に提供および管理されます! Thatãâ¢ãâãâすべて:)