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 引數一起使用,這使您可以動態確定值。
參考¶
更多詳細資訊請參閱: