ec2config

package
v1.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 4, 2020 License: Apache-2.0 Imports: 20 Imported by: 4

README

AWS_K8S_TESTER_EC2_NAME | *ec2config.Config.Name | string | read-only "false"
AWS_K8S_TESTER_EC2_CONFIG_PATH | *ec2config.Config.ConfigPath | string | read-only "false"
AWS_K8S_TESTER_EC2_REGION | *ec2config.Config.Region | string | read-only "false"
AWS_K8S_TESTER_EC2_AWS_ACCOUNT_ID | *ec2config.Config.AWSAccountID | string | read-only "true"
AWS_K8S_TESTER_EC2_AWS_USER_ID | *ec2config.Config.AWSUserID | string | read-only "true"
AWS_K8S_TESTER_EC2_AWS_IAM_ROLE_ARN | *ec2config.Config.AWSIAMRoleARN | string | read-only "true"
AWS_K8S_TESTER_EC2_AWS_CREDENTIAL_PATH | *ec2config.Config.AWSCredentialPath | string | read-only "true"
AWS_K8S_TESTER_EC2_CREATE_TOOK | *ec2config.Config.CreateTook | time.Duration | read-only "true"
AWS_K8S_TESTER_EC2_CREATE_TOOK_STRING | *ec2config.Config.CreateTookString | string | read-only "true"
AWS_K8S_TESTER_EC2_DELETE_TOOK | *ec2config.Config.DeleteTook | time.Duration | read-only "true"
AWS_K8S_TESTER_EC2_DELETE_TOOK_STRING | *ec2config.Config.DeleteTookString | string | read-only "true"
AWS_K8S_TESTER_EC2_LOG_LEVEL | *ec2config.Config.LogLevel | string | read-only "false"
AWS_K8S_TESTER_EC2_LOG_OUTPUTS | *ec2config.Config.LogOutputs | []string | read-only "false"
AWS_K8S_TESTER_EC2_UP | *ec2config.Config.Up | bool | read-only "false"
AWS_K8S_TESTER_EC2_STATUS_CURRENT | *ec2config.Config.StatusCurrent | string | read-only "false"
AWS_K8S_TESTER_EC2_STATUS | *ec2config.Config.Status | []ec2config.Status | read-only "false"
AWS_K8S_TESTER_EC2_ON_FAILURE_DELETE | *ec2config.Config.OnFailureDelete | bool | read-only "false"
AWS_K8S_TESTER_EC2_ON_FAILURE_DELETE_WAIT_SECONDS | *ec2config.Config.OnFailureDeleteWaitSeconds | uint64 | read-only "false"
AWS_K8S_TESTER_EC2_S3_BUCKET_CREATE | *ec2config.Config.S3BucketCreate | bool | read-only "false"
AWS_K8S_TESTER_EC2_S3_BUCKET_CREATE_KEEP | *ec2config.Config.S3BucketCreateKeep | bool | read-only "false"
AWS_K8S_TESTER_EC2_S3_BUCKET_NAME | *ec2config.Config.S3BucketName | string | read-only "false"
AWS_K8S_TESTER_EC2_S3_BUCKET_LIFECYCLE_EXPIRATION_DAYS | *ec2config.Config.S3BucketLifecycleExpirationDays | int64 | read-only "false"
AWS_K8S_TESTER_EC2_ROLE_NAME | *ec2config.Config.RoleName | string | read-only "false"
AWS_K8S_TESTER_EC2_ROLE_CREATE | *ec2config.Config.RoleCreate | bool | read-only "false"
AWS_K8S_TESTER_EC2_ROLE_ARN | *ec2config.Config.RoleARN | string | read-only "false"
AWS_K8S_TESTER_EC2_ROLE_SERVICE_PRINCIPALS | *ec2config.Config.RoleServicePrincipals | []string | read-only "false"
AWS_K8S_TESTER_EC2_ROLE_MANAGED_POLICY_ARNS | *ec2config.Config.RoleManagedPolicyARNs | []string | read-only "false"
AWS_K8S_TESTER_EC2_ROLE_CFN_STACK_ID | *ec2config.Config.RoleCFNStackID | string | read-only "true"
AWS_K8S_TESTER_EC2_VPC_CREATE | *ec2config.Config.VPCCreate | bool | read-only "false"
AWS_K8S_TESTER_EC2_VPC_ID | *ec2config.Config.VPCID | string | read-only "false"
AWS_K8S_TESTER_EC2_VPC_CFN_STACK_ID | *ec2config.Config.VPCCFNStackID | string | read-only "true"
AWS_K8S_TESTER_EC2_SSH_INGRESS_IPV4_RANGE | *ec2config.Config.SSHIngressIPv4Range | string | read-only "false"
AWS_K8S_TESTER_EC2_VPC_CIDR | *ec2config.Config.VPCCIDR | string | read-only "false"
AWS_K8S_TESTER_EC2_PUBLIC_SUBNET_CIDR_1 | *ec2config.Config.PublicSubnetCIDR1 | string | read-only "false"
AWS_K8S_TESTER_EC2_PUBLIC_SUBNET_CIDR_2 | *ec2config.Config.PublicSubnetCIDR2 | string | read-only "false"
AWS_K8S_TESTER_EC2_PUBLIC_SUBNET_CIDR_3 | *ec2config.Config.PublicSubnetCIDR3 | string | read-only "false"
AWS_K8S_TESTER_EC2_PRIVATE_SUBNET_CIDR_1 | *ec2config.Config.PrivateSubnetCIDR1 | string | read-only "false"
AWS_K8S_TESTER_EC2_PRIVATE_SUBNET_CIDR_2 | *ec2config.Config.PrivateSubnetCIDR2 | string | read-only "false"
AWS_K8S_TESTER_EC2_PUBLIC_SUBNET_IDS | *ec2config.Config.PublicSubnetIDs | []string | read-only "true"
AWS_K8S_TESTER_EC2_PRIVATE_SUBNET_IDS | *ec2config.Config.PrivateSubnetIDs | []string | read-only "true"
AWS_K8S_TESTER_EC2_DHCP_OPTIONS_DOMAIN_NAME | *ec2config.Config.DHCPOptionsDomainName | string | read-only "false"
AWS_K8S_TESTER_EC2_DHCP_OPTIONS_DOMAIN_NAME_SERVERS | *ec2config.Config.DHCPOptionsDomainNameServers | []string | read-only "false"
AWS_K8S_TESTER_EC2_SECURITY_GROUP_ID | *ec2config.Config.SecurityGroupID | string | read-only "true"
AWS_K8S_TESTER_EC2_REMOTE_ACCESS_KEY_CREATE | *ec2config.Config.RemoteAccessKeyCreate | bool | read-only "false"
AWS_K8S_TESTER_EC2_REMOTE_ACCESS_KEY_NAME | *ec2config.Config.RemoteAccessKeyName | string | read-only "false"
AWS_K8S_TESTER_EC2_REMOTE_ACCESS_PRIVATE_KEY_PATH | *ec2config.Config.RemoteAccessPrivateKeyPath | string | read-only "false"
AWS_K8S_TESTER_EC2_REMOTE_ACCESS_COMMANDS_OUTPUT_PATH | *ec2config.Config.RemoteAccessCommandsOutputPath | string | read-only "false"
AWS_K8S_TESTER_EC2_ASGS_FETCH_LOGS | *ec2config.Config.ASGsFetchLogs | bool | read-only "false"
AWS_K8S_TESTER_EC2_ASGS_LOGS_DIR | *ec2config.Config.ASGsLogsDir | string | read-only "false"
AWS_K8S_TESTER_EC2_ASGS | *ec2config.Config.ASGs | map[string]ec2config.ASG | read-only "false"

