Google Cloud Memorystore 運算子

Cloud Memorystore for Redis 是 Google Cloud 的全受管 Redis 服務。在 Google Cloud 上執行的應用程式可以利用高度可擴展、可用、安全的 Redis 服務來實現極致效能,而無需承擔管理複雜 Redis 部署的負擔。

先決條件任務

若要使用這些運算子,您必須完成幾件事

執行個體

運算子使用 Instance 來表示執行個體。該物件也可以表示為相容的字典。

以下是一個執行個體的範例

tests/system/google/cloud/cloud_memorystore/example_cloud_memorystore_redis.py[原始碼]

FIRST_INSTANCE = {"tier": Instance.Tier.BASIC, "memory_size_gb": 1}

設定匯入/匯出儲存桶權限

必須設定儲存桶的權限才能匯入和匯出資料。若要尋找執行個體的服務帳戶,請執行 CloudMemorystoreCreateInstanceOperatorCloudMemorystoreGetInstanceOperator,並使用在 persistenceIamIdentity 下列出的服務帳戶。

您可以使用 GCSBucketCreateAclEntryOperator 運算子來設定權限。

tests/system/google/cloud/cloud_memorystore/example_cloud_memorystore_redis.py[原始碼]

set_acl_permission = GCSBucketCreateAclEntryOperator(
    task_id="gcs-set-acl-permission",
    bucket=BUCKET_NAME,
    entity="user-{{ task_instance.xcom_pull('get-instance')['persistence_iam_identity']"
    ".split(':', 2)[1] }}",
    role="OWNER",
)

如需更多資訊,請參閱:授予匯入和匯出的限制權限

建立執行個體

建立執行個體是透過 CloudMemorystoreCreateInstanceOperator 運算子執行。

tests/system/google/cloud/cloud_memorystore/example_cloud_memorystore_redis.py[原始碼]

create_instance = CloudMemorystoreCreateInstanceOperator(
    task_id="create-instance",
    location=LOCATION,
    instance_id=MEMORYSTORE_REDIS_INSTANCE_NAME,
    instance=FIRST_INSTANCE,
    project_id=PROJECT_ID,
)

您可以搭配 locationinstance_idinstanceproject_idretrytimeoutmetadatagcp_conn_idimpersonation_chain 參數使用 Jinja 範本,讓您可以動態決定值。結果會儲存到 XCom,以便其他運算子使用。

tests/system/google/cloud/cloud_memorystore/example_cloud_memorystore_redis.py[原始碼]

create_instance_result = BashOperator(
    task_id="create-instance-result",
    bash_command=f"echo {create_instance.output}",
)

刪除執行個體

刪除執行個體是透過 CloudMemorystoreDeleteInstanceOperator 運算子執行。

tests/system/google/cloud/cloud_memorystore/example_cloud_memorystore_redis.py[原始碼]

delete_instance = CloudMemorystoreDeleteInstanceOperator(
    task_id="delete-instance",
    location=LOCATION,
    instance=MEMORYSTORE_REDIS_INSTANCE_NAME,
    project_id=PROJECT_ID,
)

您可以搭配 locationinstanceproject_idretrytimeoutmetadatagcp_conn_idimpersonation_chain 參數使用 Jinja 範本,讓您可以動態決定值。

匯出執行個體

刪除執行個體是透過 CloudMemorystoreExportInstanceOperator 運算子執行。

tests/system/google/cloud/cloud_memorystore/example_cloud_memorystore_redis.py[原始碼]

export_instance = CloudMemorystoreExportInstanceOperator(
    task_id="export-instance",
    location=LOCATION,
    instance=MEMORYSTORE_REDIS_INSTANCE_NAME,
    output_config={"gcs_destination": {"uri": EXPORT_GCS_URL}},
    project_id=PROJECT_ID,
)

您可以搭配 locationinstanceoutput_configproject_idretrytimeoutmetadatagcp_conn_idimpersonation_chain 參數使用 Jinja 範本,讓您可以動態決定值。

容錯移轉執行個體

刪除執行個體是透過 CloudMemorystoreFailoverInstanceOperator 運算子執行。

tests/system/google/cloud/cloud_memorystore/example_cloud_memorystore_redis.py[原始碼]

failover_instance = CloudMemorystoreFailoverInstanceOperator(
    task_id="failover-instance",
    location=LOCATION,
    instance=MEMORYSTORE_REDIS_INSTANCE_NAME_2,
    data_protection_mode=FailoverInstanceRequest.DataProtectionMode(
        FailoverInstanceRequest.DataProtectionMode.LIMITED_DATA_LOSS
    ),
    project_id=PROJECT_ID,
)

