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,110 @@
|
|
|
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
|
+
class Client
|
|
17
|
+
|
|
18
|
+
# When a client class extends this module, its API configuration is
|
|
19
|
+
# parsed. For each operation in the API configuration, one client
|
|
20
|
+
# method is added.
|
|
21
|
+
#
|
|
22
|
+
# Clients extending QueryJSON all have in common their method of
|
|
23
|
+
# serializing request (input) parameters and parsing response
|
|
24
|
+
# (output) JSON.
|
|
25
|
+
#
|
|
26
|
+
module QueryJSON
|
|
27
|
+
|
|
28
|
+
def self.extended base
|
|
29
|
+
base.send(:include, ErrorParser)
|
|
30
|
+
base.send(:define_client_methods)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# @return [Hash<Symbol,OptionGrammar>] Returns a hash option
|
|
34
|
+
# parsers. Hash keys are client method names and hash
|
|
35
|
+
# values are {OptionGrammar} objects.
|
|
36
|
+
# @private
|
|
37
|
+
def option_parsers
|
|
38
|
+
@option_parsers ||= {}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
protected
|
|
42
|
+
|
|
43
|
+
# Enumerates through the operations specified in the API
|
|
44
|
+
# configuration (yaml configuration file found in lib/api_config/)
|
|
45
|
+
# and defines one request method per operation.
|
|
46
|
+
def define_client_methods
|
|
47
|
+
api_config[:operations].each do |op|
|
|
48
|
+
|
|
49
|
+
method_name = op[:method]
|
|
50
|
+
|
|
51
|
+
option_parsers[method_name] = OptionGrammar.customize(op[:inputs])
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def define_client_method method_name, operation
|
|
57
|
+
add_client_request_method(method_name) do
|
|
58
|
+
|
|
59
|
+
configure_request do |request, options|
|
|
60
|
+
|
|
61
|
+
parser = self.class.option_parsers[method_name]
|
|
62
|
+
x_amz_target = self.class::TARGET_PREFIX + operation
|
|
63
|
+
|
|
64
|
+
request.headers["content-type"] = "application/x-amz-json-1.0"
|
|
65
|
+
request.headers["x-amz-target"] = x_amz_target
|
|
66
|
+
request.body = parser.to_json(options)
|
|
67
|
+
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
process_response do |response|
|
|
71
|
+
response_body = response.http_response.body
|
|
72
|
+
response_body = "{}" if response_body == ""
|
|
73
|
+
data = JSON.load(response_body)
|
|
74
|
+
MetaUtils.extend_method(response, :data) { data }
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
simulate_response do |response|
|
|
78
|
+
data = {}
|
|
79
|
+
MetaUtils.extend_method(response, :data) { data }
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
module ErrorParser
|
|
86
|
+
|
|
87
|
+
def extract_error_details response
|
|
88
|
+
if
|
|
89
|
+
response.http_response.status >= 300 and
|
|
90
|
+
body = response.http_response.body and
|
|
91
|
+
json = (JSON.load(body) rescue nil) and
|
|
92
|
+
type = json["__type"] and
|
|
93
|
+
matches = type.match(/\#(.*)$/)
|
|
94
|
+
then
|
|
95
|
+
code = matches[1]
|
|
96
|
+
if code == 'RequestEntityTooLarge'
|
|
97
|
+
message = 'Request body must be less than 1 MB'
|
|
98
|
+
else
|
|
99
|
+
message = json['message']
|
|
100
|
+
end
|
|
101
|
+
[code, message]
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
@@ -0,0 +1,122 @@
|
|
|
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
|
+
class Client
|
|
17
|
+
|
|
18
|
+
# When a client class extends this module, its API configuration
|
|
19
|
+
# is parsed. For each operation in the API configuration, one
|
|
20
|
+
# client method is added.
|
|
21
|
+
#
|
|
22
|
+
# Clients extending QueryXML all have in common their method
|
|
23
|
+
# of serializing request (input) paramters and parsing response
|
|
24
|
+
# (output) XML.
|
|
25
|
+
#
|
|
26
|
+
module QueryXML
|
|
27
|
+
|
|
28
|
+
# @private
|
|
29
|
+
def self.extended base
|
|
30
|
+
base.send(:include, ErrorParser)
|
|
31
|
+
base.send(:define_parsers)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @return [Hash<Symbol,OptionGrammar>] Returns a hash option
|
|
35
|
+
# parsers. Hash keys are client method names and hash
|
|
36
|
+
# values are {OptionGrammar} objects.
|
|
37
|
+
# @private
|
|
38
|
+
def option_parsers
|
|
39
|
+
@option_parsers ||= {}
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @return [Hash<Symbol,XML::Parser>] Returns a hash of xml
|
|
43
|
+
# parsers. Hash keys are client method names and hash
|
|
44
|
+
# values are {XML::Parser} objects.
|
|
45
|
+
# @private
|
|
46
|
+
def xml_parsers
|
|
47
|
+
@xml_parsers ||= {}
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
protected
|
|
51
|
+
|
|
52
|
+
# Enumerates through the operations specified in the API
|
|
53
|
+
# configuration (yaml configuration file found in lib/api_config/)
|
|
54
|
+
# and defines one request method per operation.
|
|
55
|
+
def define_parsers
|
|
56
|
+
api_config[:operations].each do |op|
|
|
57
|
+
|
|
58
|
+
method_name = op[:method]
|
|
59
|
+
|
|
60
|
+
option_parsers[method_name] = OptionGrammar.customize(op[:inputs])
|
|
61
|
+
xml_parsers[method_name] = XML::Parser.new(op[:outputs])
|
|
62
|
+
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def define_client_method method_name, operation_name
|
|
67
|
+
add_client_request_method(method_name) do
|
|
68
|
+
|
|
69
|
+
configure_request do |request, options|
|
|
70
|
+
|
|
71
|
+
now = Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
|
|
72
|
+
|
|
73
|
+
request.headers['Content-Type'] =
|
|
74
|
+
'application/x-www-form-urlencoded; charset=utf-8'
|
|
75
|
+
|
|
76
|
+
request.http_method = 'POST'
|
|
77
|
+
request.add_param 'Timestamp', now
|
|
78
|
+
request.add_param 'Version', self.class::API_VERSION
|
|
79
|
+
request.add_param 'Action', operation_name
|
|
80
|
+
|
|
81
|
+
parser = self.class.option_parsers[method_name]
|
|
82
|
+
parser.request_params(options).each do |param|
|
|
83
|
+
request.add_param(param)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
process_response do |response|
|
|
89
|
+
parser = self.class.xml_parsers[method_name]
|
|
90
|
+
response.data = parser.parse(response.http_response.body)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
simulate_response do |response|
|
|
94
|
+
parser = self.class.xml_parsers[method_name]
|
|
95
|
+
response.data = parser.simulate
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
module ErrorParser
|
|
102
|
+
|
|
103
|
+
protected
|
|
104
|
+
|
|
105
|
+
def extract_error_details response
|
|
106
|
+
if
|
|
107
|
+
response.http_response.status >= 300 and
|
|
108
|
+
body = response.http_response.body and
|
|
109
|
+
error = errors_module::GRAMMAR.parse(body) and
|
|
110
|
+
error[:code]
|
|
111
|
+
then
|
|
112
|
+
[error[:code], error[:message]]
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
3
|
+
# may not use this file except in compliance with the License. A copy of
|
|
4
|
+
# the License is located at
|
|
5
|
+
#
|
|
6
|
+
# http://aws.amazon.com/apache2.0/
|
|
7
|
+
#
|
|
8
|
+
# or in the "license" file accompanying this file. This file is
|
|
9
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
10
|
+
# ANY KIND, either express or implied. See the License for the specific
|
|
11
|
+
# language governing permissions and limitations under the License.
|
|
12
|
+
|
|
13
|
+
module AWS
|
|
14
|
+
module Core
|
|
15
|
+
|
|
16
|
+
# = Different Collection Types in AWS
|
|
17
|
+
#
|
|
18
|
+
# The Collection module acts as a namespace and base implementation for
|
|
19
|
+
# the primary collection types in AWS:
|
|
20
|
+
#
|
|
21
|
+
# * {AWS::Core::Collection::Simple}
|
|
22
|
+
# * {AWS::Core::Collection::Limitable}
|
|
23
|
+
#
|
|
24
|
+
# Each AWS service allows provides a method to enumerate resources.
|
|
25
|
+
#
|
|
26
|
+
# * Services that return all results in a single response use
|
|
27
|
+
# {AWS::Core::Collection::Simple}.
|
|
28
|
+
#
|
|
29
|
+
# * Services that truncate large results sets *AND* allow you to provide
|
|
30
|
+
# a perfered maximum number of results use
|
|
31
|
+
# {AWS::Core::Collection::Limitable}.
|
|
32
|
+
#
|
|
33
|
+
module Collection
|
|
34
|
+
|
|
35
|
+
AWS.register_autoloads(self) do
|
|
36
|
+
autoload :Simple, 'simple'
|
|
37
|
+
autoload :Limitable, 'limitable'
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
include Enumerable
|
|
41
|
+
|
|
42
|
+
# Yields once for every item in this collection.
|
|
43
|
+
#
|
|
44
|
+
# collection.each {|item| ... }
|
|
45
|
+
#
|
|
46
|
+
# @note If you want fewer than all items, it is generally better
|
|
47
|
+
# to call {#page} than {#each} with a +:limit+.
|
|
48
|
+
#
|
|
49
|
+
# @param [Hash] options
|
|
50
|
+
#
|
|
51
|
+
# @option options [Integer] :limit (nil) The maximum number of
|
|
52
|
+
# items to enumerate from this collection.
|
|
53
|
+
#
|
|
54
|
+
# @option options [next_token] :next_token (nil)
|
|
55
|
+
# Acts as an offset. +:next_token+ may be returned by {#each} and
|
|
56
|
+
# {#each_batch} when a +:limit+ is provided.
|
|
57
|
+
#
|
|
58
|
+
# @return [nil_or_next_token] Returns nil if all items were enumerated.
|
|
59
|
+
# If some items were excluded because of a +:limit+ option then
|
|
60
|
+
# a +next_token+ is returned. Calling an enumerable method on
|
|
61
|
+
# the same collection with the +next_token+ acts like an offset.
|
|
62
|
+
#
|
|
63
|
+
def each options = {}, &block
|
|
64
|
+
each_batch(options) do |batch|
|
|
65
|
+
batch.each(&block)
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Yields items from this collection in batches.
|
|
70
|
+
#
|
|
71
|
+
# collection.each_batch do |batch|
|
|
72
|
+
# batch.each do |item|
|
|
73
|
+
# # ...
|
|
74
|
+
# end
|
|
75
|
+
# end
|
|
76
|
+
#
|
|
77
|
+
# == Variable Batch Sizes
|
|
78
|
+
#
|
|
79
|
+
# Each AWS service has its own rules on how it returns results.
|
|
80
|
+
# Because of this batch size may very based on:
|
|
81
|
+
#
|
|
82
|
+
# * Service limits (e.g. S3 limits keys to 1000 per response)
|
|
83
|
+
#
|
|
84
|
+
# * The size of response objects (SimpleDB limits responses to 1MB)
|
|
85
|
+
#
|
|
86
|
+
# * Time to process the request
|
|
87
|
+
#
|
|
88
|
+
# Because of these variables, batch sizes may not be consistent for
|
|
89
|
+
# a single collection. Each batch represents all of the items returned
|
|
90
|
+
# in a single resopnse.
|
|
91
|
+
#
|
|
92
|
+
# @note If you require fixed size batches, see {#in_groups_of}.
|
|
93
|
+
#
|
|
94
|
+
# @param (see #each)
|
|
95
|
+
#
|
|
96
|
+
# @option (see #each)
|
|
97
|
+
#
|
|
98
|
+
# @return (see #each)
|
|
99
|
+
#
|
|
100
|
+
def each_batch options = {}, &block
|
|
101
|
+
raise NotImplementedError
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Use this method when you want to call a method provided by
|
|
105
|
+
# Enumerable, but you need to pass options:
|
|
106
|
+
#
|
|
107
|
+
# # raises an error because collect does not accept arguments
|
|
108
|
+
# collection.collect(:limit => 10) {|i| i.name }
|
|
109
|
+
#
|
|
110
|
+
# # not an issue with the enum method
|
|
111
|
+
# collection.enum(:limit => 10).collect(&:name)
|
|
112
|
+
#
|
|
113
|
+
# @param (see #each)
|
|
114
|
+
#
|
|
115
|
+
# @option (see #each)
|
|
116
|
+
#
|
|
117
|
+
# @return [Enumerable::Enumerator] Returns an enumerator for this
|
|
118
|
+
# collection.
|
|
119
|
+
#
|
|
120
|
+
def enum options = {}
|
|
121
|
+
Enumerator.new(self, :each, options)
|
|
122
|
+
end
|
|
123
|
+
alias_method :enumerator, :enum
|
|
124
|
+
|
|
125
|
+
# Returns the first item from this collection.
|
|
126
|
+
#
|
|
127
|
+
# @return [item_or_nil] Returns the first item from this collection or
|
|
128
|
+
# nil if the collection is empty.
|
|
129
|
+
#
|
|
130
|
+
def first options = {}
|
|
131
|
+
enum(options.merge(:limit => 1)).first
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# Yields items from this collection in groups of an exact
|
|
135
|
+
# size (except for perhaps the last group).
|
|
136
|
+
#
|
|
137
|
+
# collection.in_groups_of (10, :limit => 30) do |group|
|
|
138
|
+
#
|
|
139
|
+
# # each group should be exactly 10 items unless
|
|
140
|
+
# # fewer than 30 items are returned by the service
|
|
141
|
+
# group.each do |item|
|
|
142
|
+
# #...
|
|
143
|
+
# end
|
|
144
|
+
#
|
|
145
|
+
# end
|
|
146
|
+
#
|
|
147
|
+
# @param [Integer] size Size each each group of objects
|
|
148
|
+
# should be yielded in.
|
|
149
|
+
# @param [Hash] options
|
|
150
|
+
# @option (see #each)
|
|
151
|
+
# @return (see #each)
|
|
152
|
+
def in_groups_of size, options = {}, &block
|
|
153
|
+
|
|
154
|
+
group = []
|
|
155
|
+
|
|
156
|
+
nil_or_next_token = each_batch(options) do |batch|
|
|
157
|
+
batch.each do |item|
|
|
158
|
+
group << item
|
|
159
|
+
if group.size == size
|
|
160
|
+
yield(group)
|
|
161
|
+
group = []
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
yield(group) unless group.empty?
|
|
167
|
+
|
|
168
|
+
nil_or_next_token
|
|
169
|
+
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# Returns a single page of results in a kind-of array ({PageResult}).
|
|
173
|
+
#
|
|
174
|
+
# items = collection.page(:per_page => 10) # defaults to 10 items
|
|
175
|
+
# items.is_a?(Array) # => true
|
|
176
|
+
# items.size # => 8
|
|
177
|
+
# items.per_page # => 10
|
|
178
|
+
# items.last_page? # => true
|
|
179
|
+
#
|
|
180
|
+
# If you need to display a "next page" link in a web view you can
|
|
181
|
+
# use the #more? method. Just make sure the generated link
|
|
182
|
+
# contains the +next_token+.
|
|
183
|
+
#
|
|
184
|
+
# <% if items.more? %>
|
|
185
|
+
# <%= link_to('Next Page', params.merge(:next_token => items.next_token) %>
|
|
186
|
+
# <% end %>
|
|
187
|
+
#
|
|
188
|
+
# Then in your controller you can find the next page of results:
|
|
189
|
+
#
|
|
190
|
+
# items = collection.page(:next_token => params[:next_token])
|
|
191
|
+
#
|
|
192
|
+
# Given a {PageResult} you can also get more results directly:
|
|
193
|
+
#
|
|
194
|
+
# more_items = items.next_page
|
|
195
|
+
#
|
|
196
|
+
# @note This method does not accept a +:page+ option, which means you
|
|
197
|
+
# can only start at the begining of the collection and request
|
|
198
|
+
# the next page of results. You can not choose an offset
|
|
199
|
+
# or know how many pages of results there will be.
|
|
200
|
+
#
|
|
201
|
+
# @param [Hash] options A hash of options that modifies the
|
|
202
|
+
# items returned in the page of results.
|
|
203
|
+
#
|
|
204
|
+
# @option options [Integer] :per_page (10) The number of results
|
|
205
|
+
# to return for each page.
|
|
206
|
+
#
|
|
207
|
+
# @option options [String] :next_token (nil) A token that indicates
|
|
208
|
+
# an offset to use when paging items. Next tokens are returned
|
|
209
|
+
# by {PageResult#next_token}.
|
|
210
|
+
#
|
|
211
|
+
# Next tokens should only be consumed by the same collection that
|
|
212
|
+
# created them.
|
|
213
|
+
#
|
|
214
|
+
def page options = {}
|
|
215
|
+
|
|
216
|
+
each_opts = options.dup
|
|
217
|
+
|
|
218
|
+
per_page = each_opts.delete(:per_page)
|
|
219
|
+
per_page = [nil,''].include?(per_page) ? 10 : per_page.to_i
|
|
220
|
+
|
|
221
|
+
each_opts[:limit] = per_page
|
|
222
|
+
|
|
223
|
+
items = []
|
|
224
|
+
next_token = each(each_opts) do |item|
|
|
225
|
+
items << item
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
Core::PageResult.new(self, items, per_page, next_token)
|
|
229
|
+
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
end
|