torvo-aws#
An AWS module that provides simplified infrastructure as code.
All resources should have predictable identifiers, this removes the need for additional state storage and maintenance.
Actions should be primarily idempotent, this simplifies the amount of code required to manage the infrastructure.
All functions relating to a resource use the same interface and only access the properties as needed, this minimises the complexity of managing properties.
Usage#
Install
pip install torvo-aws
Import
import aws
Use
aws.session.create()
Notes
We only provide the latest version, don't pin to any specific version.
For any missing details refer to Boto3
Functions#
|
Create a Session to access the AWS Environment. |
|
Create a VPC with the Name tag. |
|
Read a VPC by the Name tag or return None. |
|
Update a VPC with the Name tag. |
|
Delete a VPC with the Name tag. |
|
Create or Update a VPC with the Name tag. |
|
Create a Subnet with the Name tag. |
|
Read a Subnet by the Name tag or return None. |
|
Update a Subnet with the Name tag. |
|
Delete a Subnet with the Name tag. |
|
Create or Update a Subnet with the Name tag. |
AWS Session#
- aws.session.create(properties)#
Create a Session to access the AWS Environment.
{'aws_access_key_id' = 'string','aws_secret_access_key' = 'string','aws_session_token' = 'string','region_name' = 'string','botocore_session' = botocore.session.Session,'profile_name' = 'string'}
AWS VPC#
- aws.vpc.create(session, properties)#
Create a VPC with the Name tag.
- aws.vpc.read(session, properties)#
Read a VPC by the Name tag or return None.
- aws.vpc.update(session, properties)#
Update a VPC with the Name tag.
- aws.vpc.delete(session, properties)#
Delete a VPC with the Name tag.
- aws.vpc.put(session, properties)#
Create or Update a VPC with the Name tag.
aws.session.create()
{'Name' = 'string','CidrBlock' = 'string','AmazonProvidedIpv6CidrBlock' = True|False,'Ipv6Pool' = 'string','Ipv6CidrBlock' = 'string','Ipv4IpamPoolId' = 'string','Ipv4NetmaskLength' = 123,'Ipv6IpamPoolId' = 'string','Ipv6NetmaskLength' = 123,'InstanceTenancy' = 'default'|'dedicated'|'host','Ipv6CidrBlockNetworkBorderGroup' = 'string','Tags' = [{'Key': 'string','Value': 'string'}]'EnableDnsSupport': True|False,'EnableDnsHostnames': True|False}
{'CidrBlock': 'string','DhcpOptionsId': 'string','State': 'pending'|'available','VpcId': 'string','OwnerId': 'string','InstanceTenancy': 'default'|'dedicated'|'host','Ipv6CidrBlockAssociationSet': [{'AssociationId': 'string','Ipv6CidrBlock': 'string','Ipv6CidrBlockState': {'State': 'associating'|'associated'|'disassociating'|'disassociated'|'failing'|'failed','StatusMessage': 'string'},'NetworkBorderGroup': 'string','Ipv6Pool': 'string'},],'CidrBlockAssociationSet': [{'AssociationId': 'string','CidrBlock': 'string','CidrBlockState': {'State': 'associating'|'associated'|'disassociating'|'disassociated'|'failing'|'failed','StatusMessage': 'string'}},],'IsDefault': True|False,'Tags': [{'Key': 'string','Value': 'string'}]'EnableDnsSupport': True|False,'EnableDnsHostnames': True|False}
AWS Subnet#
- aws.subnet.create(session, properties)#
Create a Subnet with the Name tag.
- aws.subnet.read(session, properties)#
Read a Subnet by the Name tag or return None.
- aws.subnet.update(session, properties)#
Update a Subnet with the Name tag.
- aws.subnet.delete(session, properties)#
Delete a Subnet with the Name tag.
- aws.subnet.put(session, properties)#
Create or Update a Subnet with the Name tag.
aws.session.create()
{'Tags': [{'Key': 'string','Value': 'string'}],'AvailabilityZone': 'string','AvailabilityZoneId': 'string','CidrBlock': 'string','Ipv6CidrBlock': 'string','OutpostArn': 'string','VpcId': 'string','Ipv6Native': True|False,'AssignIpv6AddressOnCreation': True|False,'MapPublicIpOnLaunch': True|False,'MapCustomerOwnedIpOnLaunch': True|False,'CustomerOwnedIpv4Pool': 'string','EnableDns64': 'Value': True|False,'PrivateDnsHostnameTypeOnLaunch': 'ip-name'|'resource-name','EnableResourceNameDnsARecordOnLaunch': True|False,'EnableResourceNameDnsAAAARecordOnLaunch': True|False,'EnableLniAtDeviceIndex': 123,'DisableLniAtDeviceIndex': True|False,}
{'AvailabilityZone': 'string','AvailabilityZoneId': 'string','AvailableIpAddressCount': 123,'CidrBlock': 'string','DefaultForAz': True|False,'EnableLniAtDeviceIndex': 123,'MapPublicIpOnLaunch': True|False,'MapCustomerOwnedIpOnLaunch': True|False,'CustomerOwnedIpv4Pool': 'string','State': 'pending'|'available','SubnetId': 'string','VpcId': 'string','OwnerId': 'string','AssignIpv6AddressOnCreation': True|False,'Ipv6CidrBlockAssociationSet': [{'AssociationId': 'string','Ipv6CidrBlock': 'string','Ipv6CidrBlockState': {'State': 'associating'|'associated'|'disassociating'|'disassociated'|'failing'|'failed','StatusMessage': 'string'}},],'Tags': [{'Key': 'string','Value': 'string'},],'SubnetArn': 'string','OutpostArn': 'string','EnableDns64': True|False,'Ipv6Native': True|False,'PrivateDnsNameOptionsOnLaunch': {'HostnameType': 'ip-name'|'resource-name','EnableResourceNameDnsARecord': True|False,'EnableResourceNameDnsAAAARecord': True|False}}