feat(aws): storage.redshift — @aws-cdk/aws-redshift-alpha port (scope-reduced) - #153
Open
so0k wants to merge 2 commits into
Open
feat(aws): storage.redshift — @aws-cdk/aws-redshift-alpha port (scope-reduced)#153so0k wants to merge 2 commits into
so0k wants to merge 2 commits into
Conversation
…263.0-alpha.0 (scope-reduced) Full file-for-file port of @aws-cdk/aws-redshift-alpha into the storage.redshift sub-namespace, scope-reduced: table.ts/user.ts/private/* (the Custom::RedshiftDatabaseQuery Lambda custom-resource surface) ship as fully commented-out ports with TODO(scope-reduction) trackers, ready to re-enable. - Cluster on aws_redshift_cluster: gridUUID-lowercased identifier, generated- password double-freeze (master_password under lifecycle.ignore_changes), skipFinalSnapshot/finalSnapshotIdentifier + synth warning, kms_key_id fed the key ARN (ID-vs-ARN audit), encrypted stringified (provider types it string) - addDefaultIamRole() via native default_iam_role_arn; enableRebootForParameterChanges() omitted (commented, permalink); loggingProperties via standalone aws_redshift_logging resource - ClusterParameterGroup / ClusterSubnetGroup / DatabaseSecret / Endpoint with server-side-lowercase naming shape (Token-guarded) across all named resources - Rotation single/multi-user wired to SecretRotation incl. excludeCharacters carry-over (documented deviation vs upstream) - 67 unit tests (5 live suites; 9 upstream suites ported commented-out), alpha-churn tracker on the barrel
…orage.redshift Real Redshift cluster in an isolated VPC: cluster read-back (status, node shape, encryption, private endpoint), ClusterParameterGroup attachment, IAM role association + native default_iam_role_arn (upstream: AwsCustomResource), attach()'d secret with merged connection fields (number-typed port, dbClusterIdentifier), grid-lowercased naming, and the post-apply drift oracle covering the generated-secret master_password double-freeze. Adds aws-sdk-go-v2/service/redshift v1.65.4.
Contributor
Author
Live integ receipts —
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Storage slice PR 10 —
storage.redshift: the @aws-cdk/aws-redshift-alpha port (v2.263.0-alpha.0, scope-reduced)Stacked on #152. Third alpha port — same disciplines as #151/#152: alpha-churn tracker on the barrel, provenance headers,
TERRACONSTRUCTS DEVIATIONnotes at every divergence. 67 live unit tests across 5 suites.Scope reduction (fully reversible)
The
Table/User/UserPrivilegessurface is backed upstream by aCustom::RedshiftDatabaseQueryLambda custom-resource provider (executes live SQL against the cluster via the Redshift Data API). Custom-resource providers are not in this slice, sotable.ts,user.ts, and the entireprivate/tree (plus their 9 upstream test files) ship as fully commented-out ports headed byTODO(scope-reduction)blocks with permalinks — zero non-comment lines, ready to comment back in.Mapping notes
addDefaultIamRole()goes native: upstream shells out tomodifyClusterIamRolesvia anAwsCustomResource(no CFN property exists).aws_redshift_clusterexposesdefault_iam_role_arnnatively — same public API and validation, no Lambda, destroy naturally clears it. Live-proven (read back viaDescribeClusters.DefaultIamRoleArn).loggingPropertiesvia standaloneaws_redshift_logging: provider 6.x moved audit logging off the cluster resource; the port wires the S3 bucket policy exactly as upstream and emits the standalone resource.enableRebootForParameterChanges()omitted (commented, permalinks) — Lambda-backed custom resource.encryptedis string-typed in this provider binding (unlike CFN's boolean) — stringified with a deviation note.kms_key_idfed the key ARN (the feat(aws): storage.elasticache — elasticache-alpha port [stacked on #150] #151 id-vs-ARN lesson pre-applied), with an exact-value unit assertion.ignore_changes), grid-lowercased identifiers on all three named resources (cluster/subnet-group/parameter-group, Token-guarded),skipFinalSnapshot/finalSnapshotIdentifier+ synth warning,attach()mergingdbClusterIdentifier/engine: "redshift"/host/number-typed port.excludeCharactersfrom the generated secret (documented deviation — upstream omits it).Live integ (
make redshift.cluster) — receipts in threadReal single-node ra3.large cluster in an isolated VPC: status/node-shape/encryption read-backs, ClusterParameterGroup attachment, IAM role association +
DefaultIamRoleArnread back from AWS (the native deviation), attached secret with merged connection fields, grid-lowercased identifier live, drift oracle, clean destroy.