Source code for runway.module.staticsite.parameters._models
"""Runway static site Module parameters."""from__future__importannotationsfrompydanticimportConfigDict,Field,field_validatorfrom....config.models.baseimportConfigProperty
[docs]classRunwayStaticSiteCustomErrorResponseDataModel(ConfigProperty):"""Model for Runway stat site Module staticsite_custom_error_responses parameter item. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customerrorresponse.html """model_config=ConfigDict(extra="forbid",title="Runway static site Module staticsite_custom_error_responses parameter item",validate_default=True,validate_assignment=True,)ErrorCachingMinTTL:int|None=NoneErrorCode:int|None=NoneResponseCode:int|None=NoneResponsePagePath:str|None=None
[docs]classRunwayStaticSiteLambdaFunctionAssociationDataModel(ConfigProperty):"""Model for Runway stat site Module staticsite_lambda_function_associations parameter item."""model_config=ConfigDict(extra="forbid",title="Runway static site Module staticsite_lambda_function_associations parameter item",validate_default=True,validate_assignment=True,)arn:str"""Lambda function ARN."""type:str"""Association type."""
def_staticsite_alias_generator(field_name:str)->str:"""Append ``staticsite`` to field names. Some fields are excluded from having aliases (e.g. namespace). """returnf"staticsite_{field_name}"iffield_name!="namespace"elsefield_name
[docs]classRunwayStaticSiteModuleParametersDataModel(ConfigProperty):"""Model for Runway static site Module parameters."""model_config=ConfigDict(alias_generator=_staticsite_alias_generator,extra="ignore",populate_by_name=True,title="Runway static site Module parameters",validate_default=True,validate_assignment=True,)acmcert_arn:str|None=None"""The certificate arn used for any alias domains supplied. This is a requirement when supplying any custom domain. """additional_redirect_domains:list[str]=[]"""Additional domains (beyond the ``aliases`` domains or the CloudFront URL if no aliases are provided) that will be authorized by the Auth@Edge UserPool AppClient. """aliases:list[str]=[]"""Any custom domains that should be added to the CloudFront Distribution."""auth_at_edge:bool=False"""Auth@Edge make the static site private by placing it behind an authorization wall."""cf_disable:bool=False"""Whether deployment of the CloudFront Distribution should be disabled."""compress:bool=True"""Whether the CloudFront default cache behavior will automatically compress certain files."""cookie_settings:dict[str,str]={"idToken":"Path=/; Secure; SameSite=Lax","accessToken":"Path=/; Secure; SameSite=Lax","refreshToken":"Path=/; Secure; SameSite=Lax","nonce":"Path=/; Secure; HttpOnly; Max-Age=1800; SameSite=Lax",}"""The default cookie settings for retrieved tokens and generated nonce's."""create_user_pool:bool=False"""Whether to create a User Pool for the Auth@Edge configuration."""custom_error_responses:list[RunwayStaticSiteCustomErrorResponseDataModel]=[]"""Define custom error responses."""enable_cf_logging:bool=True"""Enable CloudFront logging."""http_headers:dict[str,str]={"Content-Security-Policy":"default-src https: 'unsafe-eval' 'unsafe-inline'; ""font-src 'self' 'unsafe-inline' 'unsafe-eval' data: https:; ""object-src 'none'; ""connect-src 'self' https://*.amazonaws.com https://*.amazoncognito.com","Strict-Transport-Security":"max-age=31536000; includeSubdomains; preload","Referrer-Policy":"same-origin","X-XSS-Protection":"1; mode=block","X-Frame-Options":"DENY","X-Content-Type-Options":"nosniff",}"""Headers that should be sent with each origin response."""lambda_function_associations:list[RunwayStaticSiteLambdaFunctionAssociationDataModel]=[]"""This allows the user to deploy custom Lambda@Edge associations with their pre-build function versions."""namespace:str"""The unique namespace for the deployment."""non_spa:bool=False"""Whether this site is a single page application (SPA)."""oauth_scopes:list[str]=["phone","email","profile","openid","aws.cognito.signin.user.admin",]"""Scope is a mechanism in OAuth 2.0 to limit an application's access to a user's account."""redirect_path_auth_refresh:str="/refreshauth""""The path that a user is redirected to when their authorization tokens have expired (1 hour)."""redirect_path_sign_in:str="/parseauth""""The path that a user is redirected to after sign-in."""redirect_path_sign_out:str="/""""The path that a user is redirected to after sign-out."""required_group:str|None=None"""Name of Cognito User Pool group of which users must be a member to be granted access to the site. If ``None``, allows all UserPool users to have access. """rewrite_directory_index:str|None=None"""Deploy a Lambda@Edge function designed to rewrite directory indexes."""role_boundary_arn:str|None=None"""Defines an IAM Managed Policy that will be set as the permissions boundary for any IAM Roles created to support the site. """service_role:str|None=Field(default=None,alias="cloudformation_service_role")"""IAM role that CloudFormation will use."""sign_out_url:str="/signout""""The path a user should access to sign themselves out of the application."""supported_identity_providers:list[str]=["COGNITO"]"""A comma delimited list of the User Pool client identity providers."""user_pool_arn:str|None=None"""The ARN of a pre-existing Cognito User Pool to use with Auth@Edge."""web_acl:str|None=None"""The ARN of a web access control list (web ACL) to associate with the CloudFront Distribution."""@field_validator("additional_redirect_domains","aliases","supported_identity_providers",mode="before",)@classmethoddef_convert_comma_delimited_list(cls,v:list[str]|str)->list[str]:"""Convert comma delimited lists to a string."""ifisinstance(v,str):return[i.strip()foriinv.split(",")]returnv