aws-sdk-v1 1.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.yardopts +7 -0
- data/LICENSE.txt +12 -0
- data/README.md +337 -0
- data/bin/aws-rb +179 -0
- data/ca-bundle.crt +3554 -0
- data/endpoints.json +1671 -0
- data/lib/aws-sdk-v1.rb +2 -0
- data/lib/aws-sdk.rb +1 -0
- data/lib/aws.rb +14 -0
- data/lib/aws/api_config/AutoScaling-2011-01-01.yml +1070 -0
- data/lib/aws/api_config/CloudFormation-2010-05-15.yml +372 -0
- data/lib/aws/api_config/CloudFront-2013-05-12.yml +2448 -0
- data/lib/aws/api_config/CloudFront-2013-08-26.yml +2599 -0
- data/lib/aws/api_config/CloudFront-2013-09-27.yml +2765 -0
- data/lib/aws/api_config/CloudFront-2013-11-11.yml +2886 -0
- data/lib/aws/api_config/CloudFront-2013-11-22.yml +2918 -0
- data/lib/aws/api_config/CloudFront-2014-01-31.yml +2934 -0
- data/lib/aws/api_config/CloudFront-2014-05-31.yml +3100 -0
- data/lib/aws/api_config/CloudSearch-2011-02-01.yml +681 -0
- data/lib/aws/api_config/CloudSearch-2013-01-01.yml +1164 -0
- data/lib/aws/api_config/CloudTrail-2013-11-01.yml +130 -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/DirectConnect-2012-10-25.yml +735 -0
- data/lib/aws/api_config/DynamoDB-2011-12-05.yml +1168 -0
- data/lib/aws/api_config/DynamoDB-2012-08-10.yml +2105 -0
- data/lib/aws/api_config/EC2-2013-08-15.yml +4708 -0
- data/lib/aws/api_config/EC2-2013-10-01.yml +4726 -0
- data/lib/aws/api_config/EC2-2013-10-15.yml +4651 -0
- data/lib/aws/api_config/EC2-2014-02-01.yml +4755 -0
- data/lib/aws/api_config/EC2-2014-05-01.yml +4812 -0
- data/lib/aws/api_config/ELB-2012-06-01.yml +766 -0
- data/lib/aws/api_config/EMR-2009-03-31.yml +972 -0
- data/lib/aws/api_config/ElastiCache-2013-06-15.yml +1188 -0
- data/lib/aws/api_config/ElastiCache-2014-03-24.yml +1375 -0
- data/lib/aws/api_config/ElastiCache-2014-07-15.yml +1385 -0
- data/lib/aws/api_config/ElasticBeanstalk-2010-12-01.yml +854 -0
- data/lib/aws/api_config/ElasticTranscoder-2012-09-25.yml +3082 -0
- data/lib/aws/api_config/Glacier-2012-06-01.yml +649 -0
- data/lib/aws/api_config/IAM-2010-05-08.yml +1339 -0
- data/lib/aws/api_config/ImportExport-2010-06-01.yml +109 -0
- data/lib/aws/api_config/Kinesis-2013-12-02.yml +201 -0
- data/lib/aws/api_config/OpsWorks-2013-02-18.yml +2025 -0
- data/lib/aws/api_config/RDS-2013-05-15.yml +2464 -0
- data/lib/aws/api_config/RDS-2013-09-09.yml +2640 -0
- data/lib/aws/api_config/Redshift-2012-12-01.yml +2161 -0
- data/lib/aws/api_config/Route53-2012-12-12.yml +547 -0
- data/lib/aws/api_config/Route53-2013-04-01.yml +889 -0
- data/lib/aws/api_config/SNS-2010-03-31.yml +448 -0
- data/lib/aws/api_config/SQS-2012-11-05.yml +404 -0
- data/lib/aws/api_config/STS-2011-06-15.yml +151 -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 +2388 -0
- data/lib/aws/api_config/StorageGateway-2012-06-30.yml +748 -0
- data/lib/aws/api_config/StorageGateway-2013-06-30.yml +1025 -0
- data/lib/aws/api_config/Support-2013-04-15.yml +489 -0
- data/lib/aws/auto_scaling.rb +163 -0
- data/lib/aws/auto_scaling/activity.rb +102 -0
- data/lib/aws/auto_scaling/activity_collection.rb +81 -0
- data/lib/aws/auto_scaling/client.rb +48 -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 +421 -0
- data/lib/aws/auto_scaling/group_collection.rb +96 -0
- data/lib/aws/auto_scaling/group_options.rb +155 -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 +162 -0
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +160 -0
- data/lib/aws/auto_scaling/notification_configuration.rb +89 -0
- data/lib/aws/auto_scaling/notification_configuration_collection.rb +183 -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 +65 -0
- data/lib/aws/auto_scaling/scheduled_action.rb +141 -0
- data/lib/aws/auto_scaling/scheduled_action_collection.rb +202 -0
- data/lib/aws/auto_scaling/tag.rb +59 -0
- data/lib/aws/auto_scaling/tag_collection.rb +114 -0
- data/lib/aws/cloud_formation.rb +272 -0
- data/lib/aws/cloud_formation/client.rb +48 -0
- data/lib/aws/cloud_formation/config.rb +18 -0
- data/lib/aws/cloud_formation/errors.rb +22 -0
- data/lib/aws/cloud_formation/stack.rb +266 -0
- data/lib/aws/cloud_formation/stack_collection.rb +232 -0
- data/lib/aws/cloud_formation/stack_event.rb +73 -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 +83 -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 +72 -0
- data/lib/aws/cloud_front/client.rb +57 -0
- data/lib/aws/cloud_front/config.rb +18 -0
- data/lib/aws/cloud_front/errors.rb +22 -0
- data/lib/aws/cloud_search.rb +73 -0
- data/lib/aws/cloud_search/client.rb +40 -0
- data/lib/aws/cloud_search/config.rb +18 -0
- data/lib/aws/cloud_search/errors.rb +22 -0
- data/lib/aws/cloud_trail.rb +72 -0
- data/lib/aws/cloud_trail/client.rb +35 -0
- data/lib/aws/cloud_trail/config.rb +18 -0
- data/lib/aws/cloud_trail/errors.rb +22 -0
- data/lib/aws/cloud_watch.rb +118 -0
- data/lib/aws/cloud_watch/alarm.rb +293 -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 +40 -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 +129 -0
- data/lib/aws/cloud_watch/metric_statistics.rb +69 -0
- data/lib/aws/core.rb +716 -0
- data/lib/aws/core/async_handle.rb +90 -0
- data/lib/aws/core/cacheable.rb +77 -0
- data/lib/aws/core/client.rb +787 -0
- data/lib/aws/core/collection.rb +263 -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 +542 -0
- data/lib/aws/core/credential_providers.rb +639 -0
- data/lib/aws/core/data.rb +247 -0
- data/lib/aws/core/deprecations.rb +84 -0
- data/lib/aws/core/endpoints.rb +37 -0
- data/lib/aws/core/http/connection_pool.rb +369 -0
- data/lib/aws/core/http/curb_handler.rb +148 -0
- data/lib/aws/core/http/handler.rb +89 -0
- data/lib/aws/core/http/net_http_handler.rb +144 -0
- data/lib/aws/core/http/patch.rb +102 -0
- data/lib/aws/core/http/request.rb +259 -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/ini_parser.rb +42 -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 +108 -0
- data/lib/aws/core/log_formatter.rb +428 -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 +62 -0
- data/lib/aws/core/naming.rb +30 -0
- data/lib/aws/core/option_grammar.rb +738 -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 +941 -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/region.rb +85 -0
- data/lib/aws/core/region_collection.rb +80 -0
- data/lib/aws/core/resource.rb +413 -0
- data/lib/aws/core/resource_cache.rb +40 -0
- data/lib/aws/core/response.rb +215 -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 +154 -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 +83 -0
- data/lib/aws/core/signers/base.rb +46 -0
- data/lib/aws/core/signers/cloud_front.rb +56 -0
- data/lib/aws/core/signers/s3.rb +159 -0
- data/lib/aws/core/signers/version_2.rb +72 -0
- data/lib/aws/core/signers/version_3.rb +86 -0
- data/lib/aws/core/signers/version_3_https.rb +61 -0
- data/lib/aws/core/signers/version_4.rb +228 -0
- data/lib/aws/core/signers/version_4/chunk_signed_stream.rb +191 -0
- data/lib/aws/core/uri_escape.rb +44 -0
- data/lib/aws/core/xml/frame.rb +245 -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 +56 -0
- data/lib/aws/core/xml/sax_handlers/ox.rb +41 -0
- data/lib/aws/core/xml/sax_handlers/rexml.rb +47 -0
- data/lib/aws/core/xml/stub.rb +123 -0
- data/lib/aws/data_pipeline.rb +72 -0
- data/lib/aws/data_pipeline/client.rb +36 -0
- data/lib/aws/data_pipeline/config.rb +18 -0
- data/lib/aws/data_pipeline/errors.rb +20 -0
- data/lib/aws/direct_connect.rb +73 -0
- data/lib/aws/direct_connect/client.rb +36 -0
- data/lib/aws/direct_connect/config.rb +18 -0
- data/lib/aws/direct_connect/errors.rb +22 -0
- data/lib/aws/dynamo_db.rb +230 -0
- data/lib/aws/dynamo_db/attribute_collection.rb +456 -0
- data/lib/aws/dynamo_db/batch_get.rb +213 -0
- data/lib/aws/dynamo_db/batch_write.rb +254 -0
- data/lib/aws/dynamo_db/binary.rb +35 -0
- data/lib/aws/dynamo_db/client.rb +129 -0
- data/lib/aws/dynamo_db/client/v20111205.rb +1266 -0
- data/lib/aws/dynamo_db/client/v20120810.rb +1409 -0
- data/lib/aws/dynamo_db/client_v2.rb +44 -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 +856 -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/resource.rb +33 -0
- data/lib/aws/dynamo_db/table.rb +492 -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 +428 -0
- data/lib/aws/ec2/attachment.rb +135 -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 +154 -0
- data/lib/aws/ec2/collection.rb +36 -0
- data/lib/aws/ec2/config.rb +21 -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 +209 -0
- data/lib/aws/ec2/elastic_ip_collection.rb +93 -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 +87 -0
- data/lib/aws/ec2/has_permissions.rb +44 -0
- data/lib/aws/ec2/image.rb +270 -0
- data/lib/aws/ec2/image_collection.rb +219 -0
- data/lib/aws/ec2/instance.rb +803 -0
- data/lib/aws/ec2/instance_collection.rb +402 -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 +237 -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/reserved_instances.rb +57 -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 +45 -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 +482 -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 +133 -0
- data/lib/aws/ec2/snapshot.rb +143 -0
- data/lib/aws/ec2/snapshot_collection.rb +131 -0
- data/lib/aws/ec2/subnet.rb +161 -0
- data/lib/aws/ec2/subnet_collection.rb +119 -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 +67 -0
- data/lib/aws/ec2/tagged_item.rb +85 -0
- data/lib/aws/ec2/volume.rb +185 -0
- data/lib/aws/ec2/volume_collection.rb +102 -0
- data/lib/aws/ec2/vpc.rb +174 -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 +49 -0
- data/lib/aws/elastic_beanstalk/client.rb +36 -0
- data/lib/aws/elastic_beanstalk/config.rb +18 -0
- data/lib/aws/elastic_beanstalk/errors.rb +22 -0
- data/lib/aws/elastic_transcoder.rb +29 -0
- data/lib/aws/elastic_transcoder/client.rb +48 -0
- data/lib/aws/elastic_transcoder/config.rb +18 -0
- data/lib/aws/elastic_transcoder/errors.rb +23 -0
- data/lib/aws/elasticache.rb +49 -0
- data/lib/aws/elasticache/client.rb +41 -0
- data/lib/aws/elasticache/config.rb +18 -0
- data/lib/aws/elasticache/errors.rb +22 -0
- data/lib/aws/elb.rb +66 -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 +35 -0
- data/lib/aws/elb/config.rb +18 -0
- data/lib/aws/elb/errors.rb +26 -0
- data/lib/aws/elb/instance_collection.rb +168 -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 +280 -0
- data/lib/aws/elb/load_balancer_collection.rb +146 -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/emr.rb +87 -0
- data/lib/aws/emr/client.rb +35 -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 +307 -0
- data/lib/aws/emr/job_flow_collection.rb +183 -0
- data/lib/aws/errors.rb +162 -0
- data/lib/aws/glacier.rb +79 -0
- data/lib/aws/glacier/archive.rb +56 -0
- data/lib/aws/glacier/archive_collection.rb +146 -0
- data/lib/aws/glacier/client.rb +49 -0
- data/lib/aws/glacier/config.rb +19 -0
- data/lib/aws/glacier/errors.rb +22 -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 +408 -0
- data/lib/aws/iam/access_key.rb +185 -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 +49 -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 +111 -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/resource.rb +62 -0
- data/lib/aws/iam/server_certificate.rb +148 -0
- data/lib/aws/iam/server_certificate_collection.rb +138 -0
- data/lib/aws/iam/signing_certificate.rb +186 -0
- data/lib/aws/iam/signing_certificate_collection.rb +131 -0
- data/lib/aws/iam/user.rb +200 -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 +35 -0
- data/lib/aws/import_export/config.rb +19 -0
- data/lib/aws/import_export/errors.rb +22 -0
- data/lib/aws/kinesis.rb +53 -0
- data/lib/aws/kinesis/client.rb +35 -0
- data/lib/aws/kinesis/config.rb +18 -0
- data/lib/aws/kinesis/errors.rb +20 -0
- data/lib/aws/ops_works.rb +29 -0
- data/lib/aws/ops_works/client.rb +35 -0
- data/lib/aws/ops_works/config.rb +18 -0
- data/lib/aws/ops_works/errors.rb +20 -0
- data/lib/aws/rails.rb +195 -0
- data/lib/aws/rds.rb +70 -0
- data/lib/aws/rds/client.rb +42 -0
- data/lib/aws/rds/config.rb +18 -0
- data/lib/aws/rds/db_instance.rb +215 -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/record.rb +139 -0
- data/lib/aws/record/abstract_base.rb +689 -0
- data/lib/aws/record/attributes.rb +388 -0
- data/lib/aws/record/conversion.rb +38 -0
- data/lib/aws/record/dirty_tracking.rb +287 -0
- data/lib/aws/record/errors.rb +143 -0
- data/lib/aws/record/exceptions.rb +51 -0
- data/lib/aws/record/hash_model.rb +204 -0
- data/lib/aws/record/hash_model/attributes.rb +195 -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 +453 -0
- data/lib/aws/record/model/attributes.rb +377 -0
- data/lib/aws/record/model/finder_methods.rb +232 -0
- data/lib/aws/record/model/scope.rb +212 -0
- data/lib/aws/record/naming.rb +31 -0
- data/lib/aws/record/scope.rb +203 -0
- data/lib/aws/record/validations.rb +694 -0
- data/lib/aws/record/validator.rb +246 -0
- data/lib/aws/record/validators/acceptance.rb +49 -0
- data/lib/aws/record/validators/block.rb +36 -0
- data/lib/aws/record/validators/confirmation.rb +41 -0
- data/lib/aws/record/validators/count.rb +106 -0
- data/lib/aws/record/validators/exclusion.rb +41 -0
- data/lib/aws/record/validators/format.rb +55 -0
- data/lib/aws/record/validators/inclusion.rb +54 -0
- data/lib/aws/record/validators/length.rb +105 -0
- data/lib/aws/record/validators/method.rb +31 -0
- data/lib/aws/record/validators/numericality.rb +136 -0
- data/lib/aws/record/validators/presence.rb +43 -0
- data/lib/aws/redshift.rb +51 -0
- data/lib/aws/redshift/client.rb +35 -0
- data/lib/aws/redshift/config.rb +18 -0
- data/lib/aws/redshift/errors.rb +22 -0
- data/lib/aws/route_53.rb +86 -0
- data/lib/aws/route_53/change_batch.rb +161 -0
- data/lib/aws/route_53/change_info.rb +72 -0
- data/lib/aws/route_53/client.rb +38 -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 +134 -0
- data/lib/aws/route_53/hosted_zone_collection.rb +101 -0
- data/lib/aws/route_53/resource_record_set.rb +251 -0
- data/lib/aws/route_53/resource_record_set_collection.rb +110 -0
- data/lib/aws/s3.rb +156 -0
- data/lib/aws/s3/access_control_list.rb +265 -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 +162 -0
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +473 -0
- data/lib/aws/s3/bucket_tag_collection.rb +111 -0
- data/lib/aws/s3/bucket_version_collection.rb +79 -0
- data/lib/aws/s3/cipher_io.rb +120 -0
- data/lib/aws/s3/client.rb +2067 -0
- data/lib/aws/s3/client/xml.rb +266 -0
- data/lib/aws/s3/config.rb +48 -0
- data/lib/aws/s3/cors_rule.rb +108 -0
- data/lib/aws/s3/cors_rule_collection.rb +194 -0
- data/lib/aws/s3/data_options.rb +191 -0
- data/lib/aws/s3/encryption_utils.rb +146 -0
- data/lib/aws/s3/errors.rb +94 -0
- data/lib/aws/s3/multipart_upload.rb +353 -0
- data/lib/aws/s3/multipart_upload_collection.rb +76 -0
- data/lib/aws/s3/object_collection.rb +353 -0
- data/lib/aws/s3/object_metadata.rb +103 -0
- data/lib/aws/s3/object_upload_collection.rb +77 -0
- data/lib/aws/s3/object_version.rb +154 -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 +85 -0
- data/lib/aws/s3/presign_v4.rb +136 -0
- data/lib/aws/s3/presigned_post.rb +554 -0
- data/lib/aws/s3/request.rb +62 -0
- data/lib/aws/s3/s3_object.rb +1784 -0
- data/lib/aws/s3/tree.rb +116 -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 +82 -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 +218 -0
- data/lib/aws/simple_db/attribute.rb +156 -0
- data/lib/aws/simple_db/attribute_collection.rb +240 -0
- data/lib/aws/simple_db/client.rb +67 -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 +123 -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 +654 -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_email_service.rb +443 -0
- data/lib/aws/simple_email_service/client.rb +37 -0
- data/lib/aws/simple_email_service/config.rb +18 -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 +230 -0
- data/lib/aws/simple_email_service/identity_collection.rb +81 -0
- data/lib/aws/simple_email_service/quotas.rb +66 -0
- data/lib/aws/simple_workflow.rb +227 -0
- data/lib/aws/simple_workflow/activity_task.rb +178 -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 +69 -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 +223 -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/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 +384 -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 +35 -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/message.rb +204 -0
- data/lib/aws/sns/originators/from_auto_scaling.rb +68 -0
- data/lib/aws/sns/policy.rb +47 -0
- data/lib/aws/sns/subscription.rb +165 -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 +80 -0
- data/lib/aws/sqs/client.rb +53 -0
- data/lib/aws/sqs/config.rb +20 -0
- data/lib/aws/sqs/errors.rb +125 -0
- data/lib/aws/sqs/policy.rb +48 -0
- data/lib/aws/sqs/queue.rb +856 -0
- data/lib/aws/sqs/queue_collection.rb +186 -0
- data/lib/aws/sqs/received_message.rb +190 -0
- data/lib/aws/sqs/received_sns_message.rb +116 -0
- data/lib/aws/storage_gateway.rb +72 -0
- data/lib/aws/storage_gateway/client.rb +42 -0
- data/lib/aws/storage_gateway/config.rb +18 -0
- data/lib/aws/storage_gateway/errors.rb +22 -0
- data/lib/aws/sts.rb +164 -0
- data/lib/aws/sts/client.rb +55 -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/session.rb +48 -0
- data/lib/aws/support.rb +29 -0
- data/lib/aws/support/client.rb +35 -0
- data/lib/aws/support/config.rb +18 -0
- data/lib/aws/support/errors.rb +20 -0
- data/lib/aws/version.rb +17 -0
- data/rails/init.rb +15 -0
- metadata +634 -0
|
@@ -0,0 +1,78 @@
|
|
|
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 SNS
|
|
16
|
+
|
|
17
|
+
# Represents the collection of all subscriptions for the AWS
|
|
18
|
+
# account. For example:
|
|
19
|
+
#
|
|
20
|
+
# # get the ARNs of all SQS queues with subscriptions to topics
|
|
21
|
+
# # owned by this account
|
|
22
|
+
# topic.subscriptions.
|
|
23
|
+
# select { |s| s.protocol == :sqs }.
|
|
24
|
+
# collect(&:endpoint)
|
|
25
|
+
#
|
|
26
|
+
class SubscriptionCollection
|
|
27
|
+
|
|
28
|
+
include Core::Collection::WithNextToken
|
|
29
|
+
|
|
30
|
+
# Returns a subscription with the given ARN. This does not make
|
|
31
|
+
# a request to AWS.
|
|
32
|
+
# @param [String] arn The subscription ARN.
|
|
33
|
+
# @return [Subscription]
|
|
34
|
+
def [] arn
|
|
35
|
+
Subscription.new(arn, :config => config)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
protected
|
|
39
|
+
|
|
40
|
+
# Yield each subscription belonging to this account.
|
|
41
|
+
# @yieldparam [Subscription] subscription Each of the
|
|
42
|
+
# subscriptions in the account.
|
|
43
|
+
# @return [nil]
|
|
44
|
+
def _each_item next_token, options, &block
|
|
45
|
+
|
|
46
|
+
options[:next_token] = next_token if next_token
|
|
47
|
+
|
|
48
|
+
resp = client.send(client_method, options.merge(request_options))
|
|
49
|
+
resp.data[:subscriptions].each do |sub|
|
|
50
|
+
|
|
51
|
+
subscription = Subscription.new(
|
|
52
|
+
sub[:subscription_arn],
|
|
53
|
+
:endpoint => sub[:endpoint],
|
|
54
|
+
:protocol => sub[:protocol].tr('-','_').to_sym,
|
|
55
|
+
:owner_id => sub[:owner],
|
|
56
|
+
:topic_arn => sub[:topic_arn],
|
|
57
|
+
:config => config)
|
|
58
|
+
|
|
59
|
+
yield(subscription)
|
|
60
|
+
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
resp.data[:next_token]
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def client_method
|
|
68
|
+
:list_subscriptions
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def request_options
|
|
72
|
+
{}
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,403 @@
|
|
|
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 'json'
|
|
15
|
+
|
|
16
|
+
module AWS
|
|
17
|
+
class SNS
|
|
18
|
+
|
|
19
|
+
class Topic
|
|
20
|
+
|
|
21
|
+
include Core::Model
|
|
22
|
+
include HasDeliveryPolicy
|
|
23
|
+
|
|
24
|
+
# @param [String] arn The topic ARN.
|
|
25
|
+
def initialize arn, options = {}
|
|
26
|
+
@arn = arn
|
|
27
|
+
super
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# @return [String] The topic ARN.
|
|
31
|
+
attr_reader :arn
|
|
32
|
+
|
|
33
|
+
# The topic name.
|
|
34
|
+
#
|
|
35
|
+
# If you have not set a display name (see {#display_name=}) then
|
|
36
|
+
# this is used as the "From" field for notifications to email and
|
|
37
|
+
# email-json endpoints.
|
|
38
|
+
# @return [String] Returns the topic name.
|
|
39
|
+
def name
|
|
40
|
+
arn.split(/:/)[-1]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Causes the given `endpoint` to receive messages published to this
|
|
44
|
+
# topic.
|
|
45
|
+
#
|
|
46
|
+
# ## Subscribing to SQS Queues
|
|
47
|
+
#
|
|
48
|
+
# If you subscribe to an SQS queue (with a {SQS::Queue} object}
|
|
49
|
+
# then a policy will be added/updated to the queue that will
|
|
50
|
+
# permit this topic to send it messages. Some important notes:
|
|
51
|
+
#
|
|
52
|
+
# * If you subscribe with a queue by ARN then you must change the
|
|
53
|
+
# policy yourself.
|
|
54
|
+
#
|
|
55
|
+
# * If you do not want the policy modified then pass `:update_policy`
|
|
56
|
+
# as false or just pass the queue's arn
|
|
57
|
+
#
|
|
58
|
+
# topic.subscribe(queue.arn)
|
|
59
|
+
# topic.subscribe(queue, :update_policy => false)
|
|
60
|
+
#
|
|
61
|
+
# @example Using a url string to set the endpoint (http and https)
|
|
62
|
+
#
|
|
63
|
+
# topic.subscribe('http://example.com/messages')
|
|
64
|
+
# topic.subscribe('https://example.com/messages')
|
|
65
|
+
#
|
|
66
|
+
# @example Using a uri object to set the endpoint (http and https)
|
|
67
|
+
#
|
|
68
|
+
# topic.subscribe(URI.parse('http://example.com/messages'))
|
|
69
|
+
# topic.subscribe(URI.parse('https://example.com/messages'))
|
|
70
|
+
#
|
|
71
|
+
# @example Email address as endpoint
|
|
72
|
+
#
|
|
73
|
+
# topic.subscribe('nobody@example.com')
|
|
74
|
+
#
|
|
75
|
+
# @example Email address as a JSON endpoint
|
|
76
|
+
#
|
|
77
|
+
# # send messages encoded as json object to the given email address
|
|
78
|
+
# topic.subscribe('nobody@example.com', :json => true)
|
|
79
|
+
#
|
|
80
|
+
# @example SQS Queue (by arn)
|
|
81
|
+
#
|
|
82
|
+
# # you must manage the queue policy yourself to allow the
|
|
83
|
+
# # the topic to send messages (policy action 'sqs:SendMessage')
|
|
84
|
+
# topic.subscribe('arn:aws:sqs:us-west-2:123456789123:AQueue')
|
|
85
|
+
#
|
|
86
|
+
# @example SQS Queue (by Queue object)
|
|
87
|
+
#
|
|
88
|
+
# # the queue policy will be added/updated to allow the topic
|
|
89
|
+
# # to send it messages
|
|
90
|
+
# topic.subscribe(AWS::SQS.new.queues.first)
|
|
91
|
+
#
|
|
92
|
+
# @param [mixed] endpoint The endpoint that should receive
|
|
93
|
+
# messages that are published to this topic. Valid values
|
|
94
|
+
# for `endpoint` include:
|
|
95
|
+
#
|
|
96
|
+
# * URI object
|
|
97
|
+
# * http and https URI strings
|
|
98
|
+
# * email address
|
|
99
|
+
# * {SQS::Queue}
|
|
100
|
+
# * SQS queue ARN
|
|
101
|
+
# * phone number of an SMS-enabled device
|
|
102
|
+
#
|
|
103
|
+
# @param [Hash] options
|
|
104
|
+
# @option options [Boolean] :json (false)
|
|
105
|
+
# @return [Subscription,nil] Returns a subscription when possible.
|
|
106
|
+
# If the subscription requires confirmation first, then `nil` is
|
|
107
|
+
# returned instead.
|
|
108
|
+
def subscribe endpoint, options = {}
|
|
109
|
+
subscribe_opts = endpoint_opts(endpoint, options).merge(:topic_arn => arn)
|
|
110
|
+
resp = client.subscribe(subscribe_opts)
|
|
111
|
+
if arn = resp[:subscription_arn] and arn =~ /^arn:/
|
|
112
|
+
Subscription.new(arn, :config => config)
|
|
113
|
+
else
|
|
114
|
+
nil
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# Verifies an endpoint owner's intent to receive messages by
|
|
119
|
+
# validating the token sent to the endpoint by an earlier
|
|
120
|
+
# Subscribe action. If the token is valid, the action creates a
|
|
121
|
+
# new subscription.
|
|
122
|
+
#
|
|
123
|
+
# @param [String] token Short-lived token sent to an endpoint
|
|
124
|
+
# during the {#subscribe} action.
|
|
125
|
+
#
|
|
126
|
+
# @param [Hash] options Additional options for confirming the
|
|
127
|
+
# subscription.
|
|
128
|
+
#
|
|
129
|
+
# @option options [Boolean] :authenticate_on_unsubscribe
|
|
130
|
+
# Indicates that you want to disable unauthenticated
|
|
131
|
+
# unsubsciption of the subscription.
|
|
132
|
+
#
|
|
133
|
+
# @return [Subscription] The newly created subscription.
|
|
134
|
+
#
|
|
135
|
+
def confirm_subscription token, options = {}
|
|
136
|
+
|
|
137
|
+
options[:authenticate_on_unsubscribe] = 'true' if
|
|
138
|
+
options[:authenticate_on_unsubscribe]
|
|
139
|
+
|
|
140
|
+
confirm_opts = options.merge(:token => token, :topic_arn => arn)
|
|
141
|
+
resp = client.confirm_subscription(confirm_opts)
|
|
142
|
+
Subscription.new(
|
|
143
|
+
resp[:subscription_arn],
|
|
144
|
+
:topic_arn => arn,
|
|
145
|
+
:config => config)
|
|
146
|
+
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# @return [TopicSubscriptionCollection] Returns a collection that
|
|
150
|
+
# represents all of the subscriptions for this topic.
|
|
151
|
+
def subscriptions
|
|
152
|
+
TopicSubscriptionCollection.new(self)
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# @return [String] Returns the human-readable name used in
|
|
156
|
+
# the "From" field for notifications to email and email-json
|
|
157
|
+
# endpoints. If you have not set the display name the topic
|
|
158
|
+
# {#name} will be used/returned instead.
|
|
159
|
+
def display_name
|
|
160
|
+
to_h[:display_name]
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# @param [String] display_name Sets the human-readable name used in
|
|
164
|
+
# the "From" field for notifications to email and email-json
|
|
165
|
+
# endpoints.
|
|
166
|
+
# @return [String] Returns the display_name as passed.
|
|
167
|
+
def display_name= display_name
|
|
168
|
+
set_attribute('DisplayName', display_name)
|
|
169
|
+
display_name
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# @return [String] The topic owner's ID.
|
|
173
|
+
def owner
|
|
174
|
+
to_h[:owner]
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# @return [Integer] Returns number of confirmed topic subscriptions.
|
|
178
|
+
def num_subscriptions_confirmed
|
|
179
|
+
to_h[:num_subscriptions_confirmed]
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
# @return [Integer] Returns number of pending topic subscriptions.
|
|
183
|
+
def num_subscriptions_pending
|
|
184
|
+
to_h[:num_subscriptions_pending]
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# @return [Integer] Returns number of deleted topic subscriptions.
|
|
188
|
+
def num_subscriptions_deleted
|
|
189
|
+
to_h[:num_subscriptions_deleted]
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
# @return [Policy] The topic's {Policy}.
|
|
193
|
+
def policy
|
|
194
|
+
to_h[:policy]
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# Sets the topic's policy.
|
|
198
|
+
# @param [String,Policy] policy A JSON policy string, a {Policy} object
|
|
199
|
+
# or any other object that responds to #to_json with a valid
|
|
200
|
+
# policy.
|
|
201
|
+
# @return [nil]
|
|
202
|
+
def policy= policy
|
|
203
|
+
policy_json = policy.is_a?(String) ? policy : policy.to_json
|
|
204
|
+
set_attribute('Policy', policy_json)
|
|
205
|
+
nil
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
# @return [nil,String<JSON>] The delivery policy JSON string.
|
|
209
|
+
def delivery_policy_json
|
|
210
|
+
to_h[:delivery_policy_json]
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
# @return [String<JSON>] The effective delivery policy JSON string.
|
|
214
|
+
# into account system defaults.
|
|
215
|
+
def effective_delivery_policy_json
|
|
216
|
+
to_h[:effective_delivery_policy_json]
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# Publishes a message to this SNS topic.
|
|
220
|
+
#
|
|
221
|
+
# topic.publish('a short message')
|
|
222
|
+
#
|
|
223
|
+
# You can pass a subject that is used when sending the message to
|
|
224
|
+
# email endpoints:
|
|
225
|
+
#
|
|
226
|
+
# topic.publish('message', :subject => 'SNS message subject')
|
|
227
|
+
#
|
|
228
|
+
# If you would like to pass a different message to various protocols
|
|
229
|
+
# (endpoint types) you can pass those as options:
|
|
230
|
+
#
|
|
231
|
+
# topic.publish('default message',
|
|
232
|
+
# :http => "message sent to http endpoints",
|
|
233
|
+
# :https => "message sent to https endpoints",
|
|
234
|
+
# :email => "message sent to email endpoints")
|
|
235
|
+
#
|
|
236
|
+
# The full list of acceptable protocols are listed below. The default
|
|
237
|
+
# message is sent to endpoints who's protocol was not listed.
|
|
238
|
+
#
|
|
239
|
+
# @param [String] default_message The message you want to send to the
|
|
240
|
+
# topic. Messages must be UTF-8 encoded strings at most 8 KB in size
|
|
241
|
+
# (8192 bytes, not 8192 characters).
|
|
242
|
+
# @param [Hash] options
|
|
243
|
+
# @option options [String] :subject Used as the "Subject" line when
|
|
244
|
+
# the message is delivered to email endpoints. Will also be
|
|
245
|
+
# included in the standard JSON messages delivered to other endpoints.
|
|
246
|
+
# * must be ASCII text that begins with a letter, number or
|
|
247
|
+
# punctuation mark
|
|
248
|
+
# * must not include line breaks or control characters
|
|
249
|
+
# * and must be less than 100 characters long
|
|
250
|
+
# @option options [String] :http - Message to use when sending to an
|
|
251
|
+
# HTTP endpoint.
|
|
252
|
+
# @option options [String] :https - Message to use when sending to an
|
|
253
|
+
# HTTPS endpoint.
|
|
254
|
+
# @option options [String] :email - Message to use when sending to an
|
|
255
|
+
# email endpoint.
|
|
256
|
+
# @option options [String] :email_json - Message to use when sending
|
|
257
|
+
# to an email json endpoint.
|
|
258
|
+
# @option options [String] :sqs - Message to use when sending to an
|
|
259
|
+
# SQS endpoint.
|
|
260
|
+
# @return [String] Returns the ID of the message that was sent.
|
|
261
|
+
def publish default_message, options = {}
|
|
262
|
+
|
|
263
|
+
message = { :default => default_message }
|
|
264
|
+
|
|
265
|
+
[:http, :https, :email, :email_json, :sqs].each do |protocol|
|
|
266
|
+
if options[protocol]
|
|
267
|
+
message[protocol.to_s.gsub(/_/, '-')] = options[protocol]
|
|
268
|
+
end
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
publish_opts = {}
|
|
272
|
+
publish_opts[:message] = message.to_json
|
|
273
|
+
publish_opts[:message_structure] = 'json'
|
|
274
|
+
publish_opts[:subject] = options[:subject] if options[:subject]
|
|
275
|
+
publish_opts[:topic_arn] = arn
|
|
276
|
+
|
|
277
|
+
response = client.publish(publish_opts)
|
|
278
|
+
|
|
279
|
+
response[:message_id]
|
|
280
|
+
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
# Deletes the topic.
|
|
284
|
+
# @return [nil]
|
|
285
|
+
def delete
|
|
286
|
+
client.delete_topic(:topic_arn => arn)
|
|
287
|
+
nil
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
# @return [Hash] Returns a hash of attributes about this topic,
|
|
291
|
+
# including:
|
|
292
|
+
#
|
|
293
|
+
# * `:arn`
|
|
294
|
+
# * `:name`
|
|
295
|
+
# * `:owner`
|
|
296
|
+
# * `:display_name`
|
|
297
|
+
# * `:policy`
|
|
298
|
+
# * `:num_subscriptions_confirmed`
|
|
299
|
+
# * `:num_subscriptions_pending`
|
|
300
|
+
# * `:num_subscriptions_deleted`
|
|
301
|
+
#
|
|
302
|
+
def to_h
|
|
303
|
+
attributes = client.get_topic_attributes(:topic_arn => arn).attributes
|
|
304
|
+
{
|
|
305
|
+
:arn => arn,
|
|
306
|
+
:name => name,
|
|
307
|
+
:owner => attributes['Owner'],
|
|
308
|
+
:display_name => attributes['DisplayName'] || name,
|
|
309
|
+
:policy => parse_policy(attributes['Policy']),
|
|
310
|
+
:num_subscriptions_confirmed => attributes['SubscriptionsConfirmed'].to_i,
|
|
311
|
+
:num_subscriptions_pending => attributes['SubscriptionsPending'].to_i,
|
|
312
|
+
:num_subscriptions_deleted => attributes['SubscriptionsDeleted'].to_i,
|
|
313
|
+
:delivery_policy_json => attributes['DeliveryPolicy'],
|
|
314
|
+
:effective_delivery_policy_json => attributes['EffectiveDeliveryPolicy'],
|
|
315
|
+
}
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
# @return [Boolean] Returns true if compared to another {Topic}
|
|
319
|
+
# with the same ARN.
|
|
320
|
+
def eql? other
|
|
321
|
+
other.kind_of?(Topic) and other.arn == arn
|
|
322
|
+
end
|
|
323
|
+
alias_method :==, :eql?
|
|
324
|
+
|
|
325
|
+
protected
|
|
326
|
+
def update_delivery_policy policy_json
|
|
327
|
+
set_attribute('DeliveryPolicy', policy_json)
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
protected
|
|
331
|
+
def parse_policy policy_json
|
|
332
|
+
if policy_json
|
|
333
|
+
policy = SNS::Policy.from_json(policy_json)
|
|
334
|
+
policy.extend(PolicyProxy)
|
|
335
|
+
policy.topic = self
|
|
336
|
+
policy
|
|
337
|
+
else
|
|
338
|
+
nil
|
|
339
|
+
end
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
# @api private
|
|
343
|
+
protected
|
|
344
|
+
def set_attribute name, value
|
|
345
|
+
client.send(:set_topic_attributes, {
|
|
346
|
+
:topic_arn => arn,
|
|
347
|
+
:attribute_name => name,
|
|
348
|
+
:attribute_value => value,
|
|
349
|
+
})
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
# @api private
|
|
353
|
+
module PolicyProxy
|
|
354
|
+
attr_accessor :topic
|
|
355
|
+
def change
|
|
356
|
+
yield(self)
|
|
357
|
+
topic.policy = self
|
|
358
|
+
end
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
# @api private
|
|
362
|
+
protected
|
|
363
|
+
def endpoint_opts(endpoint, opts = {})
|
|
364
|
+
|
|
365
|
+
case
|
|
366
|
+
when endpoint.is_a?(SQS::Queue)
|
|
367
|
+
|
|
368
|
+
# auto add a policy to the queue to allow the topic
|
|
369
|
+
# to send the queue messages
|
|
370
|
+
unless opts[:update_policy] == false
|
|
371
|
+
policy = endpoint.policy || SQS::Policy.new
|
|
372
|
+
policy.allow(
|
|
373
|
+
:principal => :any,
|
|
374
|
+
:actions => [:send_message],
|
|
375
|
+
:resources => [endpoint]
|
|
376
|
+
).where(:source_arn).is(arn)
|
|
377
|
+
endpoint.policy = policy
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
{ :protocol => 'sqs', :endpoint => endpoint.arn }
|
|
381
|
+
|
|
382
|
+
when endpoint =~ /^arn:/
|
|
383
|
+
raise ArgumentError, "expected a queue ARN" unless
|
|
384
|
+
endpoint =~ /^arn:aws(.*?):sqs:/
|
|
385
|
+
{ :protocol => "sqs", :endpoint => endpoint }
|
|
386
|
+
when endpoint.kind_of?(URI)
|
|
387
|
+
{ :protocol => endpoint.scheme,
|
|
388
|
+
:endpoint => endpoint.to_s }
|
|
389
|
+
when endpoint =~ /^(https?):/
|
|
390
|
+
{ :protocol => $1, :endpoint => endpoint }
|
|
391
|
+
when endpoint.include?("@")
|
|
392
|
+
{ :protocol => opts[:json] ? "email-json" : "email",
|
|
393
|
+
:endpoint => endpoint }
|
|
394
|
+
when endpoint.gsub(/\D/,'') =~ /\d{11,15}/
|
|
395
|
+
{ :protocol => "sms", :endpoint => endpoint.gsub(/\D/,'') }
|
|
396
|
+
else
|
|
397
|
+
raise ArgumentError, "could not determine protocol for '#{endpoint}'"
|
|
398
|
+
end
|
|
399
|
+
end
|
|
400
|
+
|
|
401
|
+
end
|
|
402
|
+
end
|
|
403
|
+
end
|