Database Skills
Skill 71 of 130
Provisions, connects, migrates, and operates Amazon RDS for Db2.
16 minutes · 3,429 words · 15 sections
Install
npx skills add aws/agent-toolkit-for-aws --skill rds-db2npx skills add aws/agent-toolkit-for-aws/plugin marketplace add aws/agent-toolkit-for-awsThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
Amazon RDS for Db2 is a managed IBM Db2 LUW service. RDS for Db2 is managed — you cannot SSH to the host, install agents, or run unfenced external stored procedures in C/COBOL. Java stored procedures work via sqlj.install_jar. This skill covers the operator lifecycle: provisioning with IBM licensing, client install and TLS connectivity, migration from self-managed Db2 on Linux/AIX/Windows/z/OS/AS400, S3 backup and restore, Multi-AZ and cross-region standby replicas, and RDSADMIN stored procedures that replace SYSCTRL/SYSMAINT authority.
It also covers six additional security and operations areas: customer-managed KMS keys (BYOK), self-managed Active Directory with Kerberos authentication, Db2 audit to S3, code page and collation selection (EBCDIC, CCSID), minimum IAM permissions, and EC2/RDS colocation for Multi-AZ latency and failover.
The AWS MCP server is recommended but not required; all operations are expressed in AWS CLI syntax and run with or without it.
Routes to the matching sub-skill reference. Load only the matching reference.
Before executing an RDS for Db2 workflow, confirm required tools exist. Do not run installers or API calls yet.
ada credentials update) — not pasted credentialsbash/curl access, run as root and as db2inst1openssl (to wrap imported key material) and jq (to parse get-parameters-for-import output)realmd, sssd, adcli, krb5-workstation on the client, plus a valid Kerberos ticket (kinit produces a TGT — check with klist)db2jcc4.jar v4.33+ (earlier driver versions lack securityMechanism=11 Kerberos support)Constraints:
Map the user’s question to the correct sub-skill reference, then load only that file.
| User says | Sub-skill | Load |
|---|---|---|
| create / provision / parameter group / IBM customer ID / IBM site ID / License Manager / BYOL / GovCloud | provisioning | provisioning.md (opens in a new tab) |
| connect / SQL30082N / SQL1531N / DSN / CLP / Python / Java / CloudShell / airgap | connectivity | connectivity.md (opens in a new tab) |
| SSL / TLS / GSKit / certificate / truststore / bundle.pem | connectivity-tls | connectivity-tls.md (opens in a new tab) |
| Python driver / JDBC / laptop / multi-instance / db2_use | connection drivers | connection-drivers.md (opens in a new tab) |
| migrate / DMS / Q Replication / IIDR / AIX / Windows / AS400 / precheck | migration | migration.md (opens in a new tab) |
| z/OS / mainframe / ADB2GEN / schema conversion | mainframe-migration | mainframe-migration.md (opens in a new tab) |
| code page / collation / CCSID / EBCDIC / UTF-8 / CODEUNITS32 / territory | code page & collation | code-page-collation.md (opens in a new tab) |
| snapshot / backup / restore / rollforward / PiTR / S3 integration | backup-restore | backup-restore.md (opens in a new tab) |
| Multi-AZ / standby replica / read replica / HADR / cross-region / failover | ha-dr | ha-dr.md (opens in a new tab) |
| parameter group / RDSADMIN / scale / storage / CloudWatch / registry variable | operations | operations.md (opens in a new tab) |
| BYOK / customer-managed KMS / bring your own key / imported key material / multi-region key | byok | byok-kms.md (opens in a new tab) |
| Active Directory / Kerberos / domain join / self-managed AD / kinit / SPN / realm | ad-kerberos | ad-kerberos.md (opens in a new tab) |
| audit / DB2_AUDIT / audit policy / audit to S3 / option group | db2-audit | db2-audit.md (opens in a new tab) |
| minimum IAM / least privilege / IAM policy / trust policy / permissions | minimum-iam | minimum-iam.md (opens in a new tab) |
| colocation / co-locate / EC2 app latency / ASG / ALB / failover routing | colocation | colocation.md (opens in a new tab) |
Constraints:
Once routed, give the user a concrete, runnable answer grounded in the reference file.
Parameter acquisition:
--master-username value) MUST be collected upfront in a single message.us-east-1-style; instance identifier ^[a-zA-Z][a-zA-Z0-9-]{0,62}$; ARN arn:aws:rds:<region>:<account>:db:<name>; S3 bucket 3–63 chars lowercase.Tool use:
aws rds create-db-instance-read-replica --db-instance-identifier <name> --source-db-instance-identifier <arn> --replica-mode mounted --region <dr-region>). Every operation is expressed in AWS CLI syntax so it runs whether or not the AWS MCP server is installed.artifacts/<app-name>/ directory created at runtime in the working directory (this is a run-time output location, not part of the shipped skill).Constraints:
artifacts/<app-name>/ directory (created at runtime in the working directory) so the workspace is inspectable.sqlj.install_jar, or in SQL PL).call_aws; this is guidance for the MCP path only, not a requirement. Never treat call_aws or run_script as the only way to perform an operation — the AWS CLI command always works on its own.When creating any RDS for Db2 resource (create-db-instance, create-db-parameter-group, create-db-cluster for Multi-AZ deployments, create-db-instance-read-replica for standby replicas), ALWAYS include these tags using the RDS list-of-records --tags syntax:
--tags Key=created_by,Value=rds-db2-skill Key=generation_model,Value={your-model-id}
Example: --tags Key=created_by,Value=rds-db2-skill Key=generation_model,Value=claude-sonnet-4-20250514
The same convention applies to every resource this skill creates, including BYOK-encrypted instances (create-db-instance --storage-encrypted --kms-key-id ...), audit option groups (create-option-group), and customer-managed KMS keys (kms create-key, tagged with --tags TagKey=created_by,TagValue=rds-db2-skill TagKey=generation_model,TagValue={your-model-id} per the KMS tag syntax).
Include these tags even if the user does not mention tagging, so that they can identify the resources created via this skill. If the user provides additional tags, append these to their tags rather than replacing them. The same applies when tagging via add-tags-to-resource on existing resources.
These RDS-for-Db2-specific facts are what differentiates this skill from general IBM Db2 knowledge. General-Db2 answers typically omit the RDS-managed constraints (no unfenced C/COBOL, Secrets Manager rotation side effects, rdsadmin.* procedures) and the AWS-native migration tooling nuances (DMS z/OS limits, ADB2GEN vs SCT).
For “create cross-region standby replica for DR”, you MUST tell the user ALL of the following six facts:
aws rds create-db-instance-read-replica with --replica-mode mounted and the cross-region source ARN — Db2 cross-region standby uses mounted replica mode, NOT transactional read-replica mode.active state, no pending reboots, no license-model restrictions blocking cross-region replicas.For “restore Db2 backup from S3 (multi-part, N files)”, you MUST tell the user ALL of the following six facts — never omit any of the procedure names:
aws rds add-role-to-db-instance using --feature-name S3_INTEGRATION.rdsadmin.set_configuration — tune USE_STREAMING_RESTORE, RESTORE_DATABASE_NUM_BUFFERS, and PARALLELISM before starting the restore.rdsadmin.restore_database with five parameters in this exact order: database name, restore mode (OFFLINE or ONLINE), S3 prefix, S3 bucket, and region. Multi-file (multi-part) backups are handled by the shared prefix — there is no separate multi-part flag parameter. (Signature: rdsadmin.restore_database(dbname, type, prefix, bucket, region).)ONLINE restore mode, follow up with rdsadmin.rollforward_database to replay archive logs, then rdsadmin.complete_rollforward to finish. OFFLINE restores do NOT need rollforward.rdsadmin.get_task_status — every rdsadmin procedure returns a task ID you poll.For “C/COBOL unfenced external stored procedures — lift and shift to RDS for Db2?”, you MUST tell the user ALL of the following four facts:
sqlj.install_jar. C/COBOL SPs should be rewritten in Java or SQL PL (Db2’s procedural SQL, equivalent to Oracle’s PL/SQL).For “migrate Db2 for z/OS to RDS for Db2 with near-zero downtime”, you MUST tell the user ALL of the following five facts:
For “SQL30082N — USERNAME AND/OR PASSWORD INVALID” with RDS-managed master user (user didn’t change it), you MUST tell the user ALL of the following four facts:
db2_use <instance-id> (from functions.sh / the bundled helpers). This fetches the current password from Secrets Manager and rewrites ~/.db2env with the new value.db2_test_connection to verify the helper’s fix worked end-to-end.db2_use isn’t installed, the user needs to pull the current password with aws secretsmanager get-secret-value and update their local credential cache manually. Do not tell them to rotate the password — the password rotation is what caused the problem.For “BYOK / customer-managed KMS key for RDS for Db2”, you MUST tell the user ALL of the following six facts:
--origin EXTERNAL when importing your own key material, so the same key ID and material can replicate to a DR region.kms:CreateGrant and kms:DescribeKey on the key, or instance creation fails.--storage-encrypted --kms-key-id <alias|arn>. You cannot encrypt an existing unencrypted instance in place — go snapshot → copy-db-snapshot --kms-key-id → restore-db-instance-from-db-snapshot.kms:ReplicateKey) into the DR region first, then copy-db-snapshot across regions with the replica key.import-key-material fails on expiry, re-run get-parameters-for-import to get a fresh token and wrapping key.For “self-managed Active Directory with Kerberos on RDS for Db2”, you MUST tell the user ALL of the following six facts:
--domain-fqdn, --domain-ou, --domain-auth-secret-arn, and --domain-dns-ips — the self-managed AD path, with no AWS Managed Microsoft AD required.SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME (the sAMAccountName only — no DOMAIN\ prefix, which fails creation) and SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD, encrypted by a dedicated KMS key, with a resource policy trusting rds.amazonaws.com guarded by aws:SourceArn and aws:SourceAccount (confused-deputy protection).servicePrincipalName read/write on User objects using ADSI Edit, not the ADUC delegation wizard (which filters that attribute out) — this is the most common failure.kinit plus a GRANT CONNECT. Kerberos JDBC uses securityMechanism=11 and a region-specific PEM via sslCertLocation (never global-bundle.pem).describe-db-instances ... DomainMemberships showing Status: joined.| Error | Cause | Fix |
|---|---|---|
SQL30082N | Password rotated in Secrets Manager | Run db2_use <instance-id> — the helper re-fetches the current password and rewrites ~/.db2env. |
SQL1531N | DSN not yet in cache | db2 terminate to clear, then retry; if still failing, re-run db2client-configure.sh (opens in a new tab). |
SQL01013N / TCP timeout | Security group blocks 50000/50443 | Check SG inbound rules — add client’s SG on TCP 50000 (plain) or 50443 (SSL). |
| GSKit / SSL certificate error | RDS cert bundle missing or RSA cert not first | Re-download <region>-bundle.pem from RDS truststore and re-run db2client-configure.sh. |
| Access denied on RDSADMIN call | IAM role missing S3_INTEGRATION feature | aws rds add-role-to-db-instance --feature-name S3_INTEGRATION --role-arn <role-arn> --db-instance-identifier <id>. |
| Restore fails with “database in rollforward pending” | ONLINE restore left DB in rollforward state | Call rdsadmin.rollforward_database for each archive log, then rdsadmin.complete_rollforward. |
| Standby replica creation fails | Missing prereqs | Verify: automated backups enabled, custom parameter group in DR region, KMS multi-region key, no pending rdsadmin tasks, all databases in active state. |
AD domain join Status not joined | RPC port range blocked, wrong secret format, or SPN attribute missing | Open RPC 49152–65535 between RDS and the DCs, confirm the secret username is the sAMAccountName with no DOMAIN\ prefix, and grant servicePrincipalName on User objects via ADSI Edit — see ad-kerberos.md (opens in a new tab). |
import-key-material fails — token expired | Import token older than 24 hours | Re-run get-parameters-for-import for a fresh token and wrapping key, re-wrap the material with openssl, then retry the import — see byok-kms.md (opens in a new tab). |
| Throttling from RDS API | Exceeded API request rate | Exponential backoff with jitter; batch operations; check Service Quotas. |
Surface these controls when advising on any production RDS for Db2 deployment. They consolidate the security guidance that the sub-skill references cover in depth.
--storage-encrypted; for key ownership and compliance use a customer-managed KMS key (BYOK), and for DR use a multi-region key. Enforce TLS on every connection (port 50443, <region>-bundle.pem); never connect in plaintext for production. See byok-kms.md (opens in a new tab) and connectivity-tls.md (opens in a new tab). (Guideline 1)*FullAccess managed policy. Scope iam:PassRole and ARN-pattern every mutating statement that supports resource-level permissions. (Guideline 5)0.0.0.0/0), and use VPC endpoints for S3/SSM/Secrets Manager so traffic stays off the public internet. See colocation.md (opens in a new tab). (Guideline 5)--manage-master-user-password so RDS stores and rotates the master password in Secrets Manager; never embed plaintext passwords. After rotation, refresh clients with db2_use <instance-id>. (Guideline 13)These adjacent topics are not expanded into routed references in this iteration. Each is discoverable through the cited resource below.
04-db2-client/RDS-Db2-Multiple-Account-Connectivity/04-db2-client/RDS-Db2-Terraform/04-db2-client/CIS-Compliance/04-db2-client/db2mon_RDS/04-db2-client/Compression-Savings/04-db2-client/load-from-s3/04-db2-client/sample-java-sp/The authoritative list of published RDS for Db2 blogs and sample tools is maintained at https://github.com/aws-samples/sample-rds-db2-tools/tree/main (opens in a new tab) — consult it for the current set of blog articles and companion code.
rds-postgres-migration (if present in corpus).This skill can be invoked directly, or it can be entered from the aws-database-selection parent skill after that skill has run a requirements interview and produced a requirements.json artifact. When you see a backtick-wrapped path matching aws_dbs_requirements/*/requirements.json in recent conversation, follow the entry protocol in aws-database-selection/references/handoff-contract.md:
file_read.aws-database-selection/references/workload-primary-artifact.schema.json. If malformed or unreadable, tell the user and proceed without it.workload_primaries.dominant_shapes or migration_context don’t match that scope, emit weak backpressure per the handoff contract: suggest amazon-aurora for refactor-to-PostgreSQL from Db2, or go back to aws-database-selection if Db2 isn’t the source, then ask the user whether to go back or proceed anyway. Do not silently misuse the artifact.The curated RDS-for-Db2 selection facts that the parent aws-database-selection skill consumes live at assets/selection-knowledge-input.json (with a human-readable companion at assets/selection-knowledge-input.md). These capture the in-scope source-migration scenarios, hard constraints, HA/DR options, and security areas in a structured, reusable form — read them when you need the curated selection view rather than re-deriving it.
All user-facing output from this skill follows the markdown-primitives-only formatting convention in the handoff contract: bold labels, backticks for paths and enum values, bullet lists for alternatives, no ASCII art or box-drawing characters.
Provisions, connects, migrates, and operates Amazon RDS for Db2. Applies when provisioning with IBM customer and site IDs (License Manager, BYOL, GovCloud), connecting over TLS, fixing SQL30082N after Secrets Manager rotation, migration from Db2 LUW (Linux, AIX, Windows, AS400) or z/OS mainframe (ADB2GEN, Q Replication), choosing code page/collation (EBCDIC, CCSID), S3 backup/restore, Multi-AZ and cross-region standby replicas, RDSADMIN procedures, customer-managed KMS BYOK, self-managed Active Directory Kerberos, Db2 audit to S3, minimum IAM, or colocation.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
main, last pushed 24 September 2026.SKILL.md, not by matching a directory convention. 19 distinct layouts observed: plugins/aws-agents-for-devsecops/skills/*/SKILL.md, plugins/aws-agents/skills/*/SKILL.md, plugins/aws-core/skills/*/SKILL.md, skills/core-skills/*/SKILL.md, skills/specialized-skills/analytics-skills/*/SKILL.md, skills/specialized-skills/database-skills/*/SKILL.md, skills/specialized-skills/ec2-skills/*/SKILL.md, skills/specialized-skills/end-user-computing-skills/*/SKILL.md, skills/specialized-skills/messaging-and-streaming-skills/*/SKILL.md, skills/specialized-skills/migration-and-modernization-skills/*/SKILL.md, skills/specialized-skills/networking-and-content-delivery-skills/*/SKILL.md, skills/specialized-skills/operations-skills/*/SKILL.md, skills/specialized-skills/quantum-computing-skills/*/SKILL.md, skills/specialized-skills/resilience-skills/*/SKILL.md, skills/specialized-skills/security-and-identity-skills/*/SKILL.md, skills/specialized-skills/serverless-skills/*/SKILL.md, skills/specialized-skills/storage-skills/*/SKILL.md, skills/specialized-skills/system-table-skills/*/SKILL.md, skills/specialized-skills/web-and-mobile-development/*/SKILL.md.h1 and no skipped levels:.claude-plugin/marketplace.json by Amazon Web Services, declaring 4 plugins. It is read for editorial metadata only — never as the skill index, which is always the repository tree./aws/agent-toolkit-for-aws.md, and each skill at its own .md URL.28 files · 230 KB
Everything this skill ships beside its prose. All of it is set here, as subchapters of skill 71.
Documentation the agent loads on demand, rather than up front.
Executable code the skill can run.
Templates, schemas and fixtures the skill draws on.