Module: AWS
- Defined in:
- lib/AWS/exceptions.rb,
lib/AWS.rb,
lib/AWS/EC2.rb,
lib/AWS/ELB.rb,
lib/AWS/RDS.rb,
lib/AWS/RDS/rds.rb,
lib/AWS/responses.rb,
lib/AWS/Cloudwatch.rb,
lib/AWS/EC2/devpay.rb,
lib/AWS/EC2/images.rb,
lib/AWS/Autoscaling.rb,
lib/AWS/EC2/console.rb,
lib/AWS/EC2/volumes.rb,
lib/AWS/EC2/keypairs.rb,
lib/AWS/EC2/products.rb,
lib/AWS/EC2/instances.rb,
lib/AWS/EC2/snapshots.rb,
lib/AWS/EC2/elastic_ips.rb,
lib/AWS/ELB/load_balancers.rb,
lib/AWS/EC2/security_groups.rb,
lib/AWS/EC2/image_attributes.rb,
lib/AWS/Cloudwatch/monitoring.rb,
lib/AWS/EC2/availability_zones.rb,
lib/AWS/Autoscaling/autoscaling.rb,
lib/AWS/EC2/spot_instance_requests.rb
Overview
– AWS ERROR CODES AWS can throw error exceptions that contain a ‘.’ in them. since we can’t name an exception class with that ‘.’ I compressed each class name into the non-dot version which allows us to retain the granularity of the exception. ++
Defined Under Namespace
Modules: Autoscaling, Cloudwatch, EC2, ELB, RDS Classes: AddressLimitExceeded, ArgumentError, AttachmentLimitExceeded, AuthFailure, Base, DuplicateLoadBalancerName, Error, IncorrectState, InstanceLimitExceeded, InsufficientAddressCapacity, InsufficientInstanceCapacity, InsufficientReservedInstanceCapacity, InsufficientReservedInstancesCapacity, InternalError, InvalidAMIAttributeItemValue, InvalidAMIIDMalformed, InvalidAMIIDNotFound, InvalidAMIIDUnavailable, InvalidAttachmentNotFound, InvalidClientTokenId, InvalidConfigurationRequest, InvalidDeviceInUse, InvalidGroupDuplicate, InvalidGroupInUse, InvalidGroupNotFound, InvalidGroupReserved, InvalidInstance, InvalidInstanceIDMalformed, InvalidInstanceIDNotFound, InvalidKeyPairDuplicate, InvalidKeyPairNotFound, InvalidManifest, InvalidParameterCombination, InvalidParameterValue, InvalidPermissionDuplicate, InvalidPermissionMalformed, InvalidReservationIDMalformed, InvalidReservationIDNotFound, InvalidReservedInstancesId, InvalidReservedInstancesOfferingId, InvalidSnapshotIDMalformed, InvalidSnapshotIDNotFound, InvalidUserIDMalformed, InvalidVolumeIDDuplicate, InvalidVolumeIDMalformed, InvalidVolumeIDNotFound, InvalidVolumeIDZoneMismatch, InvalidZoneNotFound, LoadBalancerNotFound, NonEBSInstance, PendingSnapshotLimitExceeded, ReservedInstancesLimitExceeded, Response, SignatureDoesNotMatch, SnapshotLimitExceeded, TooManyLoadBalancers, Unavailable, UnknownParameter, ValidationError, VolumeLimitExceeded
Class Method Summary collapse
-
.canonical_string(params, host, method = "POST", base = "/") ⇒ String
Builds the canonical string for signing requests.
-
.encode(secret_access_key, str, urlencode = true) ⇒ String
Encodes the given string with the secret_access_key by taking the hmac-sha1 sum, and then base64 encoding it.
Class Method Details
.canonical_string(params, host, method = "POST", base = "/") ⇒ String
Builds the canonical string for signing requests. This strips out all ‘&’, ‘?’, and ‘=’ from the query string to be signed. The parameters in the path passed in must already be sorted in case-insensitive alphabetical order and must not be url encoded.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/AWS.rb', line 57 def AWS.canonical_string(params, host, method="POST", base="/") # Sort, and encode parameters into a canonical string. sorted_params = params.sort {|x,y| x[0] <=> y[0]} encoded_params = sorted_params.collect do |p| encoded = (CGI::escape(p[0].to_s) + "=" + CGI::escape(p[1].to_s)) # Ensure spaces are encoded as '%20', not '+' encoded.gsub('+', '%20') end sigquery = encoded_params.join("&") # Generate the request description string req_desc = method + "\n" + host + "\n" + base + "\n" + sigquery end |
.encode(secret_access_key, str, urlencode = true) ⇒ String
Encodes the given string with the secret_access_key by taking the hmac-sha1 sum, and then base64 encoding it. Optionally, it will also url encode the result of that to protect the string if it’s going to be used as a query string parameter.
86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/AWS.rb', line 86 def AWS.encode(secret_access_key, str, urlencode=true) digest = OpenSSL::Digest::Digest.new('sha1') b64_hmac = Base64.encode64( OpenSSL::HMAC.digest(digest, secret_access_key, str)).gsub("\n","") if urlencode return CGI::escape(b64_hmac) else return b64_hmac end end |