本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
架构注册表入门
以下部分概述和演示了如何设置和使用架构注册表。有关架构注册表概念和组件的信息,请参阅Amazon Glue 架构注册表。
主题
安装 SerDe 库
注意
先决条件:完成以下步骤之前,您需要先运行 Amazon Managed Streaming for Apache Kafka(Amazon MSK)或 Apache Kafka 集群。您的创建器和使用器需要在 Java 8 或更高版本上运行。
Serde 库提供用于序列化和反序列化数据的框架。
您将为生成数据的应用程序(统称为“序列化程序”)安装开源序列化程序。序列化程序处理序列化、压缩以及与架构注册表的交互。序列化程序自动从正在写入架构注册表兼容目标(如 Amazon MSK)的记录中提取架构。同样,您将在使用数据的应用程序上安装开源反序列化程序。
在创建器和使用器上安装库:
在创建器和使用器的 pom.xml 文件中,通过下面的代码添加此依赖关系:
<dependency> <groupId>software.amazon.glue</groupId> <artifactId>schema-registry-serde</artifactId> <version>1.1.5</version> </dependency>
或者,您可以克隆 Amazon Glue 架构注册表
。 使用这些必填属性设置您的创建器:
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”下创建,则可以省略注册表名称。
(可选)设置这些可选的创建器属性。有关详细属性说明,请参阅自述文件
。 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
。有关兼容性模式的更多信息,请参阅架构版本控制和兼容性。
使用这些必填属性设置您的使用器:
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
(可选)设置这些可选的使用器属性。有关详细属性说明,请参阅自述文件
。 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:create_registry) API。将 RegistryName
指定为要创建的注册表的名称,其最大长度为 255 个字符,且只能包含字母、数字、连字符、下划线、美元符号或哈希标记。
将 Description
指定为字符串,其长度不超过 2048 个字节,与 URI 地址多行字符串模式匹配。
(可选)为注册表指定一个或多个 Tags
,作为键值对的映射数组。
aws glue create-registry --registry-name registryName1 --description description
您的注册表创建后,会被分配一个 Amazon Resource Name(ARN),您可以在API 响应的 RegistryArn
中查看。现在,您已创建注册表,请为该注册表创建一个或多个架构。
Amazon Glue 控制台
在 Amazon Glue 控制台中添加新注册表:
登录 Amazon Web Services Management Console,然后打开 Amazon Glue 控制台,网址为:https://console.aws.amazon.com/glue/
。 在导航窗格中的 Data catalog (数据目录) 下面,选择 Schema registries (架构注册表)。
选择 Add registry (添加注册表)。
为注册表输入 Registry name (注册表名称),包含字母、数字、连字符或下划线。此名称不能更改。
为注册表输入 Description (说明)(可选)。
或者,将一个或多个标签应用到您的注册表。选择 Add new tag (添加新标签),指定 Tag key (标签键) 和 Tag value (标签值)(可选)。
选择 Add registry (添加注册表)。
![注册表创建示例。](images/schema_reg_create_registry_blurred.png)
创建注册表后,系统会为其分配一个 Amazon Resource Name(ARN),您可以从 Schema registries (架构注册表) 列表中选择注册表进行查看。现在,您已创建注册表,请为该注册表创建一个或多个架构。
处理 JSON 的特定记录(JAVO POJO)
您可以使用普通旧 Java 对象(POJO)并将该对象作为记录传递。这类似于 AVRO 中特定记录的概念。mbknor-jackson-jsonschema
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:create_schema) API。
指定 RegistryId
结构,指示架构的注册表。或者,忽略 RegistryId
,使用默认注册表。
指定 SchemaName
(包含字母、数字、连字符或下划线)和 DataFormat
为 AVRO
或者 JSON
。DataFormat
一旦在架构上设置,便不可更改。
指定 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 控制台添加新架构
-
登录 Amazon 管理控制台,然后通过以下网址打开 Amazon Glue 控制台:https://console.aws.amazon.com/glue/
。 在导航窗格的 Data catalog (数据目录) 下,选择 Schemas (架构)。
选择 Add schema (添加架构)。
输入 Schema name (架构名称),包含字母、数字、连字符、下划线、美元符号或哈希标记。此名称不能更改。
选择 Registry (注册表),这是架构在下拉菜单中的存储位置。父注册表在创建后无法更改。
将 Data format (数据格式) 保留为 Apache Avro 或者 JSON。此格式适用于此架构的所有版本。
选择 Compatibility mode (兼容性模式)。
向后兼容(推荐)– 接收者可以读取当前版本和先前版本。
向后兼容全部 – 接收者可以读取当前版本和所有先前版本。
向前兼容 – 发件人可以写入当前版本和先前版本。
向前兼容全部 – 发件人可以写入当前版本和所有先前版本。
完整兼容 – 向后兼容和向前兼容的组合。
完整兼容全部 – 向后兼容全部和向前兼容全部的组合。
无 – 不执行兼容性检查。
已禁用 – 防止对此架构进行任何版本控制。
为注册表输入可选 Description (说明),最多 250 个字符。
(可选)将一个或多个标签应用于架构。选择 Add new tag (添加新标签),指定 Tag key (标签键) 和 Tag value (标签值)(可选)。
在 First schema version (第一个架构版本) 框中,输入或粘贴您的初始架构。
有关 Avro 格式的信息,请参阅使用 Avro 数据格式
有关 JSON 格式的信息,请参阅使用 JSON 数据格式
(可选)选择 Add metadata (添加元数据) 添加版本元数据,对架构版本进行注释或分类。
选择 Create schema and version (创建架构和版本)。
![架构创建示例。](images/schema_reg_create_schema2_blurred.png)
该架构在 Schemas (架构) 下面的列表中创建并显示。
使用 Avro 数据格式
Avro 提供数据序列化和数据交换服务。Avro 以 JSON 格式存储数据定义,使其易于阅读和解释。数据本身以二进制格式存储。
有关定义 Apache Avro 架构的信息,请参阅 Apache Avro 规范
使用 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 控制台更新注册表
-
登录 Amazon Web Services Management Console,然后打开 Amazon Glue 控制台,网址为:https://console.aws.amazon.com/glue/
。 在导航窗格中的 Data catalog (数据目录) 下面,选择 Schema registries (架构注册表)。
从注册表列表中选择一个注册表,方法是选中该注册表的复选框。
在 Action (操作) 菜单中,选择 Edit registry (编辑注册表)。
更新架构
您可以更新架构的说明或兼容性设置。
要更新现有架构,请使用 UpdateSchema 操作(Python:update_schema) API。
指定 SchemaId
结构,指示要更新的架构。必须提供 VersionNumber
或 Compatibility
中的一个。
代码示例 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"
-
登录 Amazon Web Services Management Console,然后打开 Amazon Glue 控制台,网址为:https://console.aws.amazon.com/glue/
。 在导航窗格的 Data catalog (数据目录) 下,选择 Schemas (架构)。
从方案列表中选择一个方案,方法是选择该方案对应的框。
从列表中选择一个或多个方案,方法是选择相关方案对应的框。
在 Action (操作) 菜单中,选择 Register new version (注册新版本)。
在 New version (新版本) 框中,输入或粘贴新架构。
选择 Compare with previous version (与先前版本比较),查看与先前架构版本的差异。
(可选)选择 Add metadata (添加元数据) 添加版本元数据,对架构版本进行注释或分类。输入 Key (密钥) 和可选 Value (值)。
选择 Register version (注册版本)。
![添加架构版本。](images/schema_reg_add_schema_version_blurred.png)
架构版本在版本列表中显示。如果版本更改了兼容性模式,则该版本将标记为检查点。
架构版本比较示例
当您选择 Compare with previous version (与先前版本比较) 时,您将看到先前版本和新版本一起显示。更改的信息将如下突出显示:
黄色:表示已更改的信息。
绿色:表示在最新版本中添加的内容。
红色:表示在最新版本中删除的内容。
您还可以与早期版本进行比较。
![架构版本比较示例。](images/schema_reg_version_comparison.png)
删除架构或注册表
删除架构、架构版本或注册表是永久性操作,无法撤消。
删除架构
如果架构不再在注册表中使用,您可能希望删除该架构,请使用 Amazon Web Services Management Console 或 DeleteSchema 操作(Python:delete_schema) API。
删除一个或多个架构是永久性操作,无法撤消。确保不再需要该架构。
要从注册表中删除架构,请调用 DeleteSchema 操作(Python:delete_schema) 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 控制台删除架构:
-
登录 Amazon Web Services Management Console,然后打开 Amazon Glue 控制台,网址为:https://console.aws.amazon.com/glue/
。 在导航窗格中的 Data catalog (数据目录) 下面,选择 Schema registries (架构注册表)。
从注册表列表中选择包含您的架构的注册表。
从列表中选择一个或多个方案,方法是选择相关方案对应的框。
在 Action (操作) 菜单中,选择 Delete schema (删除架构)。
在字段中输入文本
Delete
以确认删除。选择 删除。
您指定的架构将从注册表中删除。
删除架构版本
随着架构在注册表中累积,您可能需要使用 Amazon Web Services Management Console 或 DeleteSchemaVersions 操作(Python:delete_table_version) API 删除不需要的架构。删除一个或多个架构版本是永久性操作,无法撤消。确保不再需要该架构版本。
删除架构版本时,请注意以下约束:
您无法删除检查点版本。
连续版本的范围不能超过 25。
最新架构版本不得处于待处理状态。
指定 SchemaId
结构以标识架构,并指定 Versions
为要删除的版本范围。有关指定版本或版本范围的更多信息,请参阅DeleteRegistry 操作(Python:delete_registry)。您指定的架构版本将从注册表中删除。
此调用后调用的 ListSchemaVersions 操作(Python:list_schema _version) 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"
-
登录 Amazon Web Services Management Console,然后打开 Amazon Glue 控制台,网址为:https://console.aws.amazon.com/glue/
。 在导航窗格中的 Data catalog (数据目录) 下面,选择 Schema registries (架构注册表)。
从注册表列表中选择包含您的架构的注册表。
从列表中选择一个或多个方案,方法是选择相关方案对应的框。
在 Action (操作) 菜单中,选择 Delete schema (删除架构)。
在字段中输入文本
Delete
以确认删除。选择 删除。
您指定的架构版本将从注册表中删除。
删除注册表
当注册表包含的架构不再在该注册表下进行组织时,您可能需要删除该注册表。您需要将这些架构重新分配给另一个注册表。
删除一个或多个注册表是永久性操作,无法撤消。确保不再需要该注册表。
默认注册表可以使用 Amazon CLI 删除。
Amazon Glue API
要删除整个注册表(包括架构及其所有版本),请调用 DeleteRegistry 操作(Python:delete_registry) 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 控制台删除注册表:
-
登录 Amazon Web Services Management Console,然后打开 Amazon Glue 控制台,网址为:https://console.aws.amazon.com/glue/
。 在导航窗格中的 Data catalog (数据目录) 下面,选择 Schema registries (架构注册表)。
从列表中选择一个注册表,方法是选中相应的框。
在 Action (操作) 菜单中,选择 Delete registry (删除注册表)。
在字段中输入文本
Delete
以确认删除。选择 删除。
您选择的注册表将从 Amazon Glue 中删除。
用于序列化程序的 IAM 示例
注意
Amazon 托管策略将授予针对常用使用案例的必要权限。有关使用托管策略管理模式注册表的信息,请参阅Amazon 的托管(预定义)策略 Amazon Glue。
对于序列化程序,您应该创建类似如下的最低策略,以便您能够找到针对指定架构定义的 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 终端节点一起使用。
访问 Amazon CloudWatch 指标
Amazon CloudWatch 指标可作为 CloudWatch 免费套餐的一部分提供。您可以在 CloudWatch 控制台中查看这些指标。API 级指标包括 CreateSchema(成功和延迟)GetSchemaByDefinition(成功和延迟)、GetSchemaVersion(成功和延迟)、RegisterSchemaVersion(成功和延迟)、PutSchemaVersionMetadata(成功和延迟)。资源级指标包括 Registry.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"