您可以搭配 locationinstancedata_protection_modeproject_idretrytimeoutmetadatagcp_conn_idimpersonation_chain 參數使用 Jinja 範本,讓您可以動態決定值。

取得執行個體

刪除執行個體是透過 CloudMemorystoreGetInstanceOperator 運算子執行。

tests/system/google/cloud/cloud_memorystore/example_cloud_memorystore_redis.py[原始碼]

get_instance = CloudMemorystoreGetInstanceOperator(
    task_id="get-instance",
    location=LOCATION,
    instance=MEMORYSTORE_REDIS_INSTANCE_NAME,
    project_id=PROJECT_ID,
    do_xcom_push=True,
)

您可以搭配 locationinstanceproject_idretrytimeoutmetadatagcp_conn_idimpersonation_chain 參數使用 Jinja 範本,讓您可以動態決定值。

匯入執行個體

刪除執行個體是透過 CloudMemorystoreImportOperator 運算子執行。

tests/system/google/cloud/cloud_memorystore/example_cloud_memorystore_redis.py[原始碼]

import_instance = CloudMemorystoreImportOperator(
    task_id="import-instance",
    location=LOCATION,
    instance=MEMORYSTORE_REDIS_INSTANCE_NAME_2,
    input_config={"gcs_source": {"uri": EXPORT_GCS_URL}},
    project_id=PROJECT_ID,
)

您可以搭配 locationinstanceinput_configproject_idretrytimeoutmetadatagcp_conn_idimpersonation_chain 參數使用 Jinja 範本,讓您可以動態決定值。

列出執行個體

列出執行個體是透過 CloudMemorystoreListInstancesOperator 運算子執行。

tests/system/google/cloud/cloud_memorystore/example_cloud_memorystore_redis.py[原始碼]

list_instances = CloudMemorystoreListInstancesOperator(
    task_id="list-instances", location="-", page_size=100, project_id=PROJECT_ID
)

您可以搭配 locationpage_sizeproject_idretrytimeoutmetadatagcp_conn_idimpersonation_chain 參數使用 Jinja 範本,讓您可以動態決定值。結果會儲存到 XCom,以便其他運算子使用。

tests/system/google/cloud/cloud_memorystore/example_cloud_memorystore_redis.py[原始碼]

list_instances_result = BashOperator(
    task_id="list-instances-result", bash_command=f"echo {get_instance.output}"
)

更新執行個體

更新執行個體是透過 CloudMemorystoreUpdateInstanceOperator 運算子執行。

tests/system/google/cloud/cloud_memorystore/example_cloud_memorystore_redis.py[原始碼]

update_instance = CloudMemorystoreUpdateInstanceOperator(
    task_id="update-instance",
    location=LOCATION,
    instance_id=MEMORYSTORE_REDIS_INSTANCE_NAME,
    project_id=PROJECT_ID,
    update_mask={"paths": ["memory_size_gb"]},
    instance={"memory_size_gb": 2},
)

您可以搭配 update_maskinstancelocationinstance_idproject_idretrytimeoutmetadatagcp_conn_idimpersonation_chain 參數使用 Jinja 範本,讓您可以動態決定值。

調整執行個體規模

調整執行個體規模是透過 CloudMemorystoreScaleInstanceOperator 運算子執行。

tests/system/google/cloud/cloud_memorystore/example_cloud_memorystore_redis.py[原始碼]

scale_instance = CloudMemorystoreScaleInstanceOperator(
    task_id="scale-instance",
    location=LOCATION,
    instance_id=MEMORYSTORE_REDIS_INSTANCE_NAME_3,
    project_id=PROJECT_ID,
    memory_size_gb=3,
)

您可以搭配 memory_size_gblocationinstance_idproject_idretrytimeoutmetadatagcp_conn_idimpersonation_chain 參數使用 Jinja 範本,讓您可以動態決定值。

建立執行個體並匯入

如果您想要建立具有匯入資料的執行個體,可以使用 CloudMemorystoreCreateInstanceAndImportOperator 運算子。

匯出並刪除執行個體

如果您想要匯出資料並立即刪除執行個體,則可以使用 CloudMemorystoreExportAndDeleteInstanceOperator 運算子。

您可以搭配 memory_size_gblocationinstance_idproject_idretrytimeoutmetadatagcp_conn_idimpersonation_chain 參數使用 Jinja 範本,讓您可以動態決定值。

參考

更多資訊,請參閱

這篇文章是否有幫助?