AWSDeployer
Abstract Class: AWSDeployer<T>
Defined in: aws/src/deployers/awsdeployer.ts:121
Abstract AWS Deployer
It includes some basic utilities methods to be used by
final deployers. A final deployer declares implements Deployer itself.
Extends
Service<T>
Extended by
Type Parameters
T
T extends AWSDeployerParameters = AWSDeployerParameters
Constructors
Constructor
new AWSDeployer<
T>(name,params):AWSDeployer<T>
Defined in: core/lib/services/service.d.ts:72
Service
Parameters
name
string
The name of the service
params
T
The parameters block define in the configuration file
Returns
AWSDeployer<T>
Inherited from
Service<T>.constructor
Properties
_compiledCapabilities
protected_compiledCapabilities:Record<string,any>
Defined in: core/lib/services/iservice.d.ts:39
Capabilities detected at compile-time from @WebdaCapability-tagged interfaces.
Populated during Service.resolve by reading the service's entry in
webda.module.json. Each key is a capability name (e.g., "request-filter"),
and the value is an empty object {} by default. Override getCapabilities
to provide capability-specific configuration or to conditionally disable capabilities.
See
getCapabilities
Inherited from
Service._compiledCapabilities
[WEBDA_EVENTS]
[WEBDA_EVENTS]:
object
Defined in: core/lib/services/service.d.ts:50
Set the Webda events here
Inherited from
Service.[WEBDA_EVENTS]
logger
protectedlogger:Logger
Defined in: core/lib/services/service.d.ts:59
Logger with class context
Inherited from
Service.logger
metrics?
protectedoptionalmetrics?:object
Defined in: core/lib/services/service.d.ts:63
Get metrics
Inherited from
Service.metrics
name
readonlyname:string
Defined in: core/lib/services/iservice.d.ts:19
Inherited from
Service.name
parameters
readonlyparameters:T
Defined in: core/lib/services/iservice.d.ts:20
Inherited from
Service.parameters
resources
resources:
DeployerResources<T> &object
Defined in: aws/src/deployers/awsdeployer.ts:127
Parameters of the deployer with the deployment variables replaced and the defaults applied
Computed by AWSDeployer.prepare
createConfiguration?
staticoptionalcreateConfiguration?: (params) =>any
Defined in: core/lib/services/iservice.d.ts:24
Create configuration set by the application on load
Parameters
params
any
Returns
any
Inherited from
Service.createConfiguration
filterConfiguration?
staticoptionalfilterConfiguration?: (params) =>any
Defined in: core/lib/services/iservice.d.ts:28
Create configuration set by the application on load
Parameters
params
any
Returns
any
Inherited from
Service.filterConfiguration
Parameters
staticParameters: typeofServiceParameters
Defined in: core/lib/services/service.d.ts:46
Service parameters
Inherited from
Service.Parameters
Methods
__clean()
abstract__clean():Promise<void>
Defined in: core/lib/services/service.d.ts:215
Clean the service data, can only be used in test mode
Returns
Promise<void>
Inherited from
Service.__clean
_replaceForAWS()
_replaceForAWS(
id):string
Defined in: aws/src/deployers/awsdeployer.ts:271
Replace / by _ as theses ID are not allowed in AWS
Parameters
id
string
to replace
Returns
string
the AWS compatible id
addListener()
addListener<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:80
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void | Promise<void>
the event listener
Returns
this
this for chaining
See
EventEmitter.addListener
Inherited from
Service.addListener
addRoute()
protectedaddRoute(url,methods,executer,openapi?,override?):void
Defined in: core/lib/services/service.d.ts:177
Add a route dynamicaly
Parameters
url
string
of the route can contains dynamic part like {uuid}
methods
HttpMethodType[]
the HTTP methods
executer
Function
Method to execute for this route
openapi?
OpenAPIWebdaDefinition
the OpenAPI specification
override?
boolean
whether to override existing
Returns
void
Inherited from
Service.addRoute
authorizeClientEvent()
authorizeClientEvent(
_event,_context):boolean
Defined in: core/lib/services/service.d.ts:153
Authorize a public event subscription
Parameters
_event
string
the event name
_context
OperationContext
the execution context
Returns
boolean
true if the condition is met
Inherited from
Service.authorizeClientEvent
commonPrefix()
commonPrefix(
str1,str2):string
Defined in: aws/src/deployers/awsdeployer.ts:672
Find the common prefix between two strings
Example
commonPrefix("/test/plop1", "/templates/") => "/te"
Parameters
str1
string
to compare
str2
string
to compare
Returns
string
the common prefix
computeParameters()
computeParameters():
void
Defined in: core/lib/services/service.d.ts:77
Used to compute or derivate input parameter to attribute
Returns
void
Deprecated
Inherited from
Service.computeParameters
createBucket()
createBucket(
Bucket):Promise<void>
Defined in: aws/src/deployers/awsdeployer.ts:600
Create a bucket if it does not exist
Parameters
Bucket
string
to create
Returns
Promise<void>
createDNSEntry()
createDNSEntry(
domain,type,value,targetZone?):Promise<void>
Defined in: aws/src/deployers/awsdeployer.ts:493
Create DNS entry
Parameters
domain
string
to create
type
RRType
of DNS
value
string
the value of the record
targetZone?
HostedZone = undefined
the zone, found from the domain if not provided
Returns
Promise<void>
defaultResources()
defaultResources():
Promise<void>
Defined in: aws/src/deployers/awsdeployer.ts:160
Apply the default resources
Returns
Promise<void>
doCreateCertificate()
doCreateCertificate(
domain,zone,region?):Promise<CertificateDetail>
Defined in: aws/src/deployers/awsdeployer.ts:421
Create a certificate for a domain Will use Route 53 to do the validation
Parameters
domain
string
to create the certificate for
zone
HostedZone
to create the validation record in
region?
string
of the certificate
Returns
Promise<CertificateDetail>
the certificate
emit()
emit<
Key>(event,data):Promise<void>
Defined in: core/lib/services/service.d.ts:204
Emit the event with data and wait for Promise to finish if listener returned a Promise
Type Parameters
Key
Key extends never
Parameters
event
Key
the event name
data
object[Key]
the data to process
Returns
Promise<void>
Inherited from
Service.emit
getApplicationServices()
getApplicationServices():
Service<ServiceParameters, { }>[]
Defined in: aws/src/deployers/awsdeployer.ts:589
Services of the application, the deployers excluded
Returns
Service<ServiceParameters, { }>[]
the services
getARNPolicy()
getARNPolicy(
accountId,region):any[]
Defined in: aws/src/deployers/awsdeployer.ts:538
Permissions needed by the deployed application itself
Parameters
accountId
string
the account
region
string
the region
Returns
any[]
the policy statements
getAWSIdentity()
getAWSIdentity():
Promise<GetCallerIdentityResponse>
Defined in: aws/src/deployers/awsdeployer.ts:206
Return the current AWS Identity used
Returns
Promise<GetCallerIdentityResponse>
the identity
getCapabilities()
getCapabilities():
Record<string,any>
Defined in: core/lib/services/iservice.d.ts:61
Return the capabilities of this service.
By default returns capabilities detected at compile-time from
Returns
Record<string, any>
the result
Webda Capability-tagged
interfaces in webda.module.json.
Override to disable capabilities based on configuration:
getCapabilities() {
const caps = super.getCapabilities();
if (!this.parameters.enabled) delete caps["request-filter"];
return caps;
}
Inherited from
Service.getCapabilities
getCertificate()
getCertificate(
domain,region?):Promise<any>
Defined in: aws/src/deployers/awsdeployer.ts:282
Get a certificate or create it
Parameters
domain
string
to get certificate for
region?
string = undefined
of the certificate
Returns
Promise<any>
the certificate
getClientConfig()
getClientConfig(
endpoint?,region?):any
Defined in: aws/src/deployers/awsdeployer.ts:176
Configuration of an AWS client
Parameters
endpoint?
the client, to use its custom endpoint
region?
string
force a region
Returns
any
the client configuration
getClientEvents()
getClientEvents():
string[]
Defined in: core/lib/services/service.d.ts:144
Return the events that an external system can subscribe to
Returns
string[]
the list of results
Inherited from
Service.getClientEvents
getDefaultTags()
getDefaultTags(
key?):object[]
Defined in: aws/src/deployers/awsdeployer.ts:356
Take this.resources[key].Tags and add all remaining Tags from this.resources.Tags
Parameters
key?
string | TagsDefinition
of the resources to add, or the tags themselves
Returns
object[]
the tags array
getDefaultTagsAsMap()
getDefaultTagsAsMap(
key?):object
Defined in: aws/src/deployers/awsdeployer.ts:377
Take this.resources[key].Tags and add all remaining Tags from this.resources.Tags
Parameters
key?
string | TagsDefinition
of the resources to add
Returns
object
the tags map
getDefaultTagsAsS3Tagging()
getDefaultTagsAsS3Tagging(
key?):string
Defined in: aws/src/deployers/awsdeployer.ts:388
Return the S3 Tagging string
Parameters
key?
string | TagsDefinition
of the resources to add
Returns
string
the url encoded tags
getDefaultVpc()
getDefaultVpc():
Promise<{Id:string;Subnets:any[]; }>
Defined in: aws/src/deployers/awsdeployer.ts:216
Return the default VPC for the current region
Returns
Promise<{ Id: string; Subnets: any[]; }>
the VPC id and its subnets, undefined if there is no default VPC
getMaxListeners()
getMaxListeners():
number
Defined in: core/lib/events/asynceventemitter.d.ts:84
Returns
number
Inherited from
Service.getMaxListeners
getMetric()
getMetric<
T>(type,configuration):T
Defined in: core/lib/services/service.d.ts:138
Add service name label
Type Parameters
T
T = Gauge<string> | Counter<string> | Histogram<string>
Parameters
type
CustomConstructor<T, [MetricConfiguration<T>]>
the type to look up
configuration
MetricConfiguration<T>
the configuration
Returns
T
the result
Inherited from
Service.getMetric
getName()
getName():
string
Defined in: core/lib/services/service.d.ts:209
Get service name
Returns
string
the result string
Inherited from
Service.getName
getOpenApiReplacements()
getOpenApiReplacements():
any
Defined in: core/lib/services/service.d.ts:182
Return variables for replacement in openapi
Returns
any
the result
Inherited from
Service.getOpenApiReplacements
getOperationId()
getOperationId(
id):string
Defined in: core/lib/services/service.d.ts:167
If undefined is returned it cancel the operation registration
Parameters
id
string
the identifier
Returns
string
the result
Inherited from
Service.getOperationId
getParameters()
getParameters():
T
Defined in: core/lib/services/service.d.ts:82
Get the service parameters
Returns
T
the result
Inherited from
Service.getParameters
getPolicyDocument()
getPolicyDocument(
additionalStatements?):Promise<any>
Defined in: aws/src/deployers/awsdeployer.ts:560
Generate the PolicyDocument
It will browse all services for a method getARNPolicy
Allowing you to write some specific Service or Bean that
requires specific AWS permissions
Parameters
additionalStatements?
any[] = []
statements to add
Returns
Promise<any>
the optimized policy document
getRawParameters()
protectedgetRawParameters():any
Defined in: aws/src/deployers/awsdeployer.ts:151
Parameters as a plain object
Returns
any
a copy of the parameters
getRegion()
getRegion():
string
Defined in: aws/src/deployers/awsdeployer.ts:197
Return AWS region
Returns
string
the region
getS3()
protectedgetS3():S3
Defined in: aws/src/deployers/awsdeployer.ts:631
S3 client
Returns
S3
the client
getService()
getService<
T>(name):ServicesMap[T]
Defined in: core/lib/services/service.d.ts:131
Get a service by name
Type Parameters
T
T extends keyof ServicesMap
Parameters
name
T
the name to use
Returns
ServicesMap[T]
the result map
Deprecated
Use useService, might reconsider
Inherited from
Service.getService
getState()
getState():
ServiceStates
Defined in: core/lib/services/service.d.ts:55
Get the current state
Returns
ServiceStates
the result
Inherited from
Service.getState
getUrl()
getUrl(
url,_methods):string
Defined in: core/lib/services/service.d.ts:161
Return the full path url based on parameters
Parameters
url
string
relative url to service
_methods
HttpMethodType[]
in case we need filtering (like Store)
Returns
string
absolute url or undefined if need to skip the Route
Inherited from
Service.getUrl
getZoneForDomainName()
getZoneForDomainName(
domain):Promise<HostedZone>
Defined in: aws/src/deployers/awsdeployer.ts:314
Get the closest zone to the domain
Parameters
domain
string
to get zone for
Returns
Promise<HostedZone>
the zone
hash()
protectedhash(str,type?,format?):string
Defined in: aws/src/deployers/awsdeployer.ts:261
Hash the string
Parameters
str
string | Buffer<ArrayBufferLike>
to hash
type?
string = "md5"
of hash
format?
"hex" | "base64"
hex or b64
Returns
string
the hash
init()
abstractinit():Promise<AWSDeployer<T>>
Defined in: core/lib/services/service.d.ts:198
Will be called after all the Services are created
Returns
Promise<AWSDeployer<T>>
Inherited from
Service.init
initMetrics()
initMetrics():
void
Defined in: core/lib/services/service.d.ts:124
Init the metrics
Returns
void
Inherited from
Service.initMetrics
initOperations()
initOperations():
void
Defined in: core/lib/services/service.d.ts:186
Init the operations from
Returns
void
Operation
decorators on this service
Inherited from
Service.initOperations
listeners()
listeners(
eventName):Function[]
Defined in: core/lib/events/asynceventemitter.d.ts:139
Get all listeners for an event
Parameters
eventName
never
the event name
Returns
Function[]
the list of results
Inherited from
Service.listeners
loadCapabilities()
protectedloadCapabilities():void
Defined in: core/lib/services/service.d.ts:120
Load capabilities from webda.module.json metadata into _compiledCapabilities.
Called during resolve after dependency injection. Reads the service's
type name from parameters, looks it up in the application's module metadata
(moddas or beans section), and populates _compiledCapabilities with an
empty object for each declared capability name.
Fails silently if the application is not available (e.g., in unit tests where services are instantiated without a full application context).
Returns
void
Example
// If webda.module.json contains:
// { "moddas": { "MyApp/HawkService": { "capabilities": ["request-filter", "cors-filter"] } } }
// Then after resolve(), this.getCapabilities() returns:
// { "request-filter": {}, "cors-filter": {} }
See
getCapabilities
Inherited from
Service.loadCapabilities
log()
log(
level, ...args):void
Defined in: core/lib/services/service.d.ts:226
Parameters
level
WorkerLogLevel
to log
args
...any[]
additional arguments
Returns
void
Inherited from
Service.log
md5()
protectedmd5(str):string
Defined in: aws/src/deployers/awsdeployer.ts:249
Generate a MD5 in hex
Parameters
str
string
to hash
Returns
string
the hash
off()
off<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:116
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.off
Inherited from
Service.off
on()
on<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:102
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.once
Inherited from
Service.on
once()
once<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:95
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.once
Inherited from
Service.once
prepare()
prepare(
extra?):Promise<DeployerResources<T> &object>
Defined in: aws/src/deployers/awsdeployer.ts:135
Compute the resources from the parameters
Parameters
extra?
Record<string, any> = {}
additional deployment variables
Returns
Promise<DeployerResources<T> & object>
the resources
putFilesOnBucket()
putFilesOnBucket(
bucket,files):Promise<void>
Defined in: aws/src/deployers/awsdeployer.ts:694
Add files to a bucket
It uses hash and ETag to avoid uploading files already present
The files src can be either:
- a string representing the local path
- a Buffer with the dynamic content
Parameters
bucket
string
to send bucket
files
object[]
to send
Returns
Promise<void>
putFolderOnBucket()
putFolderOnBucket(
bucket,folder,prefix?):Promise<void>
Defined in: aws/src/deployers/awsdeployer.ts:645
Send a full folder (recursive) on bucket
Parameters
bucket
string
to send data to
folder
string
path to local folder to send
prefix?
string = ""
prefix on the bucket
Returns
Promise<void>
removeAllListeners()
removeAllListeners<
Key>(eventName?):this
Defined in: core/lib/events/asynceventemitter.d.ts:122
Type Parameters
Key
Key extends never
Parameters
eventName?
Key
the event name
Returns
this
this for chaining
See
EventEmitter.removeAllListeners
Inherited from
Service.removeAllListeners
removeListener()
removeListener<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:109
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.removeListener
Inherited from
Service.removeListener
resolve()
resolve():
this
Defined in: core/lib/services/service.d.ts:98
Resolve parameters and load metadata. @Route-declared routes are scanned
and registered by Router.discoverRoutes(services) from Core.init()
once every service has resolved — nothing to do per-service here.
Returns
this
the result
Inherited from
Service.resolve
setMaxListeners()
setMaxListeners(
n):this
Defined in: core/lib/events/asynceventemitter.d.ts:88
Parameters
n
number
Returns
this
Inherited from
Service.setMaxListeners
stop()
stop():
Promise<void>
Defined in: core/lib/services/service.d.ts:86
Shutdown the current service if action need to be taken
Returns
Promise<void>
Inherited from
Service.stop
toJSON()
toJSON():
string
Defined in: core/lib/services/service.d.ts:191
Prevent service to be serialized
Returns
string
the result
Inherited from
Service.toJSON
toString()
toString():
string
Defined in: core/lib/services/service.d.ts:91
Return service representation
Returns
string
the result
Inherited from
Service.toString
transformArrayTagsToMap()
transformArrayTagsToMap(
tags):object
Defined in: aws/src/deployers/awsdeployer.ts:341
Transform a tag array into a tag map
Parameters
tags
to transform
Returns
object
the tags map
transformMapTagsToArray()
transformMapTagsToArray(
tags):object[]
Defined in: aws/src/deployers/awsdeployer.ts:324
Transform a tag map into a tag array
Parameters
tags
to transform
Returns
object[]
the tags array
waitFor()
waitFor(
callback,retries,title,delay):Promise<any>
Defined in: aws/src/deployers/awsdeployer.ts:403
Wait for a condition with a linear delay
Parameters
callback
(resolve?, reject?) => Promise<boolean>
resolve when done, return true to stop
retries
number
maximum number of tries
title
string
of the wait
delay
number
between tries in ms
Returns
Promise<any>
the resolved value