{"id":634,"date":"2026-01-18T22:31:23","date_gmt":"2026-01-18T13:31:23","guid":{"rendered":"https:\/\/tako.nakano.net\/blog\/?p=634"},"modified":"2026-01-18T22:31:23","modified_gmt":"2026-01-18T13:31:23","slug":"cloud_run_functions_mystery","status":"publish","type":"post","link":"https:\/\/tako.nakano.net\/blog\/2026\/01\/cloud_run_functions_mystery\/","title":{"rendered":"Cloud Functions \u95a2\u6570\u306f\u3082\u3046\u4f5c\u308c\u306a\u3044\uff1fCloud Run functions \u306e\u8b0e\u306b\u8feb\u308b"},"content":{"rendered":"<h1>Cloud Functions \u95a2\u6570\u306f\u3082\u3046\u4f5c\u308c\u306a\u3044\uff1fCloud Run functions \u306e\u8b0e\u306b\u8feb\u308b<\/h1>\n<p>English follows Japanese.<\/p>\n<h2>\u7d50\u8ad6<\/h2>\n<p>Web UI \u304b\u3089\u3001<code>gcloud functions list<\/code> \u3067\u5f97\u3089\u308c\u308b\u3088\u3046\u306a &quot;\u95a2\u6570&quot; \u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3057\u305f\u3002\u3057\u304b\u3057\u3001Cloud Run Service \u3067 &quot;function&quot; \u3068\u3057\u3066\u898b\u3048\u308b\u95a2\u6570\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u53ef\u80fd\u3067\u3059\u3002<\/p>\n<p><code>gcloud functions detach<\/code> \u3068\u3044\u3046\u30b3\u30de\u30f3\u30c9\u304c\u5b58\u5728\u3057\u3066\u304a\u308a\u3001\uff08\u5b9f\u884c\u306f\u3057\u3066\u307f\u307e\u305b\u3093\u3067\u3057\u305f\u304c\uff09<code>gcloud functions list<\/code> \u3067\u5f97\u3089\u308c\u308b\u95a2\u6570\u3092\u3001\u5f97\u3089\u308c\u306a\u3044\u95a2\u6570\u306b\u5909\u63db\u3067\u304d\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<h2>\u304d\u3063\u304b\u3051<\/h2>\n<p>\u300cCloud Functions \u95a2\u6570\u306f\u3082\u3046\u4f5c\u308c\u306a\u3044\uff1fCloud Run functions \u306e\u8b0e\u306b\u8feb\u308b\u300d\u3068\u3044\u3046\u30bf\u30a4\u30c8\u30eb\u3068\u300c\u3042\u306a\u305f\u306f\u3053\u306e2\u3064\u306e\u95a2\u6570\u304c\u533a\u5225\u3067\u304d\u307e\u3059\u304b\uff1fCloud Run functions \u306e\u8b0e\u306b\u8feb\u308b\u300d\u3068\u3044\u3046\u30bf\u30a4\u30c8\u30eb\u3068\u3001\u3061\u3087\u3063\u3074\u308a\u60a9\u307f\u307e\u3057\u305f\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/tako.nakano.net\/blog\/wp-content\/uploads\/2026\/01\/service_list.png\" alt=\"3\u3064\u306e\u540c\u3058\u3088\u3046\u306b\u898b\u3048\u308b\u95a2\u6570\" \/><\/p>\n<p>\u3053\u306e\u753b\u50cf\u306e\u30013\u3064\u306e\u540c\u3058\u3088\u3046\u306b\u898b\u3048\u308b\u95a2\u6570\u306e\u3046\u3061\u3001<code>pubsub-to-bq<\/code> \u3060\u3051\u304c <code>gcloud functions list<\/code> \u3067\u5f97\u3089\u308c\u308b\u95a2\u6570\u3067\u3059\u3002\u6b8b\u308a\u306e2\u3064\u306f <code>gcloud functions list<\/code> \u3067\u306f\u5f97\u3089\u308c\u307e\u305b\u3093\u3002<\/p>\n<p>\u904e\u53bb\u306b\u79c1\u306f\u3001Cloud Run functions \u95a2\u6570\u3092\u78ba\u304b\u306b\u4f5c\u6210\u3057\u305f\u306f\u305a\u3067\u3057\u305f\u3002\u4eca\u56de\u3001\u4f5c\u6210\u6e08\u307f\u306e\u30b5\u30fc\u30d3\u30b9\u3092 Terraform \u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3088\u3046\u3068\u3057\u305f\u3068\u3053\u308d\u3001\u3042\u308c\u3001\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u306a\u3044\uff1f\u3068\u306a\u308a\u307e\u3057\u305f\u3002<code>gcloud functions list<\/code> \u3067\u78ba\u8a8d\u3057\u305f\u3068\u3053\u308d\u3001\u300c\u6614\u4f5c\u3063\u305f\u95a2\u6570\u300d\u306f\u3042\u308b\u304c\u300c\u3053\u306e\u9593\u4f5c\u3063\u305f\u95a2\u6570\u300d\u306f\u306a\u3044\u3001\u3068\u3044\u3046\u72b6\u614b\u3067\u3057\u305f\u3002<br \/>\n\u305d\u3046\u3067\u3059\u3001\u7e70\u308a\u8fd4\u3057\u306b\u306a\u308a\u307e\u3059\u304c\u3001\u753b\u9762\u306b\u306f\u5b58\u5728\u3059\u308b\u306e\u306b\u3001<code>gcloud functions list<\/code> \u3067\u5f97\u3089\u308c\u306a\u3044\u95a2\u6570\u304c\u5b58\u5728\u3059\u308b\u306e\u3067\u3059\u3002<\/p>\n<h2>\u3053\u306e\u65e5\u304c\u305d\u306e\u65e5\u3060 (2025-02-19)<\/h2>\n<p><a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#February_19_2025\">2025-02-19<\/a> \u3053\u3093\u306a\u8a18\u8ff0\u304c\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\u306b\u73fe\u308c\u307e\u3057\u305f\u3002<\/p>\n<blockquote>\n<p>Support for deploying v2 functions in Cloud Run is now in general availability (GA). This lets you customize your function as you would a Cloud Run service. This change removes support for creating, deploying, or updating v2 functions in the Google Cloud console. However, you can still manage functions created with the Cloud Functions v2 API using the Cloud Functions gcloud CLI, the Cloud Functions v2 API, or the Cloud Run Cloud Console. See Cloud Run functions comparison for more details.<\/p>\n<\/blockquote>\n<p>Gemini \u306b\u3088\u308b\u65e5\u672c\u8a9e\u8a33\u3067\u3059:<\/p>\n<blockquote>\n<p>Cloud Run \u3067\u306e v2 \u95a2\u6570\u306e\u30c7\u30d7\u30ed\u30a4\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u4e00\u822c\u63d0\u4f9b (GA) \u3055\u308c\u307e\u3057\u305f\u3002 \u3053\u308c\u306b\u3088\u308a\u3001Cloud Run \u30b5\u30fc\u30d3\u30b9\u3068\u540c\u69d8\u306b\u95a2\u6570\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u5909\u66f4\u306b\u4f34\u3044\u3001Google Cloud \u30b3\u30f3\u30bd\u30fc\u30eb\u306b\u304a\u3051\u308b v2 \u95a2\u6570\u306e\u4f5c\u6210\u3001\u30c7\u30d7\u30ed\u30a4\u3001\u304a\u3088\u3073\u66f4\u65b0\u306e\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001Cloud Functions v2 API \u3092\u4f7f\u7528\u3057\u3066\u4f5c\u6210\u3055\u308c\u305f\u95a2\u6570\u306e\u7ba1\u7406\u306f\u3001Cloud Functions gcloud CLI\u3001Cloud Functions v2 API\u3001\u307e\u305f\u306f Cloud Run \u306e Cloud \u30b3\u30f3\u30bd\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u5f15\u304d\u7d9a\u304d\u884c\u3046\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u300cCloud Run functions \u306e\u6bd4\u8f03\u300d\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002<\/p>\n<\/blockquote>\n<p>\u3088\u3063\u307d\u3069\u4e01\u5be7\u306b\u8003\u3048\u3066\u3044\u308b\u4eba\u3058\u3083\u306a\u3044\u3068<\/p>\n<ul>\n<li>\u3042\u3001UI \u5909\u308f\u3063\u305f\u306a<\/li>\n<li>\u3067\u3082\u3001\u95a2\u6570\u306f\u4f5c\u308c\u308b\u308f<\/li>\n<li>\u7d71\u5408\u304c\u306a\u3093\u304b\u9032\u3093\u3060\u3093\u3060\u306a<\/li>\n<\/ul>\n<p>\u3067\u7d42\u308f\u3063\u3066\u3057\u307e\u3063\u3066\u3044\u305f\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u79c1\u305f\u3061\u306e\u300c\u95a2\u6570\u3092\u4f5c\u308b\u300d\u3068\u3044\u3046\u4f53\u9a13\u306f<\/p>\n<ul>\n<li>Web UI \u3067\u306f\u3001\u3061\u3087\u3063\u3068 UI \u304c\u5909\u308f\u3063\u305f\u304c\u3067\u304d\u308b<\/li>\n<li><code>gcloud functions deploy<\/code> \u3067\u306f\u3001\u4eca\u307e\u3067\u901a\u308a\u3067\u304d\u308b<\/li>\n<\/ul>\n<p>\u3067\u3042\u307e\u308a\u5909\u308f\u3089\u306a\u304b\u3063\u305f\u306f\u305a\u3067\u3059\u3002\u3068\u3053\u308d\u304c\u3001\u5b9f\u306f\u88cf\u3067\u5927\u304d\u306a\u5909\u5316\u304c\u8d77\u304d\u3066\u3044\u305f\u306e\u3067\u3059\u3002<\/p>\n<h2>\u4f59\u8ac7\uff08\u6b74\u53f2\uff09<\/h2>\n<ul>\n<li><strong>2027-03<\/strong>: Cloud Functions (1st gen) Beta<\/li>\n<li><strong>2019-11<\/strong>: Cloud Run GA<\/li>\n<li><strong>2022-02<\/strong>: Cloud Functions (2nd gen) Preview \uff08Cloud Run\u30d9\u30fc\u30b9\uff09<\/li>\n<li><strong>2024-08<\/strong>: &quot;Cloud Run functions&quot; \u306b\u540d\u79f0\u5909\u66f4\u3001Run\u30b5\u30fc\u30d3\u30b9\u3068\u3057\u3066\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u53ef\u80fd\u306b<\/li>\n<li><strong>2025-02<\/strong>: \u30b3\u30f3\u30bd\u30fc\u30eb\u3067\u306e v2 \u95a2\u6570\u4f5c\u6210\u30b5\u30dd\u30fc\u30c8\u7d42\u4e86\uff08Cloud Run\u4f5c\u6210\u30d5\u30ed\u30fc\u3078\u306e\u5b8c\u5168\u79fb\u884c\uff09<\/li>\n<\/ul>\n<p>Cloud Functions \u306f\u3001\u3082\u3068\u3082\u3068 Google \u304c\u63d0\u4f9b\u3057\u3066\u3044\u305f\u30b5\u30fc\u30d0\u30fc\u30ec\u30b9\u95a2\u6570\u5b9f\u884c\u74b0\u5883\u3067\u3059\u3002<a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#March_09_2017\">2017-03-09<\/a> \u306b &quot;Beta release of Google Cloud Functions&quot; \u3068\u8a18\u8ff0\u3055\u308c\u3066\u3044\u307e\u3059\u3002<a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#October_19_2017\">2017-10-19<\/a> \u306b v1 API \u304c\u30ea\u30ea\u30fc\u30b9\u3068\u66f8\u304b\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p><a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#February_14_2022\">2022-02-14<\/a> \u306b &quot;Cloud Functions has released Cloud Functions (2nd gen), available at the Preview release level. Cloud Functions (2nd gen) is Google Cloud&#8217;s next-generation Functions-as-a-Service offering.&quot; \u3068\u66f8\u304b\u308c\u3066\u3044\u307e\u3059\u3002\u7b2c2\u4e16\u4ee3\u306e\u767b\u5834\u3067\u3059\u3002&quot;2nd&quot; \u3068\u3044\u3046\u6587\u5b57\u5217\u304c\u51fa\u3066\u304f\u308b\u306e\u306f\u3053\u306e\u65e5\u304c\u6700\u521d\u3067\u3059\u3002<a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#December_13_2022\">2022-12-13<\/a> \u306b &quot;The cloudfunctions.googleapis.com\/v2 API now supports reading 1st gen functions, using the get and list methods.&quot; \u3068\u3057\u3066\u3001v2 API \u3067 v1 \u95a2\u6570\u3092\u8aad\u307f\u53d6\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3053\u3068\u304c\u66f8\u304b\u308c\u3066\u3044\u307e\u3059\u3002&quot;v2&quot; \u3068\u3044\u3046\u6587\u5b57\u5217\u304c\u51fa\u3066\u304f\u308b\u306e\u306f\u3053\u306e\u65e5\u304c\u6700\u521d\u3067\u3059\u3002<\/p>\n<p><a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#August_21_2024\">2024-08-21<\/a> \u306b &quot;You can also deploy new functions, and modify existing functions that were created with the Cloud Functions v2 API in Cloud Run. This enables you to customize your function as you would a Cloud Run service.&quot; \u3068\u66f8\u304b\u308c\u3066\u3044\u307e\u3059\u3002\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\u4e0a\u3067\u3082\u3001Cloud Run \u3068\u306e\u95a2\u4fc2\u304c\u660e\u793a\u3055\u308c\u307e\u3057\u305f\u3002\u305d\u3057\u3066\u30012nd gen \u95a2\u6570\u306f Cloud Run \u306e service \u3067\u3042\u308b\u3068\u3044\u3046\u306e\u304c\u306f\u3063\u304d\u308a\u66f8\u304b\u308c\u3066\u3044\u307e\u3059\uff08\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\u4ee5\u5916\u306e\u3068\u3053\u308d\u3067\u3001\u65e2\u306b\u8a00\u53ca\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u306f\u4f55\u5ea6\u3082\u3042\u3063\u305f\u306f\u305a\u3067\u3059\u304c\u3001\u65e5\u4ed8\u304c\u5206\u304b\u3089\u306a\u3044\u306e\u3067\u3001\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\u3092\u4eca\u56de\u306f\u8ffd\u3063\u3066\u3044\u307e\u3059\uff09\u3002&quot;Cloud Run&quot; \u3068\u3044\u3046\u6587\u5b57\u5217\u304c\u51fa\u3066\u304f\u308b\u306e\u306f\u3053\u306e\u65e5\u304c\u6700\u521d\u3067\u3059\u3002<\/p>\n<p>\u3053\u3061\u3089\u306f\u3001Cloud Run \u306e Release Notes \u3067\u3059\u3002\u5c11\u3057\u9061\u3063\u3066\u3001<a href=\"https:\/\/docs.cloud.google.com\/run\/docs\/release-notes#October_01_2019\">2019-10-01<\/a> \u306b\u3001Cloud Run \u306e Release Notes \u306e\u6700\u521d\u306e\u30a8\u30f3\u30c8\u30ea\u304c\u3042\u308a\u307e\u3059\u3002<a href=\"https:\/\/docs.cloud.google.com\/run\/docs\/release-notes#November_14_2019\">2019-11-14<\/a> \u306b GA \u3068\u66f8\u304b\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p><a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#February_11_2025\">2025-02-11<\/a> \u306b\u9762\u767d\u3044\u3053\u3068\u304c\u66f8\u304b\u308c\u3066\u3044\u307e\u3059\u3002&quot;Cloud Run functions created with the Cloud Functions (v2) API (cloudfunctions.googleapis.com) can now be detached so that they can only be managed through the Cloud Run Admin API (run.googleapis.com). \u3067\u3059\u3002\u3064\u307e\u308a\u3001\u95a2\u6570\u3092\u95a2\u6570\u3067\u306a\u304f\u3059\u308b\uff01\uff1f\u3053\u3068\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u306e\u3067\u3059\u3002\u4e0d\u53ef\u9006\u5909\u63db\u3067\u5143\u306b\u306f\u623b\u305b\u306a\u3044\u3088\u3046\u3067\u3059\u3002<a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#February_19_2025\">2025-02-19<\/a> \u306b\u3001\u5148\u7a0b\u306e &quot;Google Cloud console&quot; (= Web UI) \u306e\u8a71\u304c\u51fa\u3066\u304d\u307e\u3059\u3002<\/p>\n<p>\u3068\u3044\u3046\u3053\u3068\u3067\u3001Cloud Run \u304c\u8a95\u751f\u3057\u3066 [2019-10-01] 2\u5e74\u3068\u5c11\u3057\u7d4c\u904e\u3057\u3066\u304b\u3089\u3001Cloud Functions \u306b 2nd gen \u304c\u767b\u5834 [2022-02-14] \u3057\u3066\u3044\u307e\u3059\u3002Cloud Run functions \u3068\u540d\u524d\u304c [2024-08-21] \u306b\u5909\u308f\u308a\u3001\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\u306b\u3082\u300c\u95a2\u6570\u306f\u30b5\u30fc\u30d3\u30b9\u3068\u3057\u3066\u898b\u3048\u308b\u300d\u3068\u66f8\u3044\u3066\u3042\u308a\u307e\u3059\uff08\u79c1\u306e\u8a18\u61b6\u3067\u306f\u4ee5\u524d\u304b\u3089\u898b\u3048\u3066\u3044\u307e\u3057\u305f\u304c\uff09\u3002\u305d\u306e\u5f8c\u3001\uff08\u4eca\u307e\u3067\u306e\u611f\u899a\u3067\u4f5c\u3063\u3066\u3044\u305f\u95a2\u6570\u304c\uff09function \u3067\u306f\u306a\u3044 Cloud Run service \u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3068\u306a\u308a [2025-02-19]\u3001\u4eca\u306b\u81f3\u308a\u307e\u3059\u3002<\/p>\n<p>Cloud Functions \u306e\u7b2c2\u4e16\u4ee3\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u5b9f\u884c\u74b0\u5883\uff08\u30b5\u30fc\u30d3\u30b9\uff09\u3067\u3042\u308b Cloud Run \u4e0a\u3067\u52d5\u3044\u3066\u3044\u307e\u3059\u3002\u306f\u3063\u304d\u308a\u3068\u8a18\u8ff0\u3055\u308c\u305f\u8a18\u4e8b\u306f\u591a\u304f\u306a\u3044\u3067\u3059\u304c\u3001Cloud Functions \u306e\u7b2c1\u4e16\u4ee3\u306f\u3001App Engine \u4e0a\u3067\uff08\u3042\u308b\u3044\u306f App Engine \u3068\u540c\u3058\u4ed5\u7d44\u307f\u3067\uff09\u52d5\u3044\u3066\u3044\u308b\uff08\u3044\u305f\uff09\u3068\u7406\u89e3\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<h3>\u88dc\u8db3<\/h3>\n<p><a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/managing?hl=ja\">\u95a2\u6570\u3092\u7ba1\u7406\u3059\u308b<\/a> \u306b\u4ee5\u4e0b\u306e\u8a18\u8ff0\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<blockquote>\n<p>\u6ce8: gcloud run \u30b3\u30de\u30f3\u30c9\u307e\u305f\u306f Cloud Run Admin API \u3092\u4f7f\u7528\u3057\u3066 Cloud Run functions \u306e\u95a2\u6570\u3092\u4f5c\u6210\u3057\u305f\u5834\u5408\u3001\u305d\u306e\u95a2\u6570\u3092 gcloud functions \u30b3\u30de\u30f3\u30c9\u307e\u305f\u306f Cloud Functions v2 API \u3067\u7ba1\u7406\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002<\/p>\n<\/blockquote>\n<p>\u3053\u3053\u3067\u3082\u3001\u305f\u3060\u306e\u30b5\u30fc\u30d3\u30b9\u3068\u3001\u95a2\u6570\u3068\u3057\u3066\u898b\u3048\u308b\u30b5\u30fc\u30d3\u30b9\u304c\u7570\u306a\u308b\u3053\u3068\u304c\u660e\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<h2>\u30b3\u30de\u30f3\u30c9\u3068 API \u306e\u30ec\u30b9\u30dd\u30f3\u30b9<\/h2>\n<p>\u3042\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u304a\u3044\u3066\u3001\u30b3\u30de\u30f3\u30c9\u3084 API \u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u4e00\u90e8\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n<pre><code class=\"language-text\">gcloud functions list\nNAME          STATE   TRIGGER       REGION           ENVIRONMENT\npubsub_to_bq  ACTIVE  HTTP Trigger  asia-northeast1  2nd gen<\/code><\/pre>\n<pre><code class=\"language-text\">gcloud run services list # LAST DEPLOYED BY \u3068 URL \u306e\u4e00\u90e8\u306f\u524a\u9664\n   SERVICE       REGION           URL                                                            LAST DEPLOYED AT\n\u2714  instant2bq    asia-northeast1  https:\/\/instant2bq- project number .asia-northeast1.run.app    2026-01-17T14:03:08.591581Z\n\u2714  pubsub-to-bq  asia-northeast1  https:\/\/pubsub-to-bq- project number .asia-northeast1.run.app  2024-07-21T09:19:16.329328Z\n\u2714  total2bq      asia-northeast1  https:\/\/total2bq- project number .asia-northeast1.run.app      2026-01-17T14:00:12.969052Z<\/code><\/pre>\n<p><code>curl -H &quot;Authorization: Bearer $(gcloud auth print-access-token)&quot; https:\/\/cloudfunctions.googleapis.com\/v2\/projects\/ project id \/locations\/-\/functions<\/code><\/p>\n<pre><code class=\"language-jsonc\">{\n  &quot;functions&quot;: [\n    {\n      &quot;name&quot;: &quot;projects\/ project id \/locations\/asia-northeast1\/functions\/pubsub_to_bq&quot;,\n      &quot;buildConfig&quot;: {\n        &quot;build&quot;: &quot;projects\/ project number \/locations\/asia-northeast1\/builds\/7e7fcf21-3346-4697-aed3-ce96c5eb1c25&quot;,\n        &quot;runtime&quot;: &quot;go122&quot;,\n        &quot;entryPoint&quot;: &quot;pubsub_to_bq&quot;,\n        &quot;source&quot;: {\n          &quot;storageSource&quot;: {\n            &quot;bucket&quot;: &quot;gcf-v2-sources- project number -asia-northeast1&quot;,\n            &quot;object&quot;: &quot;pubsub_to_bq\/function-source.zip&quot;,\n            &quot;generation&quot;: &quot;1721553313671054&quot;\n          }\n        },\n        &quot;dockerRepository&quot;: &quot;projects\/ project id \/locations\/asia-northeast1\/repositories\/gcf-artifacts&quot;,\n        &quot;sourceProvenance&quot;: {\n          &quot;resolvedStorageSource&quot;: {\n            &quot;bucket&quot;: &quot;gcf-v2-sources- project number -asia-northeast1&quot;,\n            &quot;object&quot;: &quot;pubsub_to_bq\/function-source.zip&quot;,\n            &quot;generation&quot;: &quot;1721553313671054&quot;\n          }\n        },\n        &quot;dockerRegistry&quot;: &quot;ARTIFACT_REGISTRY&quot;,\n        &quot;automaticUpdatePolicy&quot;: {}\n      },\n      &quot;serviceConfig&quot;: {\n        &quot;service&quot;: &quot;projects\/ project id \/locations\/asia-northeast1\/services\/pubsub-to-bq&quot;,\n        &quot;timeoutSeconds&quot;: 300,\n        &quot;environmentVariables&quot;: {\n          &quot;PROJECT_ID&quot;: &quot; project id &quot;,\n          &quot;SUBSCRIPTION_ID&quot;: &quot;instant_subscription&quot;,\n          &quot;LOG_EXECUTION_ID&quot;: &quot;true&quot;\n        },\n        &quot;maxInstanceCount&quot;: 2,\n        &quot;ingressSettings&quot;: &quot;ALLOW_ALL&quot;,\n        &quot;uri&quot;: &quot;https:\/\/pubsub-to-bq- random string -an.a.run.app&quot;,\n        &quot;serviceAccountEmail&quot;: &quot; project number -compute@developer.gserviceaccount.com&quot;,\n        &quot;availableMemory&quot;: &quot;128Mi&quot;,\n        &quot;allTrafficOnLatestRevision&quot;: true,\n        &quot;revision&quot;: &quot;pubsub-to-bq-00009-kad&quot;,\n        &quot;maxInstanceRequestConcurrency&quot;: 1,\n        &quot;availableCpu&quot;: &quot;167m&quot;\n      },\n      &quot;state&quot;: &quot;ACTIVE&quot;,\n      &quot;updateTime&quot;: &quot;2024-07-21T09:19:16.610753517Z&quot;,\n      &quot;labels&quot;: {\n        &quot;deployment-tool&quot;: &quot;cli-gcloud&quot;\n      },\n      &quot;environment&quot;: &quot;GEN_2&quot;,\n      &quot;url&quot;: &quot;https:\/\/asia-northeast1- project id .cloudfunctions.net\/pubsub_to_bq&quot;,\n      &quot;createTime&quot;: &quot;2024-07-15T13:12:25.181025243Z&quot;,\n      &quot;satisfiesPzi&quot;: true\n    }\n  ]\n}<\/code><\/pre>\n<p><code>curl -H &quot;Authorization: Bearer $(gcloud auth print-access-token)&quot; https:\/\/run.googleapis.com\/v2\/projects\/ project id \/locations\/-\/services<\/code><\/p>\n<pre><code class=\"language-jsonc\">{\n  &quot;services&quot;: [\n    {\n      &quot;name&quot;: &quot;projects\/ project id \/locations\/asia-northeast1\/services\/instant2bq&quot;,\n      &quot;uid&quot;: &quot;aef5a6c5-ef27-4588-961c-4380699ee9a4&quot;,\n      \/\/ ...\n      &quot;template&quot;: {\n        &quot;scaling&quot;: {\n          &quot;maxInstanceCount&quot;: 1\n        },\n        &quot;serviceAccount&quot;: &quot;instant2bq-sa@ project id .iam.gserviceaccount.com&quot;,\n        &quot;containers&quot;: [\n          {\n            &quot;name&quot;: &quot;instant2bq-1&quot;,\n            &quot;image&quot;: &quot;asia-northeast1-docker.pkg.dev\/ project id \/cloud-run-source-deploy\/instant2bq@sha256:ff99bb1a727a9938ec2f74946d7ae34471c6d971db1ef9e1f300cb820a546d9d&quot;,\n            \/\/ ...\n            &quot;baseImageUri&quot;: &quot;asia-northeast1-docker.pkg.dev\/serverless-runtimes\/google-22\/runtimes\/go125&quot;\n          }\n        ],\n        &quot;maxInstanceRequestConcurrency&quot;: 1\n      },\n      \/\/ ...\n      &quot;urls&quot;: [\n        &quot;https:\/\/instant2bq- project number .asia-northeast1.run.app&quot;,\n        &quot;https:\/\/instant2bq- random string -an.a.run.app&quot;\n      ],\n      \/\/ ...\n      &quot;uri&quot;: &quot;https:\/\/instant2bq- random string -an.a.run.app&quot;,\n      &quot;buildConfig&quot;: {\n        &quot;name&quot;: &quot;projects\/ project number \/locations\/asia-northeast1\/builds\/fec8c6a4-dbc8-4c5e-8598-670e90bcb6a1&quot;,\n        &quot;sourceLocation&quot;: &quot;gs:\/\/run-sources- project id -asia-northeast1\/services\/instant2bq\/1768658373.776000.zip#1768658374307361&quot;,\n        &quot;functionTarget&quot;: &quot;instant2bq&quot;,\n        &quot;imageUri&quot;: &quot;asia-northeast1-docker.pkg.dev\/ project id \/cloud-run-source-deploy\/instant2bq&quot;,\n        &quot;baseImage&quot;: &quot;asia-northeast1-docker.pkg.dev\/serverless-runtimes\/google-22\/runtimes\/go125&quot;,\n        &quot;enableAutomaticUpdates&quot;: true\n      },\n      &quot;etag&quot;: &quot;\\&quot;CJatrssGEOizzZYB\/cHJvamVjdHMvbmstaG9tZS1kYXRhL2xvY2F0aW9ucy9hc2lhLW5vcnRoZWFzdDEvc2VydmljZXMvaW5zdGFudDJicQ\\&quot;&quot;\n    },\n    {\n      &quot;name&quot;: &quot;projects\/ project id \/locations\/asia-northeast1\/services\/total2bq&quot;,\n      &quot;uid&quot;: &quot;893334ed-4b7d-4854-997c-b8fbe582ef00&quot;,\n      \/\/ ...\n      &quot;template&quot;: {\n        &quot;scaling&quot;: {\n          &quot;maxInstanceCount&quot;: 2\n        },\n        &quot;serviceAccount&quot;: &quot;total2bq-sa@ project id .iam.gserviceaccount.com&quot;,\n        &quot;containers&quot;: [\n          {\n            &quot;name&quot;: &quot;total2bq-1&quot;,\n            &quot;image&quot;: &quot;asia-northeast1-docker.pkg.dev\/ project id \/cloud-run-source-deploy\/total2bq@sha256:e0944d8c43aeaaae5691b61a2a10ca3b272d826f54a2c5291e709f526317a943&quot;,\n            \/\/ ...\n            &quot;baseImageUri&quot;: &quot;asia-northeast1-docker.pkg.dev\/serverless-runtimes\/google-22\/runtimes\/go125&quot;\n          }\n        ],\n        &quot;maxInstanceRequestConcurrency&quot;: 1\n      },\n      \/\/ ...\n      &quot;urls&quot;: [\n        &quot;https:\/\/total2bq- project number .asia-northeast1.run.app&quot;,\n        &quot;https:\/\/total2bq- random string -an.a.run.app&quot;\n      ],\n      \/\/ ...\n      &quot;uri&quot;: &quot;https:\/\/total2bq- random string -an.a.run.app&quot;,\n      &quot;buildConfig&quot;: {\n        &quot;name&quot;: &quot;projects\/ project number \/locations\/asia-northeast1\/builds\/d0475ee9-dafa-40fe-95b7-16ca9733903e&quot;,\n        &quot;sourceLocation&quot;: &quot;gs:\/\/run-sources- project id -asia-northeast1\/services\/total2bq\/1768658216.718000.zip#1768658217426437&quot;,\n        &quot;functionTarget&quot;: &quot;total2bq&quot;,\n        &quot;imageUri&quot;: &quot;asia-northeast1-docker.pkg.dev\/ project id \/cloud-run-source-deploy\/total2bq&quot;,\n        &quot;baseImage&quot;: &quot;asia-northeast1-docker.pkg.dev\/serverless-runtimes\/google-22\/runtimes\/go125&quot;,\n        &quot;enableAutomaticUpdates&quot;: true\n      },\n      &quot;etag&quot;: &quot;\\&quot;COSrrssGEPCTy-QB\/cHJvamVjdHMvbmstaG9tZS1kYXRhL2xvY2F0aW9ucy9hc2lhLW5vcnRoZWFzdDEvc2VydmljZXMvdG90YWwyYnE\\&quot;&quot;\n    },\n    {\n      &quot;name&quot;: &quot;projects\/ project id \/locations\/asia-northeast1\/services\/pubsub-to-bq&quot;,\n      &quot;uid&quot;: &quot;427aec17-9b5f-44bc-b2a8-22b085970b6f&quot;,\n      \/\/ ...\n      &quot;labels&quot;: {\n        &quot;goog-managed-by&quot;: &quot;cloudfunctions&quot;,\n        &quot;goog-cloudfunctions-runtime&quot;: &quot;go122&quot;\n      },\n      &quot;annotations&quot;: {\n        &quot;cloudfunctions.googleapis.com\/function-id&quot;: &quot;pubsub_to_bq&quot;\n      },\n      \/\/ ...\n      &quot;client&quot;: &quot;cloudfunctions&quot;,\n      \/\/ ...\n      &quot;template&quot;: {\n        \/\/ ...\n        &quot;annotations&quot;: {\n          &quot;cloudfunctions.googleapis.com\/trigger-type&quot;: &quot;HTTP_TRIGGER&quot;\n        },\n        &quot;scaling&quot;: {\n          &quot;maxInstanceCount&quot;: 2\n        },\n        &quot;serviceAccount&quot;: &quot; project number -compute@developer.gserviceaccount.com&quot;,\n        &quot;containers&quot;: [\n          {\n            &quot;name&quot;: &quot;worker&quot;,\n            &quot;image&quot;: &quot;asia-northeast1-docker.pkg.dev\/ project id \/gcf-artifacts\/pubsub__to__bq:version_1&quot;,\n            \/\/ ...\n            &quot;baseImageUri&quot;: &quot;asia-northeast1-docker.pkg.dev\/serverless-runtimes\/google-22-full\/runtimes\/go122&quot;\n          }\n        ],\n        &quot;maxInstanceRequestConcurrency&quot;: 1\n      },\n      \/\/ ...\n      &quot;urls&quot;: [\n        &quot;https:\/\/pubsub-to-bq- project number .asia-northeast1.run.app&quot;,\n        &quot;https:\/\/asia-northeast1- project id .cloudfunctions.net\/pubsub_to_bq&quot;,\n        &quot;https:\/\/pubsub-to-bq- random string -an.a.run.app&quot;\n      ],\n      \/\/ ...\n      &quot;uri&quot;: &quot;https:\/\/pubsub-to-bq- random string -an.a.run.app&quot;,\n      &quot;customAudiences&quot;: [\n        &quot;https:\/\/asia-northeast1- project id .cloudfunctions.net\/pubsub_to_bq&quot;\n      ],\n      &quot;buildConfig&quot;: {\n        &quot;name&quot;: &quot;projects\/ project number \/locations\/asia-northeast1\/builds\/7e7fcf21-3346-4697-aed3-ce96c5eb1c25&quot;,\n        &quot;sourceLocation&quot;: &quot;gs:\/\/gcf-v2-sources- project number -asia-northeast1\/pubsub_to_bq\/function-source.zip#1721553313671054&quot;,\n        &quot;functionTarget&quot;: &quot;pubsub_to_bq&quot;,\n        &quot;imageUri&quot;: &quot;asia-northeast1-docker.pkg.dev\/ project id \/gcf-artifacts\/-&quot;,\n        &quot;baseImage&quot;: &quot;asia-northeast1-docker.pkg.dev\/serverless-runtimes\/google-22-full\/runtimes\/go122&quot;,\n        &quot;enableAutomaticUpdates&quot;: true\n      },\n      &quot;etag&quot;: &quot;\\&quot;CI2l87QGENCAh6YB\/cHJvamVjdHMvbmstaG9tZS1kYXRhL2xvY2F0aW9ucy9hc2lhLW5vcnRoZWFzdDEvc2VydmljZXMvcHVic3ViLXRvLWJx\\&quot;&quot;\n    }\n  ],\n  &quot;unreachable&quot;: [\n    &quot;europe-west15&quot;,\n    &quot;me-central2&quot;,\n    &quot;us-central2&quot;,\n    &quot;us-east7&quot;,\n    &quot;us-west8&quot;\n  ]\n}<\/code><\/pre>\n<p>\u3068\u3044\u3046\u3053\u3068\u3067\u3001<code>pubsub_to_bq<\/code> (= <code>pubsub-to-bq<\/code>) \u306f\u6614\u79c1\u304c\u4f5c\u6210\u3057\u305f\u95a2\u6570\u306a\u306e\u3067\u3059\u304c\u3001\u3053\u308c\u300c\u3060\u3051\u300d\u304c <code>gcloud functions list<\/code> \u3067\u5f97\u3089\u308c\u308b\u95a2\u6570\u3067\u3059\u3002\u4ed6\u306e2\u3064\u306f <code>gcloud functions list<\/code> \u3067\u306f\u5f97\u3089\u308c\u307e\u305b\u3093\u3002<br \/>\nURL \u306e\u4e00\u90e8\u3068\u3059\u308b\u305f\u3081\u306b\u3001<code>_<\/code> \u304c <code>-<\/code> \u306b\u5909\u63db\u3055\u308c\u3066\u3044\u308b\u306e\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/p>\n<h2>\u4eca\u306e UI \u306f\u3069\u3046\u306a\u3063\u3066\u3044\u308b\u304b<\/h2>\n<p>Cloud Run \u3067\u95a2\u6570\u3092\u4f5c\u6210\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u6d41\u308c\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul>\n<li>Services \u306e\u30da\u30fc\u30b8\u304b\u3089 [\u2026] Write a function \u3092\u30af\u30ea\u30c3\u30af<\/li>\n<li>Create service \u306e\u30da\u30fc\u30b8\u306b\u9077\u79fb\uff08Function Use an inline editor to create a function \u304c\u9078\u629e\u3055\u308c\u3066\u3044\u308b\uff09<\/li>\n<li>\u30b5\u30fc\u30d3\u30b9\u3092\u4f5c\u6210<\/li>\n<li>\u30c0\u30df\u30fc\u30b3\u30f3\u30c6\u30ca (hello) \u304c\u4f5c\u6210\u3055\u308c\u3001\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b<\/li>\n<li>\u95a2\u6570\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u7de8\u96c6\u3057\u3066\u8cbc\u308a\u4ed8\u3051\u308b<\/li>\n<li>\u518d\u30c7\u30d7\u30ed\u30a4<\/li>\n<\/ul>\n<h2>\u304a\u308f\u308a\u306b<\/h2>\n<p>functions \u306e\u65b9\u306e API \u3082\u305d\u308c\u306a\u308a\u306b\u4fbf\u5229\u3060\u3063\u305f\u6c17\u304c\u3059\u308b\u306e\u3067\u3059\u304c\u3001\u4eca\u5f8c\u30b5\u30dd\u30fc\u30c8\u304c\u8584\u304f\u306a\u308a\u305d\u3046\u306a\u6c17\u304c\u3057\u307e\u3059\u3002\u4eca\u56de\u306f Cloud Run \u306b\u305d\u306e\u307e\u307e\u4e57\u3063\u304b\u3063\u3066\u9032\u3093\u3067\u3044\u3053\u3046\u3068\u601d\u3044\u307e\u3057\u305f\u3002<\/p>\n<h2>\u53c2\u8003\u6587\u732e<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/managing?hl=ja\">\u95a2\u6570\u3092\u7ba1\u7406\u3059\u308b<\/a> <a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/managing?hl=ja\">https:\/\/docs.cloud.google.com\/functions\/docs\/managing?hl=ja<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes\">Cloud Run functions (formerly known as Cloud Functions) release notes<\/a> <a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes\">https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/run\/docs\/release-notes\">Cloud Run release notes<\/a> <a href=\"https:\/\/docs.cloud.google.com\/run\/docs\/release-notes\">https:\/\/docs.cloud.google.com\/run\/docs\/release-notes<\/a><\/li>\n<\/ul>\n<hr \/>\n<h1>Cloud Functions can no longer be created? Unraveling the mystery of Cloud Run functions<\/h1>\n<h2>Conclusion<\/h2>\n<p>It is no longer possible to create &quot;functions&quot; from the Web UI that can be retrieved with <code>gcloud functions list<\/code>. However, it is possible to create functions that appear as &quot;functions&quot; within Cloud Run Services.<\/p>\n<p>There is a command called <code>gcloud functions detach<\/code>, which seemingly allows you to convert a function obtainable via <code>gcloud functions list<\/code> into one that is not (though I haven&#8217;t tried running it).<\/p>\n<h2>Trigger<\/h2>\n<p>I struggled a bit with the title: &quot;Cloud Functions can no longer be created? Unraveling the mystery of Cloud Run functions&quot; versus &quot;Can you distinguish between these two functions? Unraveling the mystery of Cloud Run functions&quot;.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/tako.nakano.net\/blog\/wp-content\/uploads\/2026\/01\/service_list.png\" alt=\"3 seemingly identical functions\" \/><\/p>\n<p>Of the three seemingly identical functions in this image, only <code>pubsub-to-bq<\/code> is a function that can be retrieved with <code>gcloud functions list<\/code>. The remaining two cannot be obtained with <code>gcloud functions list<\/code>.<\/p>\n<p>In the past, I had certainly created Cloud Run functions. This time, when I tried to import an existing service into Terraform, I found I couldn&#8217;t. When I checked with <code>gcloud functions list<\/code>, I found that the &quot;function I created a long time ago&quot; was there, but the &quot;function I created recently&quot; was not.<br \/>\nYes, to reiterate, there are functions that exist on the screen but cannot be obtained with <code>gcloud functions list<\/code>.<\/p>\n<h2>This is the day (2025-02-19)<\/h2>\n<p><a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#February_19_2025\">2025-02-19<\/a> The following description appeared in the release notes:<\/p>\n<blockquote>\n<p>Support for deploying v2 functions in Cloud Run is now in general availability (GA). This lets you customize your function as you would a Cloud Run service. This change removes support for creating, deploying, or updating v2 functions in the Google Cloud console. However, you can still manage functions created with the Cloud Functions v2 API using the Cloud Functions gcloud CLI, the Cloud Functions v2 API, or the Cloud Run Cloud Console. See Cloud Run functions comparison for more details.<\/p>\n<\/blockquote>\n<p>Unless you are thinking very carefully, you might have just thought:<\/p>\n<ul>\n<li>Oh, the UI has changed.<\/li>\n<li>But I can still create functions.<\/li>\n<li>Integration seems to have progressed.<\/li>\n<\/ul>\n<p>And left it at that. Our experience of &quot;creating a function&quot; shouldn&#8217;t have changed much:<\/p>\n<ul>\n<li>In the Web UI, the UI changed a bit, but it&#8217;s possible.<\/li>\n<li>With <code>gcloud functions deploy<\/code>, it works as before.<\/li>\n<\/ul>\n<p>However, a big change was actually happening behind the scenes.<\/p>\n<h2>Digression (History)<\/h2>\n<ul>\n<li><strong>2017-03<\/strong>: Cloud Functions (1st gen) Beta<\/li>\n<li><strong>2019-11<\/strong>: Cloud Run GA<\/li>\n<li><strong>2022-02<\/strong>: Cloud Functions (2nd gen) Preview (Cloud Run based)<\/li>\n<li><strong>2024-08<\/strong>: Renamed to &quot;Cloud Run functions&quot;, customizable as Run service<\/li>\n<li><strong>2025-02<\/strong>: End of support for creating v2 functions in the console (Full transition to Cloud Run creation flow)<\/li>\n<\/ul>\n<p>Cloud Functions was originally a serverless function execution environment provided by Google. <a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#March_09_2017\">2017-03-09<\/a> says &quot;Beta release of Google Cloud Functions&quot;. <a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#October_19_2017\">2017-10-19<\/a> mentions the release of the v1 API.<\/p>\n<p><a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#February_14_2022\">2022-02-14<\/a> states &quot;Cloud Functions has released Cloud Functions (2nd gen), available at the Preview release level. Cloud Functions (2nd gen) is Google Cloud&#8217;s next-generation Functions-as-a-Service offering.&quot; This is the arrival of the 2nd generation. This is the first time the string &quot;2nd&quot; appears. <a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#December_13_2022\">2022-12-13<\/a> states &quot;The cloudfunctions.googleapis.com\/v2 API now supports reading 1st gen functions, using the get and list methods.&quot; This is the first time the string &quot;v2&quot; appears.<\/p>\n<p><a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#August_21_2024\">2024-08-21<\/a> states &quot;You can also deploy new functions, and modify existing functions that were created with the Cloud Functions v2 API in Cloud Run. This enables you to customize your function as you would a Cloud Run service.&quot; The relationship with Cloud Run is explicitly stated in the release notes. And it clearly states that 2nd gen functions are Cloud Run services. (This must have been mentioned many times outside of release notes, but since dates are unclear, I am tracking the release notes this time). This is the first time the string &quot;Cloud Run&quot; appears.<\/p>\n<p>Here are the Cloud Run Release Notes. Going back a bit, <a href=\"https:\/\/docs.cloud.google.com\/run\/docs\/release-notes#October_01_2019\">2019-10-01<\/a> is the first entry in the Cloud Run Release Notes. <a href=\"https:\/\/docs.cloud.google.com\/run\/docs\/release-notes#November_14_2019\">2019-11-14<\/a> states GA.<\/p>\n<p><a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#February_11_2025\">2025-02-11<\/a> has something interesting written. &quot;Cloud Run functions created with the Cloud Functions (v2) API (cloudfunctions.googleapis.com) can now be detached so that they can only be managed through the Cloud Run Admin API (run.googleapis.com).&quot; So, you can make a function&#8230; not a function!? It seems to be an irreversible conversion. <a href=\"https:\/\/docs.cloud.google.com\/functions\/docs\/release-notes#February_19_2025\">2025-02-19<\/a> mentions the &quot;Google Cloud console&quot; (= Web UI) discussed earlier.<\/p>\n<p>So, a little over 2 years after Cloud Run was born [2019-10-01], Cloud Functions 2nd gen appeared [2022-02-14]. The name changed to Cloud Run functions on [2024-08-21], and the release notes say &quot;functions appear as services&quot; (though I recall seeing them before). After that, the function (created with the feeling until now) became a Cloud Run service that is not a function by default [2025-02-19], leading to the present.<\/p>\n<p>Cloud Functions 2nd generation runs on Cloud Run, a container execution environment (service). Although not many articles explicitly state it, it is understood that Cloud Functions 1st generation runs (or ran) on App Engine (or using the same mechanism as App Engine).<\/p>\n<h3>Supplement<\/h3>\n<p><a href=\"https:\/\/cloud.google.com\/functions\/docs\/managing?hl=en\">Managing functions<\/a> contains the following description:<\/p>\n<blockquote>\n<p>Note: If you create a Cloud Run functions function using gcloud run commands or the Cloud Run Admin API, you cannot manage that function using gcloud functions commands or the Cloud Functions v2 API.<\/p>\n<\/blockquote>\n<p>Here too, it is clearly stated that a mere service is different from a service that appears as a function.<\/p>\n<h2>Command and API Responses<\/h2>\n<p>Here are some of the command and API responses in a project.<\/p>\n<pre><code class=\"language-text\">gcloud functions list\nNAME          STATE   TRIGGER       REGION           ENVIRONMENT\npubsub_to_bq  ACTIVE  HTTP Trigger  asia-northeast1  2nd gen<\/code><\/pre>\n<pre><code class=\"language-text\">gcloud run services list # LAST DEPLOYED BY and part of URL removed\n   SERVICE       REGION           URL                                                            LAST DEPLOYED AT\n\u2714  instant2bq    asia-northeast1  https:\/\/instant2bq- project number .asia-northeast1.run.app    2026-01-17T14:03:08.591581Z\n\u2714  pubsub-to-bq  asia-northeast1  https:\/\/pubsub-to-bq- project number .asia-northeast1.run.app  2024-07-21T09:19:16.329328Z\n\u2714  total2bq      asia-northeast1  https:\/\/total2bq- project number .asia-northeast1.run.app      2026-01-17T14:00:12.969052Z<\/code><\/pre>\n<p><code>curl -H &quot;Authorization: Bearer $(gcloud auth print-access-token)&quot; https:\/\/cloudfunctions.googleapis.com\/v2\/projects\/ project id \/locations\/-\/functions<\/code><\/p>\n<pre><code class=\"language-jsonc\">{\n  &quot;functions&quot;: [\n    {\n      &quot;name&quot;: &quot;projects\/ project id \/locations\/asia-northeast1\/functions\/pubsub_to_bq&quot;,\n      &quot;buildConfig&quot;: {\n        &quot;build&quot;: &quot;projects\/ project number \/locations\/asia-northeast1\/builds\/7e7fcf21-3346-4697-aed3-ce96c5eb1c25&quot;,\n        &quot;runtime&quot;: &quot;go122&quot;,\n        &quot;entryPoint&quot;: &quot;pubsub_to_bq&quot;,\n        &quot;source&quot;: {\n          &quot;storageSource&quot;: {\n            &quot;bucket&quot;: &quot;gcf-v2-sources- project number -asia-northeast1&quot;,\n            &quot;object&quot;: &quot;pubsub_to_bq\/function-source.zip&quot;,\n            &quot;generation&quot;: &quot;1721553313671054&quot;\n          }\n        },\n        &quot;dockerRepository&quot;: &quot;projects\/ project id \/locations\/asia-northeast1\/repositories\/gcf-artifacts&quot;,\n        &quot;sourceProvenance&quot;: {\n          &quot;resolvedStorageSource&quot;: {\n            &quot;bucket&quot;: &quot;gcf-v2-sources- project number -asia-northeast1&quot;,\n            &quot;object&quot;: &quot;pubsub_to_bq\/function-source.zip&quot;,\n            &quot;generation&quot;: &quot;1721553313671054&quot;\n          }\n        },\n        &quot;dockerRegistry&quot;: &quot;ARTIFACT_REGISTRY&quot;,\n        &quot;automaticUpdatePolicy&quot;: {}\n      },\n      &quot;serviceConfig&quot;: {\n        &quot;service&quot;: &quot;projects\/ project id \/locations\/asia-northeast1\/services\/pubsub-to-bq&quot;,\n        &quot;timeoutSeconds&quot;: 300,\n        &quot;environmentVariables&quot;: {\n          &quot;PROJECT_ID&quot;: &quot; project id &quot;,\n          &quot;SUBSCRIPTION_ID&quot;: &quot;instant_subscription&quot;,\n          &quot;LOG_EXECUTION_ID&quot;: &quot;true&quot;\n        },\n        &quot;maxInstanceCount&quot;: 2,\n        &quot;ingressSettings&quot;: &quot;ALLOW_ALL&quot;,\n        &quot;uri&quot;: &quot;https:\/\/pubsub-to-bq- random string -an.a.run.app&quot;,\n        &quot;serviceAccountEmail&quot;: &quot; project number -compute@developer.gserviceaccount.com&quot;,\n        &quot;availableMemory&quot;: &quot;128Mi&quot;,\n        &quot;allTrafficOnLatestRevision&quot;: true,\n        &quot;revision&quot;: &quot;pubsub-to-bq-00009-kad&quot;,\n        &quot;maxInstanceRequestConcurrency&quot;: 1,\n        &quot;availableCpu&quot;: &quot;167m&quot;\n      },\n      &quot;state&quot;: &quot;ACTIVE&quot;,\n      &quot;updateTime&quot;: &quot;2024-07-21T09:19:16.610753517Z&quot;,\n      &quot;labels&quot;: {\n        &quot;deployment-tool&quot;: &quot;cli-gcloud&quot;\n      },\n      &quot;environment&quot;: &quot;GEN_2&quot;,\n      &quot;url&quot;: &quot;https:\/\/asia-northeast1- project id .cloudfunctions.net\/pubsub_to_bq&quot;,\n      &quot;createTime&quot;: &quot;2024-07-15T13:12:25.181025243Z&quot;,\n      &quot;satisfiesPzi&quot;: true\n    }\n  ]\n}<\/code><\/pre>\n<p><code>curl -H &quot;Authorization: Bearer $(gcloud auth print-access-token)&quot; https:\/\/run.googleapis.com\/v2\/projects\/ project id \/locations\/-\/services<\/code><\/p>\n<pre><code class=\"language-jsonc\">{\n  &quot;services&quot;: [\n    {\n      &quot;name&quot;: &quot;projects\/ project id \/locations\/asia-northeast1\/services\/instant2bq&quot;,\n      &quot;uid&quot;: &quot;aef5a6c5-ef27-4588-961c-4380699ee9a4&quot;,\n      \/\/ ...\n      &quot;template&quot;: {\n        &quot;scaling&quot;: {\n          &quot;maxInstanceCount&quot;: 1\n        },\n        &quot;serviceAccount&quot;: &quot;instant2bq-sa@ project id .iam.gserviceaccount.com&quot;,\n        &quot;containers&quot;: [\n          {\n            &quot;name&quot;: &quot;instant2bq-1&quot;,\n            &quot;image&quot;: &quot;asia-northeast1-docker.pkg.dev\/ project id \/cloud-run-source-deploy\/instant2bq@sha256:ff99bb1a727a9938ec2f74946d7ae34471c6d971db1ef9e1f300cb820a546d9d&quot;,\n            \/\/ ...\n            &quot;baseImageUri&quot;: &quot;asia-northeast1-docker.pkg.dev\/serverless-runtimes\/google-22\/runtimes\/go125&quot;\n          }\n        ],\n        &quot;maxInstanceRequestConcurrency&quot;: 1\n      },\n      \/\/ ...\n      &quot;urls&quot;: [\n        &quot;https:\/\/instant2bq- project number .asia-northeast1.run.app&quot;,\n        &quot;https:\/\/instant2bq- random string -an.a.run.app&quot;\n      ],\n      \/\/ ...\n      &quot;uri&quot;: &quot;https:\/\/instant2bq- random string -an.a.run.app&quot;,\n      &quot;buildConfig&quot;: {\n        &quot;name&quot;: &quot;projects\/ project number \/locations\/asia-northeast1\/builds\/fec8c6a4-dbc8-4c5e-8598-670e90bcb6a1&quot;,\n        &quot;sourceLocation&quot;: &quot;gs:\/\/run-sources- project id -asia-northeast1\/services\/instant2bq\/1768658373.776000.zip#1768658374307361&quot;,\n        &quot;functionTarget&quot;: &quot;instant2bq&quot;,\n        &quot;imageUri&quot;: &quot;asia-northeast1-docker.pkg.dev\/ project id \/cloud-run-source-deploy\/instant2bq&quot;,\n        &quot;baseImage&quot;: &quot;asia-northeast1-docker.pkg.dev\/serverless-runtimes\/google-22\/runtimes\/go125&quot;,\n        &quot;enableAutomaticUpdates&quot;: true\n      },\n      &quot;etag&quot;: &quot;\\&quot;CJatrssGEOizzZYB\/cHJvamVjdHMvbmstaG9tZS1kYXRhL2xvY2F0aW9ucy9hc2lhLW5vcnRoZWFzdDEvc2VydmljZXMvaW5zdGFudDJicQ\\&quot;&quot;\n    },\n    {\n      &quot;name&quot;: &quot;projects\/ project id \/locations\/asia-northeast1\/services\/total2bq&quot;,\n      &quot;uid&quot;: &quot;893334ed-4b7d-4854-997c-b8fbe582ef00&quot;,\n      \/\/ ...\n      &quot;template&quot;: {\n        &quot;scaling&quot;: {\n          &quot;maxInstanceCount&quot;: 2\n        },\n        &quot;serviceAccount&quot;: &quot;total2bq-sa@ project id .iam.gserviceaccount.com&quot;,\n        &quot;containers&quot;: [\n          {\n            &quot;name&quot;: &quot;total2bq-1&quot;,\n            &quot;image&quot;: &quot;asia-northeast1-docker.pkg.dev\/ project id \/cloud-run-source-deploy\/total2bq@sha256:e0944d8c43aeaaae5691b61a2a10ca3b272d826f54a2c5291e709f526317a943&quot;,\n            \/\/ ...\n            &quot;baseImageUri&quot;: &quot;asia-northeast1-docker.pkg.dev\/serverless-runtimes\/google-22\/runtimes\/go125&quot;\n          }\n        ],\n        &quot;maxInstanceRequestConcurrency&quot;: 1\n      },\n      \/\/ ...\n      &quot;urls&quot;: [\n        &quot;https:\/\/total2bq- project number .asia-northeast1.run.app&quot;,\n        &quot;https:\/\/total2bq- random string -an.a.run.app&quot;\n      ],\n      \/\/ ...\n      &quot;uri&quot;: &quot;https:\/\/total2bq- random string -an.a.run.app&quot;,\n      &quot;buildConfig&quot;: {\n        &quot;name&quot;: &quot;projects\/ project number \/locations\/asia-northeast1\/builds\/d0475ee9-dafa-40fe-95b7-16ca9733903e&quot;,\n        &quot;sourceLocation&quot;: &quot;gs:\/\/run-sources- project id -asia-northeast1\/services\/total2bq\/1768658216.718000.zip#1768658217426437&quot;,\n        &quot;functionTarget&quot;: &quot;total2bq&quot;,\n        &quot;imageUri&quot;: &quot;asia-northeast1-docker.pkg.dev\/ project id \/cloud-run-source-deploy\/total2bq&quot;,\n        &quot;baseImage&quot;: &quot;asia-northeast1-docker.pkg.dev\/serverless-runtimes\/google-22\/runtimes\/go125&quot;,\n        &quot;enableAutomaticUpdates&quot;: true\n      },\n      &quot;etag&quot;: &quot;\\&quot;COSrrssGEPCTy-QB\/cHJvamVjdHMvbmstaG9tZS1kYXRhL2xvY2F0aW9ucy9hc2lhLW5vcnRoZWFzdDEvc2VydmljZXMvdG90YWwyYnE\\&quot;&quot;\n    },\n    {\n      &quot;name&quot;: &quot;projects\/ project id \/locations\/asia-northeast1\/services\/pubsub-to-bq&quot;,\n      &quot;uid&quot;: &quot;427aec17-9b5f-44bc-b2a8-22b085970b6f&quot;,\n      \/\/ ...\n      &quot;labels&quot;: {\n        &quot;goog-managed-by&quot;: &quot;cloudfunctions&quot;,\n        &quot;goog-cloudfunctions-runtime&quot;: &quot;go122&quot;\n      },\n      &quot;annotations&quot;: {\n        &quot;cloudfunctions.googleapis.com\/function-id&quot;: &quot;pubsub_to_bq&quot;\n      },\n      \/\/ ...\n      &quot;client&quot;: &quot;cloudfunctions&quot;,\n      \/\/ ...\n      &quot;template&quot;: {\n        \/\/ ...\n        &quot;annotations&quot;: {\n          &quot;cloudfunctions.googleapis.com\/trigger-type&quot;: &quot;HTTP_TRIGGER&quot;\n        },\n        &quot;scaling&quot;: {\n          &quot;maxInstanceCount&quot;: 2\n        },\n        &quot;serviceAccount&quot;: &quot; project number -compute@developer.gserviceaccount.com&quot;,\n        &quot;containers&quot;: [\n          {\n            &quot;name&quot;: &quot;worker&quot;,\n            &quot;image&quot;: &quot;asia-northeast1-docker.pkg.dev\/ project id \/gcf-artifacts\/pubsub__to__bq:version_1&quot;,\n            \/\/ ...\n            &quot;baseImageUri&quot;: &quot;asia-northeast1-docker.pkg.dev\/serverless-runtimes\/google-22-full\/runtimes\/go122&quot;\n          }\n        ],\n        &quot;maxInstanceRequestConcurrency&quot;: 1\n      },\n      \/\/ ...\n      &quot;urls&quot;: [\n        &quot;https:\/\/pubsub-to-bq- project number .asia-northeast1.run.app&quot;,\n        &quot;https:\/\/asia-northeast1- project id .cloudfunctions.net\/pubsub_to_bq&quot;,\n        &quot;https:\/\/pubsub-to-bq- random string -an.a.run.app&quot;\n      ],\n      \/\/ ...\n      &quot;uri&quot;: &quot;https:\/\/pubsub-to-bq- random string -an.a.run.app&quot;,\n      &quot;customAudiences&quot;: [\n        &quot;https:\/\/asia-northeast1- project id .cloudfunctions.net\/pubsub_to_bq&quot;\n      ],\n      &quot;buildConfig&quot;: {\n        &quot;name&quot;: &quot;projects\/ project number \/locations\/asia-northeast1\/builds\/7e7fcf21-3346-4697-aed3-ce96c5eb1c25&quot;,\n        &quot;sourceLocation&quot;: &quot;gs:\/\/gcf-v2-sources- project number -asia-northeast1\/pubsub_to_bq\/function-source.zip#1721553313671054&quot;,\n        &quot;functionTarget&quot;: &quot;pubsub_to_bq&quot;,\n        &quot;imageUri&quot;: &quot;asia-northeast1-docker.pkg.dev\/ project id \/gcf-artifacts\/-&quot;,\n        &quot;baseImage&quot;: &quot;asia-northeast1-docker.pkg.dev\/serverless-runtimes\/google-22-full\/runtimes\/go122&quot;,\n        &quot;enableAutomaticUpdates&quot;: true\n      },\n      &quot;etag&quot;: &quot;\\&quot;CI2l87QGENCAh6YB\/cHJvamVjdHMvbmstaG9tZS1kYXRhL2xvY2F0aW9ucy9hc2lhLW5vcnRoZWFzdDEvc2VydmljZXMvcHVic3ViLXRvLWJx\\&quot;&quot;\n    }\n  ],\n  &quot;unreachable&quot;: [\n    &quot;europe-west15&quot;,\n    &quot;me-central2&quot;,\n    &quot;us-central2&quot;,\n    &quot;us-east7&quot;,\n    &quot;us-west8&quot;\n  ]\n}<\/code><\/pre>\n<p>So, <code>pubsub_to_bq<\/code> (= <code>pubsub-to-bq<\/code>) is a function I created a long time ago, and this is the &quot;only&quot; function obtained with <code>gcloud functions list<\/code>. The other two cannot be obtained with <code>gcloud functions list<\/code>.<br \/>\nIt might be that <code>_<\/code> is converted to <code>-<\/code> to make it part of the URL.<\/p>\n<h2>What is the current UI like?<\/h2>\n<p>When you try to create a function in Cloud Run, the flow is as follows:<\/p>\n<ul>\n<li>Click [&#8230;] Write a function from the Services page<\/li>\n<li>Transition to the Create service page (Function Use an inline editor to create a function is selected)<\/li>\n<li>Create service<\/li>\n<li>A dummy container (hello) is created and deployed<\/li>\n<li>Edit and paste the function source code<\/li>\n<li>Redeploy<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>I felt that the functions API was reasonably convenient, but I have a feeling that support will become thinner in the future. This time, I decided to just go with Cloud Run.<\/p>\n<h2>References<\/h2>\n<ul>\n<li><a href=\"https:\/\/cloud.google.com\/functions\/docs\/managing?hl=en\">Managing functions<\/a> <a href=\"https:\/\/cloud.google.com\/functions\/docs\/managing?hl=en\">https:\/\/cloud.google.com\/functions\/docs\/managing?hl=en<\/a><\/li>\n<li><a href=\"https:\/\/cloud.google.com\/functions\/docs\/release-notes\">Cloud Run functions (formerly known as Cloud Functions) release notes<\/a> <a href=\"https:\/\/cloud.google.com\/functions\/docs\/release-notes\">https:\/\/cloud.google.com\/functions\/docs\/release-notes<\/a><\/li>\n<li><a href=\"https:\/\/cloud.google.com\/run\/docs\/release-notes\">Cloud Run release notes<\/a> <a href=\"https:\/\/cloud.google.com\/run\/docs\/release-notes\">https:\/\/cloud.google.com\/run\/docs\/release-notes<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Cloud Functions \u95a2\u6570\u306f\u3082\u3046\u4f5c\u308c\u306a\u3044\uff1fCloud Run functions \u306e\u8b0e\u306b\u8feb\u308b English follows Japanese. \u7d50\u8ad6 Web UI \u304b\u3089\u3001gcloud functions li [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[26,13],"tags":[],"class_list":["post-634","post","type-post","status-publish","format-standard","hentry","category-cloud-run","category-google-cloud"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p4dIdP-ae","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tako.nakano.net\/blog\/wp-json\/wp\/v2\/posts\/634","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tako.nakano.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tako.nakano.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tako.nakano.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tako.nakano.net\/blog\/wp-json\/wp\/v2\/comments?post=634"}],"version-history":[{"count":1,"href":"https:\/\/tako.nakano.net\/blog\/wp-json\/wp\/v2\/posts\/634\/revisions"}],"predecessor-version":[{"id":636,"href":"https:\/\/tako.nakano.net\/blog\/wp-json\/wp\/v2\/posts\/634\/revisions\/636"}],"wp:attachment":[{"href":"https:\/\/tako.nakano.net\/blog\/wp-json\/wp\/v2\/media?parent=634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tako.nakano.net\/blog\/wp-json\/wp\/v2\/categories?post=634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tako.nakano.net\/blog\/wp-json\/wp\/v2\/tags?post=634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}