Documentation

Overview

Package ec2config defines EC2 configuration.

Index

Constants

View Source
const (
	// AMITypeBottleRocketCPU is the AMI type for Bottlerocket OS.
	// https://github.com/bottlerocket-os/bottlerocket
	AMITypeBottleRocketCPU = "BOTTLEROCKET_x86_64"
	// AMITypeAL2X8664 is the AMI type for Amazon Linux 2 AMI.
	AMITypeAL2X8664 = "AL2_x86_64"
	// AMITypeAL2X8664GPU is the AMI type for Amazon Linux 2 AMI with GPU.
	AMITypeAL2X8664GPU = "AL2_x86_64_GPU"

	// DefaultNodeInstanceTypeCPU is the default EC2 instance type for CPU worker node.
	DefaultNodeInstanceTypeCPU = "c5.xlarge"
	// DefaultNodeInstanceTypeGPU is the default EC2 instance type for GPU worker node.
	DefaultNodeInstanceTypeGPU = "p3.8xlarge"

	// DefaultNodeVolumeSize is the default EC2 instance volume size for a worker node.
	DefaultNodeVolumeSize = 40

	// ASGsMaxLimit is the maximum number of "Managed Node Group"s per a EKS cluster.
	ASGsMaxLimit = 10
	// ASGMaxLimit is the maximum number of nodes per a "Managed Node Group".
	ASGMaxLimit = 100
)
View Source
const EnvironmentVariablePrefix = "AWS_K8S_TESTER_EC2_"

EnvironmentVariablePrefix is the environment variable prefix used for "ec2config".

View Source
const StatusDELETEDORNOTEXIST = "DELETED/NOT-EXIST"

TODO: asg status

Variables

This section is empty.

Functions

This section is empty.

Types

type ASG added in v0.6.9

type ASG struct {
	// Name is the ASG name.
	Name          string `json:"name"`
	ASGCFNStackID string `json:"asg-cfn-stack-id" read-only:"true"`

	// CreateTook is the duration that took to create the resource.
	CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
	// CreateTookString is the duration that took to create the resource.
	CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
	// DeleteTook is the duration that took to create the resource.
	DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
	// DeleteTookString is the duration that took to create the resource.
	DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`

	// RemoteAccessUserName is the user name used for running init scripts or SSH access.
	RemoteAccessUserName string `json:"remote-access-user-name"`

	// SSMDocumentName is the name of SSM document.
	SSMDocumentName string `json:"ssm-document-name"`
	// SSMDocumentCFNStackName is the name of SSM document CFN stack.
	SSMDocumentCFNStackName string `json:"ssm-document-cfn-stack-name"`
	// SSMDocumentCreate is true to auto-create and delete SSM document.
	SSMDocumentCreate bool `json:"ssm-document-create"`
	// SSMDocumentCommands is the commands for SSM document.
	// Only used if SSM doc is created.
	SSMDocumentCommands string `json:"ssm-document-commands"`
	// SSMDocumentExecutionTimeoutSeconds is the SSM document execution timeout in seconds.
	SSMDocumentExecutionTimeoutSeconds int      `json:"ssm-document-execution-timeout-in-seconds"`
	SSMDocumentCFNStackID              string   `json:"ssm-document-cfn-stack-id" read-only:"true"`
	SSMDocumentCommandIDs              []string `json:"ssm-document-command-ids" read-only:"true"`

	// AMIType is the AMI type for the node group.
	// Allowed values are BOTTLEROCKET_x86_64, AL2_x86_64 and AL2_x86_64_GPU.
	// ref. https://docs.aws.amazon.com/eks/latest/userguide/launch-workers.html
	// ref. https://github.com/awslabs/amazon-eks-ami/blob/master/amazon-eks-nodegroup.yaml
	AMIType string `json:"ami-type,omitempty"`
	// ImageID is the Amazon Machine Image (AMI).
	// This value overrides any AWS Systems Manager Parameter Store value.
	ImageID string `json:"image-id"`
	// ImageIDSSMParameter is the AWS Systems Manager Parameter Store
	// parameter of the AMI ID.
	ImageIDSSMParameter string `json:"image-id-ssm-parameter"`
	// InstanceTypes is the list of EC2 instance types.
	InstanceTypes []string `json:"instance-types"`
	// VolumeSize is the size of the default volume, in GiB.
	//
	// Constraints: 1-16384 for General Purpose SSD (gp2), 4-16384 for Provisioned
	// IOPS SSD (io1), 500-16384 for Throughput Optimized HDD (st1), 500-16384 for
	// Cold HDD (sc1), and 1-1024 for Magnetic (standard) volumes. If you specify
	// a snapshot, the volume size must be equal to or larger than the snapshot
	// size.
	//
	// Default: If you're creating the volume from a snapshot and don't specify
	// a volume size, the default is the snapshot size.
	VolumeSize int64 `json:"volume-size"`

	// ASGMinSize is the minimum size of ASG.
	ASGMinSize int64 `json:"asg-min-size,omitempty"`
	// ASGMaxSize is the maximum size of ASG.
	ASGMaxSize int64 `json:"asg-max-size,omitempty"`
	// ASGDesiredCapacity is the desired capacity of ASG.
	ASGDesiredCapacity int64 `json:"asg-desired-capacity,omitempty"`

	// Instances is a map from instance ID to instance.
	Instances map[string]Instance `json:"instanaces" read-only:"true"`
	// Logs maps each instance ID to a list of log file paths fetched via SSH access.
	Logs map[string][]string `json:"logs" read-only:"true"`
}

ASG represents one ASG.

func (*ASG) SSHCommands added in v0.6.9

func (asg *ASG) SSHCommands(region string, keyPath string, userName string) (s string)

SSHCommands returns the SSH commands.

type BlockDeviceMapping

type BlockDeviceMapping struct {
	DeviceName string `json:"device-name"`
	EBS        EBS    `json:"ebs"`
}

BlockDeviceMapping defines a block device mapping.

type CPUOptions added in v0.9.0

type CPUOptions struct {
	// CoreCount is the number of CPU cores for the instance.
	CoreCount int64 `json:"core-count"`
	// ThreadsPerCore is the number of threads per CPU core.
	ThreadsPerCore int64 `json:"threads-per-core"`
}

CPUOptions represents the CPU of an EC2 instance.

type Config

type Config struct {

	// Name is the name of EC2 tester.
	Name string `json:"name"`
	// ConfigPath is the configuration file path.
	// Deployer is expected to update this file with latest status.
	ConfigPath string `json:"config-path,omitempty"`
	// Region is the AWS geographic area for EC2 deployment.
	// If empty, set default region.
	Region string `json:"region,omitempty"`

	// AWSAccountID is the account ID of the eks tester caller session.
	AWSAccountID string `json:"aws-account-id" read-only:"true"`
	// AWSUserID is the user ID of the eks tester caller session.
	AWSUserID string `json:"aws-user-id" read-only:"true"`
	// AWSIAMRoleARN is the user IAM Role ARN of the eks tester caller session.
	AWSIAMRoleARN string `json:"aws-iam-role-arn" read-only:"true"`
	// AWSCredentialPath is automatically set via AWS SDK Go.
	// And to be mounted as a volume as 'Secret' object.
	AWSCredentialPath string `json:"aws-credential-path" read-only:"true"`

	// CreateTook is the duration that took to create the resource.
	CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
	// CreateTookString is the duration that took to create the resource.
	CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
	// DeleteTook is the duration that took to create the resource.
	DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
	// DeleteTookString is the duration that took to create the resource.
	DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`

	// LogLevel configures log level. Only supports debug, info, warn, error, panic, or fatal. Default 'info'.
	LogLevel string `json:"log-level"`
	// LogOutputs is a list of log outputs. Valid values are 'default', 'stderr', 'stdout', or file names.
	// Logs are appended to the existing file, if any.
	// Multiple values are accepted. If empty, it sets to 'default', which outputs to stderr.
	// See https://pkg.go.dev/go.uber.org/zap#Open and https://pkg.go.dev/go.uber.org/zap#Config for more details.
	LogOutputs []string `json:"log-outputs,omitempty"`

	// Up is true if the cluster is up.
	Up bool `json:"up"`
	// StatusCurrent represents the current status of the cluster.
	StatusCurrent string `json:"status-current"`
	// Status represents the status of the cluster.
	Status []Status `json:"status"`

	// OnFailureDelete is true to delete all resources on creation fail.
	OnFailureDelete bool `json:"on-failure-delete"`
	// OnFailureDeleteWaitSeconds is the seconds to wait before deleting
	// all resources on creation fail.
	OnFailureDeleteWaitSeconds uint64 `json:"on-failure-delete-wait-seconds"`

	// S3BucketCreate is true to auto-create S3 bucket.
	S3BucketCreate bool `json:"s3-bucket-create"`
	// S3BucketCreateKeep is true to not delete auto-created S3 bucket.
	// The created S3 bucket is kept.
	S3BucketCreateKeep bool `json:"s3-bucket-create-keep"`
	// S3BucketName is the name of cluster S3.
	S3BucketName string `json:"s3-bucket-name"`
	// S3BucketLifecycleExpirationDays is expiration in days for the lifecycle of the object.
	S3BucketLifecycleExpirationDays int64 `json:"s3-bucket-lifecycle-expiration-days"`

	// RoleName is the name of cluster role.
	RoleName string `json:"role-name"`
	// RoleCreate is true to auto-create and delete cluster role.
	RoleCreate bool `json:"role-create"`
	// RoleARN is the role ARN that EC2 uses to create AWS resources for Kubernetes.
	// By default, it's empty which triggers tester to create one.
	RoleARN string `json:"role-arn"`
	// RoleServicePrincipals is the EC2 Role Service Principals
	RoleServicePrincipals []string `json:"role-service-principals"`
	// RoleManagedPolicyARNs is EC2 Role managed policy ARNs.
	RoleManagedPolicyARNs []string `json:"role-managed-policy-arns"`
	RoleCFNStackID        string   `json:"role-cfn-stack-id" read-only:"true"`

	// VPCCreate is true to auto-create and delete VPC.
	VPCCreate bool `json:"vpc-create"`
	// VPCID is the VPC ID for cluster creation.
	// If not empty, VPC is reused and not deleted.
	// If empty, VPC is created anew and deleted on cluster deletion.
	VPCID         string `json:"vpc-id"`
	VPCCFNStackID string `json:"vpc-cfn-stack-id" read-only:"true"`
	// SSHIngressIPv4Range is the IP range for SSH inbound traffic.
	SSHIngressIPv4Range string `json:"ssh-ingress-ipv4-range"`
	// VpcCIDR is the IP range (CIDR notation) for VPC, must be a valid private
	// (RFC 1918) CIDR range.
	VPCCIDR string `json:"vpc-cidr,omitempty"`
	// PublicSubnetCIDR1 is the CIDR Block for subnet 1 within the VPC.
	PublicSubnetCIDR1 string `json:"public-subnet-cidr-1,omitempty"`
	// PublicSubnetCIDR2 is the CIDR Block for subnet 2 within the VPC.
	PublicSubnetCIDR2 string `json:"public-subnet-cidr-2,omitempty"`
	// PublicSubnetCIDR3 is the CIDR Block for subnet 3 within the VPC.
	PublicSubnetCIDR3 string `json:"public-subnet-cidr-3,omitempty"`
	// PrivateSubnetCIDR1 is the CIDR Block for subnet 1 within the VPC.
	PrivateSubnetCIDR1 string `json:"private-subnet-cidr-1,omitempty"`
	// PrivateSubnetCIDR2 is the CIDR Block for subnet 2 within the VPC.
	PrivateSubnetCIDR2 string `json:"private-subnet-cidr-2,omitempty"`
	// PublicSubnetIDs is the list of all public subnets in the VPC.
	PublicSubnetIDs []string `json:"public-subnet-ids" read-only:"true"`
	// PrivateSubnetIDs is the list of all private subnets in the VPC.
	PrivateSubnetIDs []string `json:"private-subnet-ids" read-only:"true"`

	// DHCPOptionsDomainName is used to complete unqualified DNS hostnames for VPC.
	// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html
	// ref. https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html
	DHCPOptionsDomainName string `json:"dhcp-options-domain-name"`
	// DHCPOptionsDomainNameServers is a list of strings.
	// The IPv4 addresses of up to four domain name servers, or AmazonProvidedDNS, for VPC.
	// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html
	// ref. https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html
	DHCPOptionsDomainNameServers []string `json:"dhcp-options-domain-name-servers"`

	// SecurityGroupID is the security group ID for the VPC.
	SecurityGroupID string `json:"security-group-id" read-only:"true"`

	// RemoteAccessKeyCreate is true to create the remote SSH access private key.
	RemoteAccessKeyCreate bool `json:"remote-access-key-create"`
	// RemoteAccessKeyName is the remote SSH access private key name.
	RemoteAccessKeyName string `json:"remote-access-key-name"`
	// RemoteAccessPrivateKeyPath is the remote SSH access private key path.
	RemoteAccessPrivateKeyPath string `json:"remote-access-private-key-path"`
	// RemoteAccessCommandsOutputPath is the output path for ssh commands.
	RemoteAccessCommandsOutputPath string `json:"remote-access-commands-output-path,omitempty"`

	// ASGsFetchLogs is true to fetch logs from remote nodes using SSH.
	ASGsFetchLogs bool `json:"asgs-fetch-logs"`
	// ASGsLogsDir is set to specify the target directory to store all remote log files.
	// If empty, it stores in the same directory as "ConfigPath".
	ASGsLogsDir string `json:"asgs-logs-dir,omitempty"`
	// ASGs is a map from each ASG name to EC2 ASG.
	ASGs map[string]ASG `json:"asgs"`
	// contains filtered or unexported fields
}

Config defines EC2 configuration.

func Load

func Load(p string) (cfg *Config, err error)

Load loads configuration from YAML. Useful when injecting shared configuration via ConfigMap.

Example usage:

import "github.com/aws/aws-k8s-tester/eksconfig"
cfg := eksconfig.Load("test.yaml")
err := cfg.ValidateAndSetDefaults()

Do not set default values in this function. "ValidateAndSetDefaults" must be called separately, to prevent overwriting previous data when loaded from disks.

func NewDefault

func NewDefault() *Config

NewDefault returns a default configuration.

  • empty string creates a non-nil object for pointer-type field
  • omitting an entire field returns nil value
  • make sure to check both

func (*Config) RecordStatus added in v0.6.9

func (cfg *Config) RecordStatus(status string)

RecordStatus records cluster status.

func (*Config) SSHCommands

func (cfg *Config) SSHCommands() string

SSHCommands returns the SSH commands.

func (*Config) Sync

func (cfg *Config) Sync() (err error)

Sync persists current configuration and states to disk.

func (*Config) UpdateFromEnvs

func (cfg *Config) UpdateFromEnvs() (err error)

UpdateFromEnvs updates fields from environmental variables. Empty values are ignored and do not overwrite fields with empty values. WARNING: The environmetal variable value always overwrites current field values if there's a conflict.

func (*Config) ValidateAndSetDefaults

func (cfg *Config) ValidateAndSetDefaults() error

ValidateAndSetDefaults returns an error for invalid configurations. And updates empty fields with default values. At the end, it writes populated YAML to aws-k8s-tester config path.

type EBS

type EBS struct {
	DeleteOnTermination bool   `json:"delete-on-termination"`
	Status              string `json:"status"`
	VolumeID            string `json:"volume-id"`
}

EBS defines an EBS volume.

type IAMInstanceProfile added in v0.9.0

type IAMInstanceProfile struct {
	// ARN is the Amazon Resource Name (ARN) of the instance profile.
	ARN string `json:"arn"`
	// ID is the ID of the instance profile.
	ID string `json:"id"`
}

IAMInstanceProfile is the IAM instance profile.

type Instance

type Instance struct {
	Architecture          string               `json:"architecture"`
	ImageID               string               `json:"image-id"`
	IAMInstanceProfile    IAMInstanceProfile   `json:"iam-instance-profile"`
	InstanceID            string               `json:"instance-id"`
	InstanceType          string               `json:"instance-type"`
	KeyName               string               `json:"key-name"`
	Placement             Placement            `json:"placement"`
	PrivateDNSName        string               `json:"private-dns-name"`
	PrivateIP             string               `json:"private-ip"`
	PublicDNSName         string               `json:"public-dns-name"`
	PublicIP              string               `json:"public-ip"`
	State                 State                `json:"state"`
	StateReason           StateReason          `json:"state-reason"`
	StateTransitionReason string               `json:"state-transition-reason"`
	SubnetID              string               `json:"subnet-id"`
	VPCID                 string               `json:"vpc-id"`
	CPUOptions            CPUOptions           `json:"cpu-options"`
	BlockDeviceMappings   []BlockDeviceMapping `json:"block-device-mappings"`
	EBSOptimized          bool                 `json:"ebs-optimized"`
	RootDeviceName        string               `json:"root-device-name"`
	RootDeviceType        string               `json:"root-device-type"`
	SecurityGroups        []SecurityGroup      `json:"security-groups"`
	LaunchTime            time.Time            `json:"launch-time"`
	RemoteAccessUserName  string               `json:"remote-access-user-name"`
	Hypervisor            string               `json:"hypervisor"`
	VirtualizationType    string               `json:"virtualization-type"`
}

Instance represents an EC2 instance.

func ConvertInstance added in v0.6.9

func ConvertInstance(iv *ec2.Instance) (instance Instance)

ConvertInstance converts "aws ec2 describe-instances" to "config.Instance".

type Placement

type Placement struct {
	AvailabilityZone string `json:"availability-zone"`
	Tenancy          string `json:"tenancy"`
}

Placement defines EC2 placement.

type SecurityGroup

type SecurityGroup struct {
	GroupName string `json:"group-name"`
	GroupID   string `json:"group-id"`
}

SecurityGroup defines a security group.

type State

type State struct {
	Code int64  `json:"code"`
	Name string `json:"name"`
}

State defines an EC2 state.

type StateReason added in v0.9.0

type StateReason struct {
	Code    string `json:"code"`
	Message string `json:"message"`
}

StateReason represents the EC2 state reason.

type Status added in v0.6.9

type Status struct {
	Time   time.Time `json:"time"`
	Status string    `json:"status"`
}

Status is the status.

Directories

Path Synopsis
gen generates ec2config documentation.
gen generates ec2config documentation.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL