Class DeploymentConfig
This is the canonical configuration structure used by both interactive deployers and non-interactive deployment tools. It maps directly to deployment-context.json and can be serialized/deserialized via Jackson.
Architecture: This class lives in cloudforge-core (the contract layer) as it defines the data model interface between libraries and consumers. This ensures cfc-testing and other consumers always use the latest configuration schema without duplication.
- Since:
- CloudForge 3.0.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionTarget AWS account id to pin CDK'sEnvironment.accountto at synth time.Enable ALB access logs to S3Enable anti-malware scanningApplication identifier (e.g., "jenkins", "gitlab", "vault")Human-readable application nameApplicationSpec instance (not serialized to JSON)S3 bucket for artifactsS3 prefix for artifactsEnable AWS Audit ManagerAuthentication modeEnable automated backups (null = use security profile default)Auto-provision SAML application in IAM Identity CenterString[]Availability zone suffixes for deployment (region-relative — "a" means whichever zone the deploy's own region calls "a", not a specific full zone name, since the same suffix set is valid regardless of which region gets picked elsewhere in the form).Enable AWS ConfigCIDR for bastion/VPN SSH accessARN of an existing ACM certificate to use for the ALB's HTTPS listener, instead of provisioning a new one.Certificate expiration monitoring enabledCloudForge Manager's own public URL, used as the OIDC issuer when this app trusts a CloudForge Manager install as its identity provider (see com.cloudforgeci.manager.auth.oidcprovider's own package javadoc).Enable CloudFront CDNEnable CloudTrail for API audit loggingEnable CloudTrail InsightsEnable CloudWatch Logs KMS encryptionAdmin group nameExisting Cognito App Client IDAuto-provision new Cognito User PoolCreate admin and user groups in CognitoCognito domain prefix (must be globally unique)Initial admin email addressInitial admin phone number (E.164 format)Enable MFA for CognitoCognito MFA methodOverrides the security-profile default for whether users can self-register on the Cognito hosted UI (development defaults to allowed, staging/production to admin-only).User group nameExisting Cognito User Pool IDCognito User Pool nameCompliance frameworks to enable.Compliance validation mode controlling how validation failures are handled.Override container image tagEnable container image vulnerability scanningEnable container runtime security monitoringintFargate CPU units (256, 512, 1024, 2048, 4096)intCPU target utilization percentage for auto-scalingCreate AWS Config infrastructureCreate GuardDuty detector (account-region singleton)Create Route53 hosted zoneEnable cross-region backups (null = use security profile default)Allocated storage in GB.Backup retention period in days.Database engine (e.g., postgres, mysql, mariadb).RDS instance class (e.g., db.t3.small, db.m5.large).Enable Multi-AZ deployment for high availability.Database name.Optional number of RDS read replicas.Database engine version.Primary domain (e.g., "example.com")Enable EFS encryption in transitbooleanEnable JNLP build agent port (Jenkins: 50000)Enable auto-scalingEnable CloudTrail bucket access logging remediationbooleanEnable Redis Cluster bus port (Redis: 16379)booleanEnable clustering ports (Mattermost: 8074-8075, Vault: 8201)booleanEnable container registry port (GitLab: 5050, Nexus: 5000-5002)Enable encryption at restEnable VPC flow logsbooleanEnable Prometheus metrics port (GitLab: 9090)Enable CloudWatch monitoringbooleanEnable Notary content trust port (Harbor: 4443)Enable RDS auto minor version upgrade remediationEnable RDS deletion protection remediationEnable S3 versioning remediationbooleanEnable Redis Sentinel port (Redis: 26379)booleanEnable SMTP email port (Mattermost: 587)booleanEnable SMTP TLS email port (Mattermost: 465)booleanEnable Git SSH port (GitLab: 22, Gitea: 2222)Enable SSL certificate via ACMbooleanEnable Trivy vulnerability scanner port (Harbor: 8080)Environment name (e.g., "dev", "staging", "production")Reuse existing EFS by ID (for disaster recovery workflows)Enable file integrity monitoringFully qualified domain name — alwayssubdomain + "." + domainonce both are set; this field only matters when you need to override that computed result directly (e.g.GDPR data transfer approval flag for non-EU deployments.GuardDuty alerts configured (EventBridge to SNS/SIEM)Enable GuardDuty threat detectionintintintintHTTPS-only mode (no HTTP listener when SSL enabled)Identity Center group name for user assignmentEnable Amazon Inspector for vulnerability scanningEC2 instance type (e.g., "t3.micro", "t3.small")Load balancer typeCloudWatch Logs retention daysEnable Macie automated discovery jobsEnable Amazon Macie for PII/PHI discovery (HIPAA/GDPR)Opt-in: grants CloudForge Manager's own task/instance role the direct-deploy IAM capabilities (CFN_DEPLOY/SC_PROVISION— seeManagerAwsCapabilityCatalog), condition-scoped to CloudForge-tagged resources.Bearer token for POST /api/v1/history.A customer's LicenseSeat license key (LS-XXXX-XXXX-XXXX-XXXX), injected at deploy time so an install activates immediately instead of requiring a follow-up visit to the owner-only License settings screen after the stack comes up.Default inventory target for Manager clients (ministack | aws).Base URL of a running CloudForge Manager (e.g.intMaximum instance capacity for auto-scalingintFargate memory in MBintMinimum instance capacity for auto-scalingNetwork mode for VPC topologyOIDC authorization endpointOIDC client ID — shared by external-idp and cloudforge-manager, both providers where an admin registers this app's client credentials by hand (external IdP's own console, or CloudForge Manager's Trusted Apps settings page) rather than CloudForge auto-provisioning them, so the field means the same thing either way.OIDC client secret name in Secrets Manager — same sharing rationale asoidcClientId.OIDC issuer URLOIDC provider (none, cognito, identity-center, external-idp)OIDC token endpointOIDC user info endpointProvision RDS database for application.Provision a dedicated AWS Secrets Manager entry holding the AES cipher key CloudForge Manager uses to encrypt cross-account connection secrets (external IDs) at rest — seeSecretCipher/AesGcmSecretCipherin cloudforge-manager.Provision an ElastiCache Redis cluster and bind CloudForge Manager's own container to it as a shared session store (CFC_MANAGER_SESSION_MODE=redis), so every Manager instance behind the same ALB recognizes sessions any of the others created — the missing piece for running Manager itself horizontally scaled.AWS region (e.g., "us-east-1", "us-west-2")Restrict security group egress to VPC CIDR only (requires VPC endpoints for AWS service access)Retain EFS/EBS volumes on stack deletionEnable Route53 Query LoggingRuntime type (FARGATE or EC2)Enable S3 Object Lock for audit buckets (HIPAA/PCI-DSS immutability requirement)Enable AWS Security Hub for centralized security findingsEnable security monitoringSecurity profile (DEV, STAGING, PRODUCTION)SSO Group IDIAM Identity Center (SSO) Instance ARNSSO Target Account IDCloudFormation stack nameSubdomain prefix (e.g., "ci", "gitlab") — ordered ahead ofdomain: you pick what this app is called (the subdomain) before which domain it hangs off of, and the combined result (subdomain + "." + domain) is what actually gets requested, not the other way around.Topology type — genuinely selectable, not just an auto-derived display value, so a future topology (or an app implementing more than one applicable interface) isn't locked out of being chosen explicitly.intEnable AWS WAF -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic DeploymentConfigLoad DeploymentConfig from a JSON file path string.static DeploymentConfigLoad DeploymentConfig from a JSON file (e.g., deployment-context.json).static DeploymentConfigLoad DeploymentConfig from a JSON string.static DeploymentConfigLoad DeploymentConfig from a Map (e.g., CDK context).Returns the compliance frameworks as a comma-separated string.booleanChecks if any compliance framework is enabled.booleanhasComplianceFramework(ComplianceFrameworkType framework) Checks if a specific compliance framework is enabled.Convert this DeploymentConfig to a Map for CDK context.voidSave this DeploymentConfig to a JSON file path string.voidSave this DeploymentConfig to a JSON file.Context map safe for durable deploy history.toJson()Serialize this DeploymentConfig to a JSON string.
-
Field Details
-
stackName
CloudFormation stack name -
environment
Environment name (e.g., "dev", "staging", "production") -
applicationId
Application identifier (e.g., "jenkins", "gitlab", "vault") -
applicationName
Human-readable application name -
applicationSpec
ApplicationSpec instance (not serialized to JSON) -
subdomain
-
domain
Primary domain (e.g., "example.com") -
fqdn
Fully qualified domain name — alwayssubdomain + "." + domainonce both are set; this field only matters when you need to override that computed result directly (e.g. a domain structure the subdomain+domain pair can't express).@JsonIgnored deliberately: it's a derived/override value, not sent as its own JSON key — the previous description ("overrides domain+subdomain") had the relationship backwards, reading as if *this* field were the primary input and domain/subdomain were the fallback, when it's the other way around. -
enableSsl
Enable SSL certificate via ACM -
certificateArn
ARN of an existing ACM certificate to use for the ALB's HTTPS listener, instead of provisioning a new one. Takes priority over both ofFargateRuntimeConfiguration's other two certificate paths — the DNS-validated public cert (needs a Route53 hosted zone this deployment controls) and the AWS Private CA cert (issued for the bare ALB DNS name, NOT trusted by browsers — see that class's own comments). This is how a deployment gets a genuinely publicly-trusted certificate without either of those: import your own cert (issued by any public CA — ACM's own DNS/email validation, Let's Encrypt, a purchased cert, ...) into ACM yourself first (e.g.aws acm import-certificate, entirely within your own account — the key material never has to pass through this deployment config or CloudFormation), then point this at the resulting ARN. -
runtime
Runtime type (FARGATE or EC2) -
topology
Topology type — genuinely selectable, not just an auto-derived display value, so a future topology (or an app implementing more than one applicable interface) isn't locked out of being chosen explicitly. NoallowedValuesoverride here on purpose: leaving it unset lets the schema builder enumerate everyTopologyTypeconstant automatically — a hardcoded single-value override would hide CMS_SERVICE/JENKINS_SERVICE/S3_WEBSITE from the wizard entirely, locking out a CmsSpec app's actual topology even thoughDeploymentContextPrepareralready defaults to it correctly. -
securityProfile
Security profile (DEV, STAGING, PRODUCTION) -
networkMode
Network mode for VPC topology -
lbType
Load balancer type -
createZone
Create Route53 hosted zone -
enableFlowlogs
Enable VPC flow logs -
wafEnabled
Enable AWS WAF -
httpsStrictEnabled
HTTPS-only mode (no HTTP listener when SSL enabled) -
albAccessLogging
Enable ALB access logs to S3 -
cloudfrontEnabled
Enable CloudFront CDN -
bastionCidr
CIDR for bastion/VPN SSH access -
minInstanceCapacity
public int minInstanceCapacityMinimum instance capacity for auto-scaling -
maxInstanceCapacity
public int maxInstanceCapacityMaximum instance capacity for auto-scaling -
cpuTargetUtilization
public int cpuTargetUtilizationCPU target utilization percentage for auto-scaling -
cpu
public int cpuFargate CPU units (256, 512, 1024, 2048, 4096) -
memory
public int memoryFargate memory in MB -
instanceType
EC2 instance type (e.g., "t3.micro", "t3.small") -
containerImage
Override container image tag -
retainStorage
Retain EFS/EBS volumes on stack deletion -
existingFileSystemId
Reuse existing EFS by ID (for disaster recovery workflows) -
artifactsBucket
S3 bucket for artifacts -
artifactsPrefix
S3 prefix for artifacts -
authMode
Authentication mode -
oidcProvider
OIDC provider (none, cognito, identity-center, external-idp) -
cognitoAutoProvision
Auto-provision new Cognito User Pool -
cognitoUserPoolName
Cognito User Pool name -
cognitoDomainPrefix
Cognito domain prefix (must be globally unique) -
cognitoMfaEnabled
Enable MFA for Cognito -
cognitoMfaMethod
Cognito MFA method -
cognitoSelfSignupEnabled
Overrides the security-profile default for whether users can self-register on the Cognito hosted UI (development defaults to allowed, staging/production to admin-only). Leftnull, the profile default applies unchanged. Self-signup is not enforced by any compliance framework rule today — a self-registered user still gets no group membership and resolves to the lowest-privilege role — but enabling it while a compliance framework is active (advisory or enforce) logs a warning at synthesis time, since open self-registration into an ops panel is a common audit finding independent of what role it grants. -
cognitoCreateGroups
Create admin and user groups in Cognito -
cognitoAdminGroupName
Admin group name -
cognitoUserGroupName
User group name -
cognitoInitialAdminEmail
Initial admin email address -
cognitoInitialAdminPhone
Initial admin phone number (E.164 format) -
cognitoUserPoolId
Existing Cognito User Pool ID -
cognitoAppClientId
Existing Cognito App Client ID -
oidcIssuer
OIDC issuer URL -
cloudforgeManagerIssuerUrl
CloudForge Manager's own public URL, used as the OIDC issuer when this app trusts a CloudForge Manager install as its identity provider (see com.cloudforgeci.manager.auth.oidcprovider's own package javadoc). Authorization/token/ userinfo endpoints are computed from this one URL (CloudForge Manager's OIDC-provider endpoints are at fixed paths — /oauth2/authorize, /oauth2/token, /userinfo — so unlike the generic external-idp option above, only the base URL needs entering here, not each endpoint separately). -
oidcAuthorizationEndpoint
OIDC authorization endpoint -
oidcTokenEndpoint
OIDC token endpoint -
oidcUserInfoEndpoint
OIDC user info endpoint -
oidcClientId
OIDC client ID — shared by external-idp and cloudforge-manager, both providers where an admin registers this app's client credentials by hand (external IdP's own console, or CloudForge Manager's Trusted Apps settings page) rather than CloudForge auto-provisioning them, so the field means the same thing either way. -
oidcClientSecretName
OIDC client secret name in Secrets Manager — same sharing rationale asoidcClientId. -
enableAgents
public boolean enableAgentsEnable JNLP build agent port (Jenkins: 50000) -
enableSsh
public boolean enableSshEnable Git SSH port (GitLab: 22, Gitea: 2222) -
enableSmtp
public boolean enableSmtpEnable SMTP email port (Mattermost: 587) -
enableSmtps
public boolean enableSmtpsEnable SMTP TLS email port (Mattermost: 465) -
enableClustering
public boolean enableClusteringEnable clustering ports (Mattermost: 8074-8075, Vault: 8201) -
enableDockerRegistry
public boolean enableDockerRegistryEnable container registry port (GitLab: 5050, Nexus: 5000-5002) -
enableMetrics
public boolean enableMetricsEnable Prometheus metrics port (GitLab: 9090) -
enableNotary
public boolean enableNotaryEnable Notary content trust port (Harbor: 4443) -
enableTrivy
public boolean enableTrivyEnable Trivy vulnerability scanner port (Harbor: 8080) -
enableSentinel
public boolean enableSentinelEnable Redis Sentinel port (Redis: 26379) -
enableCluster
public boolean enableClusterEnable Redis Cluster bus port (Redis: 16379) -
autoProvisionIdentityCenter
Auto-provision SAML application in IAM Identity Center -
ssoInstanceArn
IAM Identity Center (SSO) Instance ARN -
ssoGroupId
SSO Group ID -
ssoTargetAccountId
SSO Target Account ID -
identityCenterGroupName
Identity Center group name for user assignment -
provisionDatabase
Provision RDS database for application. Only shown for applications with optional database support (e.g., Metabase, Grafana). Applications requiring database (e.g., Mattermost, GitLab) always provision one. -
databaseEngine
Database engine (e.g., postgres, mysql, mariadb). Default comes from ApplicationSpec.databaseRequirement().engine()Deliberately no static default here (nor on the other
database*fields below with adefaultFrom):DeploymentContextPrepareronly applies a field'sdefaultFrom-resolved ApplicationSpec value when the field is currently null/blank — a non-null Java initializer (this used to be= "postgres") permanently looks "already set" and blocks that resolution forever. That silently forced every app onto engine=postgres/version=15/instanceClass=db.t3.small/storage=20GB/name=appdb unless a caller explicitly overrode every one of these fields together — for a MySQL-only app like WordPress, a form that filled indatabaseEngine=mysqlbut leftdatabaseVersionuntouched produced an impossible "mysql15" RDS parameter group family and failed CloudFormation withCREATE_FAILED.cloudforge-api'sApplicationFactorymerges these fields againstApplicationSpec.databaseRequirement()with the same null-check pattern, now consistently reachable too. -
databaseVersion
Database engine version. Default comes from ApplicationSpec.databaseRequirement().version() -
databaseInstanceClass
RDS instance class (e.g., db.t3.small, db.m5.large). DESTRUCTIVE: Changing this requires resource replacement. BILLING_IMPACT: Larger instances cost more. -
databaseAllocatedStorageGB
Allocated storage in GB. BILLING_IMPACT: More storage costs more. -
databaseMultiAz
Enable Multi-AZ deployment for high availability. BILLING_IMPACT: Multi-AZ doubles database costs. -
databaseReadReplicaCount
Optional number of RDS read replicas. When unset, an application may provide its own default (CloudForge Manager defaults to one); zero explicitly disables replicas for applications that support them. -
databaseName
Database name. IMMUTABLE: Cannot be changed after creation. -
databaseBackupRetentionDays
Backup retention period in days. Compliance frameworks may override: PCI-DSS (90 days), HIPAA (30 days), SOC2 (14 days). -
provisionManagerRedisSessions
Provision an ElastiCache Redis cluster and bind CloudForge Manager's own container to it as a shared session store (CFC_MANAGER_SESSION_MODE=redis), so every Manager instance behind the same ALB recognizes sessions any of the others created — the missing piece for running Manager itself horizontally scaled. OnlyApplicationFactoryacts on this, and only whenapplicationId == cloudforge-manager;visibleWhenbelow keeps it out of every other application's deploy form for the same reason. Requires RDS (embedded H2 isn't safe to share across instances) — seeManagerDeploymentPreset.rdsWithRedisSessions(...)in cloudforge-manager-deployment, the typed pairing this mirrors. Single-instance Manager (the common case) needs nothing beyond the in-memory default and should leave this false. -
provisionManagerAccountCipherKey
Provision a dedicated AWS Secrets Manager entry holding the AES cipher key CloudForge Manager uses to encrypt cross-account connection secrets (external IDs) at rest — seeSecretCipher/AesGcmSecretCipherin cloudforge-manager. Injected into Manager's own ECS task asCFC_MANAGER_ACCOUNT_SECRET_KEYviaecs.Secret.fromSecretsManager(...), mirroring howCFC_MANAGER_DATABASE_PASSWORDis already delivered — never a literal value in the task definition. OnlyApplicationFactoryacts on this, and only whenapplicationId == cloudforge-manager. Defaults totrue(unlikeprovisionManagerRedisSessions) because without it Manager silently falls back toPlaintextSecretCipher— leaving it on is the secure-by-default choice for any real AWS deployment of Manager, not an opt-in scaling feature like Redis. Independent ofprovisionDatabase: even an embedded-H2 Manager deployment benefits from encrypting the secrets it holds. -
managerLicenseKey
A customer's LicenseSeat license key (LS-XXXX-XXXX-XXXX-XXXX), injected at deploy time so an install activates immediately instead of requiring a follow-up visit to the owner-only License settings screen after the stack comes up. When set,ApplicationFactoryprovisions a dedicated Secrets Manager entry for it andContainerFactorybinds that asCFC_MANAGER_LICENSESEAT_LICENSE_KEY— the exact env varManagerRuntimeConfiguration's "stopgap" path already reads (see itsLicenseSeatrecord javadoc, cloudforge-manager). Purely additive: the in-app License settings screen still works, and a key activated through it still takes precedence (seeLicenseKeyStore, cloudforge-manager) — this only seeds the initial value.category = "database"despite not being a database setting: it sits right next toprovisionManagerAccountCipherKeyabove for the same reason that field does —InteractiveDeployer.configureDatabaseOptions()is the one place that currently discovers and prompts for manager-only fields by reflection (ConfigurationIntrospector.discoverVisibleFields(..., "database")); a genuine "security" category discovery pass would also surface ~30 unrelated existing security fields that were never meant for CLI prompting. -
enableRdsDeletionProtectionRemediation
Enable RDS deletion protection remediation -
enableRdsAutoMinorVersionUpgradeRemediation
Enable RDS auto minor version upgrade remediation -
complianceFrameworks
Compliance frameworks to enable.Supports comma-separated string format in JSON for backward compatibility:
{"complianceFrameworks": "soc2,pci-dss,hipaa"}In Java code, use the type-safe List:
config.complianceFrameworks.contains(ComplianceFrameworkType.HIPAA)
-
complianceMode
Compliance validation mode controlling how validation failures are handled. -
logRetentionDays
CloudWatch Logs retention days -
enableMonitoring
Enable CloudWatch monitoring -
enableEncryption
Enable encryption at rest -
awsConfigEnabled
Enable AWS Config -
createConfigInfrastructure
Create AWS Config infrastructure -
guardDutyEnabled
Enable GuardDuty threat detection -
createGuardDutyDetector
Create GuardDuty detector (account-region singleton) -
guardDutyAlertsConfigured
GuardDuty alerts configured (EventBridge to SNS/SIEM) -
certificateExpirationMonitoring
Certificate expiration monitoring enabled -
cloudTrailEnabled
Enable CloudTrail for API audit logging -
securityMonitoringEnabled
Enable security monitoring -
efsEncryptionInTransitEnabled
Enable EFS encryption in transit -
restrictSecurityGroupEgress
Restrict security group egress to VPC CIDR only (requires VPC endpoints for AWS service access) -
automatedBackupEnabled
Enable automated backups (null = use security profile default) -
crossRegionBackupEnabled
Enable cross-region backups (null = use security profile default) -
macieEnabled
Enable Amazon Macie for PII/PHI discovery (HIPAA/GDPR) -
macieAutomatedDiscovery
Enable Macie automated discovery jobs -
securityHubEnabled
Enable AWS Security Hub for centralized security findings -
inspectorEnabled
Enable Amazon Inspector for vulnerability scanning -
antiMalwareEnabled
Enable anti-malware scanning -
fileIntegrityMonitoring
Enable file integrity monitoring -
containerRuntimeSecurity
Enable container runtime security monitoring -
containerImageScanning
Enable container image vulnerability scanning -
auditManagerEnabled
Enable AWS Audit Manager -
cloudWatchLogsKmsEncryptionEnabled
Enable CloudWatch Logs KMS encryption -
cloudTrailInsightsEnabled
Enable CloudTrail Insights -
route53QueryLoggingEnabled
Enable Route53 Query Logging -
s3ObjectLockEnabled
Enable S3 Object Lock for audit buckets (HIPAA/PCI-DSS immutability requirement) -
enableS3VersioningRemediation
Enable S3 versioning remediation -
enableCloudTrailBucketAccessRemediation
Enable CloudTrail bucket access logging remediation -
healthCheckGracePeriod
public int healthCheckGracePeriod -
healthCheckInterval
public int healthCheckInterval -
healthCheckTimeout
public int healthCheckTimeout -
healthyThreshold
public int healthyThreshold -
unhealthyThreshold
public int unhealthyThreshold -
region
AWS region (e.g., "us-east-1", "us-west-2") -
account
Target AWS account id to pin CDK'sEnvironment.accountto at synth time.Deliberately not a
@ConfigField—ConfigurationIntrospectorandDeploymentContextPreparerboth skip unannotated fields, so this never appears in the generated deployment-context form/schema and never gets a default resolved for it. It exists purely for callers that already know the target account programmatically (cross-account deploy: CloudForge Manager resolves this from an assumed IAM role before synthesis — seecloudforge-manager's account-connection feature, which owns every concept of "which account" beyond this bare pass-through field).When
null(the default — every existing caller), behavior is completely unchanged from before this field existed:cloudforge-api'sCloudForgeSynthesizerfalls back to its priorCDK_DEFAULT_ACCOUNT-env-var-or-omit resolution, producing the same account-agnostic template it always has. -
gdprDataTransferApproved
GDPR data transfer approval flag for non-EU deployments. -
availabilityZones
Availability zone suffixes for deployment (region-relative — "a" means whichever zone the deploy's own region calls "a", not a specific full zone name, since the same suffix set is valid regardless of which region gets picked elsewhere in the form). -
enableAutoScaling
Enable auto-scaling -
managerUrl
Base URL of a running CloudForge Manager (e.g. http://127.0.0.1:1958). Optional — when unset/unreachable, deploy history POSTs are skipped. -
managerTarget
Default inventory target for Manager clients (ministack | aws). -
managerHistoryToken
Bearer token for POST /api/v1/history. Prefer CFC_MANAGER_HISTORY_TOKEN env — do not commit. -
managerDirectDeployEnabled
Opt-in: grants CloudForge Manager's own task/instance role the direct-deploy IAM capabilities (CFN_DEPLOY/SC_PROVISION— seeManagerAwsCapabilityCatalog), condition-scoped to CloudForge-tagged resources. Only has any effect when this deployment'sapplicationIdiscloudforge-manager; a no-op for every other application. Defaults to false — Manager deploying AWS infrastructure on a caller's behalf (viadeploy:create/deploy:catalog) is a materially broader permission grant than Manager's normal inventory/operator role, so it must be explicitly requested per deployment, not inherited automatically from IAM profile.
-
-
Constructor Details
-
DeploymentConfig
public DeploymentConfig()
-
-
Method Details
-
fromFile
Load DeploymentConfig from a JSON file (e.g., deployment-context.json).- Parameters:
path- Path to the JSON file- Returns:
- DeploymentConfig populated from JSON
- Throws:
IOException- if file cannot be read or parsed
-
fromFile
Load DeploymentConfig from a JSON file path string.- Parameters:
filePath- Path to the JSON file- Returns:
- DeploymentConfig populated from JSON
- Throws:
IOException- if file cannot be read or parsed
-
fromJson
public static DeploymentConfig fromJson(String json) throws com.fasterxml.jackson.core.JsonProcessingException Load DeploymentConfig from a JSON string.- Parameters:
json- JSON string- Returns:
- DeploymentConfig populated from JSON
- Throws:
com.fasterxml.jackson.core.JsonProcessingException- if JSON cannot be parsed
-
fromMap
Load DeploymentConfig from a Map (e.g., CDK context).Uses Jackson's type-safe conversion to handle:
- String → Enum conversion via @JsonCreator methods
- String/Number → Boolean conversion (supports "1", "yes", "0", "no")
- Comma-separated strings → List conversion (complianceFrameworks)
- Unknown properties are ignored for forward compatibility
- Parameters:
map- Map containing configuration key-value pairs- Returns:
- DeploymentConfig populated from the map
-
toJson
Serialize this DeploymentConfig to a JSON string.- Returns:
- JSON string representation
- Throws:
com.fasterxml.jackson.core.JsonProcessingException- if serialization fails
-
toFile
Save this DeploymentConfig to a JSON file.- Parameters:
path- Path to write the JSON file- Throws:
IOException- if file cannot be written
-
toFile
Save this DeploymentConfig to a JSON file path string.- Parameters:
filePath- Path to write the JSON file- Throws:
IOException- if file cannot be written
-
getComplianceFrameworksAsString
Returns the compliance frameworks as a comma-separated string. Provided for backward compatibility with code expecting the old string format.- Returns:
- comma-separated framework string (e.g., "soc2,pci-dss,hipaa")
-
hasComplianceFramework
Checks if a specific compliance framework is enabled.- Parameters:
framework- the framework to check- Returns:
- true if the framework is in the list
-
hasAnyComplianceFramework
public boolean hasAnyComplianceFramework()Checks if any compliance framework is enabled.- Returns:
- true if at least one framework is configured
-
toContextMap
-
toHistoryContextMap
Context map safe for durable deploy history.Same shape as
toContextMap(), but omits fields annotated with@ConfigField(sensitive = true)(and theirJsonAliasnames). New non-sensitive@ConfigFields appear automatically.- Returns:
- redacted map suitable for Manager history
detail.deploymentContext
-