Module aws — Inmanta 2017.4dev documentation

# Module aws

> - License: Apache 2.0
> - Version: 2.1.0
> - Author: Inmanta <code@inmanta.com>
> - This module requires compiler version 2017.2 or higher
> - Upstream project: https://github.com/inmanta/aws.git

## Typedefs

typedef `aws::direction`
  - Base type `string`
  - Type constraint `((self == 'ingress') or (self == 'egress'))`

typedef `aws::instance_tenancy`
  - Base type `string`
  - Type constraint `(self regex re.compile('^(default|dedicated|host)$'))`

## Entities

entity `aws::AWSResource`

  Parents: `std::PurgeableResource`, `std::ManagedResource`

  relation aws::Provider `provider` [1]

entity `aws::ELB`

  Parents: `aws::AWSResource`

  An ELB load balancer

  attribute number `listen_port`=80
  attribute string `protocol`='http'
  attribute number `dest_port`=80
  attribute string `security_group`='default'
  attribute string `name`
  relation aws::VirtualMachine `instances` [0:*]

  The following implements statements select implementations for this entity:

  > - `std::none`

entity `aws::GroupRule`

  Parents: `aws::SecurityRule`

  relation aws::SecurityGroup `remote_group` [1]

  The following implements statements select implementations for this entity:

  > - `std::none`

entity `aws::Host`

  Parents: `aws::VMAttributes`, `ip::Host`

  A subclass of ip::Host that creates a virtual machine on AWS.

  relation aws::VirtualMachine `vm` [1]
  relation ip::IP `public_ip` [0:1]
  relation aws::Provider `provider` [1]
  relation aws::Subnet `subnet` [0:1]
  relation aws::SecurityGroup `security_groups` [0:*]
  relation ip::IP `private_ip` [1]
  relation ssh::Key `public_key` [1]

  The following implementations are defined for this entity:

  > - `aws::awsHost`

  The following implements statements select implementations for this entity:

  > - `std::hostDefaults`, `aws::awsHost`

entity `aws::IPrule`

  Parents: `aws::SecurityRule`

  attribute ip::cidr `remote_prefix`

  The following implements statements select implementations for this entity:

  > - `std::none`

entity `aws::InternetGateway`

  Parents: `aws::AWSResource`

  An Internet gateway for use with a VPC.

  attribute string `name`
  relation aws::VPC `vpc` [0:1]

    other end: `aws::VPC.internet_gateway [0:1]`

  The following implements statements select implementations for this entity:

  > - `std::none`

entity `aws::Provider`

  Parents: `std::Entity`

  The configuration to access Amazon Web Services

  attribute bool `auto_agent`=True
  attribute string `availability_zone`
  attribute string `name`
  attribute string `region`
  attribute string `access_key`
  attribute string `secret_key`

  The following implementations are defined for this entity:

  > - `aws::agentConfig`

  The following implements statements select implementations for this entity:

  > - `std::none`
  > - `aws::agentConfig` constraint `auto_agent`

entity `aws::SecurityGroup`

  Parents: `aws::AWSResource`

  attribute string `description`=''
  attribute number `retries`=10

    A security group can only be deleted when it is no longer in use. The API confirms the delete of a virtual machine for example, but it might still be in progress. This results in a failure to delete the security group. To speed up deployments, the handler can retry this number of times before skipping the resource.

  attribute bool `manage_all`=True
  attribute number `wait`=5

    The number of seconds to wait between retries.

  attribute string `name`
  relation aws::VPC `vpc` [1]
  relation aws::SecurityRule `rules` [0:*]

    other end: `aws::SecurityRule.group [1]`

  The following implements statements select implementations for this entity:

  > - `std::none`

entity `aws::SecurityRule`

  Parents: `std::Entity`

  A filter rule in the a security group

  attribute ip::port `port`=0
  attribute ip::protocol `ip_protocol`

    The type of ip protocol to allow. Currently this support tcp/udp/icmp/sctp or all

  attribute ip::port `port_max`=0
  attribute aws::direction `direction`
  attribute ip::port `port_min`=0
  relation aws::SecurityGroup `group` [1]

    other end: `aws::SecurityGroup.rules [0:*]`

entity `aws::Subnet`

  Parents: `aws::AWSResource`

  A subnet in a vpc

  attribute ip::cidr `cidr_block`

    The IPv4 network range for the VPC, in CIDR notation. For example, 10.0.0.0/24.

  `string aws::Subnet.availability_zone=<inmanta.execute.util.NoneValue object at 0x7fa196106630>`

    The Availability Zone for the subnet.

  attribute bool `map_public_ip_on_launch`=False

    Specify true to indicate that network interfaces created in the specified subnet should be assigned a public IPv4 address. This includes a network interface that’s created when launching an instance into the subnet (the instance therefore receives a public IPv4 address).

  attribute string `name`

    The name of the subnet. Inmanta uses this name to idenfiy the subnet. It is set as the name tag on the subnet resource.

  relation aws::VPC `vpc` [1]

    The VPC the subnet is created in.

    other end: `aws::VPC.subnets [0:*]`

  The following implements statements select implementations for this entity:

  > - `std::none`

