In this step we will finalize the configuration of our service so we can deploy it to our AWS development account.
systemconfig.yaml is the configuration file for a system environment. Each environment (dev, test, prod) has its own systemconfig.yaml file. This file contains the parameters for the deployment used by the Deploy-* commands in the LzAws PowerShell module.
Here is an example "dev" systemconfig.yaml file for our sample system:
# systemconfig.yaml is the configuration file for a system environment.
# Each environment (dev, test, prod) has its own systemconfig.yaml file.
# This file contains the parameters for the deployment used by
# the Deploy-* commands in the LzAws PowerShell module.
#
# Start with the AWSTemplates/systemconfig.template.yaml template (this file)_.
# This file should be located immediately above the
# Service solution folder.
# AdminEmail is the email address of the system administrator. This is
# used in the AWS CloudFormation templates to send a Tenant User Pool
# invitation to the Administrator user.
AdminAuth: "TenantAuth" # This is the name of the Authentication to create the Administrator user in
AdminEmail: "me@mydomain.com"
# SystemSuffix is a short random string used to ensure uniqueness of
# S3 bucket names. We suggest you generate a GUID and use the
# middle section to get a unique SystemSuffix.
# Needs to be lowercase alphanumeric. Keep it to 9 characters
# to avoid generating S3 bucket names that are too long.
SystemSuffix: "xxxx-xxxx"
# SystemKey is a prefix ensuring AWS resource names are unique
# within an AWS account when multiple systems are deployed.
# You can use the same SystemKey for Dev, Test, and Prod environments
# if you are deploying the environments in different AWS accounts
# (which is recommended).
# It should be short (3-5 characters) and lowercase alphanumeric.
SystemKey: "lzm" # This is the name of the cloudformation stack that will be created to deploy the system.
# Environment is the type of environment being deployed. It is one of
# dev, test, or prod. This value is used in some AWS Templates to
# tailor resource creation.
Environment: 'dev'
# Profile is the name of the AWS profile used to deploy the system. We recommend
# you use use profile names that use a SystemKey-Environment pattern.
# Profiles generally use AWS SSO to authenticate.
Profile: "lzm-dev"
Region: "us-west-2"
# DefaultTenancy is the default tenancy for development
DefaultTenant: "uptown.mydomain.com"
# Behaviors
# Behaviors define the routing rules for system requests.
# Each behavior has a Path and an optional ApiName or AppName.
# System level Behaviors often serve as "defaults" that may
# be overridden by Tenant or Subtenant Behaviors.
Behaviors:
# API Behaviors define the routing rules for API requests.
# Api Properties include: Path, ApiName
Apis:
# Apis match the API directives in the lazymagic.yaml file.
- Path: "/StoreApi"
ApiName: "StoreApi"
- Path: "/PublicApi"
ApiName: "PublicApi"
- Path: "/ConsumerApi"
ApiName: "ConsumerApi"
- Path: "/AdminApi"
ApiName: "AdminApi"
# Asset Behaviors define the routing rules for asset requests.
# Asset Properties include: Path, Suffix
Assets:
- Path: "/system/"
# WebApp Behaviors define the routing rules for webapp requests.
# WebApp Properties include: Path, AppName, Suffix
# Path may contain one or more paths separated by commas.
# If you don't specify a suffix then the system suffix will be
# used'
WebApps:
# WebApps match the WebApp directives in the lazymagic.yaml file.
- Path: "/store/,/store,/"
AppName: "storeapp"
- Path: "/app/,/app,"
AppName: "consumerapp"
- Path: "/admin/,/admin,"
AppName: "adminapp"
# Tenants define the tenants in the system.
#
Tenants:
mp: # tenantKey - See documentation for naming guidelines
# RootDomain, HostedZoneId, and AcmCertificateArn are required for each tenant
# and you use the AWS Console to create the hosted zone and certificate. You
# may also use the AWS Console to purchase a domain name.
RootDomain: "mydomain.com" # Each Tenant has it's own domain.
HostedZoneId: "xxxxxxxxxxxxxxxxxxxxx" # Provide the AWS hosted zone id for the tenant domain
AcmCertificateArn: "arn:aws:acm:us-east-1:999999999999:certificate/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # AWS certificate for tenant domain
# Tenant Behaviors define the routing rules for tenant requests.
# They have the same properties as the system level behaviors.
# You can override a system level behavior by specifying the same path.
# If you don't specify a suffix then the system suffix will be used.
# You may define tenant specific behaviors for APIs, Assets, and WebApps.
Behaviors:
Assets:
- Path: "/tenancy/"
Subtenants:
uptown: # subtenantKey - See documentation for naming guidelines
# SubDomain is the subdomain for the subtenant. It is
# usually the same as the subtenantKey but can be different
# if required.
SubDomain: uptown
# Subtenant Behaviors define the routing rules for subtenant requests.
# They have the same properties as the system and tenant level behaviors.
# You can override a system or tenant level behavior by specifying the
# same path. If you don't specify a suffix then the tenant suffix will
# be used. Note that the tenant suffix might be the system suffix.
# You may define subtenant specific behaviors for APIs, Assets, and WebApps.
Behaviors:
Assets:
- Path: "/subtenancy/"
downtown: # subtenantKey - See documentation for naming guidelines
SubDomain: downtown
Behaviors:
Assets:
- Path: "/subtenancy/"
Navigate to the _Dev/MagicPets
folder.
Copy the file template above and then create the systemconfig.yaml file in that folder. Update the following values: