aws-sdk 1.8.5 → 1.9.0
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.
- checksums.yaml +7 -0
- data/.yardopts +1 -0
- data/README.rdoc +8 -0
- data/lib/aws-sdk.rb +39 -35
- data/lib/aws/api_config/CloudFront-2012-07-01.yml +2398 -0
- data/lib/aws/api_config/DirectConnect-2012-10-25.yml +475 -0
- data/lib/aws/api_config/DynamoDB-2011-12-05.yml +8 -0
- data/lib/aws/api_config/DynamoDB-2012-08-10.yml +1516 -0
- data/lib/aws/api_config/OpsWorks-2013-02-18.yml +2 -2
- data/lib/aws/auto_scaling.rb +44 -44
- data/lib/aws/auto_scaling/activity.rb +1 -1
- data/lib/aws/auto_scaling/activity_collection.rb +14 -15
- data/lib/aws/auto_scaling/client.rb +277 -277
- data/lib/aws/auto_scaling/config.rb +1 -1
- data/lib/aws/auto_scaling/group.rb +35 -36
- data/lib/aws/auto_scaling/group_collection.rb +10 -10
- data/lib/aws/auto_scaling/group_options.rb +19 -19
- data/lib/aws/auto_scaling/instance.rb +27 -27
- data/lib/aws/auto_scaling/instance_collection.rb +10 -10
- data/lib/aws/auto_scaling/launch_configuration.rb +3 -3
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +1 -1
- data/lib/aws/auto_scaling/notification_configuration.rb +2 -2
- data/lib/aws/auto_scaling/notification_configuration_collection.rb +37 -38
- data/lib/aws/auto_scaling/scaling_policy.rb +3 -3
- data/lib/aws/auto_scaling/scaling_policy_collection.rb +6 -6
- data/lib/aws/auto_scaling/scaling_policy_options.rb +8 -7
- data/lib/aws/auto_scaling/scheduled_action.rb +3 -3
- data/lib/aws/auto_scaling/scheduled_action_collection.rb +28 -28
- data/lib/aws/auto_scaling/tag_collection.rb +30 -28
- data/lib/aws/cloud_formation.rb +95 -94
- data/lib/aws/cloud_formation/client.rb +136 -133
- data/lib/aws/cloud_formation/config.rb +1 -1
- data/lib/aws/cloud_formation/stack.rb +37 -37
- data/lib/aws/cloud_formation/stack_collection.rb +28 -27
- data/lib/aws/cloud_formation/stack_event.rb +9 -11
- data/lib/aws/cloud_formation/stack_output.rb +1 -1
- data/lib/aws/cloud_formation/stack_resource.rb +6 -6
- data/lib/aws/cloud_formation/stack_resource_collection.rb +11 -12
- data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +11 -11
- data/lib/aws/cloud_formation/stack_summary_collection.rb +39 -39
- data/lib/aws/cloud_front.rb +21 -21
- data/lib/aws/cloud_front/client.rb +853 -652
- data/lib/aws/cloud_front/request.rb +3 -0
- data/lib/aws/cloud_search.rb +22 -22
- data/lib/aws/cloud_search/client.rb +322 -315
- data/lib/aws/cloud_search/config.rb +1 -1
- data/lib/aws/cloud_watch.rb +39 -39
- data/lib/aws/cloud_watch/alarm.rb +55 -37
- data/lib/aws/cloud_watch/alarm_collection.rb +18 -18
- data/lib/aws/cloud_watch/alarm_history_item_collection.rb +2 -2
- data/lib/aws/cloud_watch/client.rb +360 -146
- data/lib/aws/cloud_watch/config.rb +1 -1
- data/lib/aws/cloud_watch/metric.rb +15 -15
- data/lib/aws/cloud_watch/metric_alarm_collection.rb +17 -17
- data/lib/aws/cloud_watch/metric_collection.rb +16 -16
- data/lib/aws/cloud_watch/metric_statistics.rb +11 -11
- data/lib/aws/core.rb +243 -225
- data/lib/aws/core/async_handle.rb +13 -13
- data/lib/aws/core/cacheable.rb +14 -15
- data/lib/aws/core/client.rb +40 -15
- data/lib/aws/core/collection.rb +42 -46
- data/lib/aws/core/collection/with_limit_and_next_token.rb +1 -1
- data/lib/aws/core/collection/with_next_token.rb +1 -1
- data/lib/aws/core/configuration.rb +97 -133
- data/lib/aws/core/credential_providers.rb +16 -16
- data/lib/aws/core/data.rb +23 -23
- data/lib/aws/core/http/connection_pool.rb +348 -0
- data/lib/aws/core/http/net_http_handler.rb +17 -26
- data/lib/aws/core/http/patch.rb +102 -0
- data/lib/aws/core/http/request.rb +13 -19
- data/lib/aws/core/http/response.rb +2 -2
- data/lib/aws/core/lazy_error_classes.rb +17 -17
- data/lib/aws/core/log_formatter.rb +70 -104
- data/lib/aws/core/options/json_serializer.rb +1 -1
- data/lib/aws/core/options/validator.rb +4 -4
- data/lib/aws/core/page_result.rb +8 -8
- data/lib/aws/core/policy.rb +49 -49
- data/lib/aws/core/region.rb +72 -0
- data/lib/aws/core/region_collection.rb +106 -0
- data/lib/aws/core/resource.rb +5 -5
- data/lib/aws/core/response.rb +20 -17
- data/lib/aws/core/rest_request_builder.rb +4 -4
- data/lib/aws/core/service_interface.rb +24 -2
- data/lib/aws/core/signature/version_3.rb +2 -2
- data/lib/aws/core/uri_escape.rb +1 -1
- data/lib/aws/core/xml/frame_stack.rb +1 -1
- data/lib/aws/core/xml/grammar.rb +3 -4
- data/lib/aws/core/xml/sax_handlers/libxml.rb +2 -2
- data/lib/aws/core/xml/sax_handlers/nokogiri.rb +3 -3
- data/lib/aws/core/xml/sax_handlers/rexml.rb +5 -5
- data/lib/aws/core/xml/stub.rb +9 -9
- data/lib/aws/data_pipeline.rb +21 -21
- data/lib/aws/data_pipeline/client.rb +189 -133
- data/lib/aws/data_pipeline/config.rb +1 -1
- data/lib/aws/direct_connect.rb +74 -0
- data/lib/aws/direct_connect/client.rb +253 -0
- data/lib/aws/direct_connect/config.rb +18 -0
- data/lib/aws/direct_connect/errors.rb +22 -0
- data/lib/aws/direct_connect/request.rb +27 -0
- data/lib/aws/dynamo_db.rb +71 -69
- data/lib/aws/dynamo_db/attribute_collection.rb +53 -58
- data/lib/aws/dynamo_db/batch_get.rb +23 -23
- data/lib/aws/dynamo_db/batch_write.rb +43 -43
- data/lib/aws/dynamo_db/binary.rb +9 -9
- data/lib/aws/dynamo_db/client.rb +494 -509
- data/lib/aws/dynamo_db/client_base.rb +91 -0
- data/lib/aws/dynamo_db/client_v2.rb +825 -0
- data/lib/aws/dynamo_db/config.rb +1 -1
- data/lib/aws/dynamo_db/item.rb +10 -10
- data/lib/aws/dynamo_db/item_collection.rb +75 -75
- data/lib/aws/dynamo_db/table.rb +85 -85
- data/lib/aws/dynamo_db/table_collection.rb +13 -13
- data/lib/aws/ec2.rb +132 -142
- data/lib/aws/ec2/attachment.rb +31 -36
- data/lib/aws/ec2/attachment_collection.rb +1 -1
- data/lib/aws/ec2/availability_zone.rb +4 -4
- data/lib/aws/ec2/client.rb +2272 -2125
- data/lib/aws/ec2/config.rb +1 -1
- data/lib/aws/ec2/customer_gateway.rb +6 -6
- data/lib/aws/ec2/customer_gateway_collection.rb +6 -6
- data/lib/aws/ec2/dhcp_options.rb +3 -3
- data/lib/aws/ec2/dhcp_options_collection.rb +10 -10
- data/lib/aws/ec2/elastic_ip.rb +15 -15
- data/lib/aws/ec2/elastic_ip_collection.rb +11 -15
- data/lib/aws/ec2/export_task.rb +4 -4
- data/lib/aws/ec2/export_task_collection.rb +11 -11
- data/lib/aws/ec2/filtered_collection.rb +6 -8
- data/lib/aws/ec2/image.rb +46 -40
- data/lib/aws/ec2/image_collection.rb +44 -52
- data/lib/aws/ec2/instance.rb +64 -62
- data/lib/aws/ec2/instance_collection.rb +47 -50
- data/lib/aws/ec2/internet_gateway.rb +6 -6
- data/lib/aws/ec2/internet_gateway/attachment.rb +13 -13
- data/lib/aws/ec2/internet_gateway_collection.rb +3 -3
- data/lib/aws/ec2/key_pair.rb +3 -3
- data/lib/aws/ec2/key_pair_collection.rb +12 -12
- data/lib/aws/ec2/network_acl.rb +39 -39
- data/lib/aws/ec2/network_acl/association.rb +2 -2
- data/lib/aws/ec2/network_acl/entry.rb +22 -22
- data/lib/aws/ec2/network_acl_collection.rb +2 -2
- data/lib/aws/ec2/network_interface.rb +13 -4
- data/lib/aws/ec2/network_interface/attachment.rb +3 -3
- data/lib/aws/ec2/network_interface_collection.rb +5 -5
- data/lib/aws/ec2/permission_collection.rb +1 -1
- data/lib/aws/ec2/region.rb +6 -6
- data/lib/aws/ec2/region_collection.rb +1 -1
- data/lib/aws/ec2/reserved_instances_collection.rb +2 -2
- data/lib/aws/ec2/reserved_instances_offering_collection.rb +2 -2
- data/lib/aws/ec2/resource_tag_collection.rb +5 -5
- data/lib/aws/ec2/route_table.rb +14 -14
- data/lib/aws/ec2/route_table/association.rb +22 -22
- data/lib/aws/ec2/route_table/route.rb +8 -8
- data/lib/aws/ec2/route_table_collection.rb +3 -3
- data/lib/aws/ec2/security_group.rb +39 -41
- data/lib/aws/ec2/security_group_collection.rb +19 -21
- data/lib/aws/ec2/snapshot.rb +3 -3
- data/lib/aws/ec2/snapshot_collection.rb +11 -12
- data/lib/aws/ec2/subnet.rb +2 -2
- data/lib/aws/ec2/subnet_collection.rb +17 -17
- data/lib/aws/ec2/tag_collection.rb +1 -1
- data/lib/aws/ec2/tagged_collection.rb +7 -7
- data/lib/aws/ec2/tagged_item.rb +10 -10
- data/lib/aws/ec2/volume.rb +16 -16
- data/lib/aws/ec2/volume_collection.rb +9 -12
- data/lib/aws/ec2/vpc.rb +6 -6
- data/lib/aws/ec2/vpc_collection.rb +10 -10
- data/lib/aws/ec2/vpn_connection.rb +4 -4
- data/lib/aws/ec2/vpn_connection/telemetry.rb +1 -1
- data/lib/aws/ec2/vpn_connection_collection.rb +6 -6
- data/lib/aws/ec2/vpn_gateway.rb +2 -2
- data/lib/aws/ec2/vpn_gateway_collection.rb +5 -5
- data/lib/aws/elastic_beanstalk.rb +12 -12
- data/lib/aws/elastic_beanstalk/client.rb +376 -368
- data/lib/aws/elastic_beanstalk/config.rb +1 -1
- data/lib/aws/elastic_transcoder.rb +5 -5
- data/lib/aws/elastic_transcoder/client.rb +283 -283
- data/lib/aws/elastic_transcoder/config.rb +1 -1
- data/lib/aws/elasticache.rb +12 -12
- data/lib/aws/elasticache/client.rb +484 -479
- data/lib/aws/elasticache/config.rb +1 -1
- data/lib/aws/elb.rb +23 -23
- data/lib/aws/elb/availability_zone_collection.rb +34 -34
- data/lib/aws/elb/backend_server_policy_collection.rb +24 -24
- data/lib/aws/elb/client.rb +153 -153
- data/lib/aws/elb/config.rb +1 -1
- data/lib/aws/elb/errors.rb +1 -1
- data/lib/aws/elb/instance_collection.rb +20 -25
- data/lib/aws/elb/listener.rb +3 -3
- data/lib/aws/elb/listener_collection.rb +8 -8
- data/lib/aws/elb/load_balancer.rb +15 -16
- data/lib/aws/elb/load_balancer_collection.rb +36 -24
- data/lib/aws/elb/load_balancer_policy.rb +1 -1
- data/lib/aws/elb/load_balancer_policy_collection.rb +5 -5
- data/lib/aws/emr.rb +28 -26
- data/lib/aws/emr/client.rb +165 -149
- data/lib/aws/emr/config.rb +1 -1
- data/lib/aws/emr/instance_group.rb +1 -1
- data/lib/aws/emr/instance_group_collection.rb +1 -1
- data/lib/aws/emr/job_flow.rb +27 -26
- data/lib/aws/emr/job_flow_collection.rb +34 -34
- data/lib/aws/errors.rb +7 -7
- data/lib/aws/glacier.rb +21 -21
- data/lib/aws/glacier/archive_collection.rb +2 -2
- data/lib/aws/glacier/client.rb +139 -140
- data/lib/aws/glacier/config.rb +1 -1
- data/lib/aws/glacier/vault.rb +2 -2
- data/lib/aws/glacier/vault_collection.rb +1 -1
- data/lib/aws/iam.rb +133 -144
- data/lib/aws/iam/access_key.rb +17 -17
- data/lib/aws/iam/access_key_collection.rb +22 -22
- data/lib/aws/iam/account_alias_collection.rb +2 -2
- data/lib/aws/iam/client.rb +429 -420
- data/lib/aws/iam/collection.rb +1 -1
- data/lib/aws/iam/config.rb +2 -2
- data/lib/aws/iam/group.rb +8 -8
- data/lib/aws/iam/group_collection.rb +16 -16
- data/lib/aws/iam/group_policy_collection.rb +6 -6
- data/lib/aws/iam/group_user_collection.rb +3 -3
- data/lib/aws/iam/mfa_device.rb +1 -1
- data/lib/aws/iam/mfa_device_collection.rb +9 -9
- data/lib/aws/iam/policy_collection.rb +4 -4
- data/lib/aws/iam/resource.rb +2 -2
- data/lib/aws/iam/server_certificate.rb +1 -1
- data/lib/aws/iam/server_certificate_collection.rb +15 -15
- data/lib/aws/iam/signing_certificate.rb +29 -29
- data/lib/aws/iam/signing_certificate_collection.rb +23 -23
- data/lib/aws/iam/user.rb +33 -38
- data/lib/aws/iam/user_collection.rb +27 -27
- data/lib/aws/iam/user_group_collection.rb +3 -3
- data/lib/aws/iam/user_policy_collection.rb +6 -6
- data/lib/aws/iam/virtual_mfa_device.rb +12 -12
- data/lib/aws/iam/virtual_mfa_device_collection.rb +4 -4
- data/lib/aws/import_export.rb +22 -21
- data/lib/aws/import_export/client.rb +47 -43
- data/lib/aws/ops_works.rb +5 -5
- data/lib/aws/ops_works/client.rb +484 -438
- data/lib/aws/ops_works/config.rb +1 -1
- data/lib/aws/rails.rb +34 -34
- data/lib/aws/rds.rb +18 -18
- data/lib/aws/rds/client.rb +1286 -1277
- data/lib/aws/rds/config.rb +1 -1
- data/lib/aws/rds/db_instance.rb +15 -4
- data/lib/aws/rds/db_snapshot.rb +1 -1
- data/lib/aws/record.rb +50 -24
- data/lib/aws/record/abstract_base.rb +52 -60
- data/lib/aws/record/attributes.rb +79 -79
- data/lib/aws/record/conversion.rb +1 -1
- data/lib/aws/record/dirty_tracking.rb +69 -67
- data/lib/aws/record/errors.rb +21 -21
- data/lib/aws/record/exceptions.rb +2 -2
- data/lib/aws/record/hash_model.rb +20 -21
- data/lib/aws/record/hash_model/attributes.rb +13 -15
- data/lib/aws/record/hash_model/finder_methods.rb +46 -46
- data/lib/aws/record/hash_model/scope.rb +31 -31
- data/lib/aws/record/model.rb +136 -136
- data/lib/aws/record/model/attributes.rb +57 -59
- data/lib/aws/record/model/finder_methods.rb +67 -67
- data/lib/aws/record/model/scope.rb +48 -49
- data/lib/aws/record/naming.rb +1 -1
- data/lib/aws/record/scope.rb +23 -19
- data/lib/aws/record/validations.rb +253 -271
- data/lib/aws/record/validator.rb +3 -3
- data/lib/aws/record/validators/acceptance.rb +1 -3
- data/lib/aws/record/validators/block.rb +1 -3
- data/lib/aws/record/validators/confirmation.rb +1 -3
- data/lib/aws/record/validators/count.rb +2 -4
- data/lib/aws/record/validators/exclusion.rb +2 -4
- data/lib/aws/record/validators/format.rb +2 -4
- data/lib/aws/record/validators/inclusion.rb +1 -3
- data/lib/aws/record/validators/length.rb +5 -7
- data/lib/aws/record/validators/method.rb +1 -3
- data/lib/aws/record/validators/numericality.rb +6 -8
- data/lib/aws/record/validators/presence.rb +1 -3
- data/lib/aws/redshift.rb +14 -14
- data/lib/aws/redshift/client.rb +596 -592
- data/lib/aws/redshift/config.rb +1 -1
- data/lib/aws/route_53.rb +30 -30
- data/lib/aws/route_53/change_batch.rb +7 -7
- data/lib/aws/route_53/client.rb +188 -152
- data/lib/aws/route_53/hosted_zone.rb +4 -4
- data/lib/aws/route_53/hosted_zone_collection.rb +7 -7
- data/lib/aws/route_53/resource_record_set.rb +10 -10
- data/lib/aws/route_53/resource_record_set_collection.rb +6 -6
- data/lib/aws/s3.rb +79 -79
- data/lib/aws/s3/access_control_list.rb +44 -36
- data/lib/aws/s3/acl_options.rb +51 -51
- data/lib/aws/s3/bucket.rb +146 -146
- data/lib/aws/s3/bucket_collection.rb +21 -21
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +81 -82
- data/lib/aws/s3/bucket_tag_collection.rb +4 -2
- data/lib/aws/s3/cipher_io.rb +5 -4
- data/lib/aws/s3/client.rb +89 -84
- data/lib/aws/s3/client/xml.rb +1 -1
- data/lib/aws/s3/config.rb +7 -1
- data/lib/aws/s3/cors_rule.rb +2 -0
- data/lib/aws/s3/cors_rule_collection.rb +42 -40
- data/lib/aws/s3/data_options.rb +16 -11
- data/lib/aws/s3/encryption_utils.rb +2 -2
- data/lib/aws/s3/errors.rb +7 -7
- data/lib/aws/s3/multipart_upload.rb +30 -33
- data/lib/aws/s3/multipart_upload_collection.rb +8 -6
- data/lib/aws/s3/object_collection.rb +35 -35
- data/lib/aws/s3/object_metadata.rb +6 -6
- data/lib/aws/s3/object_version.rb +4 -4
- data/lib/aws/s3/object_version_collection.rb +15 -15
- data/lib/aws/s3/policy.rb +2 -2
- data/lib/aws/s3/prefixed_collection.rb +9 -5
- data/lib/aws/s3/presigned_post.rb +39 -37
- data/lib/aws/s3/request.rb +11 -11
- data/lib/aws/s3/s3_object.rb +210 -200
- data/lib/aws/s3/tree.rb +25 -27
- data/lib/aws/s3/tree/child_collection.rb +3 -3
- data/lib/aws/s3/tree/leaf_node.rb +2 -2
- data/lib/aws/s3/tree/parent.rb +1 -1
- data/lib/aws/s3/website_configuration.rb +13 -13
- data/lib/aws/simple_db.rb +83 -83
- data/lib/aws/simple_db/attribute.rb +9 -7
- data/lib/aws/simple_db/attribute_collection.rb +22 -13
- data/lib/aws/simple_db/client.rb +107 -107
- data/lib/aws/simple_db/config.rb +7 -1
- data/lib/aws/simple_db/consistent_read_option.rb +5 -5
- data/lib/aws/simple_db/domain.rb +4 -2
- data/lib/aws/simple_db/domain_collection.rb +4 -4
- data/lib/aws/simple_db/domain_metadata.rb +5 -5
- data/lib/aws/simple_db/errors.rb +9 -9
- data/lib/aws/simple_db/item.rb +5 -5
- data/lib/aws/simple_db/item_collection.rb +83 -81
- data/lib/aws/simple_db/item_data.rb +4 -4
- data/lib/aws/simple_db/put_attributes.rb +3 -3
- data/lib/aws/simple_email_service.rb +140 -140
- data/lib/aws/simple_email_service/client.rb +82 -76
- data/lib/aws/simple_email_service/config.rb +1 -2
- data/lib/aws/simple_email_service/email_address_collection.rb +3 -3
- data/lib/aws/simple_email_service/identity.rb +8 -8
- data/lib/aws/simple_email_service/quotas.rb +8 -6
- data/lib/aws/simple_workflow.rb +106 -106
- data/lib/aws/simple_workflow/activity_task.rb +15 -22
- data/lib/aws/simple_workflow/activity_task_collection.rb +15 -15
- data/lib/aws/simple_workflow/activity_type.rb +23 -23
- data/lib/aws/simple_workflow/activity_type_collection.rb +23 -23
- data/lib/aws/simple_workflow/client.rb +1004 -956
- data/lib/aws/simple_workflow/config.rb +1 -1
- data/lib/aws/simple_workflow/count.rb +5 -5
- data/lib/aws/simple_workflow/decision_task.rb +129 -129
- data/lib/aws/simple_workflow/decision_task_collection.rb +59 -59
- data/lib/aws/simple_workflow/domain.rb +11 -11
- data/lib/aws/simple_workflow/domain_collection.rb +26 -26
- data/lib/aws/simple_workflow/history_event.rb +32 -32
- data/lib/aws/simple_workflow/history_event_collection.rb +3 -3
- data/lib/aws/simple_workflow/option_formatters.rb +5 -5
- data/lib/aws/simple_workflow/request.rb +1 -1
- data/lib/aws/simple_workflow/resource.rb +1 -1
- data/lib/aws/simple_workflow/type.rb +8 -8
- data/lib/aws/simple_workflow/type_collection.rb +15 -15
- data/lib/aws/simple_workflow/workflow_execution.rb +70 -72
- data/lib/aws/simple_workflow/workflow_execution_collection.rb +130 -130
- data/lib/aws/simple_workflow/workflow_type.rb +27 -25
- data/lib/aws/simple_workflow/workflow_type_collection.rb +20 -20
- data/lib/aws/sns.rb +25 -25
- data/lib/aws/sns/client.rb +55 -55
- data/lib/aws/sns/config.rb +1 -1
- data/lib/aws/sns/policy.rb +1 -1
- data/lib/aws/sns/subscription.rb +7 -7
- data/lib/aws/sns/subscription_collection.rb +5 -5
- data/lib/aws/sns/topic.rb +49 -49
- data/lib/aws/sns/topic_collection.rb +2 -2
- data/lib/aws/sns/topic_subscription_collection.rb +5 -5
- data/lib/aws/sqs.rb +20 -20
- data/lib/aws/sqs/client.rb +78 -78
- data/lib/aws/sqs/config.rb +1 -1
- data/lib/aws/sqs/errors.rb +12 -12
- data/lib/aws/sqs/queue.rb +66 -67
- data/lib/aws/sqs/queue_collection.rb +16 -8
- data/lib/aws/sqs/received_message.rb +7 -6
- data/lib/aws/storage_gateway.rb +21 -21
- data/lib/aws/storage_gateway/client.rb +269 -202
- data/lib/aws/storage_gateway/config.rb +1 -1
- data/lib/aws/sts.rb +10 -8
- data/lib/aws/sts/client.rb +35 -35
- data/lib/aws/sts/session.rb +3 -3
- data/lib/aws/version.rb +1 -2
- metadata +23 -21
- data/lib/aws/core/autoloader.rb +0 -64
- data/lib/net/http/connection_pool.rb +0 -226
- data/lib/net/http/connection_pool/connection.rb +0 -189
- data/lib/net/http/connection_pool/session.rb +0 -126
data/lib/aws/sts.rb
CHANGED
|
@@ -23,6 +23,7 @@ module AWS
|
|
|
23
23
|
# IAM users.
|
|
24
24
|
#
|
|
25
25
|
# @example Getting temporary credentials and using them to make an EC2 request
|
|
26
|
+
#
|
|
26
27
|
# sts = AWS::STS.new(:access_key_id => "LONG_TERM_KEY",
|
|
27
28
|
# :secret_access_key => "LONG_TERM_SECRET")
|
|
28
29
|
# session = sts.new_session(:duration => 60*60)
|
|
@@ -30,6 +31,7 @@ module AWS
|
|
|
30
31
|
# ec2.instances.to_a
|
|
31
32
|
#
|
|
32
33
|
# @example Getting temporary credentials with restricted permissions
|
|
34
|
+
#
|
|
33
35
|
# policy = AWS::STS::Policy.new
|
|
34
36
|
# policy.allow(:actions => ["s3:*", "ec2:*"],
|
|
35
37
|
# :resources => :any)
|
|
@@ -41,17 +43,17 @@ module AWS
|
|
|
41
43
|
# @return [Client] the low-level STS client object
|
|
42
44
|
class STS
|
|
43
45
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
autoload :Session, 'session'
|
|
51
|
-
end
|
|
46
|
+
autoload :Client, 'aws/sts/client'
|
|
47
|
+
autoload :Errors, 'aws/sts/errors'
|
|
48
|
+
autoload :FederatedSession, 'aws/sts/federated_session'
|
|
49
|
+
autoload :Policy, 'aws/sts/policy'
|
|
50
|
+
autoload :Request, 'aws/sts/request'
|
|
51
|
+
autoload :Session, 'aws/sts/session'
|
|
52
52
|
|
|
53
53
|
include Core::ServiceInterface
|
|
54
54
|
|
|
55
|
+
endpoint_prefix 'sts', :global => true
|
|
56
|
+
|
|
55
57
|
# (see Client#assume_role)
|
|
56
58
|
def assume_role options = {}
|
|
57
59
|
client.assume_role(options).data
|
data/lib/aws/sts/client.rb
CHANGED
|
@@ -25,7 +25,7 @@ module AWS
|
|
|
25
25
|
def initialize *args
|
|
26
26
|
super
|
|
27
27
|
unless config.use_ssl?
|
|
28
|
-
msg = 'AWS Security Token Service (STS) requires ssl but the ' +
|
|
28
|
+
msg = 'AWS Security Token Service (STS) requires ssl but the ' +
|
|
29
29
|
':use_ssl option is set to false. Try passing :use_ssl => true'
|
|
30
30
|
raise ArgumentError, msg
|
|
31
31
|
end
|
|
@@ -36,12 +36,12 @@ module AWS
|
|
|
36
36
|
# @!method assume_role(options = {})
|
|
37
37
|
# Calls the AssumeRole API operation.
|
|
38
38
|
# @param [Hash] options
|
|
39
|
-
# *
|
|
39
|
+
# * `:role_arn` - *required* - (String) The Amazon Resource Name (ARN)
|
|
40
40
|
# of the role that the caller is assuming.
|
|
41
|
-
# *
|
|
41
|
+
# * `:role_session_name` - *required* - (String) An identifier for the
|
|
42
42
|
# assumed role session. The session name is included as part of the
|
|
43
43
|
# AssumedRoleUser.
|
|
44
|
-
# *
|
|
44
|
+
# * `:policy` - (String) A supplemental policy that can be associated
|
|
45
45
|
# with the temporary security credentials. The caller can restrict
|
|
46
46
|
# the permissions that are available on the role's temporary security
|
|
47
47
|
# credentials to maintain the least amount of privileges. When a
|
|
@@ -50,11 +50,11 @@ module AWS
|
|
|
50
50
|
# For more information about how permissions work in the context of
|
|
51
51
|
# temporary credentials, see Controlling Permissions in Temporary
|
|
52
52
|
# Credentials.
|
|
53
|
-
# *
|
|
53
|
+
# * `:duration_seconds` - (Integer) The duration, in seconds, of the
|
|
54
54
|
# role session. The value can range from 900 seconds (15 minutes) to
|
|
55
55
|
# 3600 seconds (1 hour). By default, the value is set to 3600 seconds
|
|
56
56
|
# (1 hour).
|
|
57
|
-
# *
|
|
57
|
+
# * `:external_id` - (String) A unique identifier that is generated by
|
|
58
58
|
# a third party for each of their customers. For each role that the
|
|
59
59
|
# third party can assume, they should instruct their customers to
|
|
60
60
|
# create a role with the external ID that was generated by the third
|
|
@@ -66,29 +66,29 @@ module AWS
|
|
|
66
66
|
# @return [Core::Response]
|
|
67
67
|
# The #data method of the response object returns
|
|
68
68
|
# a hash with the following structure:
|
|
69
|
-
# *
|
|
70
|
-
# *
|
|
71
|
-
# *
|
|
72
|
-
# *
|
|
73
|
-
# *
|
|
74
|
-
# *
|
|
75
|
-
# *
|
|
76
|
-
# *
|
|
77
|
-
# *
|
|
69
|
+
# * `:credentials` - (Hash)
|
|
70
|
+
# * `:access_key_id` - (String)
|
|
71
|
+
# * `:secret_access_key` - (String)
|
|
72
|
+
# * `:session_token` - (String)
|
|
73
|
+
# * `:expiration` - (Time)
|
|
74
|
+
# * `:assumed_role_user` - (Hash)
|
|
75
|
+
# * `:assumed_role_id` - (String)
|
|
76
|
+
# * `:arn` - (String)
|
|
77
|
+
# * `:packed_policy_size` - (Integer)
|
|
78
78
|
|
|
79
79
|
# @!method get_federation_token(options = {})
|
|
80
80
|
# Calls the GetFederationToken API operation.
|
|
81
81
|
# @param [Hash] options
|
|
82
|
-
# *
|
|
82
|
+
# * `:name` - *required* - (String) The name of the federated user
|
|
83
83
|
# associated with the credentials. For information about limitations
|
|
84
84
|
# on user names, go to Limitations on IAM Entities in Using IAM.
|
|
85
|
-
# *
|
|
85
|
+
# * `:policy` - (String) A policy specifying the permissions to
|
|
86
86
|
# associate with the credentials. The caller can delegate their own
|
|
87
87
|
# permissions by specifying a policy, and both policies will be
|
|
88
88
|
# checked when a service call is made. For more information about how
|
|
89
89
|
# permissions work in the context of temporary credentials, see
|
|
90
90
|
# Controlling Permissions in Temporary Credentials in Using IAM.
|
|
91
|
-
# *
|
|
91
|
+
# * `:duration_seconds` - (Integer) The duration, in seconds, that the
|
|
92
92
|
# session should last. Acceptable durations for federation sessions
|
|
93
93
|
# range from 900s (15 minutes) to 129600s (36 hours), with 43200s (12
|
|
94
94
|
# hours) as the default. Sessions for AWS account owners are
|
|
@@ -98,27 +98,27 @@ module AWS
|
|
|
98
98
|
# @return [Core::Response]
|
|
99
99
|
# The #data method of the response object returns
|
|
100
100
|
# a hash with the following structure:
|
|
101
|
-
# *
|
|
102
|
-
# *
|
|
103
|
-
# *
|
|
104
|
-
# *
|
|
105
|
-
# *
|
|
106
|
-
# *
|
|
107
|
-
# *
|
|
108
|
-
# *
|
|
109
|
-
# *
|
|
101
|
+
# * `:credentials` - (Hash)
|
|
102
|
+
# * `:access_key_id` - (String)
|
|
103
|
+
# * `:secret_access_key` - (String)
|
|
104
|
+
# * `:session_token` - (String)
|
|
105
|
+
# * `:expiration` - (Time)
|
|
106
|
+
# * `:federated_user` - (Hash)
|
|
107
|
+
# * `:federated_user_id` - (String)
|
|
108
|
+
# * `:arn` - (String)
|
|
109
|
+
# * `:packed_policy_size` - (Integer)
|
|
110
110
|
|
|
111
111
|
# @!method get_session_token(options = {})
|
|
112
112
|
# Calls the GetSessionToken API operation.
|
|
113
113
|
# @param [Hash] options
|
|
114
|
-
# *
|
|
114
|
+
# * `:duration_seconds` - (Integer) The duration, in seconds, that the
|
|
115
115
|
# credentials should remain valid. Acceptable durations for IAM user
|
|
116
116
|
# sessions range from 900s (15 minutes) to 129600s (36 hours), with
|
|
117
117
|
# 43200s (12 hours) as the default. Sessions for AWS account owners
|
|
118
118
|
# are restricted to a maximum of 3600s (one hour). If the duration is
|
|
119
119
|
# longer than one hour, the session for AWS account owners defaults
|
|
120
120
|
# to one hour.
|
|
121
|
-
# *
|
|
121
|
+
# * `:serial_number` - (String) The identification number of the MFA
|
|
122
122
|
# device for the user. If the IAM user has a policy requiring MFA
|
|
123
123
|
# authentication (or is in a group requiring MFA authentication) to
|
|
124
124
|
# access resources, provide the device value here.The value is in the
|
|
@@ -130,7 +130,7 @@ module AWS
|
|
|
130
130
|
# number for a hardware device (usually the number from the back of
|
|
131
131
|
# the device), such as GAHT12345678. For more information, see Using
|
|
132
132
|
# Multi-Factor Authentication (MFA) Devices with AWS in Using IAM.
|
|
133
|
-
# *
|
|
133
|
+
# * `:token_code` - (String) The value provided by the MFA device. If
|
|
134
134
|
# the user has an access policy requiring an MFA code (or is in a
|
|
135
135
|
# group requiring an MFA code), provide the value here to get
|
|
136
136
|
# permission to resources as specified in the access policy. If MFA
|
|
@@ -142,11 +142,11 @@ module AWS
|
|
|
142
142
|
# @return [Core::Response]
|
|
143
143
|
# The #data method of the response object returns
|
|
144
144
|
# a hash with the following structure:
|
|
145
|
-
# *
|
|
146
|
-
# *
|
|
147
|
-
# *
|
|
148
|
-
# *
|
|
149
|
-
# *
|
|
145
|
+
# * `:credentials` - (Hash)
|
|
146
|
+
# * `:access_key_id` - (String)
|
|
147
|
+
# * `:secret_access_key` - (String)
|
|
148
|
+
# * `:session_token` - (String)
|
|
149
|
+
# * `:expiration` - (Time)
|
|
150
150
|
|
|
151
151
|
# end client methods #
|
|
152
152
|
|
data/lib/aws/sts/session.rb
CHANGED
|
@@ -21,9 +21,9 @@ module AWS
|
|
|
21
21
|
|
|
22
22
|
# A hash containing the following keys:
|
|
23
23
|
#
|
|
24
|
-
# *
|
|
25
|
-
# *
|
|
26
|
-
# *
|
|
24
|
+
# * `:access_key_id`
|
|
25
|
+
# * `:secret_access_key`
|
|
26
|
+
# * `:session_token`
|
|
27
27
|
#
|
|
28
28
|
# This hash may be passed as-is to {AWS.config} or to the
|
|
29
29
|
# constructor of any service interface that supports temporary
|
data/lib/aws/version.rb
CHANGED
|
@@ -11,8 +11,7 @@
|
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
13
|
|
|
14
|
-
|
|
15
14
|
module AWS
|
|
16
15
|
# Current version of the AWS SDK for Ruby
|
|
17
|
-
VERSION = '1.
|
|
16
|
+
VERSION = '1.9.0'
|
|
18
17
|
end
|
metadata
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: aws-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 1.9.0
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Amazon Web Services
|
|
9
8
|
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date: 2013-
|
|
11
|
+
date: 2013-04-18 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: uuidtools
|
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
|
17
|
-
none: false
|
|
18
16
|
requirements:
|
|
19
17
|
- - ~>
|
|
20
18
|
- !ruby/object:Gem::Version
|
|
@@ -22,7 +20,6 @@ dependencies:
|
|
|
22
20
|
type: :runtime
|
|
23
21
|
prerelease: false
|
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
-
none: false
|
|
26
23
|
requirements:
|
|
27
24
|
- - ~>
|
|
28
25
|
- !ruby/object:Gem::Version
|
|
@@ -30,23 +27,20 @@ dependencies:
|
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
|
31
28
|
name: nokogiri
|
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
|
33
|
-
none: false
|
|
34
30
|
requirements:
|
|
35
|
-
- -
|
|
31
|
+
- - '>='
|
|
36
32
|
- !ruby/object:Gem::Version
|
|
37
33
|
version: 1.4.4
|
|
38
34
|
type: :runtime
|
|
39
35
|
prerelease: false
|
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
-
none: false
|
|
42
37
|
requirements:
|
|
43
|
-
- -
|
|
38
|
+
- - '>='
|
|
44
39
|
- !ruby/object:Gem::Version
|
|
45
40
|
version: 1.4.4
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
|
47
42
|
name: json
|
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
|
49
|
-
none: false
|
|
50
44
|
requirements:
|
|
51
45
|
- - ~>
|
|
52
46
|
- !ruby/object:Gem::Version
|
|
@@ -54,7 +48,6 @@ dependencies:
|
|
|
54
48
|
type: :runtime
|
|
55
49
|
prerelease: false
|
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
-
none: false
|
|
58
51
|
requirements:
|
|
59
52
|
- - ~>
|
|
60
53
|
- !ruby/object:Gem::Version
|
|
@@ -132,7 +125,6 @@ files:
|
|
|
132
125
|
- lib/aws/cloud_watch/request.rb
|
|
133
126
|
- lib/aws/cloud_watch.rb
|
|
134
127
|
- lib/aws/core/async_handle.rb
|
|
135
|
-
- lib/aws/core/autoloader.rb
|
|
136
128
|
- lib/aws/core/cacheable.rb
|
|
137
129
|
- lib/aws/core/client.rb
|
|
138
130
|
- lib/aws/core/collection/simple.rb
|
|
@@ -142,9 +134,11 @@ files:
|
|
|
142
134
|
- lib/aws/core/configuration.rb
|
|
143
135
|
- lib/aws/core/credential_providers.rb
|
|
144
136
|
- lib/aws/core/data.rb
|
|
137
|
+
- lib/aws/core/http/connection_pool.rb
|
|
145
138
|
- lib/aws/core/http/curb_handler.rb
|
|
146
139
|
- lib/aws/core/http/handler.rb
|
|
147
140
|
- lib/aws/core/http/net_http_handler.rb
|
|
141
|
+
- lib/aws/core/http/patch.rb
|
|
148
142
|
- lib/aws/core/http/request.rb
|
|
149
143
|
- lib/aws/core/http/response.rb
|
|
150
144
|
- lib/aws/core/indifferent_hash.rb
|
|
@@ -169,6 +163,8 @@ files:
|
|
|
169
163
|
- lib/aws/core/query_error_parser.rb
|
|
170
164
|
- lib/aws/core/query_request_builder.rb
|
|
171
165
|
- lib/aws/core/query_response_parser.rb
|
|
166
|
+
- lib/aws/core/region.rb
|
|
167
|
+
- lib/aws/core/region_collection.rb
|
|
172
168
|
- lib/aws/core/resource.rb
|
|
173
169
|
- lib/aws/core/resource_cache.rb
|
|
174
170
|
- lib/aws/core/response.rb
|
|
@@ -201,11 +197,18 @@ files:
|
|
|
201
197
|
- lib/aws/data_pipeline/errors.rb
|
|
202
198
|
- lib/aws/data_pipeline/request.rb
|
|
203
199
|
- lib/aws/data_pipeline.rb
|
|
200
|
+
- lib/aws/direct_connect/client.rb
|
|
201
|
+
- lib/aws/direct_connect/config.rb
|
|
202
|
+
- lib/aws/direct_connect/errors.rb
|
|
203
|
+
- lib/aws/direct_connect/request.rb
|
|
204
|
+
- lib/aws/direct_connect.rb
|
|
204
205
|
- lib/aws/dynamo_db/attribute_collection.rb
|
|
205
206
|
- lib/aws/dynamo_db/batch_get.rb
|
|
206
207
|
- lib/aws/dynamo_db/batch_write.rb
|
|
207
208
|
- lib/aws/dynamo_db/binary.rb
|
|
208
209
|
- lib/aws/dynamo_db/client.rb
|
|
210
|
+
- lib/aws/dynamo_db/client_base.rb
|
|
211
|
+
- lib/aws/dynamo_db/client_v2.rb
|
|
209
212
|
- lib/aws/dynamo_db/config.rb
|
|
210
213
|
- lib/aws/dynamo_db/errors.rb
|
|
211
214
|
- lib/aws/dynamo_db/expectations.rb
|
|
@@ -569,16 +572,16 @@ files:
|
|
|
569
572
|
- lib/aws/version.rb
|
|
570
573
|
- lib/aws-sdk.rb
|
|
571
574
|
- lib/aws.rb
|
|
572
|
-
- lib/net/http/connection_pool/connection.rb
|
|
573
|
-
- lib/net/http/connection_pool/session.rb
|
|
574
|
-
- lib/net/http/connection_pool.rb
|
|
575
575
|
- lib/aws/api_config/AutoScaling-2011-01-01.yml
|
|
576
576
|
- lib/aws/api_config/CloudFormation-2010-05-15.yml
|
|
577
577
|
- lib/aws/api_config/CloudFront-2012-05-05.yml
|
|
578
|
+
- lib/aws/api_config/CloudFront-2012-07-01.yml
|
|
578
579
|
- lib/aws/api_config/CloudSearch-2011-02-01.yml
|
|
579
580
|
- lib/aws/api_config/CloudWatch-2010-08-01.yml
|
|
580
581
|
- lib/aws/api_config/DataPipeline-2012-10-29.yml
|
|
582
|
+
- lib/aws/api_config/DirectConnect-2012-10-25.yml
|
|
581
583
|
- lib/aws/api_config/DynamoDB-2011-12-05.yml
|
|
584
|
+
- lib/aws/api_config/DynamoDB-2012-08-10.yml
|
|
582
585
|
- lib/aws/api_config/EC2-2013-02-01.yml
|
|
583
586
|
- lib/aws/api_config/ElastiCache-2012-03-09.yml
|
|
584
587
|
- lib/aws/api_config/ElastiCache-2012-11-15.yml
|
|
@@ -605,27 +608,26 @@ files:
|
|
|
605
608
|
homepage: http://aws.amazon.com/sdkforruby
|
|
606
609
|
licenses:
|
|
607
610
|
- Apache 2.0
|
|
611
|
+
metadata: {}
|
|
608
612
|
post_install_message:
|
|
609
613
|
rdoc_options: []
|
|
610
614
|
require_paths:
|
|
611
615
|
- lib
|
|
612
616
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
613
|
-
none: false
|
|
614
617
|
requirements:
|
|
615
|
-
- -
|
|
618
|
+
- - '>='
|
|
616
619
|
- !ruby/object:Gem::Version
|
|
617
620
|
version: '0'
|
|
618
621
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
619
|
-
none: false
|
|
620
622
|
requirements:
|
|
621
|
-
- -
|
|
623
|
+
- - '>='
|
|
622
624
|
- !ruby/object:Gem::Version
|
|
623
625
|
version: '0'
|
|
624
626
|
requirements: []
|
|
625
627
|
rubyforge_project:
|
|
626
|
-
rubygems_version:
|
|
628
|
+
rubygems_version: 2.0.0
|
|
627
629
|
signing_key:
|
|
628
|
-
specification_version:
|
|
630
|
+
specification_version: 4
|
|
629
631
|
summary: AWS SDK for Ruby
|
|
630
632
|
test_files: []
|
|
631
633
|
has_rdoc:
|
data/lib/aws/core/autoloader.rb
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
# Copyright 2011-2013 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 'set'
|
|
15
|
-
|
|
16
|
-
module AWS
|
|
17
|
-
|
|
18
|
-
@@eager = false
|
|
19
|
-
@@autoloads = {}
|
|
20
|
-
|
|
21
|
-
def self.register_autoloads klass, prefix = nil, &block
|
|
22
|
-
autoloader = Core::Autoloader.new(klass, prefix)
|
|
23
|
-
autoloader.instance_eval(&block)
|
|
24
|
-
autoloader.autoloads.each_pair do |const_name, file_path|
|
|
25
|
-
require(file_path) if @@eager
|
|
26
|
-
@@autoloads["#{klass}::#{const_name}"] = file_path
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def self.eager_autoload!
|
|
31
|
-
unless @@eager
|
|
32
|
-
@@eager = true
|
|
33
|
-
@@autoloads.values.uniq.each {|file_path| require(file_path) }
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def self.autoloads
|
|
38
|
-
@@autoloads
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
module Core
|
|
42
|
-
|
|
43
|
-
# @private
|
|
44
|
-
class Autoloader
|
|
45
|
-
|
|
46
|
-
def initialize klass, prefix = nil
|
|
47
|
-
@klass = klass
|
|
48
|
-
@prefix = prefix || klass.name.gsub(/::/, '/').downcase
|
|
49
|
-
@autoloads = {}
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
attr_reader :autoloads
|
|
53
|
-
|
|
54
|
-
def autoload const_name, file_name
|
|
55
|
-
path = "#{@prefix}/#{file_name}"
|
|
56
|
-
@klass.autoload(const_name, path)
|
|
57
|
-
@autoloads[const_name] = path
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
end
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
# Copyright 2011-2013 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/session'
|
|
15
|
-
require 'net/http/connection_pool/connection'
|
|
16
|
-
require 'thread'
|
|
17
|
-
require 'logger'
|
|
18
|
-
|
|
19
|
-
# A wrapper around Net::HTTP that provides a manged pool of persistant HTTP
|
|
20
|
-
# connections.
|
|
21
|
-
#
|
|
22
|
-
# pool = Net::HTTP::ConnectionPool.new
|
|
23
|
-
# connection = pool.connection_for('domain.com')
|
|
24
|
-
# connection.request(Net::HTTP::Get.new('/')) do |resp|
|
|
25
|
-
# # Connection#request yields Net::HTTPResponse objects
|
|
26
|
-
# puts resp.body
|
|
27
|
-
# end
|
|
28
|
-
#
|
|
29
|
-
# @private
|
|
30
|
-
class Net::HTTP::ConnectionPool
|
|
31
|
-
|
|
32
|
-
# @param [Hash] options
|
|
33
|
-
#
|
|
34
|
-
# @option options [Numeric] :http_idle_timeout (60) The number of seconds a
|
|
35
|
-
# connection is allowed to sit idle before it is closed and removed
|
|
36
|
-
# from the pool.
|
|
37
|
-
#
|
|
38
|
-
# @option options [Numeric] :http_open_timeout (15) The number of seconds to
|
|
39
|
-
# wait when opening a http session before raising a timeout exception.
|
|
40
|
-
#
|
|
41
|
-
# @option options [Boolean] :http_wire_trace (false) When +true+, HTTP
|
|
42
|
-
# debug output will be sent to the +:logger+.
|
|
43
|
-
#
|
|
44
|
-
# @option options [Logger] :logger (Logger.new($stdout)) Where debug out
|
|
45
|
-
# is sent (wire traces).
|
|
46
|
-
#
|
|
47
|
-
def initialize options = {}
|
|
48
|
-
@pool_mutex = Mutex.new
|
|
49
|
-
@pool = []
|
|
50
|
-
@open_timeout = options[:http_open_timeout] || 15
|
|
51
|
-
@idle_timeout = options[:http_idle_timeout] || 60
|
|
52
|
-
@http_wire_trace = !!options[:http_wire_trace]
|
|
53
|
-
if logger = options[:logger]
|
|
54
|
-
@logger = logger
|
|
55
|
-
elsif http_wire_trace?
|
|
56
|
-
@logger = Logger.new($stdout)
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# @return [Integer]
|
|
61
|
-
attr_reader :idle_timeout
|
|
62
|
-
|
|
63
|
-
# @return [Integer]
|
|
64
|
-
attr_accessor :open_timeout
|
|
65
|
-
|
|
66
|
-
# @return [Boolean] Returns +true+ when HTTP debug output (wire traces)
|
|
67
|
-
# will be logged.
|
|
68
|
-
attr_reader :http_wire_trace
|
|
69
|
-
|
|
70
|
-
alias_method :http_wire_trace?, :http_wire_trace
|
|
71
|
-
alias_method :log_wire_trace?, :http_wire_trace
|
|
72
|
-
alias_method :log_wire_trace, :http_wire_trace
|
|
73
|
-
|
|
74
|
-
# @return [Logger] Where debug output is sent.
|
|
75
|
-
attr_reader :logger
|
|
76
|
-
|
|
77
|
-
# Requests a connection object from the connection pool.
|
|
78
|
-
#
|
|
79
|
-
# connection = pool.connection_for('domain.com')
|
|
80
|
-
# connection.request(Net::HTTP::Get.new('/index.html')) {|resp|}
|
|
81
|
-
# connection.request(Net::HTTP::Get.new('/about.html')) {|resp|}
|
|
82
|
-
#
|
|
83
|
-
# # same thing in block form
|
|
84
|
-
# pool.connection_for('domain.com') do |connection|
|
|
85
|
-
# connection.request(Net::HTTP::Get.new('/index.html')) {|resp|}
|
|
86
|
-
# connection.request(Net::HTTP::Get.new('/about.html')) {|resp|}
|
|
87
|
-
# end
|
|
88
|
-
#
|
|
89
|
-
# Because the pool manages HTTP sessions you do not have to
|
|
90
|
-
# worry about closing a connection or returning a connection
|
|
91
|
-
# to the pool.
|
|
92
|
-
#
|
|
93
|
-
# @param [String] host
|
|
94
|
-
#
|
|
95
|
-
# @param [Hash] options
|
|
96
|
-
#
|
|
97
|
-
# @option options [Integer] :port Which port the connection should use.
|
|
98
|
-
# Defaults to 80, unless +:ssl+ is +true+, then it defaults to 443.
|
|
99
|
-
#
|
|
100
|
-
# @option options [Boolean] :ssl If the connection should be made over
|
|
101
|
-
# SSL. Defaults to +false+, unless +:port+ is 443, then it defaults
|
|
102
|
-
# to +true+.
|
|
103
|
-
#
|
|
104
|
-
# @option options [Boolean] :ssl_verify_peer (true) If true, ssl
|
|
105
|
-
# connections should verify peer certificates. This should only ever be
|
|
106
|
-
# set false false for debugging purposes.
|
|
107
|
-
#
|
|
108
|
-
# @option options [String] :ssl_ca_file Full path to the SSL certificate
|
|
109
|
-
# authority bundle file that should be used when verifying peer
|
|
110
|
-
# certificates. If you do not pass +:ssl_ca_file+ or +:ssl_ca_path+
|
|
111
|
-
# the the system default will be used if available.
|
|
112
|
-
#
|
|
113
|
-
# @option options [String] :ssl_ca_path Full path of the directory that
|
|
114
|
-
# contains the unbundled SSL certificate authority files for verifying
|
|
115
|
-
# peer certificates. If you do not pass +:ssl_ca_file+ or +:ssl_ca_path+
|
|
116
|
-
# the the system default will be used if available.
|
|
117
|
-
#
|
|
118
|
-
# @option options [URI::HTTP,String] :proxy_uri (nil) A URI string or
|
|
119
|
-
# URI::HTTP object to use as a proxy. You should not provide
|
|
120
|
-
# +:proxy_uri+ with any other proxy options.
|
|
121
|
-
#
|
|
122
|
-
# :proxy_uri => 'http://user:pass@host.com:80'
|
|
123
|
-
#
|
|
124
|
-
# @option options [String] :proxy_address
|
|
125
|
-
#
|
|
126
|
-
# @option options [String] :proxy_port
|
|
127
|
-
#
|
|
128
|
-
# @option options [String] :proxy_user
|
|
129
|
-
#
|
|
130
|
-
# @option options [String] :proxy_password
|
|
131
|
-
#
|
|
132
|
-
# @yield [connection]
|
|
133
|
-
#
|
|
134
|
-
# @yieldparam [optional,Connection] connection
|
|
135
|
-
#
|
|
136
|
-
# @return [Connection]
|
|
137
|
-
#
|
|
138
|
-
def connection_for host, options = {}, &block
|
|
139
|
-
connection = Connection.new(self, host, options)
|
|
140
|
-
yield(connection) if block_given?
|
|
141
|
-
connection
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
# Returns the number of sessions currently in the pool, not counting those
|
|
145
|
-
# currently in use.
|
|
146
|
-
def size
|
|
147
|
-
@pool_mutex.synchronize { @pool.size }
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
# Removes stale http sessions from the pool (that have exceeded
|
|
151
|
-
# the idle timeout).
|
|
152
|
-
def clean!
|
|
153
|
-
@pool_mutex.synchronize { _clean }
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
# Closes and removes removes all sessions from the pool.
|
|
157
|
-
# If empty! is called while there are outstanding requests they may
|
|
158
|
-
# get checked back into the pool, leaving the pool in a non-empty state.
|
|
159
|
-
def empty!
|
|
160
|
-
@pool_mutex.synchronize do
|
|
161
|
-
@pool.each(&:finish)
|
|
162
|
-
@pool = []
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
# Makes a single HTTP request. See {Connection#request} for more information
|
|
167
|
-
# on making an HTTP request.
|
|
168
|
-
# @return [nil]
|
|
169
|
-
# @private
|
|
170
|
-
def request connection, *args, &block
|
|
171
|
-
session_for(connection) do |session|
|
|
172
|
-
session.read_timeout = connection.read_timeout
|
|
173
|
-
session.request(*args, &block)
|
|
174
|
-
end
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
protected
|
|
178
|
-
|
|
179
|
-
# Yields an open http session for the given connection.
|
|
180
|
-
def session_for connection, &block
|
|
181
|
-
|
|
182
|
-
session = nil
|
|
183
|
-
|
|
184
|
-
# search the pool for an idle session that can be used
|
|
185
|
-
@pool_mutex.synchronize do
|
|
186
|
-
_clean # removes stale sessions
|
|
187
|
-
session = @pool.find{|idle_session| idle_session.key == connection.key }
|
|
188
|
-
@pool.delete(session) if session
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
begin
|
|
192
|
-
# opens a new HTTP session if no suitable idle session was found
|
|
193
|
-
session = _create_session(connection) unless session
|
|
194
|
-
yield(session)
|
|
195
|
-
rescue Exception => error
|
|
196
|
-
session.finish if session
|
|
197
|
-
raise error
|
|
198
|
-
else
|
|
199
|
-
# only check the session back into the pool if no errors were raised
|
|
200
|
-
@pool_mutex.synchronize { @pool << session }
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
nil
|
|
204
|
-
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
def _create_session connection
|
|
208
|
-
Session.start(connection,
|
|
209
|
-
:open_timeout => open_timeout,
|
|
210
|
-
:debug_logger => log_wire_trace? ? logger : nil)
|
|
211
|
-
end
|
|
212
|
-
|
|
213
|
-
def _clean
|
|
214
|
-
now = Time.now
|
|
215
|
-
@pool.delete_if do |idle_session|
|
|
216
|
-
if
|
|
217
|
-
idle_session.last_used_at.nil? or
|
|
218
|
-
now - idle_session.last_used_at > idle_timeout
|
|
219
|
-
then
|
|
220
|
-
idle_session.finish
|
|
221
|
-
true
|
|
222
|
-
end
|
|
223
|
-
end
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
end
|