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,110 @@
|
|
|
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 'time'
|
|
15
|
+
|
|
16
|
+
module AWS
|
|
17
|
+
class Route53
|
|
18
|
+
|
|
19
|
+
# = Create new resource record set
|
|
20
|
+
#
|
|
21
|
+
# rrsets = AWS::Route53::HostedZone.new(hosted_zone_id).rrsets
|
|
22
|
+
# rrset = rrsets.create('foo.example.com.', 'A', :ttl => 300, :resource_records => [{:value => '127.0.0.1'}])
|
|
23
|
+
#
|
|
24
|
+
# = Find existing resource record set
|
|
25
|
+
#
|
|
26
|
+
# rrsets = AWS::Route53::HostedZone.new(hosted_zone_id).rrsets
|
|
27
|
+
# rrset = rrsets['foo.example.com.', 'A']
|
|
28
|
+
#
|
|
29
|
+
class ResourceRecordSetCollection
|
|
30
|
+
|
|
31
|
+
include Core::Collection::WithLimitAndNextToken
|
|
32
|
+
|
|
33
|
+
# @private
|
|
34
|
+
def initialize hosted_zone_id, options = {}
|
|
35
|
+
@hosted_zone_id = hosted_zone_id
|
|
36
|
+
@filters = options[:filters] || {}
|
|
37
|
+
super
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# @return [String]
|
|
41
|
+
attr_reader :hosted_zone_id
|
|
42
|
+
|
|
43
|
+
# Find resource record set by its name, type and identifier.
|
|
44
|
+
# @param [String] name
|
|
45
|
+
# @param [String] type
|
|
46
|
+
# @param [String] set_identifier
|
|
47
|
+
# @return [ResourceRecordSet]
|
|
48
|
+
def [] name, type, set_identifier = nil
|
|
49
|
+
ResourceRecordSet.new(name, type, :set_identifier => set_identifier, :hosted_zone_id => hosted_zone_id, :config => config)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Create new resource record set.
|
|
53
|
+
# @param [String] name
|
|
54
|
+
# @param [String] type
|
|
55
|
+
# @param [Hash] options
|
|
56
|
+
# @return [ResourceRecordSet]
|
|
57
|
+
def create name, type, options = {}
|
|
58
|
+
batch = ChangeBatch.new(hosted_zone_id, :comment => options[:comment], :config => config)
|
|
59
|
+
batch << CreateRequest.new(name, type, options)
|
|
60
|
+
|
|
61
|
+
change_info = batch.call()
|
|
62
|
+
if change_info
|
|
63
|
+
ResourceRecordSet.new(name,
|
|
64
|
+
type,
|
|
65
|
+
:set_identifier => options[:set_identifier],
|
|
66
|
+
:change_info => change_info,
|
|
67
|
+
:hosted_zone_id => hosted_zone_id,
|
|
68
|
+
:config => config)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
private
|
|
73
|
+
|
|
74
|
+
def _each_item next_token, limit, options = {}, &block
|
|
75
|
+
|
|
76
|
+
options = @filters.merge(options)
|
|
77
|
+
|
|
78
|
+
options[:start_record_name] = next_token[:next_record_name] if next_token and next_token[:next_record_name]
|
|
79
|
+
options[:start_record_type] = next_token[:next_record_type] if next_token and next_token[:next_record_type]
|
|
80
|
+
options[:start_record_identifier] = next_token[:next_record_identifier] if next_token and next_token[:next_record_identifier]
|
|
81
|
+
options[:maxitems] = limit if limit
|
|
82
|
+
|
|
83
|
+
options[:hosted_zone_id] = hosted_zone_id
|
|
84
|
+
|
|
85
|
+
resp = client.list_resource_record_sets(options)
|
|
86
|
+
resp.data[:resource_record_sets].each do |details|
|
|
87
|
+
rrset = ResourceRecordSet.new_from(
|
|
88
|
+
:list_resource_record_sets,
|
|
89
|
+
details,
|
|
90
|
+
details[:name],
|
|
91
|
+
details[:type],
|
|
92
|
+
:set_identifier => details[:set_identifier],
|
|
93
|
+
:hosted_zone_id => hosted_zone_id, :config => config)
|
|
94
|
+
|
|
95
|
+
yield(rrset)
|
|
96
|
+
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
if resp.data[:is_truncated]
|
|
100
|
+
{
|
|
101
|
+
:next_record_name => resp.data[:next_record_name],
|
|
102
|
+
:next_record_type => resp.data[:next_record_type],
|
|
103
|
+
:next_record_identifier => resp.data[:next_record_identifier],
|
|
104
|
+
}
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
data/lib/aws/s3.rb
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
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 'aws/core'
|
|
15
|
+
require 'aws/s3/config'
|
|
16
|
+
|
|
17
|
+
module AWS
|
|
18
|
+
|
|
19
|
+
# Provides an expressive, object-oriented interface to Amazon S3.
|
|
20
|
+
#
|
|
21
|
+
# To use Amazon S3 you must first
|
|
22
|
+
# {sign up here}[http://aws.amazon.com/s3/].
|
|
23
|
+
#
|
|
24
|
+
# For more information about Amazon S3, see:
|
|
25
|
+
#
|
|
26
|
+
# * {Amazon S3}[http://aws.amazon.com/s3/]
|
|
27
|
+
# * {Amazon S3 Documentation}[http://aws.amazon.com/documentation/s3/]
|
|
28
|
+
#
|
|
29
|
+
# = Credentials
|
|
30
|
+
#
|
|
31
|
+
# You can setup default credentials for all AWS services via
|
|
32
|
+
# AWS.config:
|
|
33
|
+
#
|
|
34
|
+
# AWS.config(
|
|
35
|
+
# :access_key_id => 'YOUR_ACCESS_KEY_ID',
|
|
36
|
+
# :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
|
|
37
|
+
#
|
|
38
|
+
# Or you can set them directly on the S3 interface:
|
|
39
|
+
#
|
|
40
|
+
# s3 = AWS::S3.new(
|
|
41
|
+
# :access_key_id => 'YOUR_ACCESS_KEY_ID',
|
|
42
|
+
# :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
|
|
43
|
+
#
|
|
44
|
+
# = Buckets
|
|
45
|
+
#
|
|
46
|
+
# Before you can upload files to S3, you need to create a bucket.
|
|
47
|
+
#
|
|
48
|
+
# s3 = AWS::S3.new
|
|
49
|
+
# bucket = s3.buckets.create('my-bucket')
|
|
50
|
+
#
|
|
51
|
+
# If a bucket already exists, you can get a reference to the bucket.
|
|
52
|
+
#
|
|
53
|
+
# bucket = s3.buckets['my-bucket'] # no request made
|
|
54
|
+
#
|
|
55
|
+
# You can also enumerate all buckets in your account.
|
|
56
|
+
#
|
|
57
|
+
# s3.buckets.each do |bucket|
|
|
58
|
+
# puts bucket.name
|
|
59
|
+
# end
|
|
60
|
+
#
|
|
61
|
+
# See {BucketCollection} and {Bucket} for more information on working
|
|
62
|
+
# with buckets.
|
|
63
|
+
#
|
|
64
|
+
# = Objects
|
|
65
|
+
#
|
|
66
|
+
# Buckets contain objects. Each object in a bucket has a unique key.
|
|
67
|
+
#
|
|
68
|
+
# == Getting an Object
|
|
69
|
+
#
|
|
70
|
+
# If the object already exists, you can get a reference to the object.
|
|
71
|
+
#
|
|
72
|
+
# # makes no request, returns an AWS::S3::S3Object
|
|
73
|
+
# obj = bucket.objects['key']
|
|
74
|
+
#
|
|
75
|
+
# == Reading and Writing an Object
|
|
76
|
+
#
|
|
77
|
+
# The example above returns an {S3Object}. You call {S3Object#write} and
|
|
78
|
+
# {S3Object#read} to upload to and download from S3 respectively.
|
|
79
|
+
#
|
|
80
|
+
# # streaming upload a file to S3
|
|
81
|
+
# obj.write(Pathname.new('/path/to/file.txt'))
|
|
82
|
+
#
|
|
83
|
+
# # streaming download from S3 to a file on disk
|
|
84
|
+
# File.open('file.txt', 'w') do |file|
|
|
85
|
+
# obj.read do |chunk|
|
|
86
|
+
# file.write(chunk)
|
|
87
|
+
# end
|
|
88
|
+
# end
|
|
89
|
+
#
|
|
90
|
+
# == Enumerating Objects
|
|
91
|
+
#
|
|
92
|
+
# You can enumerate objects in your buckets.
|
|
93
|
+
#
|
|
94
|
+
# # enumerate ALL objects in the bucket (even if the bucket contains
|
|
95
|
+
# # more than 1k objects)
|
|
96
|
+
# bucket.objects.each do |obj|
|
|
97
|
+
# puts obj.key
|
|
98
|
+
# end
|
|
99
|
+
#
|
|
100
|
+
# # enumerate at most 20 objects with the given prefix
|
|
101
|
+
# bucket.objects.with_prefix('photos/').each(:limit => 20) do |photo|
|
|
102
|
+
# puts photo.key
|
|
103
|
+
# end
|
|
104
|
+
#
|
|
105
|
+
# See {ObjectCollection} and {S3Object} for more information on working
|
|
106
|
+
# with objects.
|
|
107
|
+
#
|
|
108
|
+
class S3
|
|
109
|
+
|
|
110
|
+
AWS.register_autoloads(self) do
|
|
111
|
+
autoload :AccessControlList, 'access_control_list'
|
|
112
|
+
autoload :ACLObject, 'acl_object'
|
|
113
|
+
autoload :ACLOptions, 'acl_options'
|
|
114
|
+
autoload :Bucket, 'bucket'
|
|
115
|
+
autoload :BucketCollection, 'bucket_collection'
|
|
116
|
+
autoload :BucketTagCollection, 'bucket_tag_collection'
|
|
117
|
+
autoload :BucketLifecycleConfiguration, 'bucket_lifecycle_configuration'
|
|
118
|
+
autoload :BucketVersionCollection, 'bucket_version_collection'
|
|
119
|
+
autoload :Client, 'client'
|
|
120
|
+
autoload :CORSRule, 'cors_rule'
|
|
121
|
+
autoload :CORSRuleCollection, 'cors_rule_collection'
|
|
122
|
+
autoload :DataOptions, 'data_options'
|
|
123
|
+
autoload :EncryptionUtils, 'encryption_utils'
|
|
124
|
+
autoload :CipherIO, 'cipher_io'
|
|
125
|
+
autoload :Errors, 'errors'
|
|
126
|
+
autoload :MultipartUpload, 'multipart_upload'
|
|
127
|
+
autoload :MultipartUploadCollection, 'multipart_upload_collection'
|
|
128
|
+
autoload :ObjectCollection, 'object_collection'
|
|
129
|
+
autoload :ObjectMetadata, 'object_metadata'
|
|
130
|
+
autoload :ObjectUploadCollection, 'object_upload_collection'
|
|
131
|
+
autoload :ObjectVersion, 'object_version'
|
|
132
|
+
autoload :ObjectVersionCollection, 'object_version_collection'
|
|
133
|
+
autoload :PaginatedCollection, 'paginated_collection'
|
|
134
|
+
autoload :Policy, 'policy'
|
|
135
|
+
autoload :PrefixAndDelimiterCollection, 'prefix_and_delimiter_collection'
|
|
136
|
+
autoload :PrefixedCollection, 'prefixed_collection'
|
|
137
|
+
autoload :PresignedPost, 'presigned_post'
|
|
138
|
+
autoload :Request, 'request'
|
|
139
|
+
autoload :S3Object, 's3_object'
|
|
140
|
+
autoload :Tree, 'tree'
|
|
141
|
+
autoload :UploadedPart, 'uploaded_part'
|
|
142
|
+
autoload :UploadedPartCollection, 'uploaded_part_collection'
|
|
143
|
+
autoload :WebsiteConfiguration, 'website_configuration'
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
include Core::ServiceInterface
|
|
147
|
+
|
|
148
|
+
# @return [BucketCollection] Returns a collection that represents all
|
|
149
|
+
# buckets in the account.
|
|
150
|
+
def buckets
|
|
151
|
+
BucketCollection.new(:config => @config)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
end
|
|
155
|
+
end
|
|
@@ -0,0 +1,257 @@
|
|
|
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
|
+
module AWS
|
|
15
|
+
class S3
|
|
16
|
+
|
|
17
|
+
# Represents an access control list for S3 objects and buckets. For example:
|
|
18
|
+
#
|
|
19
|
+
# acl = AccessControlList.new
|
|
20
|
+
# acl.grant(:full_control).
|
|
21
|
+
# to(:canonical_user_id => "8a6925ce4adf588a4f21c32aa379004fef")
|
|
22
|
+
# acl.to_xml # => '<AccessControlPolicy>...'
|
|
23
|
+
#
|
|
24
|
+
# You can also construct an AccessControlList from a hash:
|
|
25
|
+
#
|
|
26
|
+
# AccessControlList.new(
|
|
27
|
+
# :owner => { :id => "8a6925ce4adf588a4f21c32aa379004fef" },
|
|
28
|
+
# :grants => [{ :grantee => {
|
|
29
|
+
# :canonical_user_id => "8a6925ce4adf588a4f21c32aa379004fef",
|
|
30
|
+
# },
|
|
31
|
+
# :permission => :full_control }]
|
|
32
|
+
# )
|
|
33
|
+
#
|
|
34
|
+
# @see ACLObject
|
|
35
|
+
#
|
|
36
|
+
# @attr [AccessControlList::Owner] owner The owner of the access
|
|
37
|
+
# control list. You can set this as a hash, for example:
|
|
38
|
+
# acl.owner = { :id => '8a6925ce4adf588a4f21c32aa379004fef' }
|
|
39
|
+
# This attribute is required when setting an ACL.
|
|
40
|
+
#
|
|
41
|
+
# @attr [list of AccessControlList::Grant] grants The list of
|
|
42
|
+
# grants. You can set this as a list of hashes, for example:
|
|
43
|
+
# acl.grants = [{ :grantee => { :canonical_user_id =>
|
|
44
|
+
# "8a6925ce4adf588a4f21c32aa379004fef" },
|
|
45
|
+
# :permission => :full_control }]
|
|
46
|
+
class AccessControlList
|
|
47
|
+
|
|
48
|
+
# Represents an ACL owner. In the default ACL, this is the
|
|
49
|
+
# bucket owner.
|
|
50
|
+
#
|
|
51
|
+
# @attr [String] id The canonical user ID of the ACL owner.
|
|
52
|
+
# This attribute is required when setting an ACL.
|
|
53
|
+
#
|
|
54
|
+
# @attr [String] display_name The display name of the ACL
|
|
55
|
+
# owner. This value is ignored when setting an ACL.
|
|
56
|
+
class Owner
|
|
57
|
+
include ACLObject
|
|
58
|
+
|
|
59
|
+
string_attr "ID", :required => true
|
|
60
|
+
string_attr "DisplayName"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Represents a user who is granted some kind of permission
|
|
64
|
+
# through a Grant. There are three ways to specify a grantee:
|
|
65
|
+
#
|
|
66
|
+
# * You can specify the canonical user ID, for example. When
|
|
67
|
+
# you read an ACL from S3, all grantees will be identified
|
|
68
|
+
# this way, and the display_name attribute will also be provided.
|
|
69
|
+
#
|
|
70
|
+
# Grantee.new(:canonical_user_id => "8a6925ce4adf588a4f21c32aa379004fef")
|
|
71
|
+
#
|
|
72
|
+
# * You can specify the e-mail address of an AWS customer, for example:
|
|
73
|
+
# Grantee.new(:amazon_customer_email => 'foo@example.com')
|
|
74
|
+
#
|
|
75
|
+
# * You can specify a group URI, for example:
|
|
76
|
+
# Grantee.new(:group_uri => 'http://acs.amazonaws.com/groups/global/AllUsers')
|
|
77
|
+
# For more details about group URIs, see:
|
|
78
|
+
# http://docs.amazonwebservices.com/AmazonS3/latest/dev/ACLOverview.html
|
|
79
|
+
#
|
|
80
|
+
# When constructing a grantee, you must provide a value for
|
|
81
|
+
# exactly one of the following attributes:
|
|
82
|
+
#
|
|
83
|
+
# * +amazon_customer_email+
|
|
84
|
+
# * +canonical_user_id+
|
|
85
|
+
# * +group_uri+
|
|
86
|
+
#
|
|
87
|
+
# @attr [String] amazon_customer_email The e-mail address of
|
|
88
|
+
# an AWS customer.
|
|
89
|
+
#
|
|
90
|
+
# @attr [String] canonical_user_id The canonical user ID of an
|
|
91
|
+
# AWS customer.
|
|
92
|
+
#
|
|
93
|
+
# @attr [String] group_uri A URI that identifies a particular
|
|
94
|
+
# group of users.
|
|
95
|
+
#
|
|
96
|
+
# @attr [String] display_name The display name associated with
|
|
97
|
+
# the grantee. This is provided by S3 when reading an ACL.
|
|
98
|
+
class Grantee
|
|
99
|
+
include ACLObject
|
|
100
|
+
|
|
101
|
+
SIGNAL_ATTRIBUTES = [
|
|
102
|
+
:amazon_customer_email,
|
|
103
|
+
:canonical_user_id,
|
|
104
|
+
:group_uri,
|
|
105
|
+
:uri,
|
|
106
|
+
]
|
|
107
|
+
|
|
108
|
+
string_attr "EmailAddress", :method_name => "amazon_customer_email"
|
|
109
|
+
string_attr "ID", :method_name => "canonical_user_id"
|
|
110
|
+
string_attr "URI", :method_name => "group_uri"
|
|
111
|
+
string_attr "URI", :method_name => "uri"
|
|
112
|
+
string_attr "DisplayName"
|
|
113
|
+
|
|
114
|
+
# (see ACLObject#validate!)
|
|
115
|
+
def validate!
|
|
116
|
+
attr = signal_attribute
|
|
117
|
+
raise "missing amazon_customer_email, canonical_user_id, "+
|
|
118
|
+
"or group_uri" unless attr
|
|
119
|
+
raise "display_name is invalid with #{attr}" if
|
|
120
|
+
attr != :canonical_user_id and display_name
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# @private
|
|
124
|
+
def stag
|
|
125
|
+
if attr = signal_attribute
|
|
126
|
+
super + " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
|
|
127
|
+
" xsi:type=\"#{type_for_attr(attr)}\""
|
|
128
|
+
else
|
|
129
|
+
super
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# @private
|
|
134
|
+
def signal_attribute
|
|
135
|
+
SIGNAL_ATTRIBUTES.find { |att| send(att) }
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# @private
|
|
139
|
+
def type_for_attr(attr)
|
|
140
|
+
{
|
|
141
|
+
:amazon_customer_email => "AmazonCustomerByEmail",
|
|
142
|
+
:canonical_user_id => "CanonicalUser",
|
|
143
|
+
:group_uri => "Group",
|
|
144
|
+
:uri => "Group",
|
|
145
|
+
}[attr]
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# Represents the permission being granted in a Grant object.
|
|
151
|
+
# Typically you will not need to construct an instance of this
|
|
152
|
+
# class directly.
|
|
153
|
+
# @see Grant#permission
|
|
154
|
+
class Permission
|
|
155
|
+
include ACLObject
|
|
156
|
+
|
|
157
|
+
# The permission expressed as a symbol following Ruby
|
|
158
|
+
# conventions. For example, S3's FULL_CONTROL permission
|
|
159
|
+
# will be returned as +:full_control+.
|
|
160
|
+
attr_reader :name
|
|
161
|
+
|
|
162
|
+
# @private
|
|
163
|
+
def initialize(name)
|
|
164
|
+
raise "expected string or symbol" unless
|
|
165
|
+
name.respond_to?(:to_str) or name.respond_to?(:to_sym)
|
|
166
|
+
@name = name.to_sym
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
def body_xml
|
|
170
|
+
name.to_s.upcase
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
# Represents a single grant in an ACL. Both +grantee+ and
|
|
176
|
+
# +permission+ are required for each grant when setting an
|
|
177
|
+
# ACL.
|
|
178
|
+
#
|
|
179
|
+
# See
|
|
180
|
+
# http://docs.amazonwebservices.com/AmazonS3/latest/dev/ACLOverview.html
|
|
181
|
+
# for more information on how grantees and permissions are
|
|
182
|
+
# interpreted by S3.
|
|
183
|
+
#
|
|
184
|
+
# @attr [Grantee] grantee The user or users who are granted
|
|
185
|
+
# access according to this grant. You can specify this as a
|
|
186
|
+
# hash:
|
|
187
|
+
# grant.grantee = { :amazon_customer_email => "foo@example.com" }
|
|
188
|
+
#
|
|
189
|
+
# @attr [Permission or Symbol] permission The type of
|
|
190
|
+
# permission that is granted by this grant. Valid values are:
|
|
191
|
+
# * +:read+
|
|
192
|
+
# * +:write+
|
|
193
|
+
# * +:read_acp+
|
|
194
|
+
# * +:write_acp+
|
|
195
|
+
# * +:full_control+
|
|
196
|
+
class Grant
|
|
197
|
+
|
|
198
|
+
include ACLObject
|
|
199
|
+
|
|
200
|
+
object_attr Grantee, :required => true
|
|
201
|
+
object_attr Permission, :required => true, :cast => Symbol
|
|
202
|
+
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
include ACLObject
|
|
206
|
+
|
|
207
|
+
# @private
|
|
208
|
+
def stag
|
|
209
|
+
super()+" xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\""
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
# @private
|
|
213
|
+
def element_name
|
|
214
|
+
"AccessControlPolicy"
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
class GrantBuilder
|
|
218
|
+
|
|
219
|
+
# @private
|
|
220
|
+
def initialize(acl, grant)
|
|
221
|
+
@acl = acl
|
|
222
|
+
@grant = grant
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
# Specifies the grantee.
|
|
226
|
+
#
|
|
227
|
+
# @param [Grantee or Hash] grantee A Grantee object or hash;
|
|
228
|
+
# for example:
|
|
229
|
+
# acl.grant(:full_control).to(:amazon_customer_email => "foo@example.com")
|
|
230
|
+
def to(grantee)
|
|
231
|
+
@grant.grantee = grantee
|
|
232
|
+
@acl.grants << @grant
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
# Convenience method for constructing a new grant and adding
|
|
238
|
+
# it to the ACL. Example usage:
|
|
239
|
+
#
|
|
240
|
+
# acl.grants.size # => 0
|
|
241
|
+
# acl.grant(:full_control).
|
|
242
|
+
# to(:canonical_user_id => "8a6925ce4adf588a4f21c32aa379004fef")
|
|
243
|
+
# acl.grants.size # => 1
|
|
244
|
+
#
|
|
245
|
+
# @return [GrantBuilder]
|
|
246
|
+
def grant(permission)
|
|
247
|
+
GrantBuilder.new(self, Grant.new(:permission => permission))
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
object_attr Owner, :required => true
|
|
251
|
+
object_list_attr("AccessControlList", Grant,
|
|
252
|
+
:required => true, :method_name => :grants)
|
|
253
|
+
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
end
|
|
257
|
+
end
|