Packages
ex_aws
0.5.0
2.7.0
2.6.1
2.6.0
2.5.11
2.5.10
2.5.9
2.5.8
2.5.7
2.5.6
2.5.5
2.5.4
2.5.3
2.5.2
2.5.1
2.5.0
2.4.4
2.4.3
2.4.2
2.4.1
2.4.0
2.3.4
2.3.3
2.3.2
2.3.1
2.3.0
2.2.10
2.2.9
2.2.8
2.2.7
2.2.6
2.2.5
2.2.4
2.2.3
2.2.2
2.2.1
2.2.0
2.1.9
2.1.8
2.1.7
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.2
2.0.1
2.0.0
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.1
1.0.0-beta3
1.0.0-beta2
1.0.0-beta1
1.0.0-beta0
0.5.0
0.4.19
0.4.18
0.4.17
0.4.15
0.4.14
0.4.13
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.1
0.3.0
0.2.0
0.1.2
0.1.1
0.1.0
0.0.5
0.0.4
0.0.3
AWS client for Elixir. Currently supports Dynamo, DynamoStreams, EC2, Firehose, Kinesis, KMS, Lambda, RRDS, Route53, S3, SES, SNS, SQS, STS and others.
Current section
Files
Jump to
Current section
Files
lib/ex_aws/ec2/impl.ex
defmodule ExAws.EC2.Impl do
import ExAws.Utils, only: [camelize_keys: 1, upcase: 1]
@moduledoc """
"""
@version "2015-10-01"
########################
### Instance Actions ###
########################
def describe_instances(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeInstances",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
def describe_instance_status(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeInstanceStatus",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
def run_instances(client, image_id, max, min, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "RunInstances",
"Version" => @version,
"ImageId" => image_id,
"MaxCount" => max,
"MinCount" => min
})
request(client, :post, "/", params: query_params)
end
def start_instances(client, instance_ids, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "StartInstances",
"Version" => @version,
})
|> Map.merge(list_builder(instance_ids, "InstanceId", 1, %{}))
request(client, :post, "/", params: query_params)
end
def stop_instances(client, instance_ids, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "StopInstances",
"Version" => @version
})
|> Map.merge(list_builder(instance_ids, "InstanceId", 1, %{}))
request(client, :post, "/", params: query_params)
end
def terminate_instances(client, instance_ids, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "TerminateInstances",
"Version" => @version
})
|> Map.merge(list_builder(instance_ids, "InstanceId", 1, %{}))
request(client, :post, "/", params: query_params)
end
def reboot_instances(client, instance_ids, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "RebootInstances",
"Version" => @version
})
|> Map.merge(list_builder(instance_ids, "InstanceId", 1, %{}))
request(client, :post, "/", params: query_params)
end
def report_instance_status(client, instance_ids, status, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "ReportInstanceStatus",
"Version" => @version,
"Status" => status
})
|> Map.merge(list_builder(instance_ids, "InstanceId", 1, %{}))
request(client, :get, "/", params: query_params)
end
def monitor_instances(client, instance_ids, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "MonitorInstances",
"Version" => @version
})
|> Map.merge(list_builder(instance_ids, "InstanceId", 1, %{}))
request(client, :post, "/", params: query_params)
end
def unmonitor_instances(client, instance_ids, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "UnmonitorInstances",
"Version" => @version
})
|> Map.merge(list_builder(instance_ids, "InstanceId", 1, %{}))
request(client, :post, "/", params: query_params)
end
def describe_instance_attribute(client, instance_id, attribute, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeInstanceAttribute",
"Version" => @version,
"InstanceId" => instance_id,
"Attribute" => attribute
})
request(client, :get, "/", params: query_params)
end
def modify_instance_attribute(client, instance_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "ModifyInstanceAttribute",
"Version" => @version,
"InstanceId" => instance_id,
})
request(client, :post, "/", params: query_params)
end
def reset_instance_attribute(client, instance_id, attribute, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "ResetInstanceAttribute",
"Version" => @version,
"InstanceId" => instance_id,
"Attribute" => attribute
})
request(client, :post, "/", params: query_params)
end
def get_console_output(client, instance_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "GetConsoleOutput",
"Version" => @version,
"InstanceId" => instance_id
})
request(client, :get, "/", params: query_params)
end
def get_password_data(client, instance_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "GetPasswordData",
"Version" => @version,
"InstanceId" => instance_id
})
request(client, :get, "/", params: query_params)
end
##############################################
### Regions and Availability Zones Actions ###
##############################################
def describe_availability_zones(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeAvailabilityZones",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
def describe_regions(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeRegions",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
###################
### AMI Actions ###
###################
def create_image(client, instance_id, name, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "CreateImage",
"Version" => @version,
"InstanceId" => instance_id,
"Name" => name
})
request(client, :post, "/", params: query_params)
end
def copy_image(client, name, source_image_id, source_region, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "CopyImage",
"Version" => @version,
"Name" => name,
"SourceImageId" => source_image_id,
"SourceRegion" => source_region
})
request(client, :post, "/", params: query_params)
end
def describe_images(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeImages",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
def describe_image_attribute(client, image_id, attribute, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeImageAttribute",
"Version" => @version,
"ImageId" => image_id,
"Attribute" => attribute
})
request(client, :get, "/", params: query_params)
end
def modify_image_attribute(client, image_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "ModifyImageAttribute",
"Version" => @version,
"ImageId" => image_id
})
request(client, :post, "/", params: query_params)
end
def reset_image_attribute(client, image_id, attribute, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "ResetImageAttribute",
"Version" => @version,
"ImageId" => image_id,
"Attribute" => attribute
})
request(client, :post, "/", params: query_params)
end
def register_image(client, name, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "RegisterImage",
"Version" => @version,
"Name" => name
})
request(client, :post, "/", params: query_params)
end
def deregister_image(client, image_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DeregisterImage",
"Version" => @version,
"ImageId" => image_id
})
request(client, :post, "/", params: query_params)
end
#########################
### Key Pairs Actions ###
#########################
def describe_key_pairs(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeKeyPairs",
"Version" => @version,
})
request(client, :get, "/", params: query_params)
end
def create_key_pair(client, key_name, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "CreateKeyPair",
"Version" => @version,
"KeyName" => key_name
})
request(client, :post, "/", params: query_params)
end
def delete_key_pair(client, key_name, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DeleteKeyPair",
"Version" => @version,
"KeyName" => key_name
})
request(client, :post, "/", params: query_params)
end
def import_key_pair(client, key_name, public_key_material, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "ImportKeyPair",
"Version" => @version,
"KeyName" => key_name,
"PublicKeyMaterial" => Base.url_encode64(public_key_material)
})
request(client, :post, "/", params: query_params)
end
###########################
### Resource ID Actions ###
###########################
def describe_id_format(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeIdFormat",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
def modify_id_format(client, resource, use_long_ids) do
query_params = %{
"Action" => "ModifyIdFormat",
"Version" => @version,
"Resource" => resource,
"UseLongIds" => use_long_ids
}
request(client, :post, "/", params: query_params)
end
###############################
### Security Groups Actions ###
###############################
def describe_security_groups(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeSecurityGroups",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
def create_security_group(client, group_name, group_description, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "CreateSecurityGroup",
"Version" => @version,
"GroupName" => group_name,
"GroupDescription" => group_description
})
request(client, :post, "/", params: query_params)
end
def authorize_security_group_ingress(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "AuthorizeSecurityGroupIngress",
"Version" => @version
})
request(client, :post, "/", params: query_params)
end
def authorize_security_group_egress(client, group_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "AuthorizeSecurityGroupEgress",
"Version" => @version,
"GroupId" => group_id
})
request(client, :post, "/", params: query_params)
end
def revoke_security_group_ingress(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "RevokeSecurityGroupIngress",
"Version" => @version
})
request(client, :post, "/", params: query_params)
end
def revoke_security_group_egress(client, group_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "RevokeSecurityGroupEgress",
"Version" => @version,
"GroupId" => group_id
})
request(client, :post, "/", params: query_params)
end
####################
### VPCs Actions ###
####################
def describe_vpcs(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeVpcs",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
def create_vpc(client, cidr_block, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "CreateVpc",
"Version" => @version,
"CidrBlock" => cidr_block
})
request(client, :post, "/", params: query_params)
end
def delete_vpc(client, vpc_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DeleteVpc",
"Version" => @version,
"VpcId" => vpc_id
})
request(client, :post, "/", params: query_params)
end
def describe_vpc_attribute(client, vpc_id, attribute, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeVpcAttribute",
"Version" => @version,
"VpcId" => vpc_id,
"Attribute" => attribute
})
request(client, :get, "/", params: query_params)
end
def modify_vpc_attribute(client, vpc_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "ModifyVpcAttribute",
"Version" => @version,
"VpcId" => vpc_id
})
request(client, :post, "/", params: query_params)
end
#######################
### Subnets Actions ###
#######################
def describe_subnets(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeSubnets",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
def create_subnet(client, vpc_id, cidr_block, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "CreateSubnet",
"Version" => @version,
"VpcId" => vpc_id,
"CidrBlock" => cidr_block
})
request(client, :post, "/", params: query_params)
end
def delete_subnet(client, subnet_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DeleteSubnet",
"Version" => @version,
"SubnetId" => subnet_id
})
request(client, :post, "/", params: query_params)
end
def modify_subnet_attribute(client, subnet_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "ModifySubnetAttribute",
"Version" => @version,
"SubnetId" => subnet_id
})
request(client, :post, "/", params: query_params)
end
####################
### Tags Actions ###
####################
def describe_tags(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeTags",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
def create_tags(client, resource_ids, tags, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "CreateTags",
"Version" => @version
})
|> Map.merge(list_builder(resource_ids, "ResourceId", 1, %{}))
|> Map.merge(list_builder_key_val(tags, "Tag", 1, %{}))
request(client, :post, "/", params: query_params)
end
def delete_tags(client, resource_ids, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DeleteTags",
"Version" => @version
})
|> Map.merge(list_builder(resource_ids, "ResourceId", 1, %{}))
request(client, :post, "/", params: query_params)
end
####################################
### Elastic Block Stores Actions ###
####################################
def describe_volumes(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeVolumes",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
def create_volume(client, availability_zone, size, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "CreateVolume",
"Version" => @version,
"AvailabilityZone" => availability_zone,
"Size" => size
})
request(client, :post, "/", params: query_params)
end
def delete_volume(client, volume_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DeleteVolume",
"Version" => @version,
"VolumeId" => volume_id
})
request(client, :post, "/", params: query_params)
end
def attach_volume(client, instance_id, volume_id, device, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "AttachVolume",
"Version" => @version,
"InstanceId" => instance_id,
"VolumeId" => volume_id,
"Device" => device
})
request(client, :post, "/", params: query_params)
end
def detach_volume(client, volume_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DetachVolume",
"Version" => @version,
"VolumeId" => volume_id,
})
request(client, :post, "/", params: query_params)
end
def describe_volume_attribute(client, volume_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeVolumeAttribute",
"Version" => @version,
"VolumeId" => volume_id
})
request(client, :get, "/", params: query_params)
end
def modify_volume_attribute(client, volume_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "ModifyVolumeAttribute",
"Version" => @version,
"VolumeId" => volume_id
})
request(client, :post, "/", params: query_params)
end
def enable_volume_io(client, volume_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "EnableVolumeIO",
"Version" => @version,
"VolumeId" => volume_id
})
request(client, :post, "/", params: query_params)
end
def describe_volume_status(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeVolumeStatus",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
def describe_snapshots(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeSnapshots",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
def create_snapshot(client, volume_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "CreateSnapshot",
"Version" => @version,
"VolumeId" => volume_id
})
request(client, :post, "/", params: query_params)
end
def copy_snapshot(client, source_snapshot_id, source_region, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "CopySnapshot",
"Version" => @version,
"SourceSnapshotId" => source_snapshot_id,
"SourceRegion" => source_region
})
request(client, :post, "/", params: query_params)
end
def delete_snapshot(client, snapshot_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DeleteSnapshot",
"Version" => @version,
"SnapshotId" => snapshot_id
})
request(client, :post, "/", params: query_params)
end
def describe_snapshot_attribute(client, snapshot_id, attribute, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeSnapshotAttribute",
"Version" => @version,
"SnapshotId" => snapshot_id,
"Attribute" => attribute
})
request(client, :get, "/", params: query_params)
end
def modify_snapshot_attribute(client, snapshot_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "ModifySnapshotAttribute",
"Version" => @version,
"SnapshotId" => snapshot_id
})
request(client, :post, "/", params: query_params)
end
def reset_snapshot_attribute(client, snapshot_id, attribute, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "ResetSnapshotAttribute",
"Version" => @version,
"SnapshotId" => snapshot_id,
"Attribute" => attribute
})
request(client, :post, "/", params: query_params)
end
##################################
### Account Attributes Actions ###
##################################
def describe_account_attributes(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeAccountAttributes",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
############################
### Bundle Tasks Actions ###
############################
def bundle_instance(client, instance_id, {s3_aws_access_key_id, s3_bucket, s3_prefix, s3_upload_policy, s3_upload_policy_sig}, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "BundleInstance",
"Version" => @version,
"InstanceId" => instance_id,
"Storage.S3.AWSAccessKeyId" => s3_aws_access_key_id,
"Storage.S3.Bucket" => s3_bucket,
"Storage.S3.Prefix" => s3_prefix,
"Storage.S3.UploadPolicy" => s3_upload_policy,
"Storage.S3.UploadPolicySignature" => s3_upload_policy_sig
})
request(client, :post, "/", params: query_params)
end
def cancel_bundle_task(client, bundle_id, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "CancelBundleTask",
"Version" => @version,
"BundleId" => bundle_id
})
request(client, :post, "/", params: query_params)
end
def describe_bundle_tasks(client, opts \\ []) do
query_params = opts
|> normalize_opts
|> Map.merge(%{
"Action" => "DescribeBundleTasks",
"Version" => @version
})
request(client, :get, "/", params: query_params)
end
########################
### Helper Functions ###
########################
defp request(%{__struct__: client_module} = client, verb, path, data) do
client_module.request(client, verb, path, data)
end
defp normalize_opts(opts) do
opts
|> Enum.into(%{})
|> camelize_keys
end
defp list_builder([h | []], key, count, state) do
Map.put(state, "#{key}.#{count}", h)
end
defp list_builder([h | t], key, count, state) do
list_builder t, key, count + 1, Map.put_new(state, "#{key}.#{count}", h)
end
defp list_builder_key_val([{f, s} | []], key, count, state) do
new_map = Map.new
|> Map.put_new("#{key}.#{count}.Key", f)
|> Map.put_new("#{key}.#{count}.Value", s)
Map.merge(state, new_map)
end
defp list_builder_key_val([_h = {f, s} | t], key, count, state) do
new_map = Map.new
|> Map.put_new("#{key}.#{count}.Key", f)
|> Map.put_new("#{key}.#{count}.Value", s)
list_builder_key_val t, key, count + 1, Map.merge(state, new_map)
end
end