Repository

class aws_rfdk.deadline.Repository(scope, id, *, version, vpc, backup_options=None, database=None, database_audit_logging=None, document_db_instance_count=None, file_system=None, log_group_props=None, removal_policy=None, repository_installation_prefix=None, repository_installation_timeout=None, repository_settings=None, secrets_management_settings=None, security_groups_options=None, vpc_subnets=None)

Bases: constructs.Construct

architecture diagram

This construct represents the main Deadline Repository which contains the central database and file system that Deadline requires.

When deployed this construct will start up a single instance which will run the Deadline Repository installer to initialize the file system and database, the logs of which will be forwarded to Cloudwatch via a CloudWatchAgent. After the installation is complete the instance will be shutdown.

Whenever the stack is updated if a change is detected in the installer a new instance will be started, which will perform a check on the existing Deadline Repository. If they are compatible with the new installer an update will be performed and the deployment will continue, otherwise the the deployment will be cancelled. In either case the instance will be cleaned up.

architecture diagram

Resources Deployed

  • Encrypted Amazon Elastic File System (EFS) - If no file system is provided.

  • An Amazon EFS Point - If no filesystem is provided.

  • An Amazon DocumentDB - If no database connection is provided.

  • Auto Scaling Group (ASG) with min & max capacity of 1 instance.

  • Instance Role and corresponding IAM Policy.

  • An Amazon CloudWatch log group that contains the Deadline Repository installation logs.

  • An RFDK PadEfsStorage - If no filesystem is provided.

  • An AWS Secrets Manager Secret - If no Secret with admin credentials for Deadline Secrets Management is provided.

Security Considerations

  • The instances deployed by this construct download and run scripts from your CDK bootstrap bucket when that instance is launched. You must limit write access to your CDK bootstrap bucket to prevent an attacker from modifying the actions performed by these scripts. We strongly recommend that you either enable Amazon S3 server access logging on your CDK bootstrap bucket, or enable AWS CloudTrail on your account to assist in post-incident analysis of compromised production environments.

  • The file system that is created by, or provided to, this construct contains the data for Deadline’s Repository file system. This file system contains information about your submitted jobs, and the plugin scripts that are run by the Deadline applications in your render farm. An actor that can modify the contents of this file system can cause your Deadline applications to run code of their choosing. You should restrict access to this file system to only those who require it.

  • The database that is created by, or provided to, this construct is used by Deadline to store data about its configuration, submitted jobs, machine information and status, and so on. An actor with access to this database can read any information that is entered into Deadline, and modify the bevavior of your render farm. You should restrict access to this database to only those who require it.

  • If no file-system is provided to the Repository, then the Repository creates an EFS access point with unrestricted access to the entire EFS file-system. If you would like a single EFS file-system that is used by the Deadline Repository and other agents, you should supply the file-system and a access-restricted EFS access point to the Repository construct instead.

