Skip to main content

winterbaume_ec2instanceconnect/
state.rs

1use std::collections::HashMap;
2
3use thiserror::Error;
4
5#[derive(Debug, Default)]
6pub struct Ec2InstanceConnectState {
7    pub endpoints: HashMap<String, Ec2InstanceConnectEndpoint>,
8}
9
10/// An EC2 Instance Connect Endpoint.
11#[derive(Debug, Clone)]
12pub struct Ec2InstanceConnectEndpoint {
13    pub instance_connect_endpoint_id: String,
14    pub subnet_id: String,
15    pub vpc_id: String,
16    pub security_group_ids: Vec<String>,
17    pub state: String,
18    pub dns_name: Option<String>,
19    pub fips_dns_name: Option<String>,
20    pub network_interface_ids: Vec<String>,
21    pub owner_id: String,
22    pub availability_zone: String,
23    pub created_at: String,
24    pub tags: HashMap<String, String>,
25}
26
27#[derive(Debug, Error)]
28pub enum Ec2InstanceConnectError {
29    #[error("Missing X-Amz-Target header")]
30    MissingAction,
31
32    #[error("Invalid JSON body")]
33    SerializationException,
34
35    #[error("Could not find operation {action} for EC2 Instance Connect")]
36    InvalidAction { action: String },
37
38    #[error("InstanceId is required")]
39    InstanceIdRequired,
40
41    #[error("InstanceOSUser is required")]
42    InstanceOSUserRequired,
43
44    #[error("SSHPublicKey is required")]
45    SSHPublicKeyRequired,
46}