プロジェクト運用

HERE platform では、プロジェクトを作成および管理できます。 管理者は、他のユーザー、アプリ、およびグループにプロジェクトへのアクセス権を付与できます。 プロジェクトアクセス権を持つユーザーは、カタログ、スキーマ、パイプラインなどのプロジェクトリソースを作成および管理できます。 任意のプロジェクトリソースに関連付けられている計算、ストレージ、および転送の使用状況は、プロジェクト ID に基づいて自動的に追跡されます。

プロジェクト運用

HERE Data SDK for Python は、プロジェクトで次の機能をサポートしています。

  • プロジェクトを作成します
  • プロジェクトを取得します
  • プロジェクトのアクセス権を管理します
  • プロジェクトのカタログ、レイヤー、およびパーティションを管理します
  • プロジェクトを更新します
  • プロジェクトを一覧表示します
  • プロジェクトを削除します

プラットフォームの制限

コードを開発する場合、プロジェクトを作成すると、そのプロジェクトの管理者役割はすぐには利用できなくなります。 プロジェクトを作成した後、プロジェクトの操作を実行する前に、短い待機時間を設定する必要があります。

以下に、最も頻繁に使用される方法の例を示します。 詳細については 、 API のドキュメントを参照してください。

プロジェクトを作成する

# Import
from here.platform import Platform
from datetime import datetime
import time
platform = Platform()
#To maintain the unique project_id, using timestamp as id.
now = datetime.now()
project_id = now.strftime("%m%d%H%M%S%f")
project_name = now.strftime("%m%d%H%M%S%f")
project_desc = "This project is created for testing."
project = platform.create_project(project_id, project_name, project_desc)

プロジェクトを取得します

## It can take time to search the project. See the added delay.
time.sleep(5)
project = platform.get_project(project.hrn)

プロジェクトメタデータを更新します

project_name = "updated-analytics-test"
project_desc = "updated-analytics-description"
result = platform.update_project(project.hrn, project_name, project_desc)

プロジェクトアクセス権の管理

プロジェクトの管理には、次のサポートが利用できます。

  • ユーザー、アプリ、またはグループにプロジェクトのアクセス権を付与します
  • ユーザー、アプリ、またはグループの役割を更新します
  • プロジェクトへのアクセス権を持つすべてのユーザー、アプリ、およびグループを一覧表示します
  • ユーザー、アプリ、またはグループからプロジェクトへのアクセス権を削除します

ユーザー、アプリ、またはグループにプロジェクトアクセス権を付与します

  • 変数の値を MEMBER_HRN 、このプロジェクトに追加するメンバーの HERE リソースネーム で置き換えます。
MEMBER_HRN = "hrn:here:account::olp-here:user/HERE-9a80ddb8-8c2d-4974-b347-04dab6fc1b0b"
project.add_member(MEMBER_HRN)

ユーザー、アプリ、またはグループの役割を更新します

role_name = "ProjectAdmin"
project.assign_member_role(MEMBER_HRN, role_name=role_name)

プロジェクトへのアクセス権を持つすべてのユーザー、アプリ、およびグループのリスト

プロジェクトメンバーのリストを取得するには、関数で 2 つのパラメーターを渡す必要があります。

  • limit - 応答で返されるエントリの数
  • only_include_identities - true の場合、グループを介して間接的にプロジェクトのメンバーであるユーザーおよびアプリの ID のみを含む有効なプロジェクトメンバーリストを返します。 また、プロジェクトのプロジェクト管理者であるユーザー、およびレルムのリソース管理者も返されます。 false の場合、プロジェクトの直接のメンバーであるユーザー、アプリ、およびグループを返します。グループ経由でのみメンバーシップを持つユーザーおよびアプリは削除されます。
only_include_identities = False
limit = "10"
result = project.list_members(limit, only_include_identities)

ユーザー、アプリ、またはグループからプロジェクトアクセス権を削除します

project.delete_member(member_hrn=MEMBER_HRN)

プロジェクトカタログ、レイヤー、およびパーティションの管理

プロジェクトリソースを管理するために、次のサポートを利用できます。

  • カタログを作成します
  • カタログを更新します
  • カタログを表示します
  • カタログを削除します
  • 表示されているすべてのプロジェクトリソースを一覧表示し

カタログを作成します

platform = Platform(project_hrn=project.hrn)

catalog_id = now.strftime("%m%d%H%M%S%f")

catalog = platform.create_catalog(
        id=catalog_id,
        name="project-analytics-catalog-testing",
        summary="project-catalog",
        description="project-catalog",
    )

カタログを取得します

catalog = platform.get_catalog(f"hrn:here:data::olp-here:{catalog_id}")

カタログを更新します

カタログメタデータを更新しています :

platform.update_catalog(
            hrn=catalog.hrn,
            id="update-id",
            name="update-catalog-metadata",
            summary="update-catalog-metadata-summary",
            description="update-catalog-metadata-description",
        )
catalog = platform.get_catalog(f"hrn:here:data::olp-here:{catalog_id}")

既存のカタログにレイヤーを追加 :

layer1 = {
        "id": "temp-layer",
        "name": "temp-layer-update-name",
        "summary": "temp-layer-summary",
        "description": "temp-layer-description",
        "contentType": "application/json",
        "layerType": "volatile",
        "partitioning": {"scheme": "generic"},
    }
layer2 = {
        "id": "temp-layer2",
        "name": "temp-layer-update-name",
        "summary": "temp-layer-summary",
        "description": "temp-layer-description",
        "contentType": "application/json",
        "layerType": "volatile",
        "partitioning": {"scheme": "generic"},
    }

platform.update_catalog(
        hrn=catalog.hrn,
        id=catalog_id,
        name="project-analytics-catalog-testing",
        summary="project-catalog",
        description="project-catalog",
        layers=[layer1, layer2],
    )
catalog = platform.get_catalog(f"hrn:here:data::olp-here:{catalog_id}")

プロジェクト内のカタログを削除します

platform.delete_catalog(catalog.hrn)

プロジェクトの詳細を取得します

プロジェクトリソースを取得します

要求されたプロジェクトのリソースのリストを取得します。

project.list_resources(
        resource_type="catalog", resource_limit="10", resource_relation="home"
    )

プロジェクトを削除します

platform.delete_project(project.hrn)

」に一致する結果は 件です

    」に一致する結果はありません