
次のように VPC ネットワークを使用して Cloudfunction をデプロイしています。
gcloud beta functions deploy my-function
--trigger-http
--region europe-west1
--memory 128MB
--runtime nodejs16
--entry-point entrypoint
--allow-unauthenticated
# needed to access compute instances
# https://console.cloud.google.com/networking/connectors/list
--vpc-connector cloud-function-connector
# vpc connector should be used only to access private network
--egress-settings private-ranges-only
これで、Cloudfunction がコンピューティング リソースの IP アドレスを使用する場合、簡単にアクセスできます。ただし、ホスト名を使用すると、DNS が解決されず、次のようになります。
Error: getaddrinfo ENOTFOUND my-compute-resource
コンピューティング インスタンスで DNS を使用できるようにするには、何をする必要がありますか?
答え1
ホスト名を介してリソースにアクセスするには、完全修飾ドメイン名 (FQDN) を使用する必要があります。ホスト部分のみを使用すると失敗します。
Compute Engine VM の FQDN 形式は次のとおりです。
VM_NAME.ZONE.c.PROJECT_ID.internal
VM_NAME のみを指定する場合、どの ZONE と PROJECT_ID に対してリクエストが解決されるのでしょうか? その回答によって、回答を照会する内部 DNS サーバーも決まります。
この曖昧さを防ぐために、Google Cloud DNS では FQDN が必要です。