Google Cloud Memorystore Operator

Cloud Memorystore for Redis 是 Google Cloud 提供的一項全託管 Redis 服務。執行在 Google Cloud 上的應用程式可以利用高度可擴充套件、高可用、安全的 Redis 服務,輕鬆實現卓越效能,而無需承擔管理複雜 Redis 部署的負擔。

先決條件任務

要使用這些 Operator,您需要完成以下幾項任務:

例項

Operator 使用 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 operator 設定許可權。

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 operator 執行建立例項的操作。

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,
)

您可以將 Jinja templatinglocation, instance_id, instance, project_id, retry, timeout, metadata, gcp_conn_id, impersonation_chain 引數一起使用,這使您可以動態確定值。結果將儲存到 XCom 中,以便其他 Operator 可以使用它。

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 operator 執行刪除例項的操作。

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,
)

您可以將 Jinja templatinglocation, instance, project_id, retry, timeout, metadata, gcp_conn_id, impersonation_chain 引數一起使用,這使您可以動態確定值。

匯出例項

透過 CloudMemorystoreExportInstanceOperator operator 執行匯出例項的操作。

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,
)

您可以將 Jinja templatinglocation, instance, output_config, project_id, retry, timeout, metadata, gcp_conn_id, impersonation_chain 引數一起使用,這使您可以動態確定值。

故障轉移例項

透過 CloudMemorystoreFailoverInstanceOperator operator 執行例項故障轉移的操作。

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,
)

您可以將 Jinja templatinglocation, instance, data_protection_mode, project_id, retry, timeout, metadata, gcp_conn_id, impersonation_chain 引數一起使用,這使您可以動態確定值。

獲取例項

透過 CloudMemorystoreGetInstanceOperator operator 執行獲取例項的操作。

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,
)

您可以將 Jinja templatinglocation, instance, project_id, retry, timeout, metadata, gcp_conn_id, impersonation_chain 引數一起使用,這使您可以動態確定值。

匯入例項

透過 CloudMemorystoreImportOperator operator 執行匯入例項的操作。

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,
)

您可以將 Jinja templatinglocation, instance, input_config, project_id, retry, timeout, metadata, gcp_conn_id, impersonation_chain 引數一起使用,這使您可以動態確定值。

列出例項

透過 CloudMemorystoreListInstancesOperator operator 執行列出例項的操作。

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
)

您可以將 Jinja templatinglocation, page_size, project_id, retry, timeout, metadata, gcp_conn_id, impersonation_chain 引數一起使用,這使您可以動態確定值。結果將儲存到 XCom 中,以便其他 Operator 可以使用它。

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 operator 執行更新例項的操作。

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},
)

您可以將 Jinja templatingupdate_mask, instance, location, instance_id, project_id, retry, timeout, metadata, gcp_conn_id, impersonation_chain 引數一起使用,這使您可以動態確定值。

擴縮例項

透過 CloudMemorystoreScaleInstanceOperator operator 執行擴縮例項的操作。

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,
)

您可以將 Jinja templatingmemory_size_gb, location, instance_id, project_id, retry, timeout, metadata, gcp_conn_id, impersonation_chain 引數一起使用,這使您可以動態確定值。

建立例項並匯入

如果您想建立包含匯入資料的例項,可以使用 CloudMemorystoreCreateInstanceAndImportOperator operator。

匯出並刪除例項

如果您想匯出資料並立即刪除例項,可以使用 CloudMemorystoreExportAndDeleteInstanceOperator operator。

您可以將 Jinja templatingmemory_size_gb, location, instance_id, project_id, retry, timeout, metadata, gcp_conn_id, impersonation_chain 引數一起使用,這使您可以動態確定值。

參考

更多詳細資訊請參閱:

此條目有幫助嗎?