runway.cfngin.hooks.keypair module

AWS EC2 keypair hook.

class runway.cfngin.hooks.keypair.EnsureKeypairExistsHookArgs[source]

Bases: runway.utils.BaseModel

Hook arguments for ensure_keypair_exists.

keypair: str

Name of the key pair to ensure exists.

public_key_path: Optional[str]

Path to a public key file to be imported instead of generating a new key. Incompatible with the SSM options, as the private key will not be available for storing.

ssm_key_id: Optional[str]

ID of a KMS key to encrypt the SSM parameter with. If omitted, the default key will be used.

ssm_parameter_name: Optional[str]

Path to an SSM store parameter to receive the generated private key instead of importing it or storing it locally.

__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__() unicode

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

__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__() 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: Union[AbstractSetIntStr, MappingIntStrAny] = None, exclude: Union[AbstractSetIntStr, MappingIntStrAny] = None, update: 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: Union[AbstractSetIntStr, MappingIntStrAny] = None, exclude: Union[AbstractSetIntStr, MappingIntStrAny] = None, by_alias: bool = False, skip_defaults: 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: Optional[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: Union[AbstractSetIntStr, MappingIntStrAny] = None, exclude: Union[AbstractSetIntStr, MappingIntStrAny] = None, by_alias: bool = False, skip_defaults: 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) unicode

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.

class runway.cfngin.hooks.keypair.KeyPairInfo[source]

Bases: dict

Value returned from get_existing_key_pair.

static __new__(cls, _typename, _fields=None, /, **kwargs)
runway.cfngin.hooks.keypair.get_existing_key_pair(ec2: EC2Client, keypair_name: str) Optional[KeyPairInfo][source]

Get existing keypair.

runway.cfngin.hooks.keypair.import_key_pair(ec2: EC2Client, keypair_name: str, public_key_data: bytes) ImportKeyPairResultTypeDef[source]

Import keypair.

runway.cfngin.hooks.keypair.read_public_key_file(path: pathlib.Path) Optional[bytes][source]

Read public key file.

runway.cfngin.hooks.keypair.create_key_pair_from_public_key_file(ec2: EC2Client, keypair_name: str, public_key_path: Path) Optional[KeyPairInfo][source]

Create keypair from public key file.

runway.cfngin.hooks.keypair.create_key_pair_in_ssm(ec2: EC2Client, ssm: SSMClient, keypair_name: str, parameter_name: str, kms_key_id: Optional[str] = None) Optional[KeyPairInfo][source]

Create keypair in SSM.

runway.cfngin.hooks.keypair.create_key_pair(ec2: EC2Client, keypair_name: str) KeyPairTypeDef[source]

Create keypair.

runway.cfngin.hooks.keypair.create_key_pair_local(ec2: EC2Client, keypair_name: str, dest_dir: Path) Optional[KeyPairInfo][source]

Create local keypair.

runway.cfngin.hooks.keypair.interactive_prompt(keypair_name: str) Tuple[Optional[Literal['create', 'import']], Optional[str]][source]

Interactive prompt.

runway.cfngin.hooks.keypair.ensure_keypair_exists(context: runway.context.CfnginContext, *__args: Any, **kwargs: Any) runway.cfngin.hooks.keypair.KeyPairInfo[source]

Ensure a specific keypair exists within AWS.

If the key doesn’t exist, upload it.