aws_sdk 3.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/aws-sdk.rb +14 -0
- data/lib/aws.rb +49 -0
- data/lib/aws/api_config/AutoScaling-2011-01-01.yml +791 -0
- data/lib/aws/api_config/CloudFormation-2010-05-15.yml +303 -0
- data/lib/aws/api_config/DynamoDB-2011-12-05.yml +540 -0
- data/lib/aws/api_config/EC2-2011-12-15.yml +3638 -0
- data/lib/aws/api_config/EC2-2012-04-01.yml +3739 -0
- data/lib/aws/api_config/ELB-2011-08-15.yml +512 -0
- data/lib/aws/api_config/IAM-2010-05-08.yml +1221 -0
- data/lib/aws/api_config/SNS-2010-03-31.yml +248 -0
- data/lib/aws/api_config/SQS-2011-10-01.yml +314 -0
- data/lib/aws/api_config/STS-2011-06-15.yml +54 -0
- data/lib/aws/api_config/SimpleDB-2009-04-15.yml +305 -0
- data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +231 -0
- data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +721 -0
- data/lib/aws/auto_scaling.rb +162 -0
- data/lib/aws/auto_scaling/activity.rb +102 -0
- data/lib/aws/auto_scaling/activity_collection.rb +82 -0
- data/lib/aws/auto_scaling/client.rb +765 -0
- data/lib/aws/auto_scaling/config.rb +18 -0
- data/lib/aws/auto_scaling/errors.rb +22 -0
- data/lib/aws/auto_scaling/group.rb +420 -0
- data/lib/aws/auto_scaling/group_collection.rb +96 -0
- data/lib/aws/auto_scaling/group_options.rb +146 -0
- data/lib/aws/auto_scaling/instance.rb +192 -0
- data/lib/aws/auto_scaling/instance_collection.rb +63 -0
- data/lib/aws/auto_scaling/launch_configuration.rb +150 -0
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +144 -0
- data/lib/aws/auto_scaling/notification_configuration.rb +89 -0
- data/lib/aws/auto_scaling/notification_configuration_collection.rb +184 -0
- data/lib/aws/auto_scaling/request.rb +23 -0
- data/lib/aws/auto_scaling/scaling_policy.rb +125 -0
- data/lib/aws/auto_scaling/scaling_policy_collection.rb +72 -0
- data/lib/aws/auto_scaling/scaling_policy_options.rb +61 -0
- data/lib/aws/auto_scaling/scheduled_action.rb +145 -0
- data/lib/aws/auto_scaling/scheduled_action_collection.rb +195 -0
- data/lib/aws/auto_scaling/tag.rb +59 -0
- data/lib/aws/auto_scaling/tag_collection.rb +112 -0
- data/lib/aws/cloud_formation.rb +270 -0
- data/lib/aws/cloud_formation/client.rb +339 -0
- data/lib/aws/cloud_formation/config.rb +18 -0
- data/lib/aws/cloud_formation/errors.rb +22 -0
- data/lib/aws/cloud_formation/request.rb +29 -0
- data/lib/aws/cloud_formation/stack.rb +256 -0
- data/lib/aws/cloud_formation/stack_collection.rb +206 -0
- data/lib/aws/cloud_formation/stack_event.rb +75 -0
- data/lib/aws/cloud_formation/stack_event_collection.rb +47 -0
- data/lib/aws/cloud_formation/stack_options.rb +72 -0
- data/lib/aws/cloud_formation/stack_output.rb +53 -0
- data/lib/aws/cloud_formation/stack_resource.rb +117 -0
- data/lib/aws/cloud_formation/stack_resource_collection.rb +84 -0
- data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +72 -0
- data/lib/aws/cloud_formation/stack_summary.rb +71 -0
- data/lib/aws/cloud_formation/stack_summary_collection.rb +127 -0
- data/lib/aws/core.rb +474 -0
- data/lib/aws/core/async_handle.rb +90 -0
- data/lib/aws/core/autoloader.rb +64 -0
- data/lib/aws/core/cacheable.rb +78 -0
- data/lib/aws/core/client.rb +541 -0
- data/lib/aws/core/client/query_json.rb +110 -0
- data/lib/aws/core/client/query_xml.rb +122 -0
- data/lib/aws/core/collection.rb +234 -0
- data/lib/aws/core/collection/limitable.rb +99 -0
- data/lib/aws/core/collection/simple.rb +90 -0
- data/lib/aws/core/configuration.rb +445 -0
- data/lib/aws/core/data.rb +242 -0
- data/lib/aws/core/default_signer.rb +67 -0
- data/lib/aws/core/http/curb_handler.rb +136 -0
- data/lib/aws/core/http/handler.rb +77 -0
- data/lib/aws/core/http/httparty_handler.rb +114 -0
- data/lib/aws/core/http/net_http_handler.rb +85 -0
- data/lib/aws/core/http/request.rb +250 -0
- data/lib/aws/core/http/response.rb +74 -0
- data/lib/aws/core/indifferent_hash.rb +88 -0
- data/lib/aws/core/inflection.rb +47 -0
- data/lib/aws/core/lazy_error_classes.rb +90 -0
- data/lib/aws/core/log_formatter.rb +454 -0
- data/lib/aws/core/meta_utils.rb +45 -0
- data/lib/aws/core/model.rb +57 -0
- data/lib/aws/core/naming.rb +30 -0
- data/lib/aws/core/option_grammar.rb +700 -0
- data/lib/aws/core/page_result.rb +73 -0
- data/lib/aws/core/policy.rb +916 -0
- data/lib/aws/core/resource.rb +408 -0
- data/lib/aws/core/resource_cache.rb +40 -0
- data/lib/aws/core/response.rb +202 -0
- data/lib/aws/core/response_cache.rb +50 -0
- data/lib/aws/core/service_interface.rb +61 -0
- data/lib/aws/core/session_signer.rb +90 -0
- data/lib/aws/core/signature/version_2.rb +42 -0
- data/lib/aws/core/signature/version_3.rb +73 -0
- data/lib/aws/core/signature/version_3_http.rb +72 -0
- data/lib/aws/core/signature/version_4.rb +138 -0
- data/lib/aws/core/uri_escape.rb +42 -0
- data/lib/aws/core/xml/frame.rb +242 -0
- data/lib/aws/core/xml/frame_stack.rb +85 -0
- data/lib/aws/core/xml/grammar.rb +299 -0
- data/lib/aws/core/xml/parser.rb +70 -0
- data/lib/aws/core/xml/root_frame.rb +65 -0
- data/lib/aws/core/xml/sax_handlers/libxml.rb +47 -0
- data/lib/aws/core/xml/sax_handlers/nokogiri.rb +55 -0
- data/lib/aws/core/xml/sax_handlers/ox.rb +41 -0
- data/lib/aws/core/xml/sax_handlers/rexml.rb +43 -0
- data/lib/aws/core/xml/stub.rb +123 -0
- data/lib/aws/dynamo_db.rb +213 -0
- data/lib/aws/dynamo_db/attribute_collection.rb +460 -0
- data/lib/aws/dynamo_db/batch_get.rb +206 -0
- data/lib/aws/dynamo_db/batch_write.rb +251 -0
- data/lib/aws/dynamo_db/client.rb +888 -0
- data/lib/aws/dynamo_db/config.rb +20 -0
- data/lib/aws/dynamo_db/errors.rb +20 -0
- data/lib/aws/dynamo_db/expectations.rb +40 -0
- data/lib/aws/dynamo_db/item.rb +130 -0
- data/lib/aws/dynamo_db/item_collection.rb +852 -0
- data/lib/aws/dynamo_db/item_data.rb +31 -0
- data/lib/aws/dynamo_db/keys.rb +41 -0
- data/lib/aws/dynamo_db/primary_key_element.rb +47 -0
- data/lib/aws/dynamo_db/request.rb +28 -0
- data/lib/aws/dynamo_db/resource.rb +33 -0
- data/lib/aws/dynamo_db/table.rb +489 -0
- data/lib/aws/dynamo_db/table_collection.rb +165 -0
- data/lib/aws/dynamo_db/types.rb +86 -0
- data/lib/aws/ec2.rb +431 -0
- data/lib/aws/ec2/attachment.rb +140 -0
- data/lib/aws/ec2/attachment_collection.rb +54 -0
- data/lib/aws/ec2/availability_zone.rb +87 -0
- data/lib/aws/ec2/availability_zone_collection.rb +43 -0
- data/lib/aws/ec2/block_device_mappings.rb +53 -0
- data/lib/aws/ec2/client.rb +4121 -0
- data/lib/aws/ec2/collection.rb +36 -0
- data/lib/aws/ec2/config.rb +18 -0
- data/lib/aws/ec2/config_transform.rb +63 -0
- data/lib/aws/ec2/customer_gateway.rb +90 -0
- data/lib/aws/ec2/customer_gateway_collection.rb +73 -0
- data/lib/aws/ec2/dhcp_options.rb +106 -0
- data/lib/aws/ec2/dhcp_options_collection.rb +87 -0
- data/lib/aws/ec2/elastic_ip.rb +157 -0
- data/lib/aws/ec2/elastic_ip_collection.rb +97 -0
- data/lib/aws/ec2/errors.rb +32 -0
- data/lib/aws/ec2/filtered_collection.rb +90 -0
- data/lib/aws/ec2/has_permissions.rb +44 -0
- data/lib/aws/ec2/image.rb +254 -0
- data/lib/aws/ec2/image_collection.rb +228 -0
- data/lib/aws/ec2/instance.rb +669 -0
- data/lib/aws/ec2/instance_collection.rb +346 -0
- data/lib/aws/ec2/internet_gateway.rb +122 -0
- data/lib/aws/ec2/internet_gateway/attachment.rb +78 -0
- data/lib/aws/ec2/internet_gateway_collection.rb +54 -0
- data/lib/aws/ec2/key_pair.rb +82 -0
- data/lib/aws/ec2/key_pair_collection.rb +99 -0
- data/lib/aws/ec2/network_acl.rb +256 -0
- data/lib/aws/ec2/network_acl/association.rb +56 -0
- data/lib/aws/ec2/network_acl/entry.rb +147 -0
- data/lib/aws/ec2/network_acl_collection.rb +64 -0
- data/lib/aws/ec2/network_interface.rb +228 -0
- data/lib/aws/ec2/network_interface/attachment.rb +100 -0
- data/lib/aws/ec2/network_interface_collection.rb +103 -0
- data/lib/aws/ec2/permission_collection.rb +174 -0
- data/lib/aws/ec2/region.rb +97 -0
- data/lib/aws/ec2/region_collection.rb +51 -0
- data/lib/aws/ec2/request.rb +22 -0
- data/lib/aws/ec2/reserved_instances.rb +53 -0
- data/lib/aws/ec2/reserved_instances_collection.rb +40 -0
- data/lib/aws/ec2/reserved_instances_offering.rb +58 -0
- data/lib/aws/ec2/reserved_instances_offering_collection.rb +39 -0
- data/lib/aws/ec2/resource.rb +161 -0
- data/lib/aws/ec2/resource_tag_collection.rb +211 -0
- data/lib/aws/ec2/route_table.rb +205 -0
- data/lib/aws/ec2/route_table/association.rb +119 -0
- data/lib/aws/ec2/route_table/route.rb +113 -0
- data/lib/aws/ec2/route_table_collection.rb +72 -0
- data/lib/aws/ec2/security_group.rb +458 -0
- data/lib/aws/ec2/security_group/egress_ip_permission_collection.rb +63 -0
- data/lib/aws/ec2/security_group/ingress_ip_permission_collection.rb +61 -0
- data/lib/aws/ec2/security_group/ip_permission.rb +128 -0
- data/lib/aws/ec2/security_group_collection.rb +135 -0
- data/lib/aws/ec2/snapshot.rb +143 -0
- data/lib/aws/ec2/snapshot_collection.rb +131 -0
- data/lib/aws/ec2/subnet.rb +161 -0
- data/lib/aws/ec2/subnet_collection.rb +115 -0
- data/lib/aws/ec2/tag.rb +81 -0
- data/lib/aws/ec2/tag_collection.rb +107 -0
- data/lib/aws/ec2/tagged_collection.rb +53 -0
- data/lib/aws/ec2/tagged_item.rb +85 -0
- data/lib/aws/ec2/volume.rb +170 -0
- data/lib/aws/ec2/volume_collection.rb +97 -0
- data/lib/aws/ec2/vpc.rb +166 -0
- data/lib/aws/ec2/vpc_collection.rb +70 -0
- data/lib/aws/ec2/vpn_connection.rb +99 -0
- data/lib/aws/ec2/vpn_connection/telemetry.rb +49 -0
- data/lib/aws/ec2/vpn_connection_collection.rb +96 -0
- data/lib/aws/ec2/vpn_gateway.rb +123 -0
- data/lib/aws/ec2/vpn_gateway/attachment.rb +45 -0
- data/lib/aws/ec2/vpn_gateway_collection.rb +77 -0
- data/lib/aws/elb.rb +65 -0
- data/lib/aws/elb/availability_zone_collection.rb +138 -0
- data/lib/aws/elb/backend_server_policy_collection.rb +140 -0
- data/lib/aws/elb/client.rb +539 -0
- data/lib/aws/elb/config.rb +18 -0
- data/lib/aws/elb/errors.rb +26 -0
- data/lib/aws/elb/instance_collection.rb +174 -0
- data/lib/aws/elb/listener.rb +189 -0
- data/lib/aws/elb/listener_collection.rb +119 -0
- data/lib/aws/elb/listener_opts.rb +45 -0
- data/lib/aws/elb/load_balancer.rb +253 -0
- data/lib/aws/elb/load_balancer_collection.rb +113 -0
- data/lib/aws/elb/load_balancer_policy.rb +93 -0
- data/lib/aws/elb/load_balancer_policy_collection.rb +208 -0
- data/lib/aws/elb/request.rb +23 -0
- data/lib/aws/errors.rb +122 -0
- data/lib/aws/iam.rb +418 -0
- data/lib/aws/iam/access_key.rb +180 -0
- data/lib/aws/iam/access_key_collection.rb +128 -0
- data/lib/aws/iam/account_alias_collection.rb +79 -0
- data/lib/aws/iam/client.rb +1609 -0
- data/lib/aws/iam/collection.rb +83 -0
- data/lib/aws/iam/config.rb +18 -0
- data/lib/aws/iam/errors.rb +22 -0
- data/lib/aws/iam/group.rb +111 -0
- data/lib/aws/iam/group_collection.rb +132 -0
- data/lib/aws/iam/group_policy_collection.rb +47 -0
- data/lib/aws/iam/group_user_collection.rb +84 -0
- data/lib/aws/iam/login_profile.rb +99 -0
- data/lib/aws/iam/mfa_device.rb +52 -0
- data/lib/aws/iam/mfa_device_collection.rb +127 -0
- data/lib/aws/iam/policy.rb +46 -0
- data/lib/aws/iam/policy_collection.rb +188 -0
- data/lib/aws/iam/request.rb +29 -0
- data/lib/aws/iam/resource.rb +71 -0
- data/lib/aws/iam/server_certificate.rb +141 -0
- data/lib/aws/iam/server_certificate_collection.rb +138 -0
- data/lib/aws/iam/signing_certificate.rb +169 -0
- data/lib/aws/iam/signing_certificate_collection.rb +131 -0
- data/lib/aws/iam/user.rb +205 -0
- data/lib/aws/iam/user_collection.rb +133 -0
- data/lib/aws/iam/user_group_collection.rb +98 -0
- data/lib/aws/iam/user_policy.rb +90 -0
- data/lib/aws/iam/user_policy_collection.rb +45 -0
- data/lib/aws/iam/virtual_mfa_device.rb +139 -0
- data/lib/aws/iam/virtual_mfa_device_collection.rb +73 -0
- data/lib/aws/rails.rb +195 -0
- data/lib/aws/record.rb +116 -0
- data/lib/aws/record/abstract_base.rb +645 -0
- data/lib/aws/record/attributes.rb +384 -0
- data/lib/aws/record/conversion.rb +38 -0
- data/lib/aws/record/dirty_tracking.rb +285 -0
- data/lib/aws/record/errors.rb +143 -0
- data/lib/aws/record/exceptions.rb +48 -0
- data/lib/aws/record/hash_model.rb +161 -0
- data/lib/aws/record/hash_model/attributes.rb +182 -0
- data/lib/aws/record/hash_model/finder_methods.rb +172 -0
- data/lib/aws/record/hash_model/scope.rb +108 -0
- data/lib/aws/record/model.rb +427 -0
- data/lib/aws/record/model/attributes.rb +379 -0
- data/lib/aws/record/model/finder_methods.rb +232 -0
- data/lib/aws/record/model/scope.rb +213 -0
- data/lib/aws/record/naming.rb +31 -0
- data/lib/aws/record/scope.rb +199 -0
- data/lib/aws/record/validations.rb +694 -0
- data/lib/aws/record/validator.rb +237 -0
- data/lib/aws/record/validators/acceptance.rb +51 -0
- data/lib/aws/record/validators/block.rb +38 -0
- data/lib/aws/record/validators/confirmation.rb +43 -0
- data/lib/aws/record/validators/count.rb +108 -0
- data/lib/aws/record/validators/exclusion.rb +43 -0
- data/lib/aws/record/validators/format.rb +57 -0
- data/lib/aws/record/validators/inclusion.rb +56 -0
- data/lib/aws/record/validators/length.rb +107 -0
- data/lib/aws/record/validators/method.rb +33 -0
- data/lib/aws/record/validators/numericality.rb +138 -0
- data/lib/aws/record/validators/presence.rb +45 -0
- data/lib/aws/s3.rb +135 -0
- data/lib/aws/s3/access_control_list.rb +250 -0
- data/lib/aws/s3/acl_object.rb +264 -0
- data/lib/aws/s3/bucket.rb +393 -0
- data/lib/aws/s3/bucket_collection.rb +143 -0
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +360 -0
- data/lib/aws/s3/bucket_version_collection.rb +77 -0
- data/lib/aws/s3/client.rb +1184 -0
- data/lib/aws/s3/client/xml.rb +177 -0
- data/lib/aws/s3/config.rb +26 -0
- data/lib/aws/s3/data_options.rb +100 -0
- data/lib/aws/s3/errors.rb +81 -0
- data/lib/aws/s3/multipart_upload.rb +317 -0
- data/lib/aws/s3/multipart_upload_collection.rb +68 -0
- data/lib/aws/s3/object_collection.rb +337 -0
- data/lib/aws/s3/object_metadata.rb +96 -0
- data/lib/aws/s3/object_upload_collection.rb +77 -0
- data/lib/aws/s3/object_version.rb +143 -0
- data/lib/aws/s3/object_version_collection.rb +89 -0
- data/lib/aws/s3/paginated_collection.rb +75 -0
- data/lib/aws/s3/policy.rb +74 -0
- data/lib/aws/s3/prefix_and_delimiter_collection.rb +47 -0
- data/lib/aws/s3/prefixed_collection.rb +81 -0
- data/lib/aws/s3/presigned_post.rb +553 -0
- data/lib/aws/s3/request.rb +201 -0
- data/lib/aws/s3/s3_object.rb +1037 -0
- data/lib/aws/s3/tree.rb +118 -0
- data/lib/aws/s3/tree/branch_node.rb +68 -0
- data/lib/aws/s3/tree/child_collection.rb +104 -0
- data/lib/aws/s3/tree/leaf_node.rb +94 -0
- data/lib/aws/s3/tree/node.rb +22 -0
- data/lib/aws/s3/tree/parent.rb +87 -0
- data/lib/aws/s3/uploaded_part.rb +80 -0
- data/lib/aws/s3/uploaded_part_collection.rb +84 -0
- data/lib/aws/simple_db.rb +217 -0
- data/lib/aws/simple_db/attribute.rb +154 -0
- data/lib/aws/simple_db/attribute_collection.rb +231 -0
- data/lib/aws/simple_db/client.rb +349 -0
- data/lib/aws/simple_db/config.rb +20 -0
- data/lib/aws/simple_db/consistent_read_option.rb +42 -0
- data/lib/aws/simple_db/delete_attributes.rb +62 -0
- data/lib/aws/simple_db/domain.rb +121 -0
- data/lib/aws/simple_db/domain_collection.rb +113 -0
- data/lib/aws/simple_db/domain_metadata.rb +110 -0
- data/lib/aws/simple_db/errors.rb +55 -0
- data/lib/aws/simple_db/expect_condition_option.rb +45 -0
- data/lib/aws/simple_db/item.rb +93 -0
- data/lib/aws/simple_db/item_collection.rb +649 -0
- data/lib/aws/simple_db/item_data.rb +73 -0
- data/lib/aws/simple_db/put_attributes.rb +60 -0
- data/lib/aws/simple_db/request.rb +23 -0
- data/lib/aws/simple_email_service.rb +426 -0
- data/lib/aws/simple_email_service/client.rb +286 -0
- data/lib/aws/simple_email_service/config.rb +19 -0
- data/lib/aws/simple_email_service/email_address_collection.rb +69 -0
- data/lib/aws/simple_email_service/errors.rb +22 -0
- data/lib/aws/simple_email_service/identity.rb +91 -0
- data/lib/aws/simple_email_service/identity_collection.rb +81 -0
- data/lib/aws/simple_email_service/quotas.rb +64 -0
- data/lib/aws/simple_email_service/request.rb +29 -0
- data/lib/aws/simple_workflow.rb +226 -0
- data/lib/aws/simple_workflow/activity_task.rb +173 -0
- data/lib/aws/simple_workflow/activity_task_collection.rb +123 -0
- data/lib/aws/simple_workflow/activity_type.rb +131 -0
- data/lib/aws/simple_workflow/activity_type_collection.rb +93 -0
- data/lib/aws/simple_workflow/client.rb +1434 -0
- data/lib/aws/simple_workflow/config.rb +18 -0
- data/lib/aws/simple_workflow/count.rb +49 -0
- data/lib/aws/simple_workflow/decision_task.rb +601 -0
- data/lib/aws/simple_workflow/decision_task_collection.rb +225 -0
- data/lib/aws/simple_workflow/domain.rb +122 -0
- data/lib/aws/simple_workflow/domain_collection.rb +169 -0
- data/lib/aws/simple_workflow/errors.rb +20 -0
- data/lib/aws/simple_workflow/history_event.rb +276 -0
- data/lib/aws/simple_workflow/history_event_collection.rb +76 -0
- data/lib/aws/simple_workflow/option_formatters.rb +82 -0
- data/lib/aws/simple_workflow/request.rb +36 -0
- data/lib/aws/simple_workflow/resource.rb +94 -0
- data/lib/aws/simple_workflow/type.rb +89 -0
- data/lib/aws/simple_workflow/type_collection.rb +140 -0
- data/lib/aws/simple_workflow/workflow_execution.rb +386 -0
- data/lib/aws/simple_workflow/workflow_execution_collection.rb +617 -0
- data/lib/aws/simple_workflow/workflow_type.rb +177 -0
- data/lib/aws/simple_workflow/workflow_type_collection.rb +91 -0
- data/lib/aws/sns.rb +74 -0
- data/lib/aws/sns/client.rb +371 -0
- data/lib/aws/sns/config.rb +18 -0
- data/lib/aws/sns/errors.rb +22 -0
- data/lib/aws/sns/has_delivery_policy.rb +68 -0
- data/lib/aws/sns/policy.rb +47 -0
- data/lib/aws/sns/request.rb +23 -0
- data/lib/aws/sns/subscription.rb +144 -0
- data/lib/aws/sns/subscription_collection.rb +80 -0
- data/lib/aws/sns/topic.rb +403 -0
- data/lib/aws/sns/topic_collection.rb +67 -0
- data/lib/aws/sns/topic_subscription_collection.rb +55 -0
- data/lib/aws/sqs.rb +79 -0
- data/lib/aws/sqs/client.rb +360 -0
- data/lib/aws/sqs/config.rb +18 -0
- data/lib/aws/sqs/errors.rb +101 -0
- data/lib/aws/sqs/policy.rb +48 -0
- data/lib/aws/sqs/queue.rb +725 -0
- data/lib/aws/sqs/queue_collection.rb +170 -0
- data/lib/aws/sqs/received_message.rb +181 -0
- data/lib/aws/sqs/received_sns_message.rb +112 -0
- data/lib/aws/sqs/request.rb +43 -0
- data/lib/aws/sts.rb +152 -0
- data/lib/aws/sts/client.rb +105 -0
- data/lib/aws/sts/config.rb +18 -0
- data/lib/aws/sts/errors.rb +22 -0
- data/lib/aws/sts/federated_session.rb +56 -0
- data/lib/aws/sts/policy.rb +30 -0
- data/lib/aws/sts/request.rb +29 -0
- data/lib/aws/sts/session.rb +48 -0
- data/lib/net/http/connection_pool.rb +210 -0
- data/lib/net/http/connection_pool/connection.rb +132 -0
- data/lib/net/http/connection_pool/session.rb +93 -0
- data/lib/user.rb +49 -0
- metadata +433 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
|
5
|
+
# the License is located at
|
|
6
|
+
#
|
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
|
8
|
+
#
|
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
+
# language governing permissions and limitations under the License.
|
|
13
|
+
|
|
14
|
+
require 'httparty'
|
|
15
|
+
|
|
16
|
+
module AWS
|
|
17
|
+
module Core
|
|
18
|
+
module Http
|
|
19
|
+
|
|
20
|
+
# Makes HTTP requests using HTTParty. This is the default
|
|
21
|
+
# handler, so you don't need to do anything special to configure
|
|
22
|
+
# it. However, you can directly instantiate this class in order
|
|
23
|
+
# to send extra options to HTTParty, for example to enable an HTTP
|
|
24
|
+
# proxy:
|
|
25
|
+
#
|
|
26
|
+
# AWS.config(
|
|
27
|
+
# :http_handler => AWS::Http::HTTPartyHandler.new(
|
|
28
|
+
# :http_proxyaddr => "http://myproxy.com",
|
|
29
|
+
# :http_proxyport => 80
|
|
30
|
+
# )
|
|
31
|
+
# )
|
|
32
|
+
#
|
|
33
|
+
class HTTPartyHandler
|
|
34
|
+
|
|
35
|
+
# @return [Hash] The default options to send to HTTParty on each
|
|
36
|
+
# request.
|
|
37
|
+
attr_reader :default_request_options
|
|
38
|
+
|
|
39
|
+
# Constructs a new HTTP handler using HTTParty.
|
|
40
|
+
#
|
|
41
|
+
# @param [Hash] options Default options to send to HTTParty on
|
|
42
|
+
# each request. These options will be sent to +get+, +post+,
|
|
43
|
+
# +head+, +put+, or +delete+ when a request is made. Note
|
|
44
|
+
# that +:body+, +:headers+, +:parser+, and +:ssl_ca_file+ are
|
|
45
|
+
# ignored. If you need to set the CA file, you should use the
|
|
46
|
+
# +:ssl_ca_file+ option to {AWS.config} or
|
|
47
|
+
# {Configuration} instead.
|
|
48
|
+
def initialize options = {}
|
|
49
|
+
@default_request_options = options
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
include HTTParty
|
|
53
|
+
|
|
54
|
+
class NoOpParser < HTTParty::Parser
|
|
55
|
+
SupportedFormats = {}
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def handle(request, response)
|
|
59
|
+
|
|
60
|
+
opts = default_request_options.merge({
|
|
61
|
+
:body => request.body,
|
|
62
|
+
:parser => NoOpParser
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
if request.proxy_uri
|
|
66
|
+
opts[:http_proxyaddr] = request.proxy_uri.host
|
|
67
|
+
opts[:http_proxyport] = request.proxy_uri.port
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
if request.use_ssl?
|
|
71
|
+
protocol = 'https'
|
|
72
|
+
opts[:ssl_ca_file] = request.ssl_ca_file if request.ssl_verify_peer?
|
|
73
|
+
else
|
|
74
|
+
protocol = 'http'
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
url = "#{protocol}://#{request.host}:#{request.port}#{request.uri}"
|
|
78
|
+
|
|
79
|
+
# get, post, put, delete, head
|
|
80
|
+
method = request.http_method.downcase
|
|
81
|
+
|
|
82
|
+
# Net::HTTP adds this header for us when the body is
|
|
83
|
+
# provided, but it messes up signing
|
|
84
|
+
headers = { 'content-type' => '' }
|
|
85
|
+
|
|
86
|
+
# headers must have string values (net http calls .strip on them)
|
|
87
|
+
request.headers.each_pair do |key,value|
|
|
88
|
+
headers[key] = value.to_s
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
opts[:headers] = headers
|
|
92
|
+
|
|
93
|
+
begin
|
|
94
|
+
http_response = self.class.send(method, url, opts)
|
|
95
|
+
rescue Timeout::Error, Errno::ETIMEDOUT => e
|
|
96
|
+
response.timeout = true
|
|
97
|
+
else
|
|
98
|
+
response.body = http_response.body
|
|
99
|
+
response.status = http_response.code.to_i
|
|
100
|
+
response.headers = http_response.to_hash
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# We move this from AWS::Http to AWS::Core::Http, but we want the
|
|
108
|
+
# previous default handler to remain accessible from its old namesapce
|
|
109
|
+
# @private
|
|
110
|
+
module Http
|
|
111
|
+
class HTTPartyHandler < Core::Http::HTTPartyHandler; end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
end
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
|
5
|
+
# the License is located at
|
|
6
|
+
#
|
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
|
8
|
+
#
|
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
+
# language governing permissions and limitations under the License.
|
|
13
|
+
|
|
14
|
+
require 'net/http/connection_pool'
|
|
15
|
+
|
|
16
|
+
module AWS
|
|
17
|
+
module Core
|
|
18
|
+
module Http
|
|
19
|
+
|
|
20
|
+
# The default http request handler for the aws-sdk gem. It is based
|
|
21
|
+
# on Net::Http.
|
|
22
|
+
class NetHttpHandler
|
|
23
|
+
|
|
24
|
+
@@pool = Net::HTTP::ConnectionPool.new
|
|
25
|
+
|
|
26
|
+
# @private
|
|
27
|
+
def self.pool
|
|
28
|
+
@@pool
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def handle request, response
|
|
32
|
+
|
|
33
|
+
options = {}
|
|
34
|
+
options[:ssl] = request.use_ssl?
|
|
35
|
+
options[:proxy_uri] = request.proxy_uri
|
|
36
|
+
options[:ssl_verify_peer] = request.ssl_verify_peer?
|
|
37
|
+
options[:ssl_ca_file] = request.ssl_ca_file if request.ssl_ca_file
|
|
38
|
+
options[:ssl_ca_path] = request.ssl_ca_path if request.ssl_ca_path
|
|
39
|
+
|
|
40
|
+
connection = self.class.pool.connection_for(request.host, options)
|
|
41
|
+
connection.read_timeout = request.read_timeout
|
|
42
|
+
|
|
43
|
+
begin
|
|
44
|
+
http_response = connection.request(build_request(request))
|
|
45
|
+
response.body = http_response.body
|
|
46
|
+
response.status = http_response.code.to_i
|
|
47
|
+
response.headers = http_response.to_hash
|
|
48
|
+
rescue Timeout::Error, Errno::ETIMEDOUT => e
|
|
49
|
+
response.timeout = true
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# @private
|
|
55
|
+
protected
|
|
56
|
+
def build_request request
|
|
57
|
+
|
|
58
|
+
# Net::HTTP adds a content-type header automatically unless its set
|
|
59
|
+
# and this messes with request signature signing. Also, it expects
|
|
60
|
+
# all header values to be strings (it call strip on them).
|
|
61
|
+
headers = { 'content-type' => '' }
|
|
62
|
+
request.headers.each_pair do |key,value|
|
|
63
|
+
headers[key] = value.to_s
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
req_class = case request.http_method
|
|
67
|
+
when 'GET' then Net::HTTP::Get
|
|
68
|
+
when 'PUT' then Net::HTTP::Put
|
|
69
|
+
when 'POST' then Net::HTTP::Post
|
|
70
|
+
when 'HEAD' then Net::HTTP::Head
|
|
71
|
+
when 'DELETE' then Net::HTTP::Delete
|
|
72
|
+
else raise "unsupported http method: #{request.http_method}"
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
net_http_req = req_class.new(request.uri, headers)
|
|
76
|
+
net_http_req.body = request.body
|
|
77
|
+
net_http_req
|
|
78
|
+
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
|
5
|
+
# the License is located at
|
|
6
|
+
#
|
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
|
8
|
+
#
|
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
+
# language governing permissions and limitations under the License.
|
|
13
|
+
|
|
14
|
+
module AWS
|
|
15
|
+
module Core
|
|
16
|
+
module Http
|
|
17
|
+
|
|
18
|
+
# Base class for all service reqeusts. This class describes
|
|
19
|
+
# a basic HTTP request, but will not make one. It is consumed
|
|
20
|
+
# by a HTTP handler class that sends the actual request
|
|
21
|
+
# and parses the actual response.
|
|
22
|
+
class Request
|
|
23
|
+
|
|
24
|
+
# Returns a new empty http request object.
|
|
25
|
+
def initialize
|
|
26
|
+
@host = nil
|
|
27
|
+
@http_method = 'POST'
|
|
28
|
+
@path = '/'
|
|
29
|
+
@headers = CaseInsensitiveHash.new
|
|
30
|
+
@params = []
|
|
31
|
+
@use_ssl = true
|
|
32
|
+
@port = nil
|
|
33
|
+
@read_timeout = 60
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# @return [Integer] The number of seconds the service has to respond
|
|
37
|
+
# before a timeout error is raised on the request. Defaults to
|
|
38
|
+
# 60 seconds.
|
|
39
|
+
attr_accessor :read_timeout
|
|
40
|
+
|
|
41
|
+
# @return [String] The snake-cased ruby name for the service
|
|
42
|
+
# (e.g. 's3', 'iam', 'dynamo_db', etc).
|
|
43
|
+
attr_accessor :service_ruby_name
|
|
44
|
+
|
|
45
|
+
# @return [String] hostname of the request
|
|
46
|
+
attr_accessor :host
|
|
47
|
+
|
|
48
|
+
# @return [CaseInsensitiveHash] request headers
|
|
49
|
+
attr_accessor :headers
|
|
50
|
+
|
|
51
|
+
# @return [Array] An array of request params, each param responds to
|
|
52
|
+
# #name and #value.
|
|
53
|
+
attr_accessor :params
|
|
54
|
+
|
|
55
|
+
# @return [String] GET, PUT POST, HEAD or DELETE, defaults to POST
|
|
56
|
+
attr_accessor :http_method
|
|
57
|
+
|
|
58
|
+
# @return [String] path of the request URI, defaults to /
|
|
59
|
+
attr_accessor :path
|
|
60
|
+
|
|
61
|
+
# @return [String] the AWS access key ID used to authorize the
|
|
62
|
+
# request
|
|
63
|
+
attr_accessor :access_key_id
|
|
64
|
+
|
|
65
|
+
# @return [nil, URI] The URI to the proxy server requests are
|
|
66
|
+
# sent through if configured. Returns nil if there is no proxy.
|
|
67
|
+
attr_accessor :proxy_uri
|
|
68
|
+
|
|
69
|
+
# @return [String] The region name this request is for. Only needs
|
|
70
|
+
# to be populated for requests against signature v4 endpoints.
|
|
71
|
+
attr_accessor :region
|
|
72
|
+
|
|
73
|
+
# @param [Boolean] state If the request should be sent over ssl or not.
|
|
74
|
+
def use_ssl= state
|
|
75
|
+
@use_ssl = state
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# @return [Boolean] If this request should be sent over ssl or not.
|
|
79
|
+
def use_ssl?
|
|
80
|
+
@use_ssl
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Override the default port (443 or 80). If you pass nil then
|
|
84
|
+
# the default port will take precedence.
|
|
85
|
+
# @param [Integer,nil] port_number
|
|
86
|
+
def port= port_number
|
|
87
|
+
@port = port_number
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# @return [Integer] Returns the port the request will be made over.
|
|
91
|
+
# Defaults to 443 for SSL requests and 80 for non-SSL requests.
|
|
92
|
+
def port
|
|
93
|
+
@port || (use_ssl? ? 443 : 80)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# @param [Boolean] verify_peer If the client should verify the
|
|
97
|
+
# peer certificate or not.
|
|
98
|
+
def ssl_verify_peer=(verify_peer)
|
|
99
|
+
@ssl_verify_peer = verify_peer
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# @return [Boolean] If the client should verify the peer
|
|
103
|
+
# certificate or not.
|
|
104
|
+
def ssl_verify_peer?
|
|
105
|
+
@ssl_verify_peer
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# @param [String] ca_file Path to a bundle of CA certs in PEM
|
|
109
|
+
# format; the HTTP handler should use this to verify all HTTPS
|
|
110
|
+
# requests if {#ssl_verify_peer?} is true.
|
|
111
|
+
def ssl_ca_file=(ca_file)
|
|
112
|
+
@ssl_ca_file = ca_file
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# @return [String] Path to a bundle of CA certs in PEM format;
|
|
116
|
+
# the HTTP handler should use this to verify all HTTPS
|
|
117
|
+
# requests if {#ssl_verify_peer?} is true.
|
|
118
|
+
def ssl_ca_file
|
|
119
|
+
@ssl_ca_file
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# @param [String] ca_path Path to a bundle of CA certs in PEM
|
|
123
|
+
# format; the HTTP handler should use this to verify all HTTPS
|
|
124
|
+
# requests if {#ssl_verify_peer?} is true.
|
|
125
|
+
def ssl_ca_path=(ca_path)
|
|
126
|
+
@ssl_ca_path = ca_path
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# @return [String] Path to a bundle of CA certs in PEM format;
|
|
130
|
+
# the HTTP handler should use this to verify all HTTPS
|
|
131
|
+
# requests if {#ssl_verify_peer?} is true.
|
|
132
|
+
def ssl_ca_path
|
|
133
|
+
@ssl_ca_path
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# Adds a request param.
|
|
137
|
+
#
|
|
138
|
+
# @overload add_param(param_name, param_value = nil)
|
|
139
|
+
# Add a param (name/value)
|
|
140
|
+
# @param [String] param_name
|
|
141
|
+
# @param [String] param_value Leave blank for sub resources
|
|
142
|
+
#
|
|
143
|
+
# @overload add_param(param_obj)
|
|
144
|
+
# Add a param (object)
|
|
145
|
+
# @param [Param] param_obj
|
|
146
|
+
#
|
|
147
|
+
def add_param name_or_param, value = nil
|
|
148
|
+
if name_or_param.kind_of?(Param)
|
|
149
|
+
@params << name_or_param
|
|
150
|
+
else
|
|
151
|
+
@params << Param.new(name_or_param, value)
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
alias_method :[]=, :add_param
|
|
155
|
+
|
|
156
|
+
# @private
|
|
157
|
+
def get_param param_name
|
|
158
|
+
@params.detect{|p| p.name == param_name } ||
|
|
159
|
+
raise("undefined param #{param_name}")
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# @private
|
|
163
|
+
def param_value_for param_name
|
|
164
|
+
param = @params.detect{|p| p.name == param_name }
|
|
165
|
+
param ? param.value : nil
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
# @return [String] the request uri
|
|
169
|
+
def uri
|
|
170
|
+
querystring ? "#{path}?#{querystring}" : path
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# @return [String] Returns the request params url encoded, or nil if
|
|
174
|
+
# this request has no params.
|
|
175
|
+
def url_encoded_params
|
|
176
|
+
if @params.empty?
|
|
177
|
+
nil
|
|
178
|
+
else
|
|
179
|
+
@params.sort.collect{|p| p.encoded }.join('&')
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
# @return [String, nil] Returns the requesty querystring.
|
|
184
|
+
def querystring
|
|
185
|
+
nil
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# @return [String, nil] Returns the request body.
|
|
189
|
+
def body
|
|
190
|
+
url_encoded_params
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
# @private
|
|
194
|
+
class CaseInsensitiveHash < Hash
|
|
195
|
+
|
|
196
|
+
def []= key, value
|
|
197
|
+
super(key.to_s.downcase, value)
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def [] key
|
|
201
|
+
super(key.to_s.downcase)
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
def has_key?(key)
|
|
205
|
+
super(key.to_s.downcase)
|
|
206
|
+
end
|
|
207
|
+
alias_method :key?, :has_key?
|
|
208
|
+
alias_method :include?, :has_key?
|
|
209
|
+
alias_method :member?, :has_key?
|
|
210
|
+
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
# Represents a single request paramater. Some services accept this
|
|
214
|
+
# in a form encoded body string, others as query parameters.
|
|
215
|
+
# It is up to each service's Request class to determine how to
|
|
216
|
+
# consume these params.
|
|
217
|
+
# @private
|
|
218
|
+
class Param
|
|
219
|
+
|
|
220
|
+
include UriEscape
|
|
221
|
+
|
|
222
|
+
attr_accessor :name, :value
|
|
223
|
+
|
|
224
|
+
def initialize name, value = nil
|
|
225
|
+
@name = name
|
|
226
|
+
@value = value
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
def <=> other
|
|
230
|
+
name <=> other.name
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
def to_s
|
|
234
|
+
value ? "#{name}=#{value}" : name
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
def ==(other)
|
|
238
|
+
other.kind_of?(Param) and to_s == other.to_s
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
def encoded
|
|
242
|
+
value ? "#{escape(name)}=#{escape(value)}" : escape(name)
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
end
|