## MedplumSourceInfraConfig interface

**Signature:**

```typescript
export interface MedplumSourceInfraConfig
```

## Properties

| Property | Modifiers | Type | Description |
| --- | --- | --- | --- |
| [accountNumber](/content/docs/sdk/core.medplumsourceinfraconfig.accountnumber) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [additionalContainers?](/content/docs/sdk/core.medplumsourceinfraconfig.additionalcontainers) |  | { name: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; image: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; cpu?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; memory?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; essential?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean>; command?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>\[\]; environment?: { [key: string]: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; }; }\[\] | _(Optional)_ |
| [apiDomainName](/content/docs/sdk/core.medplumsourceinfraconfig.apidomainname) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [apiInternetFacing?](/content/docs/sdk/core.medplumsourceinfraconfig.apiinternetfacing) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean> | _(Optional)_ |
| [apiPort](/content/docs/sdk/core.medplumsourceinfraconfig.apiport) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number> |  |
| [apiSslCertArn](/content/docs/sdk/core.medplumsourceinfraconfig.apisslcertarn) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [apiWafIpSetArn](/content/docs/sdk/core.medplumsourceinfraconfig.apiwafipsetarn) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [appApiProxy?](/content/docs/sdk/core.medplumsourceinfraconfig.appapiproxy) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean> | _(Optional)_ |
| [appDomainName](/content/docs/sdk/core.medplumsourceinfraconfig.appdomainname) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [appLoggingBucket?](/content/docs/sdk/core.medplumsourceinfraconfig.apploggingbucket) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [appLoggingPrefix?](/content/docs/sdk/core.medplumsourceinfraconfig.apploggingprefix) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [appSslCertArn](/content/docs/sdk/core.medplumsourceinfraconfig.appsslcertarn) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [appWafIpSetArn](/content/docs/sdk/core.medplumsourceinfraconfig.appwafipsetarn) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [backgroundJobsRedis?](/content/docs/sdk/core.medplumsourceinfraconfig.backgroundjobsredis) |  | { nodeType?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; securityGroupId?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; engine?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; engineVersion?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; } | _(Optional)_ |
| [baseUrl](/content/docs/sdk/core.medplumsourceinfraconfig.baseurl) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [cacheEngine?](/content/docs/sdk/core.medplumsourceinfraconfig.cacheengine) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [cacheEngineVersion?](/content/docs/sdk/core.medplumsourceinfraconfig.cacheengineversion) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [cacheNodeType?](/content/docs/sdk/core.medplumsourceinfraconfig.cachenodetype) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [cacheRedis?](/content/docs/sdk/core.medplumsourceinfraconfig.cacheredis) |  | { nodeType?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; securityGroupId?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; engine?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; engineVersion?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; } | _(Optional)_ |
| [cacheSecurityGroupId?](/content/docs/sdk/core.medplumsourceinfraconfig.cachesecuritygroupid) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [clamscanEnabled?](/content/docs/sdk/core.medplumsourceinfraconfig.clamscanenabled) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean> | _(Optional)_ |
| [clamscanLoggingBucket?](/content/docs/sdk/core.medplumsourceinfraconfig.clamscanloggingbucket) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [clamscanLoggingPrefix?](/content/docs/sdk/core.medplumsourceinfraconfig.clamscanloggingprefix) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [cloudTrailAlarms?](/content/docs/sdk/core.medplumsourceinfraconfig.cloudtrailalarms) |  | { logGroupName: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; logGroupCreate?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean>; snsTopicArn?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; snsTopicName?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; } | _(Optional)_ |
| [containerInsightsV2?](/content/docs/sdk/core.medplumsourceinfraconfig.containerinsightsv2) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <'enabled' \| 'disabled' \| 'enhanced'> | _(Optional)_ |
| [containerRegistryCredentialsSecretArn?](/content/docs/sdk/core.medplumsourceinfraconfig.containerregistrycredentialssecretarn) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [desiredServerCount](/content/docs/sdk/core.medplumsourceinfraconfig.desiredservercount) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number> |  |
| [domainName](/content/docs/sdk/core.medplumsourceinfraconfig.domainname) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [environment?](/content/docs/sdk/core.medplumsourceinfraconfig.environment) |  | [StringMap](/content/docs/sdk/core.stringmap) | _(Optional)_ |
| [fargateAutoScaling?](/content/docs/sdk/core.medplumsourceinfraconfig.fargateautoscaling) |  | { minCapacity: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; maxCapacity: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; targetUtilizationPercent: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; scaleInCooldown: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; scaleOutCooldown: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; } | _(Optional)_ |
| [fireLens?](/content/docs/sdk/core.medplumsourceinfraconfig.firelens) |  | { enabled: true; logDriverConfig?: { options?: { [key: string]: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; }; secretOptions?: { [key: string]: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; }; }; logRouterConfig: { type: 'fluentbit' \| 'fluentd'; options?: Record<string, unknown>; }; environment?: { [key: string]: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; }; } | _(Optional)_ |
| [guardDutyMalwareProtectionEnabled?](/content/docs/sdk/core.medplumsourceinfraconfig.guarddutymalwareprotectionenabled) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean> | _(Optional)_ |
| [hostedZoneName?](/content/docs/sdk/core.medplumsourceinfraconfig.hostedzonename) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [loadBalancerAlgorithm?](/content/docs/sdk/core.medplumsourceinfraconfig.loadbalanceralgorithm) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <'round_robin' \| 'least_outstanding_requests' \| 'weighted_random'> | _(Optional)_ |
| [loadBalancerLoggingBucket?](/content/docs/sdk/core.medplumsourceinfraconfig.loadbalancerloggingbucket) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [loadBalancerLoggingPrefix?](/content/docs/sdk/core.medplumsourceinfraconfig.loadbalancerloggingprefix) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [loadBalancerSecurityGroupId?](/content/docs/sdk/core.medplumsourceinfraconfig.loadbalancersecuritygroupid) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [maxAzs](/content/docs/sdk/core.medplumsourceinfraconfig.maxazs) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number> |  |
| [mtlsDomainName?](/content/docs/sdk/core.medplumsourceinfraconfig.mtlsdomainname) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [mtlsInternetFacing?](/content/docs/sdk/core.medplumsourceinfraconfig.mtlsinternetfacing) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean> | _(Optional)_ |
| [mtlsSslCertArn?](/content/docs/sdk/core.medplumsourceinfraconfig.mtlssslcertarn) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [mtlsWafIpSetArn?](/content/docs/sdk/core.medplumsourceinfraconfig.mtlswafipsetarn) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [name](/content/docs/sdk/core.medplumsourceinfraconfig.name) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [pubSubRedis?](/content/docs/sdk/core.medplumsourceinfraconfig.pubsubredis) |  | { nodeType?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; securityGroupId?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; engine?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; engineVersion?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; } | _(Optional)_ |
| [rateLimitRedis?](/content/docs/sdk/core.medplumsourceinfraconfig.ratelimitredis) |  | { nodeType?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; securityGroupId?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; engine?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; engineVersion?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; } | _(Optional)_ |
| [rdsAutoMinorVersionUpgrade?](/content/docs/sdk/core.medplumsourceinfraconfig.rdsautominorversionupgrade) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean> | _(Optional)_ |
| [rdsClusterParameters?](/content/docs/sdk/core.medplumsourceinfraconfig.rdsclusterparameters) |  | [StringMap](/content/docs/sdk/core.stringmap) | _(Optional)_ |
| [rdsForceRetain?](/content/docs/sdk/core.medplumsourceinfraconfig.rdsforceretain) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean> | _(Optional)_ |
| [rdsIdsMajorVersionSuffix?](/content/docs/sdk/core.medplumsourceinfraconfig.rdsidsmajorversionsuffix) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean> | _(Optional)_ |
| [rdsInstances](/content/docs/sdk/core.medplumsourceinfraconfig.rdsinstances) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number> |  |
| [rdsInstanceType](/content/docs/sdk/core.medplumsourceinfraconfig.rdsinstancetype) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [rdsInstanceVersion?](/content/docs/sdk/core.medplumsourceinfraconfig.rdsinstanceversion) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [rdsPersistentParameterGroups?](/content/docs/sdk/core.medplumsourceinfraconfig.rdspersistentparametergroups) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean> | _(Optional)_ |
| [rdsProxyEnabled?](/content/docs/sdk/core.medplumsourceinfraconfig.rdsproxyenabled) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean> | _(Optional)_ |
| [rdsReaderInstanceType?](/content/docs/sdk/core.medplumsourceinfraconfig.rdsreaderinstancetype) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [rdsSecretsArn?](/content/docs/sdk/core.medplumsourceinfraconfig.rdssecretsarn) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [region](/content/docs/sdk/core.medplumsourceinfraconfig.region) |  | string |  |
| [serverCpu](/content/docs/sdk/core.medplumsourceinfraconfig.servercpu) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number> |  |
| [serverImage](/content/docs/sdk/core.medplumsourceinfraconfig.serverimage) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [serverMemory](/content/docs/sdk/core.medplumsourceinfraconfig.servermemory) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number> |  |
| [signingKeyId](/content/docs/sdk/core.medplumsourceinfraconfig.signingkeyid) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [skipDns?](/content/docs/sdk/core.medplumsourceinfraconfig.skipdns) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean> | _(Optional)_ |
| [stackName](/content/docs/sdk/core.medplumsourceinfraconfig.stackname) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [storageBucketName](/content/docs/sdk/core.medplumsourceinfraconfig.storagebucketname) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [storageDomainName](/content/docs/sdk/core.medplumsourceinfraconfig.storagedomainname) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [storageLoggingBucket?](/content/docs/sdk/core.medplumsourceinfraconfig.storageloggingbucket) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [storageLoggingPrefix?](/content/docs/sdk/core.medplumsourceinfraconfig.storageloggingprefix) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [storagePublicKey](/content/docs/sdk/core.medplumsourceinfraconfig.storagepublickey) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [storageSslCertArn](/content/docs/sdk/core.medplumsourceinfraconfig.storagesslcertarn) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [storageWafIpSetArn](/content/docs/sdk/core.medplumsourceinfraconfig.storagewafipsetarn) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [vpcId](/content/docs/sdk/core.medplumsourceinfraconfig.vpcid) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> |  |
| [wafLogGroupCreate?](/content/docs/sdk/core.medplumsourceinfraconfig.wafloggroupcreate) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean> | _(Optional)_ |
| [wafLogGroupName?](/content/docs/sdk/core.medplumsourceinfraconfig.wafloggroupname) |  | [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string> | _(Optional)_ |
| [workers?](/content/docs/sdk/core.medplumsourceinfraconfig.workers) |  | { enabled?: string\[\]; bullmq?: Record<string, unknown>; } | _(Optional)_ |
| [workerServices?](/content/docs/sdk/core.medplumsourceinfraconfig.workerservices) |  | { id: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; serverImage?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; serverMemory?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; serverCpu?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; desiredCount: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; environment?: [StringMap](/content/docs/sdk/core.stringmap); workers?: { enabled?: string\[\]; bullmq?: Record<string, unknown>; }; fargateAutoScaling?: { minCapacity: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; maxCapacity: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; targetUtilizationPercent: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; scaleInCooldown: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; scaleOutCooldown: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; }; additionalContainers?: { name: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; image: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; cpu?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; memory?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <number>; essential?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <boolean>; command?: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>\[\]; environment?: { [key: string]: [ValueOrExternalSecret](/content/docs/sdk/core.valueorexternalsecret) <string>; }; }\[\]; }\[\] | _(Optional)_ |
