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 参数一起使用,这使您可以动态确定值。

参考

更多详细信息请参阅:

此条目有帮助吗?