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,484 @@
|
|
|
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 EC2
|
|
16
|
+
|
|
17
|
+
# Represents a security group in EC2.
|
|
18
|
+
#
|
|
19
|
+
# @attr_reader [String] description The short informal description
|
|
20
|
+
# given when the group was created.
|
|
21
|
+
#
|
|
22
|
+
# @attr_reader [String] name The name of the security group.
|
|
23
|
+
#
|
|
24
|
+
# @attr_reader [String] owner_id The security group owner's id.
|
|
25
|
+
#
|
|
26
|
+
# @attr_reader [String,nil] vpc_id If this is a VPC security group,
|
|
27
|
+
# vpc_id is the ID of the VPC this group was created in.
|
|
28
|
+
# Returns false otherwise.
|
|
29
|
+
#
|
|
30
|
+
class SecurityGroup < Resource
|
|
31
|
+
|
|
32
|
+
AWS.register_autoloads(self, 'aws/ec2/security_group') do
|
|
33
|
+
autoload :IpPermission, 'ip_permission'
|
|
34
|
+
autoload :IpPermissionCollection, 'ip_permission_collection'
|
|
35
|
+
autoload :IngressIpPermissionCollection, 'ip_permission_collection'
|
|
36
|
+
autoload :EgressIpPermissionCollection, 'ip_permission_collection'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
include TaggedItem
|
|
40
|
+
|
|
41
|
+
def initialize security_group_id, options = {}
|
|
42
|
+
@security_group_id = security_group_id
|
|
43
|
+
super
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# @return [String]
|
|
47
|
+
attr_reader :security_group_id
|
|
48
|
+
|
|
49
|
+
alias_method :group_id, :security_group_id
|
|
50
|
+
|
|
51
|
+
alias_method :id, :security_group_id
|
|
52
|
+
|
|
53
|
+
attribute :name, :from => :group_name, :static => true
|
|
54
|
+
|
|
55
|
+
attribute :owner_id, :static => true
|
|
56
|
+
|
|
57
|
+
attribute :vpc_id, :static => true
|
|
58
|
+
|
|
59
|
+
attribute :description, :from => :group_description, :static => true
|
|
60
|
+
|
|
61
|
+
attribute :ip_permissions_list, :from => :ip_permissions
|
|
62
|
+
|
|
63
|
+
attribute :ip_permissions_list_egress, :from => :ip_permissions_egress
|
|
64
|
+
|
|
65
|
+
populates_from(:describe_security_groups) do |resp|
|
|
66
|
+
resp[:security_group_index][id]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# @return [InstanceCollection] Returns an instance collection that will
|
|
70
|
+
# only enumerate instances in this security group.
|
|
71
|
+
def instances
|
|
72
|
+
instances = InstanceCollection.new(:config => config)
|
|
73
|
+
if vpc?
|
|
74
|
+
instances.filter('instance.group-id', [group_id])
|
|
75
|
+
else
|
|
76
|
+
instances.filter('group-id', [group_id])
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# @return [Boolean] True if the security group exists.
|
|
81
|
+
def exists?
|
|
82
|
+
client.describe_security_groups(:filters => [
|
|
83
|
+
{ :name => "group-id", :values => [id] }
|
|
84
|
+
]).security_group_index.key?(id)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Returns true if this security group is a VPC security group and
|
|
88
|
+
# not an EC2 security group. VPC security groups belong to a VPC
|
|
89
|
+
# subnet and can have egress rules.
|
|
90
|
+
# @return [Boolean] Returns true if this is a VPC security group and
|
|
91
|
+
# false if this is an EC2 security group.
|
|
92
|
+
def vpc?
|
|
93
|
+
vpc_id ? true : false
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# @return [VPC,nil] Returns the VPC this security group belongs to,
|
|
97
|
+
# or nil if this is not a VPC security group.
|
|
98
|
+
def vpc
|
|
99
|
+
if vpc_id
|
|
100
|
+
VPC.new(vpc_id, :config => config)
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# @return [SecurityGroup::IngressIpPermissionCollection] Returns a
|
|
105
|
+
# collection of {IpPermission} objects that represents all of
|
|
106
|
+
# the (ingress) permissions this security group has
|
|
107
|
+
# authorizations for.
|
|
108
|
+
def ingress_ip_permissions
|
|
109
|
+
IngressIpPermissionCollection.new(self, :config => config)
|
|
110
|
+
end
|
|
111
|
+
alias_method :ip_permissions, :ingress_ip_permissions
|
|
112
|
+
|
|
113
|
+
# @return [SecurityGroup::EgressIpPermissionCollection] Returns a
|
|
114
|
+
# collection of {IpPermission} objects that represents all of
|
|
115
|
+
# the egress permissions this security group has authorizations for.
|
|
116
|
+
def egress_ip_permissions
|
|
117
|
+
EgressIpPermissionCollection.new(self, :config => config)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# Adds ingress rules for ICMP pings. Defaults to 0.0.0.0/0 for
|
|
121
|
+
# the list of allowed IP ranges the ping can come from.
|
|
122
|
+
#
|
|
123
|
+
# security_group.allow_ping # anyone can ping servers in this group
|
|
124
|
+
#
|
|
125
|
+
# # only allow ping from a particular address
|
|
126
|
+
# security_group.allow_ping('123.123.123.123/0')
|
|
127
|
+
#
|
|
128
|
+
# @param [String] sources One or more IP ranges to allow ping from.
|
|
129
|
+
# Defaults to 0.0.0.0/0
|
|
130
|
+
#
|
|
131
|
+
# @return [nil]
|
|
132
|
+
#
|
|
133
|
+
def allow_ping *sources
|
|
134
|
+
sources << '0.0.0.0/0' if sources.empty?
|
|
135
|
+
authorize_ingress('icmp', -1, *sources)
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# Removes ingress rules for ICMP pings. Defaults to 0.0.0.0/0 for
|
|
139
|
+
# the list of IP ranges to revoke.
|
|
140
|
+
#
|
|
141
|
+
# @param [String] sources One or more IP ranges to disallow ping from.
|
|
142
|
+
# Defaults to 0.0.0.0/0
|
|
143
|
+
#
|
|
144
|
+
# @return [nil]
|
|
145
|
+
#
|
|
146
|
+
def disallow_ping *sources
|
|
147
|
+
sources << '0.0.0.0/0' if sources.empty?
|
|
148
|
+
revoke_ingress('icmp', -1, *sources)
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# Add an ingress rules to this security group.
|
|
152
|
+
# Ingress rules permit inbound traffic over a given protocol for
|
|
153
|
+
# a given port range from one or more souce ip addresses.
|
|
154
|
+
#
|
|
155
|
+
# This example grants the whole internet (0.0.0.0/0) access to port 80
|
|
156
|
+
# over TCP (HTTP web traffic).
|
|
157
|
+
#
|
|
158
|
+
# security_group.authorize_ingress(:tcp, 80)
|
|
159
|
+
#
|
|
160
|
+
# You can specify port ranges as well:
|
|
161
|
+
#
|
|
162
|
+
# # ftp
|
|
163
|
+
# security_group.authorize_ingress(:tcp, 20..21)
|
|
164
|
+
#
|
|
165
|
+
# == Sources
|
|
166
|
+
#
|
|
167
|
+
# Security groups accept ingress trafic from:
|
|
168
|
+
#
|
|
169
|
+
# * CIDR IP addresses
|
|
170
|
+
# * security groups
|
|
171
|
+
# * load balancers
|
|
172
|
+
#
|
|
173
|
+
# === Ip Addresses
|
|
174
|
+
#
|
|
175
|
+
# In the following example allow incoming SSH from a list of
|
|
176
|
+
# IP address ranges.
|
|
177
|
+
#
|
|
178
|
+
# security_group.authorize_ingress(:tcp, 22,
|
|
179
|
+
# '111.111.111.111/0', '222.222.222.222/0')
|
|
180
|
+
#
|
|
181
|
+
# === Security Groups
|
|
182
|
+
#
|
|
183
|
+
# To autohrize ingress traffic from all EC2 instance in another
|
|
184
|
+
# security group, just pass the security group:
|
|
185
|
+
#
|
|
186
|
+
# web = security_groups.create('webservers')
|
|
187
|
+
# db = security_groups.create('database')
|
|
188
|
+
# db.authorize_ingress(:tcp, 3306, web)
|
|
189
|
+
#
|
|
190
|
+
# You can also pass a hash of security group details instead of
|
|
191
|
+
# a {SecurityGroup} object.
|
|
192
|
+
#
|
|
193
|
+
# # by security group name
|
|
194
|
+
# sg.authorize_ingress(:tcp, 80, { :group_name => 'other-group' })
|
|
195
|
+
#
|
|
196
|
+
# # by security group id
|
|
197
|
+
# sg.authorize_ingress(:tcp, 80, { :group_id => 'sg-1234567' })
|
|
198
|
+
#
|
|
199
|
+
# If the security group belongs to a different account, just make
|
|
200
|
+
# sure it has the correct owner ID populated:
|
|
201
|
+
#
|
|
202
|
+
# not_my_sg = SecurityGroup.new('sg-1234567', :owner_id => 'abcxyz123')
|
|
203
|
+
# my_sg.authorize_ingress(:tcp, 80, not_my_sg)
|
|
204
|
+
#
|
|
205
|
+
# You can do the same with a hash as well (with either +:group_id+
|
|
206
|
+
# or +:group_name+):
|
|
207
|
+
#
|
|
208
|
+
# sg.authorize_ingress(:tcp, 21..22, { :group_id => 'sg-id', :user_id => 'abcxyz123' })
|
|
209
|
+
#
|
|
210
|
+
# === Load Balancers
|
|
211
|
+
#
|
|
212
|
+
# If you use ELB to manage load balancers, then you need to add
|
|
213
|
+
# ingress permissions to the security groups they route traffic into.
|
|
214
|
+
# You can do this by passing the {ELB::LoadBalancer} into
|
|
215
|
+
# authorize_ingress:
|
|
216
|
+
#
|
|
217
|
+
# load_balancer = AWS::ELB.new.load_balancers['web-load-balancer']
|
|
218
|
+
#
|
|
219
|
+
# sg.authorize_ingress(:tcp, 80, load_balancer)
|
|
220
|
+
#
|
|
221
|
+
# === Multiple Sources
|
|
222
|
+
#
|
|
223
|
+
# You can provide multiple sources each time you call authorize
|
|
224
|
+
# ingress, and you can mix and match the source types:
|
|
225
|
+
#
|
|
226
|
+
# sg.authorize_ingress(:tcp, 80, other_sg, '1.2.3.4/0', load_balancer)
|
|
227
|
+
#
|
|
228
|
+
# @param [String, Symbol] protocol Should be :tcp, :udp or :icmp
|
|
229
|
+
# or the string equivalent.
|
|
230
|
+
#
|
|
231
|
+
# @param [Integer, Range] ports The port (or port range) to allow
|
|
232
|
+
# traffic through. You can pass a single integer (like 80)
|
|
233
|
+
# or a range (like 20..21).
|
|
234
|
+
#
|
|
235
|
+
# @param [Mixed] sources One or more CIDR IP addresses,
|
|
236
|
+
# security groups, or load balancers. Security groups
|
|
237
|
+
# can be specified as hashes.
|
|
238
|
+
#
|
|
239
|
+
# A security group hash must provide either +:group_id+ or
|
|
240
|
+
# +:group_name+ for the security group. If the security group
|
|
241
|
+
# does not belong to you aws account then you must also
|
|
242
|
+
# provide +:user_id+ (which can be an AWS account ID or alias).
|
|
243
|
+
#
|
|
244
|
+
# @return [nil]
|
|
245
|
+
#
|
|
246
|
+
def authorize_ingress protocol, ports, *sources
|
|
247
|
+
client.authorize_security_group_ingress(
|
|
248
|
+
:group_id => id,
|
|
249
|
+
:ip_permissions => [ingress_opts(protocol, ports, sources)]
|
|
250
|
+
)
|
|
251
|
+
nil
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
# Revokes an ingress (inbound) ip permission. This is the inverse
|
|
255
|
+
# operation to {#authorize_ingress}. See {#authorize_ingress}
|
|
256
|
+
# for param and option documentation.
|
|
257
|
+
#
|
|
258
|
+
# @see #authorize_ingress
|
|
259
|
+
#
|
|
260
|
+
# @return [nil]
|
|
261
|
+
#
|
|
262
|
+
def revoke_ingress protocol, ports, *sources
|
|
263
|
+
client.revoke_security_group_ingress(
|
|
264
|
+
:group_id => id,
|
|
265
|
+
:ip_permissions => [ingress_opts(protocol, ports, sources)]
|
|
266
|
+
)
|
|
267
|
+
nil
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
# Authorize egress (outbound) traffic for a VPC security group.
|
|
271
|
+
#
|
|
272
|
+
# # allow traffic for all protocols/ports from the given sources
|
|
273
|
+
# security_group.authorize_egress('10.0.0.0/16', '10.0.0.1/16')
|
|
274
|
+
#
|
|
275
|
+
# # allow tcp traffic outband via port 80
|
|
276
|
+
# security_group.authorize_egress('10.0.0.0/16',
|
|
277
|
+
# :protocol => :tcp, :ports => 80..80)
|
|
278
|
+
#
|
|
279
|
+
# @note Calling this method on a non-VPC security group raises an error.
|
|
280
|
+
#
|
|
281
|
+
# @overload authorize_egress(*sources, options = {})
|
|
282
|
+
#
|
|
283
|
+
# @param [Mixed] sources One or more CIDR IP addresses,
|
|
284
|
+
# security groups or load balancers. See {#authorize_ingress}
|
|
285
|
+
# for more information on accepted formats for sources.
|
|
286
|
+
#
|
|
287
|
+
# @param [Hash] options
|
|
288
|
+
#
|
|
289
|
+
# @option options [Symbol] :protocol (:any) The protocol name or number
|
|
290
|
+
# to authorize egress traffic for. For a complete list of protocols
|
|
291
|
+
# see: {http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml}
|
|
292
|
+
#
|
|
293
|
+
# @option options [Range<Integer>,Integer] :ports (nil) An optional
|
|
294
|
+
# port or range of ports. This option is required depending on
|
|
295
|
+
# the protocol.
|
|
296
|
+
#
|
|
297
|
+
# @return [nil]
|
|
298
|
+
#
|
|
299
|
+
def authorize_egress *sources
|
|
300
|
+
client.authorize_security_group_egress(
|
|
301
|
+
:group_id => id,
|
|
302
|
+
:ip_permissions => [egress_opts(sources)])
|
|
303
|
+
nil
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
# Revokes an egress (outound) ip permission. This is the inverse
|
|
307
|
+
# operation to {#authorize_egress}. See {#authorize_egress}
|
|
308
|
+
# for param and option documentation.
|
|
309
|
+
#
|
|
310
|
+
# @see #authorize_egress
|
|
311
|
+
#
|
|
312
|
+
# @return [nil]
|
|
313
|
+
#
|
|
314
|
+
def revoke_egress *sources
|
|
315
|
+
client.revoke_security_group_egress(
|
|
316
|
+
:group_id => id,
|
|
317
|
+
:ip_permissions => [egress_opts(sources)])
|
|
318
|
+
nil
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
# Deletes this security group.
|
|
322
|
+
#
|
|
323
|
+
# If you attempt to delete a security group that contains
|
|
324
|
+
# instances, or attempt to delete a security group that is referenced
|
|
325
|
+
# by another security group, an error is raised. For example, if
|
|
326
|
+
# security group B has a rule that allows access from security
|
|
327
|
+
# group A, security group A cannot be deleted until the rule is
|
|
328
|
+
# removed.
|
|
329
|
+
# @return [nil]
|
|
330
|
+
def delete
|
|
331
|
+
client.delete_security_group(:group_id => id)
|
|
332
|
+
nil
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
# @private
|
|
336
|
+
def <=> other
|
|
337
|
+
self.id <=> other.id
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
# @private
|
|
341
|
+
def resource_type
|
|
342
|
+
'security-group'
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
# @private
|
|
346
|
+
def inflected_name
|
|
347
|
+
"group"
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
# @private
|
|
351
|
+
def self.describe_call_name
|
|
352
|
+
:describe_security_groups
|
|
353
|
+
end
|
|
354
|
+
def describe_call_name; self.class.describe_call_name; end
|
|
355
|
+
|
|
356
|
+
# @private
|
|
357
|
+
protected
|
|
358
|
+
def ingress_opts protocol, ports, sources
|
|
359
|
+
|
|
360
|
+
opts = {}
|
|
361
|
+
opts[:ip_protocol] = protocol == :any ? '-1' : protocol.to_s.downcase
|
|
362
|
+
|
|
363
|
+
unless ports.is_a?(Range)
|
|
364
|
+
ports = Array(ports)
|
|
365
|
+
end
|
|
366
|
+
opts[:from_port] = ports.first.to_i
|
|
367
|
+
opts[:to_port] = ports.last.to_i
|
|
368
|
+
|
|
369
|
+
ips, groups = parse_sources(sources)
|
|
370
|
+
|
|
371
|
+
opts[:ip_ranges] = ips unless ips.empty?
|
|
372
|
+
opts[:user_id_group_pairs] = groups unless groups.empty?
|
|
373
|
+
|
|
374
|
+
opts
|
|
375
|
+
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
# @private
|
|
379
|
+
protected
|
|
380
|
+
def egress_opts args
|
|
381
|
+
ensure_vpc do
|
|
382
|
+
|
|
383
|
+
last = args.last
|
|
384
|
+
|
|
385
|
+
if last.is_a?(Hash) and (last.key?(:protocol) or last.key?(:ports))
|
|
386
|
+
# hashes at the end of egress methods could be a hash intedned
|
|
387
|
+
# to be a source, like:
|
|
388
|
+
#
|
|
389
|
+
# { :group_id => ..., :user_id => ... }
|
|
390
|
+
#
|
|
391
|
+
options = args.pop
|
|
392
|
+
else
|
|
393
|
+
options = {}
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
opts = {}
|
|
397
|
+
|
|
398
|
+
opts[:ip_protocol] = [nil,:any, '-1'].include?(options[:protocol]) ?
|
|
399
|
+
'-1' : options[:protocol].to_s.downcase
|
|
400
|
+
|
|
401
|
+
if options[:ports]
|
|
402
|
+
if options[:ports].is_a?(Range)
|
|
403
|
+
ports = options[:ports]
|
|
404
|
+
else
|
|
405
|
+
ports = Array(options[:ports])
|
|
406
|
+
end
|
|
407
|
+
|
|
408
|
+
opts[:from_port] = ports.first.to_i
|
|
409
|
+
opts[:to_port] = ports.last.to_i
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
ips, groups = parse_sources(args)
|
|
413
|
+
|
|
414
|
+
opts[:ip_ranges] = ips unless ips.empty?
|
|
415
|
+
opts[:user_id_group_pairs] = groups unless groups.empty?
|
|
416
|
+
|
|
417
|
+
opts
|
|
418
|
+
|
|
419
|
+
end
|
|
420
|
+
end
|
|
421
|
+
|
|
422
|
+
# @private
|
|
423
|
+
protected
|
|
424
|
+
def parse_sources sources
|
|
425
|
+
|
|
426
|
+
ips = []
|
|
427
|
+
groups = []
|
|
428
|
+
|
|
429
|
+
sources.each do |source|
|
|
430
|
+
case source
|
|
431
|
+
|
|
432
|
+
when String
|
|
433
|
+
ips << { :cidr_ip => source }
|
|
434
|
+
|
|
435
|
+
when SecurityGroup
|
|
436
|
+
groups << { :group_id => source.id, :user_id => source.owner_id }
|
|
437
|
+
|
|
438
|
+
when ELB::LoadBalancer
|
|
439
|
+
groups << source.source_security_group
|
|
440
|
+
|
|
441
|
+
when Hash
|
|
442
|
+
|
|
443
|
+
# group name or id required
|
|
444
|
+
unless source.has_key?(:group_id) or source.has_key?(:group_name)
|
|
445
|
+
raise ArgumentError, 'invalid ip permission hash, ' +
|
|
446
|
+
'must provide :group_id or :group_name'
|
|
447
|
+
end
|
|
448
|
+
|
|
449
|
+
# prevent typos
|
|
450
|
+
unless source.keys - [:group_id, :group_name, :user_id] == []
|
|
451
|
+
raise ArgumentError, 'invalid ip permission hash, ' +
|
|
452
|
+
'only accepts the following keys, :group_id, :group_name, :user_id'
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
groups << source
|
|
456
|
+
|
|
457
|
+
else
|
|
458
|
+
raise ArgumentError, 'invalid ingress ip permission, ' +
|
|
459
|
+
'expected CIDR IP address or SecurityGroup'
|
|
460
|
+
end
|
|
461
|
+
end
|
|
462
|
+
|
|
463
|
+
ips << { :cidr_ip => '0.0.0.0/0' } if ips.empty? and groups.empty?
|
|
464
|
+
|
|
465
|
+
[ips, groups]
|
|
466
|
+
|
|
467
|
+
end
|
|
468
|
+
|
|
469
|
+
# @private
|
|
470
|
+
protected
|
|
471
|
+
def ensure_vpc &block
|
|
472
|
+
raise 'operation permitted for VPC security groups only' unless vpc?
|
|
473
|
+
yield
|
|
474
|
+
end
|
|
475
|
+
|
|
476
|
+
# @private
|
|
477
|
+
protected
|
|
478
|
+
def find_in_response(resp)
|
|
479
|
+
resp.security_group_index[id]
|
|
480
|
+
end
|
|
481
|
+
|
|
482
|
+
end
|
|
483
|
+
end
|
|
484
|
+
end
|