View Source
const ContainerLinuxDiskSizeGiB = 8

    The default size of Container Linux disks on AWS, in GiB. See discussion in

    View Source
    const (
    	// ContentTypeJSON is canonical content-type for JSON objects
    	ContentTypeJSON = "application/json"


    View Source
    var (
    	NoRegionPVSupport = errors.New("Region does not support PV")


    func RegionSupportsPV

    func RegionSupportsPV(region string) bool


    type API

    type API struct {
    	// contains filtered or unexported fields

    func New

    func New(opts *Options) (*API, error)

      New creates a new AWS API wrapper. It uses credentials from any of the standard credentials sources, including the environment and the profile configured in ~/.aws. No validation is done that credentials exist and before using the API a preflight check is recommended via api.PreflightCheck Note that this method may modify Options to update the AMI ID

      func (*API) AddKey

      func (a *API) AddKey(name, key string) error

      func (*API) CopyBucket

      func (a *API) CopyBucket(srcBucket, prefix, destBucket, policy string) error

        Copies all objects in srcBucket to destBucket with a given canned ACL policy

        func (*API) CopyImage

        func (a *API) CopyImage(sourceImageID string, regions []string) (map[string]string, error)

        func (*API) CopyObject

        func (a *API) CopyObject(srcBucket, srcPath, destBucket, destPath, policy string) error

          Copy an Object to a new location with a given canned ACL policy

          func (*API) CreateHVMImage

          func (a *API) CreateHVMImage(snapshotID string, diskSizeGiB uint, name string, description string) (string, error)

          func (*API) CreateImportRole

          func (a *API) CreateImportRole(bucket string) error

          func (*API) CreateInstances

          func (a *API) CreateInstances(name, keyname, userdata string, count uint64) ([]*ec2.Instance, error)

            CreateInstances creates EC2 instances with a given name tag, optional ssh key name, user data. The image ID, instance type, and security group set in the API will be used. CreateInstances will block until all instances are running and have an IP address.

            func (*API) CreatePVImage

            func (a *API) CreatePVImage(snapshotID string, diskSizeGiB uint, name string, description string) (string, error)

            func (*API) CreateSnapshot

            func (a *API) CreateSnapshot(imageName, sourceURL string, format EC2ImageFormat) (*Snapshot, error)

              CreateSnapshot creates an AWS Snapshot

              func (*API) CreateTags

              func (a *API) CreateTags(resources []string, tags map[string]string) error

              func (*API) DeleteKey

              func (a *API) DeleteKey(name string) error

              func (*API) DeleteObject

              func (a *API) DeleteObject(bucket, path string) error

              func (*API) DownloadFile

              func (a *API) DownloadFile(srcBucket, srcPath string) (*os.File, error)

                Downloads a file from S3 to a temporary file. This file must be closed by the caller.

                func (*API) FindImage

                func (a *API) FindImage(name string) (string, error)

                  Find an image we own with the specified name. Return ID or "".

                  func (*API) FindSnapshot

                  func (a *API) FindSnapshot(imageName string) (*Snapshot, error)

                    Look up a Snapshot by name. Return nil if not found.

                    func (*API) GC

                    func (a *API) GC(gracePeriod time.Duration) error

                      GC removes AWS resources that are at least gracePeriod old. It attempts to only operate on resources that were created by a mantle tool.

                      func (*API) GetConsoleOutput

                      func (a *API) GetConsoleOutput(instanceID string) (string, error)

                        GetConsoleOutput returns the console output. Returns "", nil if no logs are available.

                        func (*API) GrantLaunchPermission

                        func (a *API) GrantLaunchPermission(imageID string, userIDs []string) error

                        func (*API) InitializeBucket

                        func (a *API) InitializeBucket(bucket string) error

                        func (*API) PreflightCheck

                        func (a *API) PreflightCheck() error

                          PreflightCheck validates that the aws configuration provided has valid credentials

                          func (*API) PublishImage

                          func (a *API) PublishImage(imageID string) error

                            Grant everyone launch permission on the specified image and create-volume permission on its underlying snapshot.

                            func (*API) PutObjectAcl

                            func (a *API) PutObjectAcl(bucket, path, policy string) error

                              This will modify the ACL on Objects to one of the canned ACL policies

                              func (*API) TerminateInstances

                              func (a *API) TerminateInstances(ids []string) error

                                TerminateInstances schedules EC2 instances to be terminated.

                                func (*API) UpdateBucketObjectsACL

                                func (a *API) UpdateBucketObjectsACL(srcBucket, prefix, policy string) error

                                  TODO: bikeshed this name modifies the ACL of all objects of a given prefix in srcBucket to a given canned ACL policy

                                  func (*API) UploadObject

                                  func (a *API) UploadObject(r io.Reader, bucket, path string, force bool, policy string, contentType string) error

                                    UploadObject uploads an object to S3

                                    type EC2ImageFormat

                                    type EC2ImageFormat string
                                    const (
                                    	EC2ImageFormatRaw  EC2ImageFormat = ec2.DiskImageFormatRaw
                                    	EC2ImageFormatVmdk EC2ImageFormat = ec2.DiskImageFormatVmdk

                                    func (*EC2ImageFormat) Set

                                    func (e *EC2ImageFormat) Set(s string) error

                                    func (*EC2ImageFormat) String

                                    func (e *EC2ImageFormat) String() string

                                    func (*EC2ImageFormat) Type

                                    func (e *EC2ImageFormat) Type() string

                                    type EC2ImageType

                                    type EC2ImageType string
                                    const (
                                    	EC2ImageTypeHVM EC2ImageType = "hvm"
                                    	EC2ImageTypePV  EC2ImageType = "paravirtual"

                                    type Options

                                    type Options struct {
                                    	// The AWS region regional api calls should use
                                    	Region string
                                    	// The path to the shared credentials file, if not ~/.aws/credentials
                                    	CredentialsFile string
                                    	// The profile to use when resolving credentials, if applicable
                                    	Profile string
                                    	// AccessKeyID is the optional access key to use. It will override all other sources
                                    	AccessKeyID string
                                    	// SecretKey is the optional secret key to use. It will override all other sources
                                    	SecretKey string
                                    	// AMI is the AWS AMI to launch EC2 instances with.
                                    	// If it is one of the special strings alpha|beta|stable, it will be resolved
                                    	// to an actual ID.
                                    	AMI                string
                                    	InstanceType       string
                                    	SecurityGroup      string
                                    	IAMInstanceProfile string

                                    type Snapshot

                                    type Snapshot struct {
                                    	SnapshotID string