架构注册表入门 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

架构注册表入门

以下部分概述和演示了如何设置和使用架构注册表。有关架构注册表概念和组件的信息,请参阅Amazon Glue 架构注册表

安装 SerDe 库

注意

先决条件:完成以下步骤之前,您需要先运行 Amazon Managed Streaming for Apache Kafka(Amazon MSK)或 Apache Kafka 集群。您的创建器和使用器需要在 Java 8 或更高版本上运行。

这些 SerDe 库提供了一个用于序列化和反序列化数据的框架。

您将为生成数据的应用程序(统称为“序列化程序”)安装开源序列化程序。序列化程序处理序列化、压缩以及与架构注册表的交互。序列化程序自动从正在写入架构注册表兼容目标(如 Amazon MSK)的记录中提取架构。同样,您将在使用数据的应用程序上安装开源反序列化程序。

在创建器和使用器上安装库:

  1. 在创建器和使用器的 pom.xml 文件中,通过下面的代码添加此依赖关系:

    <dependency> <groupId>software.amazon.glue</groupId> <artifactId>schema-registry-serde</artifactId> <version>1.1.5</version> </dependency>

    或者,您可以克隆 Amazon Glue 架构注册表

  2. 使用这些必填属性设置您的创建器:

    props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); // Can replace StringSerializer.class.getName()) with any other key serializer that you may use props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, GlueSchemaRegistryKafkaSerializer.class.getName()); props.put(AWSSchemaRegistryConstants.AWS_REGION, "us-east-2"); properties.put(AWSSchemaRegistryConstants.DATA_FORMAT, "JSON"); // OR "AVRO"

    如果没有现有架构,则需要打开自动注册(下一步)。如果您确实有要应用的架构,则将“my-schema”替换为您的架构名称。此外,如果架构自动注册处于关闭状态,则必须提供“registry-name”。如果架构在“default-registry”下创建,则可以省略注册表名称。

  3. (可选)设置这些可选的创建器属性。有关详细的属性说明,请参阅 ReadMe 文件

    props.put(AWSSchemaRegistryConstants.SCHEMA_AUTO_REGISTRATION_SETTING, "true"); // If not passed, uses "false" props.put(AWSSchemaRegistryConstants.SCHEMA_NAME, "my-schema"); // If not passed, uses transport name (topic name in case of Kafka, or stream name in case of Kinesis Data Streams) props.put(AWSSchemaRegistryConstants.REGISTRY_NAME, "my-registry"); // If not passed, uses "default-registry" props.put(AWSSchemaRegistryConstants.CACHE_TIME_TO_LIVE_MILLIS, "86400000"); // If not passed, uses 86400000 (24 Hours) props.put(AWSSchemaRegistryConstants.CACHE_SIZE, "10"); // default value is 200 props.put(AWSSchemaRegistryConstants.COMPATIBILITY_SETTING, Compatibility.FULL); // Pass a compatibility mode. If not passed, uses Compatibility.BACKWARD props.put(AWSSchemaRegistryConstants.DESCRIPTION, "This registry is used for several purposes."); // If not passed, constructs a description props.put(AWSSchemaRegistryConstants.COMPRESSION_TYPE, AWSSchemaRegistryConstants.COMPRESSION.ZLIB); // If not passed, records are sent uncompressed

    自动注册会在默认注册表(“default-registry”)下注册架构版本。如果上一步未指定 SCHEMA_NAME,则主题名称被推断为 SCHEMA_NAME

    有关兼容性模式的更多信息,请参阅架构版本控制和兼容性

  4. 使用这些必填属性设置您的使用器:

    props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, GlueSchemaRegistryKafkaDeserializer.class.getName()); props.put(AWSSchemaRegistryConstants.AWS_REGION, "us-east-2"); // Pass an Amazon Web Services 区域 props.put(AWSSchemaRegistryConstants.AVRO_RECORD_TYPE, AvroRecordType.GENERIC_RECORD.getName()); // Only required for AVRO data format
  5. (可选)设置这些可选的使用器属性。有关详细的属性说明,请参阅 ReadMe 文件

    properties.put(AWSSchemaRegistryConstants.CACHE_TIME_TO_LIVE_MILLIS, "86400000"); // If not passed, uses 86400000 props.put(AWSSchemaRegistryConstants.CACHE_SIZE, "10"); // default value is 200 props.put(AWSSchemaRegistryConstants.SECONDARY_DESERIALIZER, "com.amazonaws.services.schemaregistry.deserializers.external.ThirdPartyDeserializer"); // For migration fall back scenario

将 Amazon CLI 用于 Amazon Glue 架构注册表 API

要将 Amazon CLI 用于 Amazon Glue 架构注册表 API,请确保将 Amazon CLI 更新到最新版本。

创建注册表

您可以使用默认注册表,也可以使用 Amazon Glue API 或 Amazon Glue 控制台创建任意数量的新注册表。

Amazon Glue API

您可以按照以下步骤使用 Amazon Glue API 执行此任务。

要添加新注册表,请使用 CreateRegistry 操作(Python:创建注册表) API。将 RegistryName 指定为要创建的注册表的名称,其最大长度为 255 个字符,且只能包含字母、数字、连字符、下划线、美元符号或哈希标记。

将 a 指定Description为长度不超过 2048 字节的字符串,与 URI 地址多行字符串模式相匹配。

(可选)为注册表指定一个或多个 Tags,作为键值对的映射数组。

aws glue create-registry --registry-name registryName1 --description description

您的注册表创建后,会被分配一个 Amazon Resource Name(ARN),您可以在API 响应的 RegistryArn 中查看。现在,您已创建注册表,请为该注册表创建一个或多个架构。

Amazon Glue 控制台

在 Amazon Glue 控制台中添加新注册表:

  1. 登录 Amazon Web Services Management Console,然后打开 Amazon Glue 控制台,网址为:https://console.aws.amazon.com/glue/

  2. 在导航窗格中的 Data catalog (数据目录) 下面,选择 Schema registries (架构注册表)

  3. 选择 Add registry (添加注册表)

  4. 为注册表输入 Registry name (注册表名称),包含字母、数字、连字符或下划线。此名称不能更改。

  5. 为注册表输入 Description (说明)(可选)。

  6. 或者,将一个或多个标签应用到您的注册表。选择 Add new tag (添加新标签),指定 Tag key (标签键)Tag value (标签值)(可选)。

  7. 选择 Add registry (添加注册表)


			注册表创建示例。

创建注册表后,系统会为其分配一个 Amazon Resource Name(ARN),您可以从 Schema registries (架构注册表) 列表中选择注册表进行查看。现在,您已创建注册表,请为该注册表创建一个或多个架构。

处理 JSON 的特定记录(JAVO POJO)

您可以使用普通旧 Java 对象(POJO)并将该对象作为记录传递。这类似于 AVRO 中特定记录的概念。mbknor-jackson-jsonschema可以为传递的 POJO 生成一个 JSON 架构。此库还可以在 JSON 架构中注入其他信息。

Amazon Glue 架构注册表库使用架构中注入的“className”字段提供完全分类的类名称。反序列化程序使用“className”字段,反序列化为该类的对象。

Example class : @JsonSchemaDescription("This is a car") @JsonSchemaTitle("Simple Car Schema") @Builder @AllArgsConstructor @EqualsAndHashCode // Fully qualified class name to be added to an additionally injected property // called className for deserializer to determine which class to deserialize // the bytes into @JsonSchemaInject( strings = {@JsonSchemaString(path = "className", value = "com.amazonaws.services.schemaregistry.integrationtests.generators.Car")} ) // List of annotations to help infer JSON Schema are defined by https://github.com/mbknor/mbknor-jackson-jsonSchema public class Car { @JsonProperty(required = true) private String make; @JsonProperty(required = true) private String model; @JsonSchemaDefault("true") @JsonProperty public boolean used; @JsonSchemaInject(ints = {@JsonSchemaInt(path = "multipleOf", value = 1000)}) @Max(200000) @JsonProperty private int miles; @Min(2000) @JsonProperty private int year; @JsonProperty private Date purchaseDate; @JsonProperty @JsonFormat(shape = JsonFormat.Shape.NUMBER) private Date listedDate; @JsonProperty private String[] owners; @JsonProperty private Collection<Float> serviceChecks; // Empty constructor is required by Jackson to deserialize bytes // into an Object of this class public Car() {} }

