aws-sdk-euca 1.8.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/.yardopts +5 -0
- data/LICENSE.txt +12 -0
- data/README.rdoc +189 -0
- data/ca-bundle.crt +3895 -0
- data/lib/aws-sdk-euca.rb +79 -0
- data/lib/aws-sdk.rb +79 -0
- data/lib/aws.rb +14 -0
- data/lib/aws/api_config/AutoScaling-2011-01-01.yml +825 -0
- data/lib/aws/api_config/CloudFormation-2010-05-15.yml +322 -0
- data/lib/aws/api_config/CloudFront-2012-05-05.yml +2102 -0
- data/lib/aws/api_config/CloudSearch-2011-02-01.yml +681 -0
- data/lib/aws/api_config/CloudWatch-2010-08-01.yml +433 -0
- data/lib/aws/api_config/DataPipeline-2012-10-29.yml +422 -0
- data/lib/aws/api_config/DynamoDB-2011-12-05.yml +1160 -0
- data/lib/aws/api_config/EC2-2013-02-01.yml +4368 -0
- data/lib/aws/api_config/ELB-2012-06-01.yml +597 -0
- data/lib/aws/api_config/EMR-2009-03-31.yml +370 -0
- data/lib/aws/api_config/ElastiCache-2012-03-09.yml +777 -0
- data/lib/aws/api_config/ElastiCache-2012-11-15.yml +979 -0
- data/lib/aws/api_config/ElasticBeanstalk-2010-12-01.yml +823 -0
- data/lib/aws/api_config/ElasticTranscoder-2012-09-25.yml +1036 -0
- data/lib/aws/api_config/Glacier-2012-06-01.yml +618 -0
- data/lib/aws/api_config/IAM-2010-05-08.yml +1222 -0
- data/lib/aws/api_config/ImportExport-2010-06-01.yml +109 -0
- data/lib/aws/api_config/OpsWorks-2013-02-18.yml +1463 -0
- data/lib/aws/api_config/RDS-2012-09-17.yml +1861 -0
- data/lib/aws/api_config/RDS-2013-02-12.yml +2377 -0
- data/lib/aws/api_config/Redshift-2012-12-01.yml +1149 -0
- data/lib/aws/api_config/Route53-2012-02-29.yml +380 -0
- data/lib/aws/api_config/Route53-2012-12-12.yml +547 -0
- data/lib/aws/api_config/SNS-2010-03-31.yml +249 -0
- data/lib/aws/api_config/SQS-2012-11-05.yml +317 -0
- data/lib/aws/api_config/STS-2011-06-15.yml +81 -0
- data/lib/aws/api_config/SimpleDB-2009-04-15.yml +306 -0
- data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +346 -0
- data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +2358 -0
- data/lib/aws/api_config/StorageGateway-2012-06-30.yml +748 -0
- data/lib/aws/auto_scaling.rb +164 -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 +521 -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 +158 -0
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +154 -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 +29 -0
- data/lib/aws/auto_scaling/scaling_policy.rb +142 -0
- data/lib/aws/auto_scaling/scaling_policy_collection.rb +72 -0
- data/lib/aws/auto_scaling/scaling_policy_options.rb +64 -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 +272 -0
- data/lib/aws/cloud_formation/client.rb +369 -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 +255 -0
- data/lib/aws/cloud_formation/stack_collection.rb +209 -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 +64 -0
- data/lib/aws/cloud_formation/stack_summary_collection.rb +123 -0
- data/lib/aws/cloud_front.rb +73 -0
- data/lib/aws/cloud_front/client.rb +1307 -0
- data/lib/aws/cloud_front/config.rb +18 -0
- data/lib/aws/cloud_front/errors.rb +22 -0
- data/lib/aws/cloud_front/request.rb +44 -0
- data/lib/aws/cloud_search.rb +74 -0
- data/lib/aws/cloud_search/client.rb +558 -0
- data/lib/aws/cloud_search/config.rb +18 -0
- data/lib/aws/cloud_search/errors.rb +22 -0
- data/lib/aws/cloud_search/request.rb +23 -0
- data/lib/aws/cloud_watch.rb +119 -0
- data/lib/aws/cloud_watch/alarm.rb +272 -0
- data/lib/aws/cloud_watch/alarm_collection.rb +153 -0
- data/lib/aws/cloud_watch/alarm_history_item.rb +50 -0
- data/lib/aws/cloud_watch/alarm_history_item_collection.rb +84 -0
- data/lib/aws/cloud_watch/client.rb +247 -0
- data/lib/aws/cloud_watch/config.rb +18 -0
- data/lib/aws/cloud_watch/errors.rb +22 -0
- data/lib/aws/cloud_watch/metric.rb +135 -0
- data/lib/aws/cloud_watch/metric_alarm_collection.rb +160 -0
- data/lib/aws/cloud_watch/metric_collection.rb +131 -0
- data/lib/aws/cloud_watch/metric_statistics.rb +69 -0
- data/lib/aws/cloud_watch/request.rb +23 -0
- data/lib/aws/core.rb +587 -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 +691 -0
- data/lib/aws/core/collection.rb +267 -0
- data/lib/aws/core/collection/simple.rb +82 -0
- data/lib/aws/core/collection/with_limit_and_next_token.rb +71 -0
- data/lib/aws/core/collection/with_next_token.rb +97 -0
- data/lib/aws/core/configuration.rb +546 -0
- data/lib/aws/core/credential_providers.rb +461 -0
- data/lib/aws/core/data.rb +247 -0
- data/lib/aws/core/http/curb_handler.rb +155 -0
- data/lib/aws/core/http/handler.rb +89 -0
- data/lib/aws/core/http/net_http_handler.rb +128 -0
- data/lib/aws/core/http/request.rb +263 -0
- data/lib/aws/core/http/response.rb +81 -0
- data/lib/aws/core/indifferent_hash.rb +88 -0
- data/lib/aws/core/inflection.rb +56 -0
- data/lib/aws/core/json_client.rb +47 -0
- data/lib/aws/core/json_parser.rb +76 -0
- data/lib/aws/core/json_request_builder.rb +35 -0
- data/lib/aws/core/json_response_parser.rb +79 -0
- data/lib/aws/core/lazy_error_classes.rb +90 -0
- data/lib/aws/core/log_formatter.rb +462 -0
- data/lib/aws/core/managed_file.rb +32 -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 +735 -0
- data/lib/aws/core/options/json_serializer.rb +82 -0
- data/lib/aws/core/options/validator.rb +155 -0
- data/lib/aws/core/options/xml_serializer.rb +118 -0
- data/lib/aws/core/page_result.rb +75 -0
- data/lib/aws/core/policy.rb +916 -0
- data/lib/aws/core/query_client.rb +41 -0
- data/lib/aws/core/query_error_parser.rb +24 -0
- data/lib/aws/core/query_request_builder.rb +47 -0
- data/lib/aws/core/query_response_parser.rb +35 -0
- data/lib/aws/core/resource.rb +413 -0
- data/lib/aws/core/resource_cache.rb +40 -0
- data/lib/aws/core/response.rb +208 -0
- data/lib/aws/core/response_cache.rb +50 -0
- data/lib/aws/core/rest_error_parser.rb +24 -0
- data/lib/aws/core/rest_json_client.rb +40 -0
- data/lib/aws/core/rest_request_builder.rb +146 -0
- data/lib/aws/core/rest_response_parser.rb +66 -0
- data/lib/aws/core/rest_xml_client.rb +47 -0
- data/lib/aws/core/service_interface.rb +61 -0
- data/lib/aws/core/signature/version_2.rb +56 -0
- data/lib/aws/core/signature/version_3.rb +77 -0
- data/lib/aws/core/signature/version_3_https.rb +54 -0
- data/lib/aws/core/signature/version_4.rb +135 -0
- data/lib/aws/core/signer.rb +46 -0
- data/lib/aws/core/uri_escape.rb +44 -0
- data/lib/aws/core/xml/frame.rb +244 -0
- data/lib/aws/core/xml/frame_stack.rb +85 -0
- data/lib/aws/core/xml/grammar.rb +307 -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/data_pipeline.rb +73 -0
- data/lib/aws/data_pipeline/client.rb +339 -0
- data/lib/aws/data_pipeline/config.rb +18 -0
- data/lib/aws/data_pipeline/errors.rb +20 -0
- data/lib/aws/data_pipeline/request.rb +26 -0
- data/lib/aws/dynamo_db.rb +206 -0
- data/lib/aws/dynamo_db/attribute_collection.rb +461 -0
- data/lib/aws/dynamo_db/batch_get.rb +213 -0
- data/lib/aws/dynamo_db/batch_write.rb +252 -0
- data/lib/aws/dynamo_db/binary.rb +35 -0
- data/lib/aws/dynamo_db/client.rb +904 -0
- data/lib/aws/dynamo_db/config.rb +24 -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 +133 -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 +48 -0
- data/lib/aws/dynamo_db/request.rb +26 -0
- data/lib/aws/dynamo_db/resource.rb +33 -0
- data/lib/aws/dynamo_db/table.rb +491 -0
- data/lib/aws/dynamo_db/table_collection.rb +165 -0
- data/lib/aws/dynamo_db/types.rb +111 -0
- data/lib/aws/ec2.rb +440 -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 +86 -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 +3621 -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 +208 -0
- data/lib/aws/ec2/elastic_ip_collection.rb +97 -0
- data/lib/aws/ec2/errors.rb +32 -0
- data/lib/aws/ec2/export_task.rb +120 -0
- data/lib/aws/ec2/export_task_collection.rb +67 -0
- data/lib/aws/ec2/filtered_collection.rb +89 -0
- data/lib/aws/ec2/has_permissions.rb +44 -0
- data/lib/aws/ec2/image.rb +264 -0
- data/lib/aws/ec2/image_collection.rb +228 -0
- data/lib/aws/ec2/instance.rb +796 -0
- data/lib/aws/ec2/instance_collection.rb +372 -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 +106 -0
- data/lib/aws/ec2/region_collection.rb +51 -0
- data/lib/aws/ec2/request.rb +21 -0
- data/lib/aws/ec2/reserved_instances.rb +56 -0
- data/lib/aws/ec2/reserved_instances_collection.rb +40 -0
- data/lib/aws/ec2/reserved_instances_offering.rb +60 -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 +119 -0
- data/lib/aws/ec2/route_table_collection.rb +72 -0
- data/lib/aws/ec2/security_group.rb +484 -0
- data/lib/aws/ec2/security_group/ip_permission.rb +135 -0
- data/lib/aws/ec2/security_group/ip_permission_collection.rb +82 -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 +132 -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 +174 -0
- data/lib/aws/ec2/volume_collection.rb +101 -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/elastic_beanstalk.rb +50 -0
- data/lib/aws/elastic_beanstalk/client.rb +867 -0
- data/lib/aws/elastic_beanstalk/config.rb +18 -0
- data/lib/aws/elastic_beanstalk/errors.rb +22 -0
- data/lib/aws/elastic_beanstalk/request.rb +29 -0
- data/lib/aws/elastic_transcoder.rb +30 -0
- data/lib/aws/elastic_transcoder/client.rb +672 -0
- data/lib/aws/elastic_transcoder/config.rb +18 -0
- data/lib/aws/elastic_transcoder/errors.rb +23 -0
- data/lib/aws/elastic_transcoder/request.rb +30 -0
- data/lib/aws/elasticache.rb +50 -0
- data/lib/aws/elasticache/client.rb +920 -0
- data/lib/aws/elasticache/config.rb +18 -0
- data/lib/aws/elasticache/errors.rb +22 -0
- data/lib/aws/elasticache/request.rb +23 -0
- data/lib/aws/elb.rb +67 -0
- data/lib/aws/elb/availability_zone_collection.rb +138 -0
- data/lib/aws/elb/backend_server_policy_collection.rb +139 -0
- data/lib/aws/elb/client.rb +500 -0
- data/lib/aws/elb/config.rb +18 -0
- data/lib/aws/elb/errors.rb +26 -0
- data/lib/aws/elb/instance_collection.rb +173 -0
- data/lib/aws/elb/listener.rb +190 -0
- data/lib/aws/elb/listener_collection.rb +113 -0
- data/lib/aws/elb/listener_opts.rb +45 -0
- data/lib/aws/elb/load_balancer.rb +281 -0
- data/lib/aws/elb/load_balancer_collection.rb +134 -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 +29 -0
- data/lib/aws/emr.rb +86 -0
- data/lib/aws/emr/client.rb +330 -0
- data/lib/aws/emr/config.rb +18 -0
- data/lib/aws/emr/errors.rb +22 -0
- data/lib/aws/emr/instance_group.rb +138 -0
- data/lib/aws/emr/instance_group_collection.rb +82 -0
- data/lib/aws/emr/job_flow.rb +306 -0
- data/lib/aws/emr/job_flow_collection.rb +185 -0
- data/lib/aws/emr/request.rb +23 -0
- data/lib/aws/errors.rb +162 -0
- data/lib/aws/glacier.rb +80 -0
- data/lib/aws/glacier/archive.rb +56 -0
- data/lib/aws/glacier/archive_collection.rb +146 -0
- data/lib/aws/glacier/client.rb +286 -0
- data/lib/aws/glacier/config.rb +19 -0
- data/lib/aws/glacier/errors.rb +22 -0
- data/lib/aws/glacier/request.rb +34 -0
- data/lib/aws/glacier/resource.rb +30 -0
- data/lib/aws/glacier/vault.rb +145 -0
- data/lib/aws/glacier/vault_collection.rb +75 -0
- data/lib/aws/glacier/vault_notification_configuration.rb +29 -0
- data/lib/aws/iam.rb +420 -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 +1092 -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 +62 -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/import_export.rb +73 -0
- data/lib/aws/import_export/client.rb +109 -0
- data/lib/aws/import_export/config.rb +19 -0
- data/lib/aws/import_export/errors.rb +22 -0
- data/lib/aws/import_export/request.rb +23 -0
- data/lib/aws/ops_works.rb +30 -0
- data/lib/aws/ops_works/client.rb +713 -0
- data/lib/aws/ops_works/config.rb +18 -0
- data/lib/aws/ops_works/errors.rb +20 -0
- data/lib/aws/ops_works/request.rb +27 -0
- data/lib/aws/rails.rb +195 -0
- data/lib/aws/rds.rb +71 -0
- data/lib/aws/rds/client.rb +2228 -0
- data/lib/aws/rds/config.rb +18 -0
- data/lib/aws/rds/db_instance.rb +205 -0
- data/lib/aws/rds/db_instance_collection.rb +75 -0
- data/lib/aws/rds/db_snapshot.rb +163 -0
- data/lib/aws/rds/db_snapshot_collection.rb +89 -0
- data/lib/aws/rds/errors.rb +22 -0
- data/lib/aws/rds/request.rb +23 -0
- data/lib/aws/record.rb +116 -0
- data/lib/aws/record/abstract_base.rb +701 -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 +197 -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 +712 -0
- data/lib/aws/record/validator.rb +246 -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/redshift.rb +52 -0
- data/lib/aws/redshift/client.rb +1291 -0
- data/lib/aws/redshift/config.rb +18 -0
- data/lib/aws/redshift/errors.rb +22 -0
- data/lib/aws/redshift/request.rb +29 -0
- data/lib/aws/route_53.rb +87 -0
- data/lib/aws/route_53/change_batch.rb +159 -0
- data/lib/aws/route_53/change_info.rb +72 -0
- data/lib/aws/route_53/client.rb +387 -0
- data/lib/aws/route_53/config.rb +18 -0
- data/lib/aws/route_53/errors.rb +22 -0
- data/lib/aws/route_53/hosted_zone.rb +111 -0
- data/lib/aws/route_53/hosted_zone_collection.rb +100 -0
- data/lib/aws/route_53/request.rb +23 -0
- data/lib/aws/route_53/resource_record_set.rb +237 -0
- data/lib/aws/route_53/resource_record_set_collection.rb +110 -0
- data/lib/aws/s3.rb +155 -0
- data/lib/aws/s3/access_control_list.rb +257 -0
- data/lib/aws/s3/acl_object.rb +264 -0
- data/lib/aws/s3/acl_options.rb +204 -0
- data/lib/aws/s3/bucket.rb +742 -0
- data/lib/aws/s3/bucket_collection.rb +160 -0
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +458 -0
- data/lib/aws/s3/bucket_tag_collection.rb +109 -0
- data/lib/aws/s3/bucket_version_collection.rb +77 -0
- data/lib/aws/s3/cipher_io.rb +119 -0
- data/lib/aws/s3/client.rb +1700 -0
- data/lib/aws/s3/client/xml.rb +231 -0
- data/lib/aws/s3/config.rb +36 -0
- data/lib/aws/s3/cors_rule.rb +106 -0
- data/lib/aws/s3/cors_rule_collection.rb +192 -0
- data/lib/aws/s3/data_options.rb +185 -0
- data/lib/aws/s3/encryption_utils.rb +139 -0
- data/lib/aws/s3/errors.rb +94 -0
- data/lib/aws/s3/multipart_upload.rb +320 -0
- data/lib/aws/s3/multipart_upload_collection.rb +68 -0
- data/lib/aws/s3/object_collection.rb +355 -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 +148 -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 +555 -0
- data/lib/aws/s3/request.rb +201 -0
- data/lib/aws/s3/s3_object.rb +1690 -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/s3/website_configuration.rb +102 -0
- data/lib/aws/simple_db.rb +219 -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 +287 -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 +86 -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 +428 -0
- data/lib/aws/simple_email_service/client.rb +276 -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 +209 -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 +27 -0
- data/lib/aws/simple_workflow.rb +228 -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 +1204 -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 +603 -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 +33 -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 +76 -0
- data/lib/aws/sns/client.rb +266 -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 +78 -0
- data/lib/aws/sns/topic.rb +403 -0
- data/lib/aws/sns/topic_collection.rb +62 -0
- data/lib/aws/sns/topic_subscription_collection.rb +54 -0
- data/lib/aws/sqs.rb +81 -0
- data/lib/aws/sqs/client.rb +258 -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 +764 -0
- data/lib/aws/sqs/queue_collection.rb +174 -0
- data/lib/aws/sqs/received_message.rb +181 -0
- data/lib/aws/sqs/received_sns_message.rb +116 -0
- data/lib/aws/sqs/request.rb +67 -0
- data/lib/aws/storage_gateway.rb +73 -0
- data/lib/aws/storage_gateway/client.rb +472 -0
- data/lib/aws/storage_gateway/config.rb +18 -0
- data/lib/aws/storage_gateway/errors.rb +22 -0
- data/lib/aws/storage_gateway/request.rb +28 -0
- data/lib/aws/sts.rb +163 -0
- data/lib/aws/sts/client.rb +157 -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/aws/version.rb +18 -0
- data/lib/net/http/connection_pool.rb +226 -0
- data/lib/net/http/connection_pool/connection.rb +189 -0
- data/lib/net/http/connection_pool/session.rb +126 -0
- data/rails/init.rb +15 -0
- metadata +632 -0
|
@@ -0,0 +1,461 @@
|
|
|
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
|
+
require 'net/http'
|
|
16
|
+
require 'timeout'
|
|
17
|
+
require 'thread'
|
|
18
|
+
require 'time'
|
|
19
|
+
|
|
20
|
+
module AWS
|
|
21
|
+
module Core
|
|
22
|
+
module CredentialProviders
|
|
23
|
+
|
|
24
|
+
# This module is mixed into the various credential provider
|
|
25
|
+
# classes. It provides a unified interface for getting
|
|
26
|
+
# credentials and refreshing them.
|
|
27
|
+
module Provider
|
|
28
|
+
|
|
29
|
+
# The list of possible keys in the hash returned by {#credentials}.
|
|
30
|
+
KEYS = Set[:access_key_id, :secret_access_key, :session_token]
|
|
31
|
+
|
|
32
|
+
# @return [Hash] Returns a hash of credentials containg at least
|
|
33
|
+
# the +:access_key_id+ and +:secret_access_key+. The hash may
|
|
34
|
+
# also contain a +:session_token+.
|
|
35
|
+
#
|
|
36
|
+
# @raise [Errors::MissingCredentialsError] Raised when the
|
|
37
|
+
# +:access_key_id+ or the +:secret_access_key+ can not be found.
|
|
38
|
+
#
|
|
39
|
+
def credentials
|
|
40
|
+
@cached_credentials ||= begin
|
|
41
|
+
creds = get_credentials
|
|
42
|
+
unless creds[:access_key_id] and creds[:secret_access_key]
|
|
43
|
+
raise Errors::MissingCredentialsError
|
|
44
|
+
end
|
|
45
|
+
creds
|
|
46
|
+
end
|
|
47
|
+
@cached_credentials.dup
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# @return [String] Returns the AWS access key id.
|
|
51
|
+
# @raise (see #credentials)
|
|
52
|
+
def access_key_id
|
|
53
|
+
credentials[:access_key_id]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# @return [String] Returns the AWS secret access key.
|
|
57
|
+
# @raise (see #credentials)
|
|
58
|
+
def secret_access_key
|
|
59
|
+
credentials[:secret_access_key]
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# @return [String,nil] Returns the AWS session token or nil if these
|
|
63
|
+
# are not session credentials.
|
|
64
|
+
# @raise (see #credentials)
|
|
65
|
+
def session_token
|
|
66
|
+
credentials[:session_token]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Clears out cached/memoized credentials. Causes the provider
|
|
70
|
+
# to refetch credentials from the source.
|
|
71
|
+
# @return [nil]
|
|
72
|
+
def refresh
|
|
73
|
+
@cached_credentials = nil
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
protected
|
|
77
|
+
|
|
78
|
+
# This method is called on a credential provider to fetch
|
|
79
|
+
# credentials. The credentials hash returned from this
|
|
80
|
+
# method will be cashed until the client calls {#refresh}.
|
|
81
|
+
# @return [Hash]
|
|
82
|
+
def get_credentials
|
|
83
|
+
# should be defined in provider classes.
|
|
84
|
+
raise NotImplementedError
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# The default credential provider makes a best effort to
|
|
90
|
+
# locate your AWS credentials. It checks a variety of locations
|
|
91
|
+
# in the following order:
|
|
92
|
+
#
|
|
93
|
+
# * Static credentials from AWS.config (e.g. AWS.config.access_key_id,
|
|
94
|
+
# AWS.config.secret_access_key)
|
|
95
|
+
#
|
|
96
|
+
# * The environment (e.g. ENV['AWS_ACCESS_KEY_ID'] or
|
|
97
|
+
# ENV['AMAZON_ACCESS_KEY_ID'])
|
|
98
|
+
#
|
|
99
|
+
# * EC2 metadata service (checks for credentials provided by
|
|
100
|
+
# roles for instances).
|
|
101
|
+
#
|
|
102
|
+
class DefaultProvider
|
|
103
|
+
|
|
104
|
+
include Provider
|
|
105
|
+
|
|
106
|
+
# (see StaticProvider#new)
|
|
107
|
+
def initialize static_credentials = {}
|
|
108
|
+
@providers = []
|
|
109
|
+
@providers << StaticProvider.new(static_credentials)
|
|
110
|
+
@providers << ENVProvider.new('AWS')
|
|
111
|
+
@providers << ENVProvider.new('AMAZON')
|
|
112
|
+
@providers << EC2Provider.new
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# @return [Array<Provider>]
|
|
116
|
+
attr_reader :providers
|
|
117
|
+
|
|
118
|
+
def credentials
|
|
119
|
+
providers.each do |provider|
|
|
120
|
+
begin
|
|
121
|
+
return provider.credentials
|
|
122
|
+
rescue Errors::MissingCredentialsError
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
raise Errors::MissingCredentialsError
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def refresh
|
|
129
|
+
providers.each do |provider|
|
|
130
|
+
provider.refresh
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# Static credentials are provided directly to config via
|
|
136
|
+
# +:access_key_id+ and +:secret_access_key+ (and optionally
|
|
137
|
+
# +:session_token+).
|
|
138
|
+
# @private
|
|
139
|
+
class StaticProvider
|
|
140
|
+
|
|
141
|
+
include Provider
|
|
142
|
+
|
|
143
|
+
# @param [Hash] static_credentials
|
|
144
|
+
# @option static_credentials [required,String] :access_key_id
|
|
145
|
+
# @option static_credentials [required,String] :secret_access_key
|
|
146
|
+
# @option static_credentials [String] :session_token
|
|
147
|
+
def initialize static_credentials = {}
|
|
148
|
+
|
|
149
|
+
static_credentials.keys.each do |opt_name|
|
|
150
|
+
unless KEYS.include?(opt_name)
|
|
151
|
+
raise ArgumentError, "invalid option #{opt_name.inspect}"
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
@static_credentials = {}
|
|
156
|
+
KEYS.each do |opt_name|
|
|
157
|
+
if opt_value = static_credentials[opt_name]
|
|
158
|
+
@static_credentials[opt_name] = opt_value
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
# (see Provider#get_credentials)
|
|
165
|
+
def get_credentials
|
|
166
|
+
@static_credentials
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
# Fetches credentials from the environment (ENV). You construct
|
|
172
|
+
# an ENV provider with a prefix. Given the prefix "AWS"
|
|
173
|
+
# ENV will be checked for the following keys:
|
|
174
|
+
#
|
|
175
|
+
# * AWS_ACCESS_KEY_ID
|
|
176
|
+
# * AWS_SECRET_ACCESS_KEY
|
|
177
|
+
# * AWS_SESSION_TOKEN (optional)
|
|
178
|
+
#
|
|
179
|
+
class ENVProvider
|
|
180
|
+
|
|
181
|
+
include Provider
|
|
182
|
+
|
|
183
|
+
# @param [String] prefix The prefix to apply to the ENV variable.
|
|
184
|
+
def initialize prefix
|
|
185
|
+
@prefix = prefix
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# @return [String]
|
|
189
|
+
attr_reader :prefix
|
|
190
|
+
|
|
191
|
+
# (see Provider#get_credentials)
|
|
192
|
+
def get_credentials
|
|
193
|
+
credentials = {}
|
|
194
|
+
KEYS.each do |key|
|
|
195
|
+
if value = ENV["#{@prefix}_#{key.to_s.upcase}"]
|
|
196
|
+
credentials[key] = value
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
credentials
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
# This credential provider tries to get credentials from the EC2
|
|
205
|
+
# metadata service.
|
|
206
|
+
class EC2Provider
|
|
207
|
+
|
|
208
|
+
# Raised when an http response is recieved with a non 200
|
|
209
|
+
# http status code.
|
|
210
|
+
# @private
|
|
211
|
+
class FailedRequestError < StandardError; end
|
|
212
|
+
|
|
213
|
+
# These are the errors we trap when attempting to talk to the
|
|
214
|
+
# instance metadata service. Any of these imply the service
|
|
215
|
+
# is not present, no responding or some other non-recoverable
|
|
216
|
+
# error.
|
|
217
|
+
# @private
|
|
218
|
+
FAILURES = [
|
|
219
|
+
FailedRequestError,
|
|
220
|
+
Errno::EHOSTUNREACH,
|
|
221
|
+
Errno::ECONNREFUSED,
|
|
222
|
+
SocketError,
|
|
223
|
+
Timeout::Error,
|
|
224
|
+
]
|
|
225
|
+
|
|
226
|
+
include Provider
|
|
227
|
+
|
|
228
|
+
# @param [Hash] options
|
|
229
|
+
# @option options [String] :ip_address ('169.254.169.254')
|
|
230
|
+
# @option options [Integer] :port (80)
|
|
231
|
+
# @option options [Float] :http_open_timeout (1)
|
|
232
|
+
# @option options [Float] :http_read_timeout (1)
|
|
233
|
+
# @option options [Object] :http_debug_output (nil) HTTP wire
|
|
234
|
+
# traces are sent to this object. You can specify something
|
|
235
|
+
# like $stdout.
|
|
236
|
+
def initialize options = {}
|
|
237
|
+
@ip_address = options[:ip_address] || '169.254.169.254'
|
|
238
|
+
@port = options[:port] || 80
|
|
239
|
+
@http_open_timeout = options[:http_open_timeout] || 1
|
|
240
|
+
@http_read_timeout = options[:http_read_timeout] || 1
|
|
241
|
+
@http_debug_output = options[:http_debug_output]
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
# @return [String] Defaults to '169.254.169.254'.
|
|
245
|
+
attr_accessor :ip_address
|
|
246
|
+
|
|
247
|
+
# @return [Integer] Defaults to port 80.
|
|
248
|
+
attr_accessor :port
|
|
249
|
+
|
|
250
|
+
# @return [Float]
|
|
251
|
+
attr_accessor :http_open_timeout
|
|
252
|
+
|
|
253
|
+
# @return [Float]
|
|
254
|
+
attr_accessor :http_read_timeout
|
|
255
|
+
|
|
256
|
+
# @return [Object,nil]
|
|
257
|
+
attr_accessor :http_debug_output
|
|
258
|
+
|
|
259
|
+
# @return [Time,nil]
|
|
260
|
+
attr_accessor :credentials_expiration
|
|
261
|
+
|
|
262
|
+
# Refresh provider if existing credentials will be expired in 5 min
|
|
263
|
+
# @return [Hash] Returns a hash of credentials containg at least
|
|
264
|
+
# the +:access_key_id+ and +:secret_access_key+. The hash may
|
|
265
|
+
# also contain a +:session_token+.
|
|
266
|
+
#
|
|
267
|
+
# @raise [Errors::MissingCredentialsError] Raised when the
|
|
268
|
+
# +:access_key_id+ or the +:secret_access_key+ can not be found.
|
|
269
|
+
#
|
|
270
|
+
def credentials
|
|
271
|
+
if @credentials_expiration && @credentials_expiration.utc <= Time.now.utc - 5 * 60
|
|
272
|
+
refresh
|
|
273
|
+
end
|
|
274
|
+
super
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
protected
|
|
278
|
+
|
|
279
|
+
# (see Provider#get_credentials)
|
|
280
|
+
def get_credentials
|
|
281
|
+
begin
|
|
282
|
+
|
|
283
|
+
http = Net::HTTP.new(ip_address, port)
|
|
284
|
+
http.open_timeout = http_open_timeout
|
|
285
|
+
http.read_timeout = http_read_timeout
|
|
286
|
+
http.set_debug_output(http_debug_output) if
|
|
287
|
+
http_debug_output
|
|
288
|
+
http.start
|
|
289
|
+
|
|
290
|
+
# get the first/default instance profile name
|
|
291
|
+
path = '/latest/meta-data/iam/security-credentials/'
|
|
292
|
+
profile_name = get(http, path).lines.map(&:strip).first
|
|
293
|
+
|
|
294
|
+
# get the session details from the instance profile name
|
|
295
|
+
path << profile_name
|
|
296
|
+
session = JSON.parse(get(http, path))
|
|
297
|
+
|
|
298
|
+
http.finish
|
|
299
|
+
|
|
300
|
+
credentials = {}
|
|
301
|
+
credentials[:access_key_id] = session['AccessKeyId']
|
|
302
|
+
credentials[:secret_access_key] = session['SecretAccessKey']
|
|
303
|
+
credentials[:session_token] = session['Token']
|
|
304
|
+
@credentials_expiration = Time.parse(session['Expiration'])
|
|
305
|
+
|
|
306
|
+
credentials
|
|
307
|
+
|
|
308
|
+
rescue *FAILURES => e
|
|
309
|
+
{}
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
# Makes an HTTP Get request with the given path. If a non-200
|
|
314
|
+
# response is received, then a FailedRequestError is raised.
|
|
315
|
+
# a {FailedRequestError} is raised.
|
|
316
|
+
# @param [Net::HTTPSession] session
|
|
317
|
+
# @param [String] path
|
|
318
|
+
# @raise [FailedRequestError]
|
|
319
|
+
# @return [String] Returns the http response body.
|
|
320
|
+
def get session, path
|
|
321
|
+
response = session.request(Net::HTTP::Get.new(path))
|
|
322
|
+
if response.code.to_i == 200
|
|
323
|
+
response.body
|
|
324
|
+
else
|
|
325
|
+
raise FailedRequestError
|
|
326
|
+
end
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
# = Session Credential Provider
|
|
332
|
+
#
|
|
333
|
+
# The session provider consumes long term credentials (+:access_key_id+
|
|
334
|
+
# and +:secret_access_key+) and requests a session from STS.
|
|
335
|
+
# It then returns the short term credential set from STS.
|
|
336
|
+
#
|
|
337
|
+
# Calling {#refresh} causes the session provider to request a new
|
|
338
|
+
# set of credentials.
|
|
339
|
+
#
|
|
340
|
+
# This session provider is currently only used for DynamoDB which
|
|
341
|
+
# requires session credentials.
|
|
342
|
+
class SessionProvider
|
|
343
|
+
|
|
344
|
+
include Provider
|
|
345
|
+
|
|
346
|
+
@create_mutex = Mutex.new
|
|
347
|
+
|
|
348
|
+
class << self
|
|
349
|
+
|
|
350
|
+
# @param [Hash] long_term_credentials A hash of credentials with
|
|
351
|
+
# +:access_key_id+ and +:secret_access_key+ (but not
|
|
352
|
+
# +:session_token+).
|
|
353
|
+
def for long_term_credentials
|
|
354
|
+
@create_mutex.synchronize do
|
|
355
|
+
@session_providers ||= {}
|
|
356
|
+
@session_providers[long_term_credentials[:access_key_id]] =
|
|
357
|
+
self.new(long_term_credentials)
|
|
358
|
+
end
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
# Creation of SessionProviders *must* happen behind the mutex and
|
|
362
|
+
# we want to reuse session providers for the same access key id.
|
|
363
|
+
protected :new
|
|
364
|
+
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
# @param [Hash] long_term_credentials A hash of credentials with
|
|
368
|
+
# +:access_key_id+ and +:secret_access_key+ (but not
|
|
369
|
+
# +:session_token+).
|
|
370
|
+
def initialize long_term_credentials
|
|
371
|
+
@static = StaticProvider.new(long_term_credentials)
|
|
372
|
+
if @static.session_token
|
|
373
|
+
raise ArgumentError, 'invalid option :session_token'
|
|
374
|
+
end
|
|
375
|
+
@session_mutex = Mutex.new
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
# Aliasing the refresh method so we can call it from the refresh
|
|
379
|
+
# method defined in this class.
|
|
380
|
+
alias_method :orig_refresh, :refresh
|
|
381
|
+
protected :orig_refresh
|
|
382
|
+
|
|
383
|
+
# (see Provider#refresh)
|
|
384
|
+
def refresh
|
|
385
|
+
refresh_session
|
|
386
|
+
orig_refresh
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
protected
|
|
390
|
+
|
|
391
|
+
# (see Provider#get_credentials)
|
|
392
|
+
def get_credentials
|
|
393
|
+
session = cached_session
|
|
394
|
+
if session.nil?
|
|
395
|
+
refresh_session
|
|
396
|
+
session = cached_session
|
|
397
|
+
end
|
|
398
|
+
session.credentials
|
|
399
|
+
end
|
|
400
|
+
|
|
401
|
+
# Replaces the cached STS session with a new one.
|
|
402
|
+
# @return [nil]
|
|
403
|
+
def refresh_session
|
|
404
|
+
sts = AWS::STS.new(@static.credentials.merge(:use_ssl => true))
|
|
405
|
+
@session_mutex.synchronize do
|
|
406
|
+
@session = sts.new_session
|
|
407
|
+
end
|
|
408
|
+
nil
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
# @return [nil,STS::Session] Returns nil if a session has not
|
|
412
|
+
# already been started.
|
|
413
|
+
def cached_session
|
|
414
|
+
local_session = nil
|
|
415
|
+
@session_mutex.synchronize do
|
|
416
|
+
local_session = @session
|
|
417
|
+
end
|
|
418
|
+
local_session
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
# Returns a set of fake credentials, should only be used for testing.
|
|
424
|
+
class FakeProvider < StaticProvider
|
|
425
|
+
|
|
426
|
+
# @param [Hash] options
|
|
427
|
+
# @option options [Boolean] :with_session_token (false) When +true+ a
|
|
428
|
+
# fake session token will also be provided.
|
|
429
|
+
def initialize options = {}
|
|
430
|
+
options[:access_key_id] ||= fake_access_key_id
|
|
431
|
+
options[:secret_access_key] ||= fake_secret_access_key
|
|
432
|
+
if options.delete(:with_session_token)
|
|
433
|
+
options[:session_token] ||= fake_session_token
|
|
434
|
+
end
|
|
435
|
+
super
|
|
436
|
+
end
|
|
437
|
+
|
|
438
|
+
protected
|
|
439
|
+
|
|
440
|
+
def fake_access_key_id
|
|
441
|
+
"AKIA" + random_chars(16).upcase
|
|
442
|
+
end
|
|
443
|
+
|
|
444
|
+
def fake_secret_access_key
|
|
445
|
+
random_chars(40)
|
|
446
|
+
end
|
|
447
|
+
|
|
448
|
+
def fake_session_token
|
|
449
|
+
random_chars(260)
|
|
450
|
+
end
|
|
451
|
+
|
|
452
|
+
def random_chars count
|
|
453
|
+
chars = ('0'..'9').to_a + ('a'..'z').to_a + ('A'..'Z').to_a
|
|
454
|
+
(1..count).map{ chars[rand(chars.size)] }.join
|
|
455
|
+
end
|
|
456
|
+
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
end
|
|
460
|
+
end
|
|
461
|
+
end
|