Especificación de formato - Amazon Cloud Directory

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Especificación de formato

Un esquema de Cloud Directory añade estructura a los datos en los directorios de datos. Cloud Directory ofrece dos mecanismos para que pueda definir su esquema. Los desarrolladores pueden especificar operaciones de API específicas para construir un esquema o pueden cargar un esquema completamente con las capacidades de carga de esquemas. Los documentos de esquemas se pueden cargar a través de llamadas de API o a través de la consola. En esta sección se describe el formato que utilizar cuando se cargan todos los documentos de esquema.

Formato de esquemas JSON

Un documento de esquema es un documento JSON con el siguiente formato general.

{ "facets": { "facet name": { "facetAttributes": { "attribute name": Attribute JSON Subsection } } } }

Un documento de esquema contiene una asignación de nombres de faceta para facetas. Cada faceta, a su vez, contiene una asignación que contiene atributos. Todos los nombres de facetas dentro de un esquema deben ser únicos. Todos los nombres de atributo en una faceta deben ser únicos.

Subsección JSON de atributo

Las facetas contienen atributos. Cada atributo define el tipo de valor que se puede almacenar en un atributo. El siguiente formato JSON describe un atributo.

{ "attributeDefinition": Attribute Definition Subsection, "attributeReference": Attribute Reference Subsection, "requiredBehavior": "REQUIRED_ALWAYS" or "NOT_REQUIRED" }

Debe proporcionar una definición de atributo o una referencia de atributo. Consulte las subsecciones relacionadas para obtener más información sobre cada una de ellas.

El campo de comportamiento obligatorio indica si este atributo es obligatorio o no. Debe proporcionar este campo. Los valores posibles son los siguientes:

  • REQUIRED_ALWAYS: este atributo se debe proporcionar cuando se crea el objeto o cuando se añade una faceta al objeto. No puede eliminar este atributo.

  • NOT_REQUIRED: este atributo puede estar o no presente.

Subsección de definición de atributos

Un atributo define el tipo y las reglas asociadas a un valor de atributo. El siguiente diseño JSON describe el formato.

{ "attributeType": One of "STRING", "NUMBER", "BINARY", "BOOLEAN" or "DATETIME", "defaultValue": Default Value Subsection, "isImmutable": true or false, "attributeRules": "Attribute Rules Subsection" }

Subsección Valor predeterminado

Especifique exactamente uno de los siguientes valores predeterminados. Los valores de tipo largo y booleanos se deben suministrar fuera de las comillas (como sus tipos de Javascript respectivos en lugar de cadenas). Los valores binarios se proporcionan mediante una cadena de cifrado Base64 URL-segura (como se describe en RFC 4648). Los valores de fecha y hora se proporcionan en el número de milisegundos desde la fecha de inicio (00:00:00 UTC el 1 de enero de 1970).

{ "stringValue": "a string value", "longValue": an integer value, "booleanValue": true or false, "binaryValue": a URL-safe Base64 encoded string, "datetimeValue": an integer value representing milliseconds since epoch }

Subsección Reglas de atributo

Las reglas de atributo definen limitaciones sobre los valores de atributo. Puede definir varias reglas para cada atributo. Las reglas de atributo contienen un tipo de regla y un conjunto de parámetros para la regla. Puede encontrar más información en la sección Reglas de atributos.

{ "rule name": { "parameters": { "rule parameter key 1": "value", "rule parameter key 2": "value" }, "ruleType": "rule type value" } }

Subsección Referencia de atributo

Las referencias de atributo son una característica avanzada. Permiten que varias facetas compartan una definición de atributo y un valor guardado. Consulte la sección Referencias de atributo para obtener más información. Puede definir una referencia de atributo en el esquema JSON con la siguiente plantilla.

{ "targetSchemaArn": "schema ARN" "targetFacetName": "facet name" "targetAttributeName": "attribute name" }

Ejemplos de documentos de esquemas

A continuación, se indican ejemplos de documentos de esquema que muestran el formato JSON válido.

nota

Todos los valores expresados en la cadena allowedValues deben estar separados por comas y sin espacios. Por ejemplo, "SENSITIVE,CONFIDENTIAL,PUBLIC".

Documento de esquema básico

{ "facets": { "Employee": { "facetAttributes": { "Name": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": false, "attributeRules": { "NameLengthRule": { "parameters": { "min": "3", "max": "100" }, "ruleType": "STRING_LENGTH" } } }, "requiredBehavior": "REQUIRED_ALWAYS" }, "EmailAddress": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": true, "attributeRules": { "EmailAddressLengthRule": { "parameters": { "min": "3", "max": "100" }, "ruleType": "STRING_LENGTH" } } }, "requiredBehavior": "REQUIRED_ALWAYS" }, "Status": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": false, "attributeRules": { "rule1": { "parameters": { "allowedValues": "ACTIVE,INACTIVE,TERMINATED" }, "ruleType": "STRING_FROM_SET" } } }, "requiredBehavior": "REQUIRED_ALWAYS" } }, "objectType": "LEAF_NODE" }, "DataAccessPolicy": { "facetAttributes": { "AccessLevel": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": true, "attributeRules": { "rule1": { "parameters": { "allowedValues": "SENSITIVE,CONFIDENTIAL,PUBLIC" }, "ruleType": "STRING_FROM_SET" } } }, "requiredBehavior": "REQUIRED_ALWAYS" } }, "objectType": "POLICY" }, "Group": { "facetAttributes": { "Name": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": true }, "requiredBehavior": "REQUIRED_ALWAYS" } }, "objectType": "NODE" } } }

Documento de esquema de enlaces con tipo

{ "sourceSchemaArn": "", "facets": { "employee_facet": { "facetAttributes": { "employee_login": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": true, "attributeRules": {} }, "requiredBehavior": "REQUIRED_ALWAYS" }, "employee_id": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": true, "attributeRules": {} }, "requiredBehavior": "REQUIRED_ALWAYS" }, "employee_name": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": true, "attributeRules": {} }, "requiredBehavior": "REQUIRED_ALWAYS" }, "employee_role": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": true, "attributeRules": {} }, "requiredBehavior": "REQUIRED_ALWAYS" } }, "objectType": "LEAF_NODE" }, "device_facet": { "facetAttributes": { "device_id": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": true, "attributeRules": {} }, "requiredBehavior": "REQUIRED_ALWAYS" }, "device_type": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": true, "attributeRules": {} }, "requiredBehavior": "REQUIRED_ALWAYS" } }, "objectType": "NODE" }, "region_facet": { "facetAttributes": {}, "objectType": "NODE" }, "group_facet": { "facetAttributes": { "group_type": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": true, "attributeRules": {} }, "requiredBehavior": "REQUIRED_ALWAYS" } }, "objectType": "NODE" }, "office_facet": { "facetAttributes": { "office_id": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": true, "attributeRules": {} }, "requiredBehavior": "REQUIRED_ALWAYS" }, "office_type": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": true, "attributeRules": {} }, "requiredBehavior": "REQUIRED_ALWAYS" }, "office_location": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": true, "attributeRules": {} }, "requiredBehavior": "REQUIRED_ALWAYS" } }, "objectType": "NODE" } }, "typedLinkFacets": { "device_association": { "facetAttributes": { "device_type": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": false, "attributeRules": {} }, "requiredBehavior": "REQUIRED_ALWAYS" }, "device_label": { "attributeDefinition": { "attributeType": "STRING", "isImmutable": false, "attributeRules": {} }, "requiredBehavior": "REQUIRED_ALWAYS" } }, "identityAttributeOrder": [ "device_label", "device_type" ] } } }