pub struct Manager {
pub region: String,
pub cli: Client,
}
Expand description
Implements AWS EC2 manager.
Fields§
§region: String
§cli: Client
Implementations§
Source§impl Manager
impl Manager
pub fn new(shared_config: &AwsSdkConfig) -> Self
Sourcepub async fn import_key(
&self,
key_name: &str,
pubkey_path: &str,
) -> Result<String>
pub async fn import_key( &self, key_name: &str, pubkey_path: &str, ) -> Result<String>
Imports a public key to EC2 key.
Sourcepub async fn create_key_pair(
&self,
key_name: &str,
key_path: &str,
) -> Result<()>
pub async fn create_key_pair( &self, key_name: &str, key_path: &str, ) -> Result<()>
Creates an AWS EC2 key-pair and saves the private key to disk. It overwrites “key_path” file with the newly created key.
Sourcepub async fn delete_key_pair(&self, key_name: &str) -> Result<()>
pub async fn delete_key_pair(&self, key_name: &str) -> Result<()>
Deletes the AWS EC2 key-pair.
Sourcepub async fn describe_vpc(&self, vpc_id: &str) -> Result<Vpc>
pub async fn describe_vpc(&self, vpc_id: &str) -> Result<Vpc>
Describes an AWS EC2 VPC. ref. https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVpcs.html
Sourcepub async fn describe_security_groups_by_vpc(
&self,
vpc_id: &str,
) -> Result<Vec<SecurityGroup>>
pub async fn describe_security_groups_by_vpc( &self, vpc_id: &str, ) -> Result<Vec<SecurityGroup>>
Describes security groups by VPC Id. ref. https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSecurityGroups.html
Sourcepub async fn describe_subnets_by_vpc(&self, vpc_id: &str) -> Result<Vec<Subnet>>
pub async fn describe_subnets_by_vpc(&self, vpc_id: &str) -> Result<Vec<Subnet>>
Describes subnets by VPC Id. ref. https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSubnets.html
Sourcepub async fn describe_volumes(
&self,
filters: Option<Vec<Filter>>,
) -> Result<Vec<Volume>>
pub async fn describe_volumes( &self, filters: Option<Vec<Filter>>, ) -> Result<Vec<Volume>>
Describes the EBS volumes by filters. ref. https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVolumes.html
Sourcepub async fn poll_volume_state(
&self,
ebs_volume_id: String,
desired_state: VolumeState,
timeout: Duration,
interval: Duration,
) -> Result<Option<Volume>>
pub async fn poll_volume_state( &self, ebs_volume_id: String, desired_state: VolumeState, timeout: Duration, interval: Duration, ) -> Result<Option<Volume>>
Polls the EBS volume by its state.
Sourcepub async fn describe_local_volumes(
&self,
ebs_volume_id: Option<String>,
ebs_device_name: String,
local_ec2_instance_id: Option<String>,
) -> Result<Vec<Volume>>
pub async fn describe_local_volumes( &self, ebs_volume_id: Option<String>, ebs_device_name: String, local_ec2_instance_id: Option<String>, ) -> Result<Vec<Volume>>
Describes the attached volume by the volume Id and EBS device name. The “local_ec2_instance_id” is only set to bypass extra EC2 metadata service API calls. The region used for API call is inherited from the EC2 client SDK.
e.g.,
aws ec2 describe-volumes
–region ${AWS::Region}
–filters
Name=attachment.instance-id,Values=$INSTANCE_ID
Name=attachment.device,Values=/dev/xvdb
–query Volumes[].Attachments[].State
–output text
ref. https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVolumes.html ref. https://github.com/ava-labs/avalanche-ops/blob/fcbac87a219a8d3d6d3c38a1663fe1dafe78e04e/bin/avalancheup-aws/cfn-templates/asg_amd64_ubuntu.yaml#L397-L409
Sourcepub async fn poll_local_volume_by_attachment_state(
&self,
ebs_volume_id: Option<String>,
ebs_device_name: String,
desired_attachment_state: VolumeAttachmentState,
timeout: Duration,
interval: Duration,
) -> Result<Volume>
pub async fn poll_local_volume_by_attachment_state( &self, ebs_volume_id: Option<String>, ebs_device_name: String, desired_attachment_state: VolumeAttachmentState, timeout: Duration, interval: Duration, ) -> Result<Volume>
Polls the EBS volume attachment state. For instance, the “device_name” can be either “/dev/xvdb” or “xvdb” (for the secondary volume).
Fetches all tags for the specified instance.
“If a single piece of data must be accessible from more than one task concurrently, then it must be shared using synchronization primitives such as Arc.” ref. https://tokio.rs/tokio/tutorial/spawning
Sourcepub async fn list_asg(&self, asg_name: &str) -> Result<Vec<Droplet>>
pub async fn list_asg(&self, asg_name: &str) -> Result<Vec<Droplet>>
Lists instances by the Auto Scaling Groups name.
Sourcepub async fn allocate_eip(&self, tags: HashMap<String, String>) -> Result<Eip>
pub async fn allocate_eip(&self, tags: HashMap<String, String>) -> Result<Eip>
Allocates an EIP and returns the allocation Id and the public Ip. ref. https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AllocateAddress.html
Sourcepub async fn associate_eip(
&self,
allocation_id: &str,
instance_id: &str,
) -> Result<String>
pub async fn associate_eip( &self, allocation_id: &str, instance_id: &str, ) -> Result<String>
Associates the elastic Ip with an EC2 instance. ref. https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateAddress.html
Sourcepub async fn describe_eips_by_instance_id(
&self,
instance_id: &str,
) -> Result<Vec<Address>>
pub async fn describe_eips_by_instance_id( &self, instance_id: &str, ) -> Result<Vec<Address>>
Describes the elastic IP addresses with the instance Id. ref. https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAddresses.html
Describes the elastic IP addresses with the tags. ref. https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAddresses.html
Sourcepub async fn poll_eip_by_describe_addresses(
&self,
association_id: &str,
instance_id: &str,
timeout: Duration,
interval: Duration,
) -> Result<Vec<Address>>
pub async fn poll_eip_by_describe_addresses( &self, association_id: &str, instance_id: &str, timeout: Duration, interval: Duration, ) -> Result<Vec<Address>>
Polls the elastic Ip for its describe address state, until the elastic Ip becomes attached to the instance. ref. https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAddresses.html
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Manager
impl !RefUnwindSafe for Manager
impl Send for Manager
impl Sync for Manager
impl Unpin for Manager
impl !UnwindSafe for Manager
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more