创建架构

您可以使用 Amazon Glue API 或 Amazon Glue 控制台创建架构。

Amazon Glue API

您可以按照以下步骤使用 Amazon Glue API 执行此任务。

要添加新架构,请使用 CreateSchema 操作(Python:创建架构) API。

指定 RegistryId 结构,指示架构的注册表。或者,忽略 RegistryId,使用默认注册表。

指定 SchemaName(包含字母、数字、连字符或下划线)和 DataFormatAVRO 或者 JSONDataFormat 一旦在架构上设置,便不可更改。

指定 Compatibility 模式:

  • 向后兼容(推荐)– 使用者可以读取当前版本和先前版本。

  • 向后兼容全部 – 使用者可以读取当前版本和所有先前版本。

  • 向前兼容 – 使用者可以读取当前版本和后续版本。

  • 向前兼容全部 – 使用者可以读取当前版本和所有后续版本。

  • 完整兼容 – 向后兼容和向前兼容的组合。

  • 完整兼容全部 – 向后兼容全部和向前兼容全部的组合。

  • – 不执行兼容性检查。

  • 已禁用 – 防止对此架构进行任何版本控制。

(可选)为您的架构指定 Tags

指定 SchemaDefinition,以 Avro、JSON 或 Protobuf 数据格式定义架构。请参阅示例。

对于 Avro 数据格式:

aws glue create-schema --registry-id RegistryName="registryName1" --schema-name testschema --compatibility NONE --data-format AVRO --schema-definition "{\"type\": \"record\", \"name\": \"r1\", \"fields\": [ {\"name\": \"f1\", \"type\": \"int\"}, {\"name\": \"f2\", \"type\": \"string\"} ]}"
aws glue create-schema --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName1" --schema-name testschema --compatibility NONE --data-format AVRO --schema-definition "{\"type\": \"record\", \"name\": \"r1\", \"fields\": [ {\"name\": \"f1\", \"type\": \"int\"}, {\"name\": \"f2\", \"type\": \"string\"} ]}"

对于 JSON 数据格式:

aws glue create-schema --registry-id RegistryName="registryName" --schema-name testSchemaJson --compatibility NONE --data-format JSON --schema-definition "{\"$schema\": \"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"properties\":{\"f1\":{\"type\":\"string\"}}}"
aws glue create-schema --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName" --schema-name testSchemaJson --compatibility NONE --data-format JSON --schema-definition "{\"$schema\": \"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"properties\":{\"f1\":{\"type\":\"string\"}}}"

对于 Protobuf 数据格式:

aws glue create-schema --registry-id RegistryName="registryName" --schema-name testSchemaProtobuf --compatibility NONE --data-format PROTOBUF --schema-definition "syntax = \"proto2\";package org.test;message Basic { optional int32 basic = 1;}"
aws glue create-schema --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName" --schema-name testSchemaProtobuf --compatibility NONE --data-format PROTOBUF --schema-definition "syntax = \"proto2\";package org.test;message Basic { optional int32 basic = 1;}"
Amazon Glue 控制台

使用 Amazon Glue 控制台添加新架构

  1. 登录 Amazon 管理控制台,然后通过以下网址打开 Amazon Glue 控制台:https://console.aws.amazon.com/glue/

  2. 在导航窗格的 Data catalog (数据目录) 下,选择 Schemas (架构)

  3. 选择 Add schema (添加架构)

  4. 输入 Schema name (架构名称),包含字母、数字、连字符、下划线、美元符号或哈希标记。此名称不能更改。

  5. 选择 Registry (注册表),这是架构在下拉菜单中的存储位置。父注册表在创建后无法更改。

  6. Data format (数据格式) 保留为 Apache Avro 或者 JSON。此格式适用于此架构的所有版本。

  7. 选择 Compatibility mode (兼容性模式)

    • 向后兼容(推荐)– 接收者可以读取当前版本和先前版本。

    • 向后兼容全部 – 接收者可以读取当前版本和所有先前版本。

    • 向前兼容 – 发件人可以写入当前版本和先前版本。

    • 向前兼容全部 – 发件人可以写入当前版本和所有先前版本。

    • 完整兼容 – 向后兼容和向前兼容的组合。

    • 完整兼容全部 – 向后兼容全部和向前兼容全部的组合。

    • – 不执行兼容性检查。

    • 已禁用 – 防止对此架构进行任何版本控制。

  8. 为注册表输入可选 Description (说明),最多 250 个字符。

    
			架构创建示例。
  9. (可选)将一个或多个标签应用于架构。选择 Add new tag (添加新标签),指定 Tag key (标签键)Tag value (标签值)(可选)。

  10. First schema version (第一个架构版本) 框中,输入或粘贴您的初始架构。

    有关 Avro 格式的信息,请参阅使用 Avro 数据格式

    有关 JSON 格式的信息,请参阅使用 JSON 数据格式

  11. (可选)选择 Add metadata (添加元数据) 添加版本元数据,对架构版本进行注释或分类。

  12. 选择 Create schema and version (创建架构和版本)


			架构创建示例。

该架构在 Schemas (架构) 下面的列表中创建并显示。

使用 Avro 数据格式

Avro 提供数据序列化和数据交换服务。Avro 以 JSON 格式存储数据定义,使其易于阅读和解释。数据本身以二进制格式存储。

有关定义 Apache Avro 架构的信息,请参阅 Apache Avro 规范

使用 JSON 数据格式

数据可以使用 JSON 格式进行序列化。JSON 架构格式定义了 JSON 架构格式的标准。

更新架构或注册表

创建后,您可以编辑架构、架构版本或注册表。

更新注册表

您可以使用 Amazon Glue API 或 Amazon Glue 控制台。无法编辑现有注册表的名称。您可以编辑注册表的说明。

Amazon Glue API

要更新现有注册表,请使用 UpdateRegistry 操作(Python:update_registry) API。

指定 RegistryId 结构,指示要更新的注册表。传递 Description,更改注册表的说明。

aws glue update-registry --description updatedDescription --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName1"
Amazon Glue 控制台

使用 Amazon Glue 控制台更新注册表

  1. 登录 Amazon Web Services Management Console,然后打开 Amazon Glue 控制台,网址为:https://console.aws.amazon.com/glue/

  2. 在导航窗格中的 Data catalog (数据目录) 下面,选择 Schema registries (架构注册表)

  3. 从注册表列表中选择一个注册表,方法是选中该注册表的复选框。

  4. Action (操作) 菜单中,选择 Edit registry (编辑注册表)

更新架构

您可以更新架构的说明或兼容性设置。

要更新现有架构,请使用 UpdateSchema 操作(Python:更新架构) API。

指定 SchemaId 结构,指示要更新的架构。必须提供 VersionNumberCompatibility 中的一个。

代码示例 11:

aws glue update-schema --description testDescription --schema-id SchemaName="testSchema1",RegistryName="registryName1" --schema-version-number LatestVersion=true --compatibility NONE
aws glue update-schema --description testDescription --schema-id SchemaArn="arn:aws:glue:us-east-2:901234567890:schema/registryName1/testSchema1" --schema-version-number LatestVersion=true --compatibility NONE

添加架构版本

添加架构版本时,您需要比较版本,确保接受新架构。

要为现有架构添加新版本,请使用 RegisterSchemaVersion 操作(Python:register_schema_version) API。

指定 SchemaId 结构,指示要为其添加版本的架构,以及指定 SchemaDefinition 以定义架构。

代码示例 12:

aws glue register-schema-version --schema-definition "{\"type\": \"record\", \"name\": \"r1\", \"fields\": [ {\"name\": \"f1\", \"type\": \"int\"}, {\"name\": \"f2\", \"type\": \"string\"} ]}" --schema-id SchemaArn="arn:aws:glue:us-east-1:901234567890:schema/registryName/testschema"
aws glue register-schema-version --schema-definition "{\"type\": \"record\", \"name\": \"r1\", \"fields\": [ {\"name\": \"f1\", \"type\": \"int\"}, {\"name\": \"f2\", \"type\": \"string\"} ]}" --schema-id SchemaName="testschema",RegistryName="testregistry"
  1. 登录 Amazon Web Services Management Console,然后打开 Amazon Glue 控制台,网址为:https://console.aws.amazon.com/glue/

  2. 在导航窗格的 Data catalog (数据目录) 下,选择 Schemas (架构)

  3. 从方案列表中选择一个方案,方法是选择该方案对应的框。

  4. 从列表中选择一个或多个方案,方法是选择相关方案对应的框。

  5. Action (操作) 菜单中,选择 Register new version (注册新版本)

  6. New version (新版本) 框中,输入或粘贴新架构。

  7. 选择 Compare with previous version (与先前版本比较),查看与先前架构版本的差异。

  8. (可选)选择 Add metadata (添加元数据) 添加版本元数据,对架构版本进行注释或分类。输入 Key (密钥) 和可选 Value (值)

  9. 选择 Register version (注册版本)


			添加架构版本。

架构版本在版本列表中显示。如果版本更改了兼容性模式,则该版本将标记为检查点。

架构版本比较示例

当您选择 Compare with previous version (与先前版本比较) 时,您将看到先前版本和新版本一起显示。更改的信息将如下突出显示:

  • 黄色:表示已更改的信息。

  • 绿色:表示在最新版本中添加的内容。

  • 红色:表示在最新版本中删除的内容。

您还可以与早期版本进行比较。


			架构版本比较示例。

删除架构或注册表

删除架构、架构版本或注册表是永久性操作,无法撤消。

删除架构

如果架构不再在注册表中使用,您可能希望删除该架构,请使用 Amazon Web Services Management Console 或 DeleteSchema 操作(Python:删除架构) API。

删除一个或多个架构是永久性操作,无法撤消。确保不再需要该架构。

要从注册表中删除架构,请调用 DeleteSchema 操作(Python:删除架构) API,指定 SchemaId 结构以标识架构。

例如:

aws glue delete-schema --schema-id SchemaArn="arn:aws:glue:us-east-2:901234567890:schema/registryName1/schemaname"
aws glue delete-schema --schema-id SchemaName="TestSchema6-deleteschemabyname",RegistryName="default-registry"
Amazon Glue 控制台

从 Amazon Glue 控制台删除架构:

  1. 登录 Amazon Web Services Management Console,然后打开 Amazon Glue 控制台,网址为:https://console.aws.amazon.com/glue/

  2. 在导航窗格中的 Data catalog (数据目录) 下面,选择 Schema registries (架构注册表)

  3. 从注册表列表中选择包含您的架构的注册表。

  4. 从列表中选择一个或多个方案,方法是选择相关方案对应的框。

  5. Action (操作) 菜单中,选择 Delete schema (删除架构)

  6. 在字段中输入文本 Delete 以确认删除。

  7. 选择删除

您指定的架构将从注册表中删除。

删除架构版本

随着架构在注册表中累积,您可能需要使用 Amazon Web Services Management Console 或 DeleteSchemaVersions 操作(Python:删除架构版本) API 删除不需要的架构。删除一个或多个架构版本是永久性操作,无法撤消。确保不再需要该架构版本。

删除架构版本时,请注意以下约束:

  • 您无法删除检查点版本。

  • 连续版本的范围不能超过 25。

  • 最新架构版本不得处于待处理状态。

指定 SchemaId 结构以标识架构,并指定 Versions 为要删除的版本范围。有关指定版本或版本范围的更多信息,请参阅DeleteRegistry 操作(Python:删除注册表)。您指定的架构版本将从注册表中删除。

此调用后调用的 ListSchemaVersions 操作(Python:列表架构版本) API 将列出已删除版本的状态。

例如:

aws glue delete-schema-versions --schema-id SchemaName="TestSchema6",RegistryName="default-registry" --versions "1-1"
aws glue delete-schema-versions --schema-id SchemaArn="arn:aws:glue:us-east-2:901234567890:schema/default-registry/TestSchema6-NON-Existent" --versions "1-1"
  1. 登录 Amazon Web Services Management Console,然后打开 Amazon Glue 控制台,网址为:https://console.aws.amazon.com/glue/

  2. 在导航窗格中的 Data catalog (数据目录) 下面,选择 Schema registries (架构注册表)

  3. 从注册表列表中选择包含您的架构的注册表。

  4. 从列表中选择一个或多个方案,方法是选择相关方案对应的框。

  5. Action (操作) 菜单中,选择 Delete schema (删除架构)

  6. 在字段中输入文本 Delete 以确认删除。

  7. 选择删除

您指定的架构版本将从注册表中删除。

删除注册表

当注册表包含的架构不再在该注册表下进行组织时,您可能需要删除该注册表。您需要将这些架构重新分配给另一个注册表。

删除一个或多个注册表是永久性操作,无法撤消。确保不再需要该注册表。

默认注册表可以使用 Amazon CLI 删除。

Amazon Glue API

要删除整个注册表(包括架构及其所有版本),请调用 DeleteRegistry 操作(Python:删除注册表) API。指定 RegistryId 结构以标识注册表。

例如:

aws glue delete-registry --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName1"
aws glue delete-registry --registry-id RegistryName="TestRegistry-deletebyname"

要获取删除操作的状态,您可以在异步调用后调用 GetRegistry API。

Amazon Glue 控制台

从 Amazon Glue 控制台删除注册表:

  1. 登录 Amazon Web Services Management Console,然后打开 Amazon Glue 控制台,网址为:https://console.aws.amazon.com/glue/

  2. 在导航窗格中的 Data catalog (数据目录) 下面,选择 Schema registries (架构注册表)

  3. 从列表中选择一个注册表,方法是选中相应的框。

  4. Action (操作) 菜单中,选择 Delete registry (删除注册表)

  5. 在字段中输入文本 Delete 以确认删除。

  6. 选择删除

您选择的注册表将从 Amazon Glue 中删除。

用于序列化程序的 IAM 示例

注意

Amazon 托管策略将授予针对常用使用案例的必要权限。有关使用托管策略管理模式注册表的信息,请参阅适用于 Amazon Glue 的 Amazon 托管(预定义)策略

对于序列化程序,您应该创建类似如下的最低策略,以便您能够找到针对指定架构定义的 schemaVersionId。请注意,您应该对注册表具有读取权限,以便读取注册表中的架构。您可以使用 Resource 子句,限制可以读取的注册表。

代码示例 13:

{ "Sid" : "GetSchemaByDefinition", "Effect" : "Allow", "Action" : [ "glue:GetSchemaByDefinition" ], "Resource" : ["arn:aws:glue:us-east-2:012345678:registry/registryname-1", "arn:aws:glue:us-east-2:012345678:schema/registryname-1/schemaname-1", "arn:aws:glue:us-east-2:012345678:schema/registryname-1/schemaname-2" ] }

此外,您还可以允许创建者包括以下额外的方法,以创建新的架构和版本。请注意,您应该能够检查注册表,以便添加/删除/演变其中的架构。您可以使用 Resource 子句,限制可以检查的注册表。

代码示例 14:

{ "Sid" : "RegisterSchemaWithMetadata", "Effect" : "Allow", "Action" : [ "glue:GetSchemaByDefinition", "glue:CreateSchema", "glue:RegisterSchemaVersion", "glue:PutSchemaVersionMetadata", ], "Resource" : ["arn:aws:glue:aws-region:123456789012:registry/registryname-1", "arn:aws:glue:aws-region:123456789012:schema/registryname-1/schemaname-1", "arn:aws:glue:aws-region:123456789012:schema/registryname-1/schemaname-2" ] }

用于反序列化程序的 IAM 示例

对于反序列化程序(使用者端),您应创建类似如下的策略,以允许反序列化程序从架构注册表中获取架构以进行反序列化。请注意,您应该能够检查注册表,以便获取其中的架构。

代码示例 15:

{ "Sid" : "GetSchemaVersion", "Effect" : "Allow", "Action" : [ "glue:GetSchemaVersion" ], "Resource" : ["*"] }

使用 Amazon PrivateLink 的私有连接

您可以使用 Amazon PrivateLink 将您的数据创建者的 VPC 连接到 Amazon Glue,方法是为 Amazon Glue 定义接口 VPC 终端节点。当您使用 VPC 接口端点时,您的 VPC 与 Amazon Glue 之间的通信完全在 Amazon 网络内进行。有关更多信息,请参阅将 Amazon Glue 与接口 VPC 终端节点一起使用

访问亚马逊 CloudWatch 指标

Amazon CloudWatch 指标作为免费套餐 CloudWatch的一部分提供。您可以在 CloudWatch 控制台中访问这些指标。API 级别的指标包括 CreateSchema (成功和延迟)、(成功和延迟) GetSchemaByDefinition、(成功和延迟)、 GetSchemaVersion (成功和延迟)、 RegisterSchemaVersion (成功和延迟)、 PutSchemaVersionMetadata(成功和延迟)。资源级指标包括注册表。 ThrottledByLimit, SchemaVersion。 ThrottledByLimit, SchemaVersion.Size。

架构注册表的示例 Amazon CloudFormation 模板

以下是一个示例模板,用于在 Amazon CloudFormation 中创建架构注册表。要在您的账户中创建此堆栈,请将上面的模板复制到文件 SampleTemplate.yaml,并运行以下命令:

aws cloudformation create-stack --stack-name ABCSchemaRegistryStack --template-body "'cat SampleTemplate.yaml'"

此示例使用 AWS::Glue::Registry 创建注册表,使用 AWS::Glue::Schema 创建架构,使用 AWS::Glue::SchemaVersion 创建架构版本,使用 AWS::Glue::SchemaVersionMetadata 填充架构版本元数据。

Description: "A sample CloudFormation template for creating Schema Registry resources." Resources: ABCRegistry: Type: "AWS::Glue::Registry" Properties: Name: "ABCSchemaRegistry" Description: "ABC Corp. Schema Registry" Tags: - Key: "Project" Value: "Foo" ABCSchema: Type: "AWS::Glue::Schema" Properties: Registry: Arn: !Ref ABCRegistry Name: "TestSchema" Compatibility: "NONE" DataFormat: "AVRO" SchemaDefinition: > {"namespace":"foo.avro","type":"record","name":"user","fields":[{"name":"name","type":"string"},{"name":"favorite_number","type":"int"}]} Tags: - Key: "Project" Value: "Foo" SecondSchemaVersion: Type: "AWS::Glue::SchemaVersion" Properties: Schema: SchemaArn: !Ref ABCSchema SchemaDefinition: > {"namespace":"foo.avro","type":"record","name":"user","fields":[{"name":"status","type":"string", "default":"ON"}, {"name":"name","type":"string"},{"name":"favorite_number","type":"int"}]} FirstSchemaVersionMetadata: Type: "AWS::Glue::SchemaVersionMetadata" Properties: SchemaVersionId: !GetAtt ABCSchema.InitialSchemaVersionId Key: "Application" Value: "Kinesis" SecondSchemaVersionMetadata: Type: "AWS::Glue::SchemaVersionMetadata" Properties: SchemaVersionId: !Ref SecondSchemaVersion Key: "Application" Value: "Kinesis"