Referenz zum Declarative Native App-Manifest

Anbieter erstellen eine Manifest-Datei als Teil eines Pakets.

Die Manifest-Datei ist eine textbasierte YAML-Datei mit dem Dateinamen: manifest.yml. Sie wird verwendet, um Daten deklarativ für Verbrauchende freizugeben, wie z. B. Notizbücher, Tabellen und Ansichten.

Die Manifest-Datei definiert auch App-Rollen, die App-Eigentümer verwenden können, um eine Teilmenge der Daten und Features der App an Teams in ihren Organisationsteams nach Rollen freizugeben.

Informationen zur Entwicklung eines Anwendungspakets finden Sie unter Anwendungspakete bei deklarativer Freigabe im Native Application Framework.

Declarative Native App-Manifest

Das allgemeine Format eines Declarative Native App-Manifests enthält Folgendes:

manifest_version: # Added automatically. Don't include.
application_content: # Optional, describes associated app logic
roles: # Optional, describes roles associated with shared_content
shared_content: # Required, describes associated data to be shared
Copy

Felder

Declarative Native App-Manifeste enthalten die folgenden Felder:

Feld manifest_version

Dieses Feld wird automatisch zur Manifest-Datei hinzugefügt, wenn Sie eine neue Version eines Anwendungspakets freigeben.

Fügen Sie dieses Feld nicht ein, wenn Sie eine Manifest-Datei erstellen, die Sie in ein Anwendungspaket aufnehmen möchten. Das manuelle Bearbeiten dieses Feldes wird nicht unterstützt.

Das manifest_version-Feld der obersten Ebene (Ganzzahl, erforderlich) gibt die Versionsnummer der Manifest-Datei an.

Weitere Informationen zur Versionierung finden Sie unter Paketversionen in der deklarativer Freigabe im Native Application Framework.

Feld application_content

Das application_content-Feld (Liste, optional) definiert gebündelte Inhalte, die deklarativ von der App freigegeben werden.

Dieses Feld enthält ein einzelnes notebooks-Feld:

  • application_content.notebooks (Liste, erforderlich): Eine Liste von benannten Notizbüchern.

Feld application_content.notebooks.{named notebook}

Jedes benannte Notizbuch unterstützt die folgenden Name/Wert-Paare:

  • main_file (Zeichenfolge, erforderlich) ist der Name der interaktiven Python-Notizbuchdatei (.ipynb).

  • comment (Zeichenfolge, optional): Ein Kommentar, der das Notizbuch beschreibt.

  • runtime_environment_version (Zeichenfolge, optional): Gibt eine bestimmte Version der Laufzeitumgebung für den Ausführungskontext des Notizbuchs an, falls innerhalb der Plattform anwendbar.

  • roles (Liste, optional): Eine Liste von App-Rollen, die Zugriff auf das Notizbuch gewähren können, zum Beispiel [sales,marketing]. Wenn dieses Feld leer ist ([]) oder weggelassen wird, dann erhalten nur App-Eigentümer und Rollen mit erteilten IMPORTED PRIVILEGES Zugriff. Die enthaltenen Rollen müssen im -Feld für Rollen der obersten Ebene definiert sein.

application_context-Beispiel

In diesem Beispiel wird ein einzelnes Notizbuch, Verkaufsbuch, mithilfe der Notizbuchdatei NOTEBOOK1.ipynb definiert, die die bekannte Laufzeitumgebung stabil verwendet und den Zugriff denjenigen erlaubt, denen entweder die Rolle Verkauf oder Marketing zugewiesen wurde.

application_content:
    notebooks:
        - salesbook:
              roles: [sales, marketing]
              main_file: NOTEBOOK1.ipynb
              comment: Notebook1: Sales and marketing notebook
              runtime_environment_version: stable

roles:
  - sales:
  - marketing:
Copy

Feld roles

Das roles-Feld der obersten Ebene (Liste, optional) definiert eine Liste von App-Rollen. Diese Rollen ermöglichen es App-Eigentümern, ihrer Organisation Zugriff auf freigegebene Objekte in einer App zu gewähren, wie z. B. Schemas, Tabellen, Ansichten und Notizbücher.

Jede benannte Rolle kann optional einen comment enthalten, der als Beschreibung angezeigt wird, wenn der Besitzende der App die Rollen in der Anwendung auflistet.

Diese Rollen werden im Manifest durch freigegebene Objekte auf der benannten Ebene notebook, schema, table oder view referenziert. Für Objekte auf der Ebene table oder view müssen Rollen auch auf der Ebene schema angegeben werden.

Bemerkung

  • Alle Inhalte im Manifest sind für den Besitzenden der App, den ACCOUNTADMINund die Rollen zugänglich, denen IMPORTED PRIVILEGES in der App zugewiesen wurden.

  • Der in dieser Manifest-Datei definierte Objektname wird für die Auflösung des Laufzeitobjekts verwendet. Wenn der Anbietende den Objektnamen ändert, ohne die Manifest-Datei mit einer neuen Version zu aktualisieren, verlieren die Verbrauchenden den Zugriff auf das Objekt.

