Skip to content

SchemaVersion

The SchemaVersion resource allows you to manage AWS Glue SchemaVersions for your data catalog. This resource provides capabilities to define and update the schema for your datasets.

Minimal Example

Create a basic SchemaVersion with required properties and an optional adoption flag.

ts
import AWS from "alchemy/aws/control";

const schemaVersion = await AWS.Glue.SchemaVersion("basicSchemaVersion", {
  SchemaDefinition: JSON.stringify({
    type: "record",
    name: "User",
    fields: [
      { name: "id", type: "int" },
      { name: "name", type: "string" },
      { name: "email", type: "string" }
    ]
  }),
  Schema: {
    Name: "UserSchema",
    Version: 1
  },
  adopt: true // Allows for adoption of an existing schema resource
});

Advanced Configuration

Define a SchemaVersion with a more complex schema definition.

ts
const advancedSchemaVersion = await AWS.Glue.SchemaVersion("advancedSchemaVersion", {
  SchemaDefinition: JSON.stringify({
    type: "record",
    name: "Order",
    fields: [
      { name: "orderId", type: "string" },
      { name: "userId", type: "int" },
      { name: "items", type: {
        type: "array",
        items: {
          type: "record",
          name: "Item",
          fields: [
            { name: "productId", type: "string" },
            { name: "quantity", type: "int" },
            { name: "price", type: "float" }
          ]
        }
      }},
      { name: "orderDate", type: "string" }
    ]
  }),
  Schema: {
    Name: "OrderSchema",
    Version: 2
  }
});

Version Management

Create a new SchemaVersion to update an existing schema.

ts
const updatedSchemaVersion = await AWS.Glue.SchemaVersion("updatedSchemaVersion", {
  SchemaDefinition: JSON.stringify({
    type: "record",
    name: "Order",
    fields: [
      { name: "orderId", type: "string" },
      { name: "userId", type: "int" },
      { name: "items", type: {
        type: "array",
        items: {
          type: "record",
          name: "Item",
          fields: [
            { name: "productId", type: "string" },
            { name: "quantity", type: "int" },
            { name: "price", type: "float" }
          ]
        }
      }},
      { name: "orderDate", type: "string" },
      { name: "status", type: "string" } // New field added in this version
    ]
  }),
  Schema: {
    Name: "OrderSchema",
    Version: 3
  }
});