Google Cloud Memorystore Operator¶
Cloud Memorystore for Redis 是 Google Cloud 提供的一项全托管 Redis 服务。运行在 Google Cloud 上的应用程序可以利用高度可扩展、高可用、安全的 Redis 服务,轻松实现卓越性能,而无需承担管理复杂 Redis 部署的负担。
先决条件任务¶
要使用这些 Operator,您需要完成以下几项任务:
使用 Cloud Console 选择或创建一个 Cloud Platform 项目。
为您的项目启用结算功能,如 Google Cloud 文档 中所述。
启用 API,如 Cloud Console 文档 中所述。
通过 pip 安装 API 库。
pip install 'apache-airflow[google]'更多详细信息请参阅 安装。
实例¶
Operator 使用 Instance
对象来表示实例。该对象也可以表示为一个兼容的字典。
以下是实例示例:
tests/system/google/cloud/cloud_memorystore/example_cloud_memorystore_redis.py
FIRST_INSTANCE = {"tier": Instance.Tier.BASIC, "memory_size_gb": 1}
配置导入/导出所需的存储桶权限¶
需要为导入和导出数据的存储桶配置权限。要查找您的实例的服务帐号,请运行 CloudMemorystoreCreateInstanceOperator
或 CloudMemorystoreGetInstanceOperator
并使用 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 templating 与 location
, 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 templating 与 location
, 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 templating 与 location
, 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 templating 与 location
, 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 templating 与 location
, 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 templating 与 location
, 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 templating 与 location
, 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 templating 与 update_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 templating 与 memory_size_gb
, location
, instance_id
, project_id
, retry
, timeout
, metadata
, gcp_conn_id
, impersonation_chain
参数一起使用,这使您可以动态确定值。
创建实例并导入¶
如果您想创建包含导入数据的实例,可以使用 CloudMemorystoreCreateInstanceAndImportOperator
operator。
导出并删除实例¶
如果您想导出数据并立即删除实例,可以使用 CloudMemorystoreExportAndDeleteInstanceOperator
operator。
您可以将 Jinja templating 与 memory_size_gb
, location
, instance_id
, project_id
, retry
, timeout
, metadata
, gcp_conn_id
, impersonation_chain
参数一起使用,这使您可以动态确定值。
参考¶
更多详细信息请参阅: