Ingesting Data
ancoleman/ai-design-components
Data ingestion patterns for loading data from cloud storage, APIs, files, and streaming sources into databases.
Upgrade an AWS Glue ETL job from Glue version 0.9 or 1.0 to Glue 4.0.
$ npx skills add aws-samples/aws-glue-samples --skill glue-09-10-migration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install aws-samples/aws-glue-samples glue-09-10-migration --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/aws-samples/aws-glue-samples.git skills-src && mkdir -p .claude/skills && cp -r skills-src/utilities/skills/glue-v09-v1-migration .claude/skills/glue-09-10-migration && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "glue-09-10-migration" agent skill from https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/skills/glue-v09-v1-migration into .claude/skills/glue-09-10-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glue-09-10-migration", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/skills/glue-v09-v1-migrationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add aws-samples/aws-glue-samples --skill glue-09-10-migration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install aws-samples/aws-glue-samples glue-09-10-migration --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aws-samples/aws-glue-samples.git skills-src && mkdir -p .agents/skills && cp -r skills-src/utilities/skills/glue-v09-v1-migration .agents/skills/glue-09-10-migration && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "glue-09-10-migration" agent skill from https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/skills/glue-v09-v1-migration into .agents/skills/glue-09-10-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glue-09-10-migration", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add aws-samples/aws-glue-samples --skill glue-09-10-migration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install aws-samples/aws-glue-samples glue-09-10-migration --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aws-samples/aws-glue-samples.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/utilities/skills/glue-v09-v1-migration .cursor/skills/glue-09-10-migration && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "glue-09-10-migration" agent skill from https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/skills/glue-v09-v1-migration into .cursor/skills/glue-09-10-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glue-09-10-migration", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/aws-samples/aws-glue-samples.git --path utilities/skills/glue-v09-v1-migration--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add aws-samples/aws-glue-samples --skill glue-09-10-migration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install aws-samples/aws-glue-samples glue-09-10-migration --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aws-samples/aws-glue-samples.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/utilities/skills/glue-v09-v1-migration .gemini/skills/glue-09-10-migration && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "glue-09-10-migration" agent skill from https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/skills/glue-v09-v1-migration into .gemini/skills/glue-09-10-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glue-09-10-migration", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install aws-samples/aws-glue-samples glue-09-10-migrationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add aws-samples/aws-glue-samples --skill glue-09-10-migration -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/aws-samples/aws-glue-samples.git skills-src && mkdir -p .github/skills && cp -r skills-src/utilities/skills/glue-v09-v1-migration .github/skills/glue-09-10-migration && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "glue-09-10-migration" agent skill from https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/skills/glue-v09-v1-migration into .github/skills/glue-09-10-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glue-09-10-migration", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add aws-samples/aws-glue-samples --skill glue-09-10-migration -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install aws-samples/aws-glue-samples glue-09-10-migration --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aws-samples/aws-glue-samples.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/utilities/skills/glue-v09-v1-migration .opencode/skills/glue-09-10-migration && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "glue-09-10-migration" agent skill from https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/skills/glue-v09-v1-migration into .opencode/skills/glue-09-10-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glue-09-10-migration", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
glue-09-10-migrationUpgrade an AWS Glue ETL job from Glue version 0.9 or 1.0 to Glue 4.0.
Glue 09 10 Migration is an agent skill from aws-samples/aws-glue-samples, published by the product's own GitHub organization. Upgrade an AWS Glue ETL job from Glue version 0.9 or 1.0 to Glue 4.0. Runs the job against Glue 4.0, diagnoses failures against a known breaking-change catalogue, patches the job script and configuration, and iterates until the job succeeds or the fix attempt limit is exhausted. Jobs using the AWS Encryption SDK automatically run a two-step upgrade via Glue 2.0 first. Triggers on: upgrade glue job, migrate glue to 4.0, glue 0.9 to 4.0, glue 1.0 to 4.0, glue version upgrade, glue 4 migration, update glue version…
Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `README.md` and `references/migration-notes.md`).
It sits in Data & Analytics, covering Data pipelines and ETL and Code migrations. It works with Amazon Web Services. The repository describes itself as: AWS Glue code samples. The licence is MIT-0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b67f703. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
HUDI_PRIMARY_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Glue 09 10 Migration loads about 2.4k tokens when it runs, and up to ~6.4k if it reads all its reference files. Until then it costs about 169 tokens; SKILL.md has 879 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from aws-samples/aws-glue-samples at commit b67f703, republished under its MIT-0 licence (© aws-samples). 879 words, ~2,376 tokens.
.claude/skills/glue-09-10-migration/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Upgrade an AWS Glue ETL job from Glue version 0.9 or 1.0 to Glue 4.0. Uses the run-fail-fix-rerun loop: update the job to Glue 4.0, run it, diagnose failures against a known breaking-change catalogue, patch the script or configuration, and repeat until the job succeeds or the fix attempt limit (5 iterations) is exhausted. If not able to upgrade, reverts the job and script to their original state.
Before starting, confirm:
glue:GetJob/GetJobRun/GetJobRuns/StartJobRun/UpdateJob/BatchStopJobRun, s3:GetObject/s3:PutObject on the script bucket, logs:DescribeLogStreams/GetLogEvents/FilterLogEvents on /aws-glue/jobs/*, iam:GetRole and iam:PassRole on the job execution role.glue:GetJob and verify GlueVersion is "0.9" or "1.0". Halt for any other version.s3:PutObject of a 0-byte probe to script_location + ".write-check", then delete it. If the write fails, ask the user for the correct S3 location to use for storing the updated script.glue:GetJobRuns; confirm no RUNNING or STARTING state.MUST NOT proceed if any prerequisite cannot be confirmed.
MAX_FIX_ATTEMPTS = 5
MAX_TRANSIENT_RETRIES = 2
MAX_OOM_RETRIES = 2
MAX_POLL_DURATION_SEC = 7200 # fallback if no successful run history available
POLL_TIMEOUT_FACTOR = 1.5 # if history available: timeout = 1.5 × last successful run duration
POLL_INTERVAL_SEC = 30
BACKUP_S3_SUFFIX = ".glue40-upgrade-backup"Complexity routing: All jobs follow the same pipeline. ML transforms are a hard blocker (HALT in step 1.5). Jobs using the Encryption SDK take a two-step path (Step 1A then main loop). All other jobs proceed directly through the run-fail-fix loop.
1.1. Call glue:GetJob(JobName=<job_name>). Store as original_job_definition. Upload as JSON to <script_s3_directory>/.glue40-upgrade-backup.original_job_definition.json via s3:PutObject (where <script_s3_directory> is the S3 prefix up to the last / of script_location).
1.2. Extract: script_location, original_glue_version, original_default_args, original_worker_type, original_num_workers, original_max_capacity, execution_role, python_version.
1.2b. Call glue:GetJobRuns (max 5 runs). Find the most recent SUCCEEDED run and record its ExecutionTime (seconds) as last_success_duration. If no successful run exists, set last_success_duration = null.
1.3. Download job script from S3. Store as original_script_text.
1.4. Backup script — copy script to script_location + BACKUP_S3_SUFFIX using s3:GetObject (download) + s3:PutObject (upload to backup path). MUST NOT skip.
1.5. Hard blocker checks (evaluate in this order):
MLTransform or create_dynamic_frame with transform_type set, OR if Job.Command.Name is gluestreaming with ML features. If detected → HALT immediately: "BLOCKED: ML transforms not supported in Glue 4.0." (takes precedence over all other checks)1A.1. Call glue:UpdateJob: set GlueVersion="2.0", Command.PythonVersion="3", WorkerType="G.1X", NumberOfWorkers = the greater of 2 or the integer (truncated) value of the job's current MaxCapacity. Add "--user-jars-first": "true" to DefaultArguments. MUST NOT pass MaxCapacity.
1A.2. Initialize: intermediate_fix_attempt=0, intermediate_fingerprints=set().
1A.3. Call glue:StartJobRun. Poll to completion (same 30s interval and 1.5× history timeout rules as Step 3).
1A.4. SUCCEEDED → continue to Step 2 (now upgrade to 4.0). FAILED → classify failure and apply fix using the same catalogue in references/migration-notes.md.
1A.5. Increment intermediate_fix_attempt. If >= MAX_FIX_ATTEMPTS → HALT: "BLOCKED: Intermediate Glue 2.0 upgrade failed after 5 attempts. Revert and inspect manually." → go to Step 7.
1A.6. Cycle detection: if fingerprint already seen → HALT → Step 7.
1A.7. Repeat from 1A.3 until SUCCEEDED or budget exhausted.
2.1. Build updated_args from current job DefaultArguments (use post-Step-1A args if the Encryption SDK path was taken, otherwise use original_default_args). Apply pre-flight fixes:
maxCapacity → set WorkerType=G.1X, NumberOfWorkers = the greater of 2 or the integer (truncated) value of the job's current MaxCapacityCommand.PythonVersion="3""--user-jars-first": "true"--conf spark.yarn.* and --yarn-* keys2.2. Call glue:UpdateJob with GlueVersion="4.0", updated worker type/count, DefaultArguments=updated_args, Command.PythonVersion="3". MUST NOT pass MaxCapacity.
2.3. Initialize: fix_attempt=0, transient_retries=0, oom_retries=0, applied_fixes=[], failure_fingerprints=set().
3.1. Call glue:StartJobRun. Record job_run_id and run_start_time.
3.2. Poll glue:GetJobRun every 30s. Timeout threshold = 1.5 × last_success_duration if known, else 7200s (2h). If elapsed > threshold: glue:BatchStopJobRun → treat as TRANSIENT_INFRA.
3.3. SUCCEEDED → Step 6. TIMEOUT → Step 4 (TRANSIENT_INFRA). FAILED/ERROR → Step 4.
4.1. Read error_message from GetJobRun.
4.2. Fetch last 500 log lines from /aws-glue/jobs/error/<job_name>/<job_run_id> via CloudWatch.
4.3. Extract primary exception from Traceback, Caused by:, java.lang., etc.
4.4. Compute failure_fingerprint = hash(exception_type + ":" + failing_symbol).
4.5. Cycle detection: if fingerprint already seen → HALT → Step 7.
4.6. Classify into failure category per references/migration-notes.md. Use FIRST match.
5.1. Apply fix per references/migration-notes.md:
s3:PutObject.updated_args, call glue:UpdateJob.fix_attempt. If >= MAX_FIX_ATTEMPTS → Step 7.
5.3. Go to Step 3.Output:
UPGRADE RESULT: SUCCESS
Job: <job_name> | Original: <glue_version> | Target: 4.0
Fix Iterations: <n>
Script backup: <script_location>.glue40-upgrade-backup
Fixes Applied: [list]
Final Run ID: <id> | SUCCEEDED7.1. Call glue:UpdateJob with original GlueVersion, DefaultArguments, WorkerType, NumberOfWorkers, MaxCapacity.
7.2. Restore script: s3:GetObject from backup path (script_location + BACKUP_S3_SUFFIX) → s3:PutObject to original script_location.
7.3. Output:
UPGRADE RESULT: FAILED — REVERTED
Job: <job_name>
Halt Reason: <BUDGET_EXHAUSTED|CYCLE_DETECTED|TRANSIENT_INFRA|OOM_UNRESOLVABLE|HARD_BLOCKER|UNKNOWN_FAILURE>
Last Failure: <category> | <exception>
Fixes Attempted: [list]
Manual Actions Required: [list]
Revert Status: job definition REVERTED | script REVERTED from backup| Condition | Action |
|---|---|
SUCCEEDED | Declare success |
fix_attempt >= 5 | Budget exhausted. Revert. |
| Cycle detected | Same failure after fix. Revert. |
transient_retries > 2 | Persistent infra issue. Revert. |
oom_retries > 2 | Cannot scale up. Revert. |
| Poll > timeout | Job hung (1.5× last run duration, or 2h if no history). Stop run. |
| BLOCKED category | Hard blocker. Revert. |
glue:GetJob, glue:GetJobRuns, glue:UpdateJob, glue:StartJobRun, glue:GetJobRun, glue:BatchStopJobRun, s3:GetObject, s3:PutObject, logs:DescribeLogStreams, logs:GetLogEvents, logs:FilterLogEvents, iam:GetRole, iam:PassRole
© aws-samples, MIT-0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in utilities/skills/glue-v09-v1-migration of aws-samples/aws-glue-samples.
Open the folder on GitHubat commit b67f703
Glue 09 10 Migration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Glue 09 10 Migration this skillaws-samples/aws-glue-samples | 1.5k | — | ~2.4k | Automated safety check: Pass | MIT-0 | |
| Ingesting Dataancoleman/ai-design-components | 526 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Managed Airflow Migrationsgoogle/skills | 21k | — | ~3k | Automated safety check: Pass | Apache-2.0 | |
| Airflow State Storeastronomer/agents | 451 | — | ~6.1k | Automated safety check: Pass | Apache-2.0 | |
| Upgrading Mwaa Environmentsaws/agent-toolkit-for-aws | 2.8k | — | ~7.3k | Automated safety check: Pass | Apache-2.0 | |
| Authoring Mwaa Workflowaws/agent-toolkit-for-aws | 2.8k | — | ~2.8k | Automated safety check: Pass | Apache-2.0 |
ancoleman/ai-design-components
Data ingestion patterns for loading data from cloud storage, APIs, files, and streaming sources into databases.
google/skills
Provides guidance for migrating Apache Airflow DAGs in Managed Service for Apache Airflow (MSAA; formerly Cloud Composer).
astronomer/agents
Persists task and asset state across retries and DAG runs using Airflow 3.3's AIP-103 key/value stores (taskstatestore, assetstatestore) and the crash-safe ResumableJobMixin.
aws/agent-toolkit-for-aws
Upgrades an MWAA environment to a newer Airflow version — within 2.x, within 3.x, or across the 2.x-to-3.x boundary.
aws/agent-toolkit-for-aws
Authors and deploys MWAA workflow artifacts: Python Airflow DAGs for provisioned environments or YAML workflow files for Serverless.
Kilo-Org/kilo-marketplace
A skill your agent uses to investigate and troubleshoot AWS Glue problems by analyzing ETL jobs, crawlers, connections, Data Catalog, DPU utilization, Spark execution, and job bookmarks following…
aws-samples/aws-glue-samples
Migrate a legacy AWS Glue development endpoint to a Glue interactive session, following the official AWS migration checklist.
Works with
Categories
Upgrade an AWS Glue ETL job from Glue version 0.9 or 1.0 to Glue 4.0. Glue 09 10 Migration is an agent skill from aws-samples/aws-glue-samples, published by the product's own GitHub organization.0.
Glue 09 10 Migration fits situations like: : upgrade glue job; migrate glue to 4.0; glue 0.9 to 4.0; glue 1.0 to 4.0.
Run `npx skills add aws-samples/aws-glue-samples --skill glue-09-10-migration -a claude-code`. Or copy the skill folder (utilities/skills/glue-v09-v1-migration in aws-samples/aws-glue-samples) into .claude/skills/glue-09-10-migration in your project. Claude Code loads it when a task matches its description.
Run `npx skills add aws-samples/aws-glue-samples --skill glue-09-10-migration -a codex`. Or copy the skill folder (utilities/skills/glue-v09-v1-migration in aws-samples/aws-glue-samples) into .agents/skills/glue-09-10-migration in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add aws-samples/aws-glue-samples --skill glue-09-10-migration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/glue-09-10-migration, .gemini/skills/glue-09-10-migration, .github/skills/glue-09-10-migration and .opencode/skills/glue-09-10-migration in your project.
Going by SKILL.md and its folder, Glue 09 10 Migration needs credentials named HUDI_PRIMARY_KEY. Our summary lists: Python 3; A credential in HUDI_PRIMARY_KEY.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Glue 09 10 Migration is published under the MIT-0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.4k tokens (SKILL.md is roughly 9.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Glue 09 10 Migration: Ingesting Data (ancoleman/ai-design-components, 526 stars), Managed Airflow Migrations (google/skills, 21k stars), Airflow State Store (astronomer/agents, 451 stars) and Upgrading Mwaa Environments (aws/agent-toolkit-for-aws, 2.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
aws-samples (a GitHub organization, an official publisher) maintains it in aws-samples/aws-glue-samples, which has 1,540 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on August 18, 2026.
Source: aws-samples/aws-glue-samples on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.