roles-Beispiel

roles:
  - sales:
  - marketing:

application_content:
  notebooks:
    - salesbook:
        roles: [sales, marketing]
        main_file: NOTEBOOK1.ipynb
        comment: Sales and marketing notebook

shared_content:
  databases:
    - sales:
        schemas:
          - orders:
              roles: [sales, marketing]
              tables:
                - january_2025:        # App owners/assignees only
                - february_2025:
                    roles: [sales]     # Accessible to sales only
                - march_2025:
                    roles: [marketing] # Accessible to marketing only
    - customer_info:
        schemas:
          - customer_contact:
              roles: [customer_support]
              views:
                - customer_address:
                    roles: [customer_support] # Accessible to customer_support
                - customer_details:
                    roles: []                 # App owners/assignees only
Copy

Weitere Informationen zu Rollen finden Sie unter App-Rollen

Feld shared_content

Das shared_content-Feld (Liste, erforderlich) definiert eine Liste von Datenbanken, die deklarativ von der App freigegeben werden. Jede Datenbank enthält eine Liste von benannten schemas. Jedes Schema kann eine Liste von benannten tables und eine Liste von views enthalten.

Dieses Feld enthält ein einzelnes notebooks-Feld:

  • shared_content.databases (Liste, erforderlich): Eine Liste der benannten Datenbankinstanzen und der zugrunde liegenden Objekte, die freigegeben werden sollen. In diesem Beispiel fügt das Manifest eine Datenbank mit dem Namen „sales“ hinzu:

Feld shared_content.databases.{named database}

Jede benannte Datenbank unterstützt die folgenden Name/Wert-Paare:

  • schemas (Liste, erforderlich): Eine Liste der Schemas innerhalb der Datenbank.

Feld schemas.{named schema}

Jedes benannte Schema unterstützt die folgenden Name/Wert-Paare:

  • tables (Liste, [OneOfRequired]): Eine Liste von benannten Tabellen.

  • views (Liste, [OneOfRequired]): Eine Liste von benannten Ansichten.

  • roles (Liste, optional): Eine Liste von App-Rollen, die die Objekte im Schema verwenden können, z. B. [sales,marketing]. Wenn dieses Feld leer ist ([]) oder weggelassen wird, dann erhalten nur App-Eigentümer und Rollen mit erteilten IMPORTED PRIVILEGES Zugriff. Die enthaltenen Rollen müssen im -Feld für Rollen der obersten Ebene definiert sein.

[OneOfRequired] (1,2,3)

mindestens eine der tables oder views ist erforderlich.

Feld tables.{named table}

Jede benannte Tabelle (Liste, erforderlich) unterstützt das folgende Name/Wert-Paar:

Feld views.{named view}

Jede benannte Ansicht (Liste, erforderlich [OneOfRequired] ): unterstützt das folgende Name/Wert-Paar:

shared_content-Beispiel

In diesem Beispiel werden zwei Datenbanken bereitgestellt: sales und customer_info. Innerhalb dieser Datenbanken sind die Tabellen orders.[january_2025|february_2025] sowie die Ansicht customer_contact.customer_address verfügbar.

Da das Feld für Rollen nicht vorhanden ist, wird keine Zugriffssteuerung auf Basis von App-Rollen bereitgestellt. Alle Rollen, die die App installieren können, können auf die Tabellen und Ansichten zugreifen.

roles:
  - sales:
  - marketing:

shared_content:
  databases:
    - sales:
        schemas:
          - orders:
              roles: [sales, marketing]
              tables:
                - january_2025:        # App owners/assignees only
                - february_2025:
                    roles: [sales]     # Accessible to sales only
                - march_2025:
                    roles: [marketing] # Accessible to marketing only
    - customer_info:
        schemas:
          - customer_contact:
              roles: [customer_support]
              views:
                - customer_address:
                    roles: [customer_support] # Accessible to customer_support
                - customer_details:
                    roles: []                 # App owners/assignees only
Copy

Beispiel einer Manifest-Datei

Der folgende Codeblock ist ein Beispiel für eine Declarative Native App-Manifest-Datei:

manifest_version: 2

roles:
  - VIEWER:
      comment: "The VIEWER role provides access to only one view."
  - ANALYST:
      comment: "The ANALYST role provides access to both views and the table."

shared_content:
  databases:
    - SNAF_POPULATION_DB:
        schemas:
          - DATA_SCHEMA:
              roles: [VIEWER, ANALYST]
              tables:
                - COUNTRY_POP_BY_YEAR:
                    roles: [ANALYST]
              views:
                - COUNTRY_POP_BY_YEAR_2000:
                    roles: [VIEWER, ANALYST]

application_content:
  notebooks:
      - intro_notebook:
          roles: [VIEWER, ANALYST]
          main_file: INTRO_NB.ipynb
      - analyst_notebook:
          roles: [ANALYST]
          main_file: ANALYST_NB.ipynb
Copy