runway.cfngin.hooks.staticsite.upload_staticsite module

CFNgin hook for syncing static website to S3 bucket.

class runway.cfngin.hooks.staticsite.upload_staticsite.HookArgs[source]

Bases: runway.cfngin.hooks.base.HookArgsBaseModel

Hook arguments.

bucket_name: str

S3 bucket name.

cf_disabled: bool

Disable the use of CloudFront.

distribution_domain: str

Domain of the CloudFront distribution.

distribution_id: str

CloudFront distribution ID.

distribution_path: str

Path in the CloudFront distribution to invalidate.

extra_files: List[RunwayStaticSiteExtraFileDataModel]

Extra files to sync to the S3 bucket.

website_url: Optional[str]

S3 bucket website URL.

__contains__(name: object) bool

Implement evaluation of ‘in’ conditional.

Parameters

name – The name to check for existence in the model.

__getitem__(name: str) Any

Implement evaluation of self[name].

Parameters

name – Attribute name to return the value for.

Returns

The value associated with the provided name/attribute name.

Raises

AttributeError – If attribute does not exist on this object.

__init__(**data: Any) None

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

__iter__() TupleGenerator

so dict(model) works

__new__(**kwargs)
__pretty__(fmt: Callable[[Any], Any], **kwargs: Any) Generator[Any, None, None]

Used by devtools (https://python-devtools.helpmanual.io/) to provide a human readable representations of objects

__repr_name__() str

Name of the instance’s class, used in __repr__.

__rich_repr__() RichReprResult

Get fields for Rich library

__setitem__(name: str, value: Any) None

Implement item assignment (e.g. self[name] = value).

Parameters
  • name – Attribute name to set.

  • value – Value to assign to the attribute.

classmethod __try_update_forward_refs__(**localns: Any) None

Same as update_forward_refs but will not raise exception when forward references are not defined.

classmethod construct(_fields_set: Optional[SetStr] = None, **values: Any) Model

Creates a new model setting __dict__ and __fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed. Behaves as if Config.extra = ‘allow’ was set since it adds all passed values

copy(*, include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, update: Optional[DictStrAny] = None, deep: bool = False) Model

Duplicate a model, optionally choose which fields to include, exclude and change.

Parameters
  • include – fields to include in new model

  • exclude – fields to exclude from new model, as with values this takes precedence over include

  • update – values to change/add in the new model. Note: the data is not validated before creating the new model: you should trust this data

  • deep – set to True to make a deep copy of the model

Returns

new model instance

dict(*, include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, by_alias: bool = False, skip_defaults: Optional[bool] = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False) DictStrAny

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

get(name: str, default: Any = None) Any

Safely get the value of an attribute.

Parameters
  • name – Attribute name to return the value for.

  • default – Value to return if attribute is not found.

json(*, include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, by_alias: bool = False, skip_defaults: Optional[bool] = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False, encoder: Optional[Callable[[Any], Any]] = None, models_as_dict: bool = True, **dumps_kwargs: Any) str

Generate a JSON representation of the model, include and exclude arguments as per dict().

encoder is an optional function to supply as default to json.dumps(), other arguments as per json.dumps().

classmethod update_forward_refs(**localns: Any) None

Try to update ForwardRefs on fields based on this Model, globalns and localns.

runway.cfngin.hooks.staticsite.upload_staticsite.get_archives_to_prune(archives: List[Dict[str, Any]], hook_data: Dict[str, Any]) List[str][source]

Return list of keys to delete.

Parameters
  • archives – The full list of file archives

  • hook_data – CFNgin hook data

runway.cfngin.hooks.staticsite.upload_staticsite.sync(context: runway.context.CfnginContext, *__args: Any, **kwargs: Any) bool[source]

Sync static website to S3 bucket.

Arguments parsed by HookArgs.

Parameters

context – The context instance.

runway.cfngin.hooks.staticsite.upload_staticsite.update_ssm_hash(context: CfnginContext, session: Session) bool[source]

Update the SSM hash with the new tracking data.

Parameters
  • context – Context instance.

  • session – boto3 session.

runway.cfngin.hooks.staticsite.upload_staticsite.invalidate_distribution(session: Session, *, domain: str = 'undefined', identifier: str, path: str = '/*', **_: Any) bool[source]

Invalidate the current distribution.

Parameters
  • session – The current CFNgin session.

  • domain – The distribution domain.

  • identifier – The distribution id.

  • path – The distribution path.

runway.cfngin.hooks.staticsite.upload_staticsite.prune_archives(context: CfnginContext, session: Session) bool[source]

Prune the archives from the bucket.

Parameters
  • context – The context instance.

  • session – The CFNgin session.

runway.cfngin.hooks.staticsite.upload_staticsite.auto_detect_content_type(filename: Optional[str]) Optional[str][source]

Auto detects the content type based on the filename.

Parameters

filename – A filename to use to auto detect the content type.

Returns

The content type of the file. None if the content type could not be detected.

runway.cfngin.hooks.staticsite.upload_staticsite.get_content_type(extra_file: runway.module.staticsite.options.models.RunwayStaticSiteExtraFileDataModel) Optional[str][source]

Return the content type of the file.

Parameters

extra_file – The extra file configuration.

Returns

The content type of the extra file. If ‘content_type’ is provided then that is returned, otherwise it is auto detected based on the name.

runway.cfngin.hooks.staticsite.upload_staticsite.get_content(extra_file: runway.module.staticsite.options.models.RunwayStaticSiteExtraFileDataModel) Optional[str][source]

Get serialized content based on content_type.

Parameters

extra_file – The extra file configuration.

Returns

Serialized content based on the content_type.

runway.cfngin.hooks.staticsite.upload_staticsite.calculate_hash_of_extra_files(extra_files: List[runway.module.staticsite.options.models.RunwayStaticSiteExtraFileDataModel]) str[source]

Return a hash of all of the given extra files.

All attributes of the extra file object are included when hashing: name, content_type, content, and file data.

Parameters

extra_files – The list of extra file configurations.

Returns

The hash of all the files.

runway.cfngin.hooks.staticsite.upload_staticsite.get_ssm_value(session: Session, name: str) Optional[str][source]

Get the ssm parameter value.

Parameters
  • session – The boto3 session.

  • name – The parameter name.

Returns

The parameter value.

runway.cfngin.hooks.staticsite.upload_staticsite.set_ssm_value(session: Session, name: str, value: Any, description: str = '') None[source]

Set the ssm parameter.

Parameters
  • session – The boto3 session.

  • name – The name of the parameter.

  • value – The value of the parameter.

  • description – A description of the parameter.

runway.cfngin.hooks.staticsite.upload_staticsite.sync_extra_files(context: runway.context.CfnginContext, bucket: str, extra_files: List[runway.module.staticsite.options.models.RunwayStaticSiteExtraFileDataModel], **kwargs: Any) List[str][source]

Sync static website extra files to S3 bucket.

Parameters
  • context – The context instance.

  • bucket – The static site bucket name.

  • extra_files – List of files and file content that should be uploaded.