i-icc’s blog

製作物あげたり日記書いたり。

Cloudflare containers で connect-go が使用できなかった

注意

修正していただいて治ったようです
connect-go は cloudflare containers で使用できます!やったね!
github.com

使用ツール・技術

現象

Cloudflare containers ではコンテナへ直接リクエストを送るのではなく、workers を経由してアクセスする必要があります。

import { Container, getContainer } from "@cloudflare/containers";

export class MyContainer extends Container {
  defaultPort = 4000; // Port the container is listening on
  sleepAfter = "10m"; // Stop the instance if requests not sent for 10 minutes
}

export default {
  async fetch(request, env) {
    const { "session-id": sessionId } = await request.json();
    // Get the container instance for the given session ID
    const containerInstance = getContainer(env.MY_CONTAINER, sessionId);
    // Pass the request to the container instance on its default port
    return containerInstance.fetch(request);
  },
};

Overview · Cloudflare Containers docs

Container ではリクエストを正常に処理し、レスポンスまで成功しているログが出ているにもかかわらず、worker を通すと(containers のライブラリを通すと) 500 エラーになってしまうという問題が発生してしまいました。

下記はエラーサンプル

curl -v -X POST http://hoge.workers.dev/proto.hoge.v1.hogeService/HealthCheck \
  -H "Content-Type: application/json" \
  -d '{}'
Note: Unnecessary use of -X or --request, POST is already inferred.
* Host hoge.workers.dev:80 was resolved.
* IPv6: xxx,xxx
* IPv4: xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx
*   Trying [xxx]:80...
* Connected to hoge.workers.dev (xxx) port 80
> POST /proto.hoge.v1.hogeService/HealthCheck HTTP/1.1
> Host: hoge.workers.dev
> User-Agent: curl/8.7.1
> Accept: */*
> Content-Type: application/json
> Content-Length: 2
> 
* upload completely sent off: 2 bytes
< HTTP/1.1 500 Internal Server Error
< Date: Wed, 01 Oct 2025 14:13:39 GMT
< Content-Type: text/plain;charset=UTF-8
< Content-Length: 42
< Connection: keep-alive
< Vary: accept-encoding
< Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"hoge"}]}
< Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
< Server: cloudflare
< CF-RAY: 987c8fd6bf0eafd3-NRT
< alt-svc: h3=":443"; ma=86400
< 
* Connection #0 to host hoge.workers.dev left intact
Container suddenly disconnected, try again%  

通常の HTTP REST リクエストは成功するにも関わらず、connect-go(http1.1 REST)の場合はエラーになってしまいます。 ローカル環境では正常にリクエストが通るため再現もできず困り、、、、

今回組みたいプロダクトはまだ作り始めたばかりなので別の仕組みでホスティングしようか悩み中です。 あと数日調査して不明だった場合変更しようと思います。

~原因がわかったら追記いたします。~ はじめにも書きましたが修正していただけたようでした。解決!