您可以使用無伺服器虛擬私有雲端存取,從 Cloud Run 函式連線至 Redis 執行個體。
設定
如果您已安裝 Google Cloud CLI 並建立 Redis 執行個體,可以略過這些步驟。
安裝 gcloud CLI 並初始化:
gcloud init
按照快速入門指南中的說明建立 Redis 執行個體。請記下 Redis 執行個體的區域、IP 位址和通訊埠。
設定無伺服器虛擬私人雲端存取
如要從 Cloud Run 函式連線至 Redis 執行個體的授權虛擬私人雲端網路,您必須設定無伺服器虛擬私有雲存取功能。
執行下列指令,找出 Redis 執行個體的授權網路:
gcloud redis instances describe INSTANCE_ID --region REGION
請按照「建立連接器」一節中的操作說明,建立無伺服器虛擬私有雲存取連接器。請務必在要部署函式的區域中建立連接器,並確保連接器已連結至 Redis 執行個體的授權虛擬私有雲網路。記下連接器的名稱。
範例函式
這個範例函式會從 Cloud Run 函式建立與 Redis 執行個體的連線。
複製所需程式語言的存放區,然後前往包含範例程式碼的資料夾:
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples
cd golang-samples/functions/memorystore/redis
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples
cd nodejs-docs-samples/functions/memorystore/redis
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
cd python-docs-samples/functions/memorystore/redis
程式碼範例會在每次觸發函式時遞增 Redis 計數器:
將範例部署至 Cloud Run 函式
使用 Google Cloud CLI 部署函式:
Go
gcloud functions deploy visit-count \ --gen2 \ --region=REGION \ --runtime=go116 \ --source=. \ --entry-point=VisitCount \ --trigger-http \ --vpc-connector=projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME \ --set-env-vars=REDISHOST=REDIS_IP,REDISPORT=REDIS_PORT
Node.js
gcloud functions deploy visit-count \ --gen2 \ --region=REGION \ --runtime=nodejs16 \ --source=. \ --entry-point=visitCount \ --trigger-http \ --vpc-connector=projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME \ --set-env-vars=REDISHOST=REDIS_IP,REDISPORT=REDIS_PORT
Python
gcloud functions deploy visit-count \ --gen2 \ --region=REGION \ --runtime=python310 \ --source=. \ --entry-point=visit_count \ --trigger-http \ --vpc-connector=projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME \ --set-env-vars=REDISHOST=REDIS_IP,REDISPORT=REDIS_PORT
其中:
PROJECT_ID
是 Google Cloud 專案 ID。REGION
是您要部署函式所在的地區。CONNECTOR_NAME
是連接器名稱。REDIS_IP
和REDIS_PORT
分別是 Redis 執行個體的 IP 位址和通訊埠編號。
函式部署作業完成後,請擷取函式的網址:
gcloud functions describe visit-count \ --gen2 \ --region=REGION \ --format="value(serviceConfig.uri)"
您可以透過向網址傳送 GET
要求,查看每次觸發函式時計數器的增加情形。