Struct aws_manager::ec2::Manager
source · pub struct Manager { /* private fields */ }
Expand description
Implements AWS EC2 manager.
Implementations
sourceimpl Manager
impl Manager
pub fn new(shared_config: &AwsSdkConfig) -> Self
pub fn client(&self) -> Client
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_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, kind_tag: &str, id_tag: &str) -> Result<Eip>
pub async fn allocate_eip(&self, kind_tag: &str, id_tag: &str) -> 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