Parameters
  • scope (Construct) –

  • id (str) –

  • version (IVersion) – Version property to specify the version of deadline repository to be installed. This, in future, would be an optional property. If not passed, it should fetch the latest version of deadline. The current implementation of Version construct only supports importing it with static values, hence keeping it mandatory for now.

  • vpc (IVpc) – VPC to launch the Repository In.

  • backup_options (Union[RepositoryBackupOptions, Dict[str, Any], None]) – Define the backup options for the resources that this Repository creates. Default: Duration.days(15) for the database

  • database (Optional[DatabaseConnection]) – Specify the database where the deadline schema needs to be initialized. Note that Deadline supports only databases that are compatible with MongoDB 3.6. Default: A Document DB Cluster will be created with a single db.r5.large instance.

  • database_audit_logging (Optional[bool]) – If this Repository is creating its own DocumentDB database, then this specifies if audit logging will be enabled. Audit logs are a security best-practice. They record connection, data definition language (DDL), user management, and authorization events within the database, and are useful for post-incident auditing. That is, they can help you figure out what an unauthorized user, who gained access to your database, has done with that access. Default: true

  • document_db_instance_count (Union[int, float, None]) – If this Repository is creating its own Amazon DocumentDB database, then this specifies the number of compute instances to be created. Default: 1

  • file_system (Optional[IMountableLinuxFilesystem]) – Specify the file system where the deadline repository needs to be initialized. If not providing a filesystem, then we will provision an Amazon EFS filesystem for you. This filesystem will contain files for the Deadline Repository filesystem. It will also contain 40GB of additional padding files (see RFDK’s PadEfsStorage for details) to increase the baseline throughput of the filesystem; these files will be added to the /RFDK_PaddingFiles directory in the filesystem. Default: An Encrypted EFS File System and Access Point will be created.

  • log_group_props (Union[LogGroupFactoryProps, Dict[str, Any], None]) – Properties for setting up the Deadline Repository’s LogGroup in CloudWatch. Default: - LogGroup will be created with all properties’ default values to the LogGroup: /renderfarm/

  • removal_policy (Union[RepositoryRemovalPolicies, Dict[str, Any], None]) – Define the removal policies for the resources that this Repository creates. These define what happens to the resoureces when the stack that defines them is destroyed. Default: RemovalPolicy.RETAIN for all resources

  • repository_installation_prefix (Optional[str]) – The prefix for the Deadline Repository installation path on the mounted file system. Default: : “/DeadlineRepository/”

  • repository_installation_timeout (Optional[Duration]) – The length of time to wait for the repository installation before considering it as failure. The maximum value is 43200 (12 hours). Default: Duration.minutes(15)

  • repository_settings (Optional[Asset]) – The Deadline Repository settings file to import. Default: Repository settings are not imported.

  • secrets_management_settings (Union[SecretsManagementProps, Dict[str, Any], None]) – Define the settings used by Deadline Secrets Management, a feature introduced in Deadline 10.1.10 for securely managing storage and access of Secrets for your render farm. More details at: https://docs.thinkboxsoftware.com/products/deadline/10.2/1_User%20Manual/manual/secrets-management/deadline-secrets-management.html. Default: : Secrets Management will be enabled and a username and password will be automatically generated if none are supplied.

  • security_groups_options (Union[RepositorySecurityGroupsOptions, Dict[str, Any], None]) – Options to add additional security groups to the Repository.

  • vpc_subnets (Union[SubnetSelection, Dict[str, Any], None]) – All resources that are created by this Repository will be deployed to these Subnets. This includes the Auto Scaling Group that is created for running the Repository Installer. If this Repository is creating an Amazon DocumentDB database and/or Amazon Elastic File System (EFS), then this specifies the subnets to which they are deployed. Default: : Private subnets in the VPC

Methods

configure_client_ecs(*, container_instances, containers)

Configures an ECS Container Instance and Task Definition for deploying a Deadline Client that directly connects to this repository.

This includes:

  • Ingress to database & filesystem Security Groups, as required.

  • IAM Permissions for database & filesystem, as required.

  • Mounts the Repository File System via UserData

Parameters
  • container_instances (Union[ECSContainerInstanceProps, Dict[str, Any]]) – Configuration of ECS host instances to permit connecting hosted ECS tasks to the repository.

  • containers (Union[ECSTaskProps, Dict[str, Any]]) – Configuration to directly connect an ECS task to the repository.

Inheritdoc

true

Return type

IContainerDirectRepositoryConnection

configure_client_instance(*, host, mount_point)

Configure a Deadline Client, that is running in an Amazon EC2 instance, for direct connection to this repository.

This includes:

  • Ingress to database & filesystem Security Groups, as required.

  • IAM Permissions for database & filesystem, as required.

  • Mounts the Repository File System via UserData

  • Configures Deadline to direct-connect to the Repository.

Parameters
  • host (IHost) – The Instance/UserData which will directly connect to the Repository.

  • mount_point (str) – The location where the Repositories file system will be mounted on the instance.

Inheritdoc

true

Return type

None

to_string()

Returns a string representation of this construct.

Return type

str

Attributes

database_connection

Connection object for the database for this repository.

Return type

DatabaseConnection

efs

The underlying Amazon Elastic File System (EFS) used by the Repository.

This is only defined if this Repository created its own filesystem, otherwise it will be undefined.

Return type

Optional[FileSystem]

file_system

The Linux-mountable filesystem that will store the Deadline repository filesystem contents.

Return type

IMountableLinuxFilesystem

node

The tree node.

Return type

Node

root_prefix

The path to the Deadline Repository directory.

This is expressed as a relative path from the root of the Deadline Repository file-system.

Inheritdoc

true

Return type

str

secrets_management_settings

Deadline Secrets Management settings.

Inheritdoc

true

Return type

SecretsManagementProps

version

The version of Deadline for Linux that is installed on this Repository.

Inheritdoc

true

Return type

IVersion

Static Methods

classmethod is_construct(x)

Checks if x is a construct.

Use this method instead of instanceof to properly detect Construct instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the constructs library on disk are seen as independent, completely different libraries. As a consequence, the class Construct in each copy of the constructs library is seen as a different class, and an instance of one class will not test as instanceof the other class. npm install will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the constructs library can be accidentally installed, and instanceof will behave unpredictably. It is safest to avoid using instanceof, and using this type-testing method instead.

Parameters

x (Any) – Any object.

Return type

bool

Returns

true if x is an object created from a class which extends Construct.