entity `aws::VMAttributes`

  Parents: `std::Entity`

  attribute string `flavor`
  attribute bool `source_dest_check`=True
  attribute string `image`
  `string aws::VMAttributes.subnet_id=<inmanta.execute.util.NoneValue object at 0x7fa1961627b8>`
  attribute string `user_data`

entity `aws::VPC`

  Parents: `aws::AWSResource`

  A VPC on Amazon

  attribute bool `enableDnsHostnames`=False
  attribute bool `enableDnsSupport`=False
  attribute ip::cidr `cidr_block`

    The IPv4 network range for the VPC, in CIDR notation. For example, 10.0.0.0/16.

  attribute aws::instance_tenancy `instance_tenancy`='default'

    The tenancy options for instances launched into the VPC. For default , instances are launched with shared tenancy by default. You can launch instances with any tenancy into a shared tenancy VPC. For dedicated , instances are launched as dedicated tenancy instances by default. You can only launch instances with a tenancy of dedicated or host into a dedicated tenancy VPC.

  attribute string `name`

    The name of the VPC. Inmanta uses this name to idenfiy the vpc. It is set as the name tag on the vpc resource.

  relation aws::Subnet `subnets` [0:*]

    The VPC the subnet is created in.

    other end: `aws::Subnet.vpc [1]`

  relation aws::InternetGateway `internet_gateway` [0:1]

    other end: `aws::InternetGateway.vpc [0:1]`

  The following implements statements select implementations for this entity:

  > - `std::none`

entity `aws::VirtualMachine`

  Parents: `aws::VMAttributes`, `aws::AWSResource`

  This entity represents a virtual machine that is hosted on an IaaS

  attribute dict `tags`=Dict()
  attribute string `name`
  relation aws::Subnet `subnet` [0:1]

    Boot the vm in this subnet. Either use this relation or provide a subnet id directly.

  relation aws::SecurityGroup `security_groups` [0:*]

    The security groups that apply to this vm. If no group is supplied the default security group will be applied by EC2

  relation ssh::Key `public_key` [1]
  relation aws::Volume `volumes` [0:*]

    other end: `aws::Volume.vm [0:1]`

  The following implementations are defined for this entity:

  > - `aws::req`

  The following implements statements select implementations for this entity:

  > - `aws::req`

entity `aws::Volume`

  Parents: `aws::AWSResource`

  attribute bool `encrypted`=False
  attribute string `volume_type`='gp2'
  attribute string `availability_zone`
  attribute dict `tags`=Dict()
  attribute string `attachmentpoint`='/dev/sdb'
  attribute number `size`=10
  attribute string `name`
  relation aws::VirtualMachine `vm` [0:1]

    other end: `aws::VirtualMachine.volumes [0:*]`

  The following implements statements select implementations for this entity:

  > - `std::none`

## Implementations

implementation `aws::agentConfig`

implementation `aws::awsHost`

implementation `aws::req`

## Plugins

`aws.` `decrypt`(key_data: string, cipher_text: string) → string

`aws.` `elbid`(name: string) → string

`aws.` `get_api_id`(provider: aws::Provider, api_name: string) → string

## Resources

class `aws.` `ELB`

  > Amazon Elastic loadbalancer

  - Resource for entity `aws::ELB`
  - Id attribute `name`
  - Agent name `provider.name`
  - Handlers `aws.ELBHandler`

class `aws.` `InternetGateway`
  - Resource for entity `aws::InternetGateway`
  - Id attribute `name`
  - Agent name `provider.name`
  - Handlers `aws.InternetGatewayHandler`

class `aws.` `SecurityGroup`

  > A security group in an OpenStack tenant

  - Resource for entity `aws::SecurityGroup`
  - Id attribute `name`
  - Agent name `provider.name`
  - Handlers `aws.SecurityGroupHandler`

class `aws.` `Subnet`
  - Resource for entity `aws::Subnet`
  - Id attribute `name`
  - Agent name `provider.name`
  - Handlers `aws.SubnetHandler`

class `aws.` `VPC`
  - Resource for entity `aws::VPC`
  - Id attribute `name`
  - Agent name `provider.name`
  - Handlers `aws.VPCHandler`

class `aws.` `VirtualMachine`
  - Resource for entity `aws::VirtualMachine`
  - Id attribute `name`
  - Agent name `provider.name`
  - Handlers `aws.VirtualMachineHandler`

class `aws.` `Volume`
  - Resource for entity `aws::Volume`
  - Id attribute `name`
  - Agent name `provider.name`
  - Handlers `aws.VolumeHandler`

## Handlers

class `aws.` `SubnetHandler`
  - Handler name `ec2`
  - Handler for entity `aws::Subnet`

class `aws.` `InternetGatewayHandler`
  - Handler name `ec2`
  - Handler for entity `aws::InternetGateway`

class `aws.` `VirtualMachineHandler`
  - Handler name `ec2`
  - Handler for entity `aws::VirtualMachine`

class `aws.` `VolumeHandler`
  - Handler name `volume`
  - Handler for entity `aws::Volume`

class `aws.` `SecurityGroupHandler`
  - Handler name `ec2`
  - Handler for entity `aws::SecurityGroup`

class `aws.` `VPCHandler`
  - Handler name `ec2`
  - Handler for entity `aws::VPC`

class `aws.` `ELBHandler`

  > This class manages ELB instances on amazon ec2

  - Handler name `ec2`
  - Handler for entity `aws::ELB`