esp_sdk 1.1.0 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (199) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -2
  3. data/.rubocop.yml +53 -6
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +8 -2
  6. data/Gemfile.lock +171 -0
  7. data/Guardfile +47 -0
  8. data/README.md +230 -5
  9. data/Rakefile +14 -1
  10. data/assets/logo.png +0 -0
  11. data/bin/esp_console +71 -0
  12. data/esp_sdk.gemspec +27 -18
  13. data/lib/esp/exceptions.rb +3 -0
  14. data/lib/esp/extensions/active_resource/formats/json_api_format.rb +105 -0
  15. data/lib/esp/extensions/active_resource/paginated_collection.rb +198 -0
  16. data/lib/esp/extensions/active_resource/validations.rb +45 -0
  17. data/lib/esp/resources/alert.rb +135 -0
  18. data/lib/esp/resources/cloud_trail_event.rb +45 -0
  19. data/lib/esp/resources/concerns/stat_totals.rb +79 -0
  20. data/lib/esp/resources/contact_request.rb +42 -0
  21. data/lib/esp/resources/custom_signature.rb +224 -0
  22. data/lib/esp/resources/dashboard.rb +31 -0
  23. data/lib/esp/resources/external_account.rb +89 -0
  24. data/lib/esp/resources/organization.rb +61 -0
  25. data/lib/esp/resources/region.rb +46 -0
  26. data/lib/esp/resources/report.rb +100 -0
  27. data/lib/esp/resources/resource.rb +66 -0
  28. data/lib/esp/resources/service.rb +31 -0
  29. data/lib/esp/resources/signature.rb +106 -0
  30. data/lib/esp/resources/stat.rb +124 -0
  31. data/lib/esp/resources/stat_custom_signature.rb +121 -0
  32. data/lib/esp/resources/stat_region.rb +121 -0
  33. data/lib/esp/resources/stat_service.rb +121 -0
  34. data/lib/esp/resources/stat_signature.rb +121 -0
  35. data/lib/esp/resources/sub_organization.rb +69 -0
  36. data/lib/esp/resources/suppression/region.rb +99 -0
  37. data/lib/esp/resources/suppression/signature.rb +107 -0
  38. data/lib/esp/resources/suppression/unique_identifier.rb +60 -0
  39. data/lib/esp/resources/suppression.rb +86 -0
  40. data/lib/esp/resources/tag.rb +45 -0
  41. data/lib/esp/resources/team.rb +79 -0
  42. data/lib/esp/resources/user.rb +46 -0
  43. data/lib/esp/version.rb +3 -0
  44. data/lib/esp.rb +95 -0
  45. data/lib/esp_sdk.rb +9 -45
  46. data/lib/tasks/rubocop.rake +2 -0
  47. data/lib/tasks/testing.rake +3 -0
  48. data/rdoc/ActiveResource/Formats.html +176 -0
  49. data/rdoc/ActiveResource/PaginatedCollection.html +910 -0
  50. data/rdoc/ActiveResource.html +180 -0
  51. data/rdoc/ESP/Alert.html +771 -0
  52. data/rdoc/ESP/CloudTrailEvent.html +375 -0
  53. data/rdoc/ESP/ContactRequest.html +366 -0
  54. data/rdoc/ESP/CustomSignature.html +746 -0
  55. data/rdoc/ESP/Dashboard.html +355 -0
  56. data/rdoc/ESP/ExternalAccount.html +565 -0
  57. data/rdoc/ESP/Organization.html +590 -0
  58. data/rdoc/ESP/Region.html +399 -0
  59. data/rdoc/ESP/Report.html +622 -0
  60. data/rdoc/ESP/Service.html +380 -0
  61. data/rdoc/ESP/Signature.html +555 -0
  62. data/rdoc/ESP/Stat.html +1778 -0
  63. data/rdoc/ESP/StatCustomSignature.html +1599 -0
  64. data/rdoc/ESP/StatRegion.html +1598 -0
  65. data/rdoc/ESP/StatService.html +1598 -0
  66. data/rdoc/ESP/StatSignature.html +1598 -0
  67. data/rdoc/ESP/SubOrganization.html +540 -0
  68. data/rdoc/ESP/Suppression/Region.html +454 -0
  69. data/rdoc/ESP/Suppression/Signature.html +470 -0
  70. data/rdoc/ESP/Suppression/UniqueIdentifier.html +417 -0
  71. data/rdoc/ESP/Suppression.html +649 -0
  72. data/rdoc/ESP/Tag.html +371 -0
  73. data/rdoc/ESP/Team.html +584 -0
  74. data/rdoc/ESP/User.html +483 -0
  75. data/rdoc/ESP.html +546 -0
  76. data/rdoc/README_md.html +501 -0
  77. data/rdoc/created.rid +30 -0
  78. data/rdoc/images/add.png +0 -0
  79. data/rdoc/images/arrow_up.png +0 -0
  80. data/rdoc/images/brick.png +0 -0
  81. data/rdoc/images/brick_link.png +0 -0
  82. data/rdoc/images/bug.png +0 -0
  83. data/rdoc/images/bullet_black.png +0 -0
  84. data/rdoc/images/bullet_toggle_minus.png +0 -0
  85. data/rdoc/images/bullet_toggle_plus.png +0 -0
  86. data/rdoc/images/date.png +0 -0
  87. data/rdoc/images/delete.png +0 -0
  88. data/rdoc/images/find.png +0 -0
  89. data/rdoc/images/loadingAnimation.gif +0 -0
  90. data/rdoc/images/macFFBgHack.png +0 -0
  91. data/rdoc/images/package.png +0 -0
  92. data/rdoc/images/page_green.png +0 -0
  93. data/rdoc/images/page_white_text.png +0 -0
  94. data/rdoc/images/page_white_width.png +0 -0
  95. data/rdoc/images/plugin.png +0 -0
  96. data/rdoc/images/ruby.png +0 -0
  97. data/rdoc/images/tag_blue.png +0 -0
  98. data/rdoc/images/tag_green.png +0 -0
  99. data/rdoc/images/transparent.png +0 -0
  100. data/rdoc/images/wrench.png +0 -0
  101. data/rdoc/images/wrench_orange.png +0 -0
  102. data/rdoc/images/zoom.png +0 -0
  103. data/rdoc/index.html +134 -0
  104. data/rdoc/js/darkfish.js +155 -0
  105. data/rdoc/js/jquery.js +4 -0
  106. data/rdoc/js/navigation.js +142 -0
  107. data/rdoc/js/search.js +94 -0
  108. data/rdoc/js/search_index.js +1 -0
  109. data/rdoc/js/searcher.js +228 -0
  110. data/rdoc/rdoc.css +595 -0
  111. data/rdoc/table_of_contents.html +927 -0
  112. data/test/esp/extensions/active_resource/formats/json_api_format_test.rb +109 -0
  113. data/test/esp/extensions/active_resource/paginated_collection_test.rb +435 -0
  114. data/test/esp/extensions/active_resource/validations_test.rb +59 -0
  115. data/test/esp/resources/alert_test.rb +263 -0
  116. data/test/esp/resources/cloud_trail_event_test.rb +98 -0
  117. data/test/esp/resources/contact_request_test.rb +73 -0
  118. data/test/esp/resources/custom_signature_test.rb +241 -0
  119. data/test/esp/resources/dashboard_test.rb +71 -0
  120. data/test/esp/resources/external_account_test.rb +125 -0
  121. data/test/esp/resources/organization_test.rb +175 -0
  122. data/test/esp/resources/region_test.rb +84 -0
  123. data/test/esp/resources/report_test.rb +180 -0
  124. data/test/esp/resources/resource_test.rb +183 -0
  125. data/test/esp/resources/service_test.rb +64 -0
  126. data/test/esp/resources/signature_test.rb +177 -0
  127. data/test/esp/resources/stat_custom_signature_test.rb +115 -0
  128. data/test/esp/resources/stat_region_test.rb +114 -0
  129. data/test/esp/resources/stat_service_test.rb +114 -0
  130. data/test/esp/resources/stat_signature_test.rb +115 -0
  131. data/test/esp/resources/stat_test.rb +159 -0
  132. data/test/esp/resources/sub_organization_test.rb +127 -0
  133. data/test/esp/resources/suppression/region_test.rb +115 -0
  134. data/test/esp/resources/suppression/signature_test.rb +117 -0
  135. data/test/esp/resources/suppression/unique_identifier_test.rb +79 -0
  136. data/test/esp/resources/suppression_test.rb +226 -0
  137. data/test/esp/resources/tag_test.rb +98 -0
  138. data/test/esp/resources/team_test.rb +140 -0
  139. data/test/esp/resources/user_test.rb +113 -0
  140. data/test/esp_test.rb +139 -0
  141. data/test/factories/alerts.rb +234 -0
  142. data/test/factories/cloud_trail_events.rb +16 -0
  143. data/test/factories/contact_requests.rb +14 -0
  144. data/test/factories/custom_signatures.rb +30 -0
  145. data/test/factories/dashboards.rb +91 -0
  146. data/test/factories/errors.rb +24 -0
  147. data/test/factories/external_accounts.rb +44 -0
  148. data/test/factories/organizations.rb +48 -0
  149. data/test/factories/regions.rb +9 -0
  150. data/test/factories/reports.rb +56 -0
  151. data/test/factories/services.rb +12 -0
  152. data/test/factories/signatures.rb +28 -0
  153. data/test/factories/stat_custom_signatures.rb +97 -0
  154. data/test/factories/stat_regions.rb +97 -0
  155. data/test/factories/stat_services.rb +97 -0
  156. data/test/factories/stat_signautures.rb +97 -0
  157. data/test/factories/stats.rb +129 -0
  158. data/test/factories/sub_organizations.rb +34 -0
  159. data/test/factories/suppression/regions.rb +90 -0
  160. data/test/factories/suppression/signatures.rb +117 -0
  161. data/test/factories/suppression/unique_identifiers.rb +111 -0
  162. data/test/factories/suppressions.rb +71 -0
  163. data/test/factories/tags.rb +12 -0
  164. data/test/factories/teams.rb +32 -0
  165. data/test/factories/users.rb +54 -0
  166. data/test/json_strategy.rb +25 -0
  167. data/test/test_helper.rb +44 -5
  168. metadata +387 -119
  169. data/bin/esp_repl +0 -60
  170. data/lib/esp_sdk/api.rb +0 -33
  171. data/lib/esp_sdk/client.rb +0 -62
  172. data/lib/esp_sdk/configure.rb +0 -40
  173. data/lib/esp_sdk/end_points/base.rb +0 -102
  174. data/lib/esp_sdk/end_points/contact_requests.rb +0 -6
  175. data/lib/esp_sdk/end_points/custom_signatures.rb +0 -41
  176. data/lib/esp_sdk/end_points/dashboard.rb +0 -35
  177. data/lib/esp_sdk/end_points/external_accounts.rb +0 -9
  178. data/lib/esp_sdk/end_points/organizations.rb +0 -6
  179. data/lib/esp_sdk/end_points/reports.rb +0 -6
  180. data/lib/esp_sdk/end_points/services.rb +0 -6
  181. data/lib/esp_sdk/end_points/signatures.rb +0 -39
  182. data/lib/esp_sdk/end_points/sub_organizations.rb +0 -6
  183. data/lib/esp_sdk/end_points/teams.rb +0 -6
  184. data/lib/esp_sdk/end_points/users.rb +0 -6
  185. data/lib/esp_sdk/exceptions.rb +0 -8
  186. data/lib/esp_sdk/extensions/rest_client/request.rb +0 -9
  187. data/lib/esp_sdk/repl.rb +0 -61
  188. data/lib/esp_sdk/version.rb +0 -3
  189. data/test/esp_sdk/api_test.rb +0 -36
  190. data/test/esp_sdk/client_test.rb +0 -129
  191. data/test/esp_sdk/configure_test.rb +0 -65
  192. data/test/esp_sdk/end_points/.keep +0 -0
  193. data/test/esp_sdk/end_points/base_test.rb +0 -230
  194. data/test/esp_sdk/end_points/custom_signatures_test.rb +0 -90
  195. data/test/esp_sdk/end_points/dashboard_test.rb +0 -55
  196. data/test/esp_sdk/end_points/external_accounts_test.rb +0 -20
  197. data/test/esp_sdk/end_points/signatures_test.rb +0 -83
  198. data/test/esp_sdk/exceptions_test.rb +0 -41
  199. data/test/esp_sdk_test.rb +0 -70
@@ -0,0 +1,746 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
+
7
+ <title>class ESP::CustomSignature - ESPSDK</title>
8
+
9
+ <link type="text/css" media="screen" href="../rdoc.css" rel="stylesheet">
10
+
11
+ <script type="text/javascript">
12
+ var rdoc_rel_prefix = "../";
13
+ </script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
16
+ <script type="text/javascript" charset="utf-8" src="../js/navigation.js"></script>
17
+ <script type="text/javascript" charset="utf-8" src="../js/search_index.js"></script>
18
+ <script type="text/javascript" charset="utf-8" src="../js/search.js"></script>
19
+ <script type="text/javascript" charset="utf-8" src="../js/searcher.js"></script>
20
+ <script type="text/javascript" charset="utf-8" src="../js/darkfish.js"></script>
21
+
22
+
23
+ <body id="top" class="class">
24
+ <nav id="metadata">
25
+ <nav id="home-section" class="section">
26
+ <h3 class="section-header">
27
+ <a href="../index.html">Home</a>
28
+ <a href="../table_of_contents.html#classes">Classes</a>
29
+ <a href="../table_of_contents.html#methods">Methods</a>
30
+ </h3>
31
+ </nav>
32
+
33
+
34
+ <nav id="search-section" class="section project-section" class="initially-hidden">
35
+ <form action="#" method="get" accept-charset="utf-8">
36
+ <h3 class="section-header">
37
+ <input type="text" name="search" placeholder="Search" id="search-field"
38
+ title="Type to search, Up and Down to navigate, Enter to load">
39
+ </h3>
40
+ </form>
41
+
42
+ <ul id="search-results" class="initially-hidden"></ul>
43
+ </nav>
44
+
45
+
46
+
47
+
48
+ <div id="file-metadata">
49
+ <nav id="file-list-section" class="section">
50
+ <h3 class="section-header">Defined In</h3>
51
+ <ul>
52
+ <li>lib/esp/resources/custom_signature.rb
53
+ </ul>
54
+ </nav>
55
+
56
+
57
+ </div>
58
+
59
+ <div id="class-metadata">
60
+
61
+ <nav id="parent-class-section" class="section">
62
+ <h3 class="section-header">Parent</h3>
63
+
64
+ <p class="link">ESP::Resource
65
+
66
+ </nav>
67
+
68
+
69
+
70
+ <!-- Method Quickref -->
71
+ <nav id="method-list-section" class="section">
72
+ <h3 class="section-header">Methods</h3>
73
+
74
+ <ul class="link-list">
75
+
76
+ <li ><a href="#method-c-all">::all</a>
77
+
78
+ <li ><a href="#method-c-create">::create</a>
79
+
80
+ <li ><a href="#method-c-find">::find</a>
81
+
82
+ <li ><a href="#method-c-run">::run</a>
83
+
84
+ <li ><a href="#method-c-run-21">::run!</a>
85
+
86
+ <li ><a href="#method-i-organization">#organization</a>
87
+
88
+ <li ><a href="#method-i-run">#run</a>
89
+
90
+ <li ><a href="#method-i-run-21">#run!</a>
91
+
92
+ <li ><a href="#method-i-save">#save</a>
93
+
94
+ <li ><a href="#method-i-suppress">#suppress</a>
95
+
96
+ </ul>
97
+ </nav>
98
+
99
+ </div>
100
+
101
+ <div id="project-metadata">
102
+ <nav id="fileindex-section" class="section project-section">
103
+ <h3 class="section-header">Pages</h3>
104
+
105
+ <ul>
106
+
107
+ <li class="file"><a href="../README_md.html">README</a>
108
+
109
+ </ul>
110
+ </nav>
111
+
112
+ <nav id="classindex-section" class="section project-section">
113
+ <h3 class="section-header">Class and Module Index</h3>
114
+
115
+ <ul class="link-list">
116
+
117
+ <li><a href="../ActiveResource.html">ActiveResource</a>
118
+
119
+ <li><a href="../ActiveResource/Formats.html">ActiveResource::Formats</a>
120
+
121
+ <li><a href="../ActiveResource/PaginatedCollection.html">ActiveResource::PaginatedCollection</a>
122
+
123
+ <li><a href="../ESP.html">ESP</a>
124
+
125
+ <li><a href="../ESP/Alert.html">ESP::Alert</a>
126
+
127
+ <li><a href="../ESP/CloudTrailEvent.html">ESP::CloudTrailEvent</a>
128
+
129
+ <li><a href="../ESP/ContactRequest.html">ESP::ContactRequest</a>
130
+
131
+ <li><a href="../ESP/CustomSignature.html">ESP::CustomSignature</a>
132
+
133
+ <li><a href="../ESP/Dashboard.html">ESP::Dashboard</a>
134
+
135
+ <li><a href="../ESP/ExternalAccount.html">ESP::ExternalAccount</a>
136
+
137
+ <li><a href="../ESP/Organization.html">ESP::Organization</a>
138
+
139
+ <li><a href="../ESP/Region.html">ESP::Region</a>
140
+
141
+ <li><a href="../ESP/Report.html">ESP::Report</a>
142
+
143
+ <li><a href="../ESP/Service.html">ESP::Service</a>
144
+
145
+ <li><a href="../ESP/Signature.html">ESP::Signature</a>
146
+
147
+ <li><a href="../ESP/Stat.html">ESP::Stat</a>
148
+
149
+ <li><a href="../ESP/StatCustomSignature.html">ESP::StatCustomSignature</a>
150
+
151
+ <li><a href="../ESP/StatRegion.html">ESP::StatRegion</a>
152
+
153
+ <li><a href="../ESP/StatService.html">ESP::StatService</a>
154
+
155
+ <li><a href="../ESP/StatSignature.html">ESP::StatSignature</a>
156
+
157
+ <li><a href="../ESP/SubOrganization.html">ESP::SubOrganization</a>
158
+
159
+ <li><a href="../ESP/Suppression.html">ESP::Suppression</a>
160
+
161
+ <li><a href="../ESP/Suppression/Region.html">ESP::Suppression::Region</a>
162
+
163
+ <li><a href="../ESP/Suppression/Signature.html">ESP::Suppression::Signature</a>
164
+
165
+ <li><a href="../ESP/Suppression/UniqueIdentifier.html">ESP::Suppression::UniqueIdentifier</a>
166
+
167
+ <li><a href="../ESP/Tag.html">ESP::Tag</a>
168
+
169
+ <li><a href="../ESP/Team.html">ESP::Team</a>
170
+
171
+ <li><a href="../ESP/User.html">ESP::User</a>
172
+
173
+ </ul>
174
+ </nav>
175
+
176
+ </div>
177
+ </nav>
178
+
179
+ <div id="documentation">
180
+ <h1 class="class">class ESP::CustomSignature</h1>
181
+
182
+ <div id="description" class="description">
183
+
184
+ </div><!-- description -->
185
+
186
+
187
+
188
+
189
+ <section id="5Buntitled-5D" class="documentation-section">
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+ <!-- Methods -->
199
+
200
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section section">
201
+ <h3 class="section-header">Public Class Methods</h3>
202
+
203
+
204
+ <div id="method-c-all" class="method-detail ">
205
+
206
+ <div class="method-heading">
207
+ <span class="method-name">all</span><span
208
+ class="method-args">()</span>
209
+
210
+ <span class="method-click-advice">click to toggle source</span>
211
+
212
+ </div>
213
+
214
+
215
+ <div class="method-description">
216
+
217
+ <p>Return a paginated <a href="CustomSignature.html">CustomSignature</a> list</p>
218
+
219
+
220
+
221
+
222
+ <div class="method-source-code" id="all-source">
223
+ <pre><span class="ruby-comment"># File lib/esp/resources/custom_signature.rb, line 152</span>
224
+ </pre>
225
+ </div><!-- all-source -->
226
+
227
+ </div>
228
+
229
+
230
+
231
+
232
+ </div><!-- all-method -->
233
+
234
+
235
+ <div id="method-c-create" class="method-detail ">
236
+
237
+
238
+ <div class="method-heading">
239
+ <span class="method-callseq">
240
+ create(attributes={})
241
+ </span>
242
+
243
+ <span class="method-click-advice">click to toggle source</span>
244
+
245
+ </div>
246
+
247
+
248
+
249
+ <div class="method-description">
250
+
251
+ <p>Create a <a href="CustomSignature.html">CustomSignature</a></p>
252
+
253
+ <h4 id="method-c-create-label-Parameter">Parameter<span><a href="#method-c-create-label-Parameter">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
254
+
255
+ <p><code>attributes</code> | Required | A hash of custom signature attributes</p>
256
+
257
+ <h5 id="method-c-create-label-Valid+Attributes">Valid Attributes<span><a href="#method-c-create-label-Valid+Attributes">&para;</a> <a href="#documentation">&uarr;</a></span></h5>
258
+
259
+ <p><code>active</code> | Not Required | Flag that determines if this custom
260
+ signature should run on reports</p>
261
+
262
+ <p><code>description</code> | Not Required | The description of the custom
263
+ signature that is displayed on alerts</p>
264
+
265
+ <p><code>identifier</code> | Required | The identifier to use for the custom
266
+ signature. Common format is AWS:&lt;Service&gt;-&lt;Number&gt; such as
267
+ AWS:IAM-001</p>
268
+
269
+ <p><code>language</code> | Required | The language of the custom signature.
270
+ Possible values are `ruby` or `javascript`</p>
271
+
272
+ <p><code>name</code> | Required | The name of the custom signature</p>
273
+
274
+ <p><code>resolution</code> | Not Required | Details for how to resolve this
275
+ custom signature that is displayed on alerts</p>
276
+
277
+ <p><code>risk_level</code> | Required | The risk-level of the problem
278
+ identified by the custom signature</p>
279
+
280
+ <p><code>signature</code> | Required | The code for this custom signature</p>
281
+
282
+ <h4 id="method-c-create-label-Example">Example<span><a href="#method-c-create-label-Example">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
283
+
284
+ <pre class="ruby"><span class="ruby-identifier">signature</span> = <span class="ruby-node">&quot;# Demo Ruby Signature\r\nconfigure do |c|\r\n # Set regions to run in. Remove this line to run in all regions.\r\n c.valid_regions = [:us_east_1]\r\n # Override region to display as global. Useful when checking resources\r\n # like IAM that do not have a specific region.\r\n c.display_as = :global\r\n # deep_inspection works with set_data to automically collect\r\n # data fields for each alert. Not required.\r\n c.deep_inspection = [:users]\r\nend\r\n\r\n# Required perform method\r\ndef perform(aws)\r\n list_users = aws.iam.list_users\r\n count = list_users[:users].count\r\n\r\n # Set data for deep_inspection to use\r\n set_data(list_users)\r\n\r\n if count == 0\r\n fail(user_count: count, condition: &#39;count == 0&#39;)\r\n else\r\n pass(user_count: count, condition: &#39;count &gt;= 1&#39;)\r\n end\r\nend\r\n&quot;</span>
285
+ <span class="ruby-identifier">custom_signature</span> = <span class="ruby-constant">ESP</span><span class="ruby-operator">::</span><span class="ruby-constant">CustomSignature</span>.<span class="ruby-identifier">create</span>(<span class="ruby-identifier">signature</span><span class="ruby-operator">:</span> <span class="ruby-identifier">signature</span>, <span class="ruby-identifier">description</span><span class="ruby-operator">:</span> <span class="ruby-string">&quot;A test custom signature.&quot;</span>, <span class="ruby-identifier">identifier</span><span class="ruby-operator">:</span> <span class="ruby-string">&quot;AWS::IAM::001&quot;</span>, <span class="ruby-identifier">language</span><span class="ruby-operator">:</span> <span class="ruby-string">&quot;ruby&quot;</span>, <span class="ruby-identifier">name</span><span class="ruby-operator">:</span> <span class="ruby-string">&quot;Test Signature&quot;</span>, <span class="ruby-identifier">risk_level</span><span class="ruby-operator">:</span> <span class="ruby-string">&quot;Medium&quot;</span>)
286
+ </pre>
287
+
288
+
289
+
290
+
291
+ <div class="method-source-code" id="create-source">
292
+ <pre><span class="ruby-comment"># File lib/esp/resources/custom_signature.rb, line 184</span>
293
+ </pre>
294
+ </div><!-- create-source -->
295
+
296
+ </div>
297
+
298
+
299
+
300
+
301
+ </div><!-- create-method -->
302
+
303
+
304
+ <div id="method-c-find" class="method-detail ">
305
+
306
+
307
+ <div class="method-heading">
308
+ <span class="method-callseq">
309
+ find(id)
310
+ </span>
311
+
312
+ <span class="method-click-advice">click to toggle source</span>
313
+
314
+ </div>
315
+
316
+
317
+
318
+ <div class="method-description">
319
+
320
+ <p>Find a <a href="CustomSignature.html">CustomSignature</a> by id</p>
321
+
322
+ <h4 id="method-c-find-label-Parameter">Parameter<span><a href="#method-c-find-label-Parameter">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
323
+
324
+ <p><code>id</code> | Required | The ID of the custom signature to retrieve</p>
325
+
326
+
327
+
328
+
329
+ <div class="method-source-code" id="find-source">
330
+ <pre><span class="ruby-comment"># File lib/esp/resources/custom_signature.rb, line 149</span>
331
+ </pre>
332
+ </div><!-- find-source -->
333
+
334
+ </div>
335
+
336
+
337
+
338
+
339
+ </div><!-- find-method -->
340
+
341
+
342
+ <div id="method-c-run" class="method-detail ">
343
+
344
+ <div class="method-heading">
345
+ <span class="method-name">run</span><span
346
+ class="method-args">(arguments = {})</span>
347
+
348
+ <span class="method-click-advice">click to toggle source</span>
349
+
350
+ </div>
351
+
352
+
353
+ <div class="method-description">
354
+
355
+ <p>Run a custom signature that has not been saved. Useful for debugging a
356
+ custom signature. Returns a collection of alerts. If not successful,
357
+ returns a <a href="CustomSignature.html">CustomSignature</a> object with
358
+ the errors object populated.</p>
359
+
360
+ <h4 id="method-c-run-label-Parameters">Parameters<span><a href="#method-c-run-label-Parameters">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
361
+
362
+ <p><code>arguments</code> | Required | A hash of run arguments</p>
363
+
364
+ <h5 id="method-c-run-label-Valid+Arguments">Valid Arguments<span><a href="#method-c-run-label-Valid+Arguments">&para;</a> <a href="#documentation">&uarr;</a></span></h5>
365
+
366
+ <p><code>external_account_id</code> | Required | The ID of the external
367
+ account to run this custom signature against</p>
368
+
369
+ <p><code>signature</code> | Required | The code for this custom signature</p>
370
+
371
+ <p><code>language</code> | Required | The language of the custom signature.
372
+ Possible values are `ruby` or `javascript`</p>
373
+
374
+ <p><code>regions</code> | Required | Array of region names to run this custom
375
+ signature against</p>
376
+
377
+ <h4 id="method-c-run-label-Example">Example<span><a href="#method-c-run-label-Example">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
378
+
379
+ <pre class="ruby"><span class="ruby-identifier">signature</span> = <span class="ruby-node">&quot;# Demo Ruby Signature\r\nconfigure do |c|\r\n # Set regions to run in. Remove this line to run in all regions.\r\n c.valid_regions = [:us_east_1]\r\n # Override region to display as global. Useful when checking resources\r\n # like IAM that do not have a specific region.\r\n c.display_as = :global\r\n # deep_inspection works with set_data to automically collect\r\n # data fields for each alert. Not required.\r\n c.deep_inspection = [:users]\r\nend\r\n\r\n# Required perform method\r\ndef perform(aws)\r\n list_users = aws.iam.list_users\r\n count = list_users[:users].count\r\n\r\n # Set data for deep_inspection to use\r\n set_data(list_users)\r\n\r\n if count == 0\r\n fail(user_count: count, condition: &#39;count == 0&#39;)\r\n else\r\n pass(user_count: count, condition: &#39;count &gt;= 1&#39;)\r\n end\r\nend\r\n&quot;</span>
380
+ <span class="ruby-identifier">alerts</span> = <span class="ruby-constant">ESP</span><span class="ruby-operator">::</span><span class="ruby-constant">CustomSignature</span>.<span class="ruby-identifier">run</span>(<span class="ruby-identifier">external_account_id</span><span class="ruby-operator">:</span> <span class="ruby-value">3</span>, <span class="ruby-identifier">regions</span><span class="ruby-operator">:</span> [<span class="ruby-string">&#39;us_east_1&#39;</span>], <span class="ruby-identifier">language</span><span class="ruby-operator">:</span> <span class="ruby-string">&#39;ruby&#39;</span>, <span class="ruby-identifier">signature</span><span class="ruby-operator">:</span> <span class="ruby-identifier">signature</span>)
381
+ </pre>
382
+
383
+
384
+
385
+
386
+ <div class="method-source-code" id="run-source">
387
+ <pre><span class="ruby-comment"># File lib/esp/resources/custom_signature.rb, line 56</span>
388
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">run</span>(<span class="ruby-identifier">arguments</span> = {})
389
+ <span class="ruby-identifier">arguments</span> = <span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">with_indifferent_access</span>
390
+ <span class="ruby-identifier">arguments</span>[<span class="ruby-value">:regions</span>] = <span class="ruby-constant">Array</span>(<span class="ruby-identifier">arguments</span>[<span class="ruby-value">:regions</span>])
391
+ <span class="ruby-identifier">new</span>(<span class="ruby-identifier">arguments</span>).<span class="ruby-identifier">run</span>
392
+ <span class="ruby-keyword">end</span></pre>
393
+ </div><!-- run-source -->
394
+
395
+ </div>
396
+
397
+
398
+
399
+
400
+ </div><!-- run-method -->
401
+
402
+
403
+ <div id="method-c-run-21" class="method-detail ">
404
+
405
+ <div class="method-heading">
406
+ <span class="method-name">run!</span><span
407
+ class="method-args">(arguments = {})</span>
408
+
409
+ <span class="method-click-advice">click to toggle source</span>
410
+
411
+ </div>
412
+
413
+
414
+ <div class="method-description">
415
+
416
+ <p>Run a custom signature that has not been saved. Useful for debugging a
417
+ custom signature. Returns a collection of alerts. Throws an error if not
418
+ successful.</p>
419
+
420
+ <h4 id="method-c-run-21-label-Parameters">Parameters<span><a href="#method-c-run-21-label-Parameters">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
421
+
422
+ <p><code>arguments</code> | Required | A hash of run arguments</p>
423
+
424
+ <h5 id="method-c-run-21-label-Valid+Arguments">Valid Arguments<span><a href="#method-c-run-21-label-Valid+Arguments">&para;</a> <a href="#documentation">&uarr;</a></span></h5>
425
+
426
+ <p><code>external_account_id</code> | Required | The ID of the external
427
+ account to run this custom signature against</p>
428
+
429
+ <p><code>signature</code> | Required | The code for this custom signature</p>
430
+
431
+ <p><code>language</code> | Required | The language of the custom signature.
432
+ Possible values are `ruby` or `javascript`</p>
433
+
434
+ <p><code>regions</code> | Required | Array of region names to run this custom
435
+ signature against</p>
436
+
437
+ <h4 id="method-c-run-21-label-Example">Example<span><a href="#method-c-run-21-label-Example">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
438
+
439
+ <pre class="ruby"><span class="ruby-identifier">signature</span> = <span class="ruby-node">&quot;# Demo Ruby Signature\r\nconfigure do |c|\r\n # Set regions to run in. Remove this line to run in all regions.\r\n c.valid_regions = [:us_east_1]\r\n # Override region to display as global. Useful when checking resources\r\n # like IAM that do not have a specific region.\r\n c.display_as = :global\r\n # deep_inspection works with set_data to automically collect\r\n # data fields for each alert. Not required.\r\n c.deep_inspection = [:users]\r\nend\r\n\r\n# Required perform method\r\ndef perform(aws)\r\n list_users = aws.iam.list_users\r\n count = list_users[:users].count\r\n\r\n # Set data for deep_inspection to use\r\n set_data(list_users)\r\n\r\n if count == 0\r\n fail(user_count: count, condition: &#39;count == 0&#39;)\r\n else\r\n pass(user_count: count, condition: &#39;count &gt;= 1&#39;)\r\n end\r\nend\r\n&quot;</span>
440
+ <span class="ruby-identifier">alerts</span> = <span class="ruby-constant">ESP</span><span class="ruby-operator">::</span><span class="ruby-constant">CustomSignature</span>.<span class="ruby-identifier">run!</span>(<span class="ruby-identifier">external_account_id</span><span class="ruby-operator">:</span> <span class="ruby-value">3</span>, <span class="ruby-identifier">regions</span><span class="ruby-operator">:</span> [<span class="ruby-string">&#39;us_east_1&#39;</span>], <span class="ruby-identifier">language</span><span class="ruby-operator">:</span> <span class="ruby-string">&#39;ruby&#39;</span>, <span class="ruby-identifier">signature</span><span class="ruby-operator">:</span> <span class="ruby-identifier">signature</span>)
441
+ </pre>
442
+
443
+
444
+
445
+
446
+ <div class="method-source-code" id="run-21-source">
447
+ <pre><span class="ruby-comment"># File lib/esp/resources/custom_signature.rb, line 28</span>
448
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">run!</span>(<span class="ruby-identifier">arguments</span> = {})
449
+ <span class="ruby-identifier">result</span> = <span class="ruby-identifier">run</span>(<span class="ruby-identifier">arguments</span>)
450
+ <span class="ruby-keyword">return</span> <span class="ruby-identifier">result</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">ActiveResource</span><span class="ruby-operator">::</span><span class="ruby-constant">Collection</span>)
451
+ <span class="ruby-identifier">result</span>.<span class="ruby-identifier">message</span> = <span class="ruby-identifier">result</span>.<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">full_messages</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39; &#39;</span>)
452
+ <span class="ruby-identifier">fail</span>(<span class="ruby-constant">ActiveResource</span><span class="ruby-operator">::</span><span class="ruby-constant">ResourceInvalid</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">result</span>)) <span class="ruby-comment"># rubocop:disable Style/RaiseArgs</span>
453
+ <span class="ruby-keyword">end</span></pre>
454
+ </div><!-- run-21-source -->
455
+
456
+ </div>
457
+
458
+
459
+
460
+
461
+ </div><!-- run-21-method -->
462
+
463
+
464
+ </section><!-- public-class-method-details -->
465
+
466
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
467
+ <h3 class="section-header">Public Instance Methods</h3>
468
+
469
+
470
+ <div id="method-i-organization" class="method-detail ">
471
+
472
+ <div class="method-heading">
473
+ <span class="method-name">organization</span><span
474
+ class="method-args">()</span>
475
+
476
+ <span class="method-click-advice">click to toggle source</span>
477
+
478
+ </div>
479
+
480
+
481
+ <div class="method-description">
482
+
483
+ <p>The organization this custom signature belongs to.</p>
484
+
485
+
486
+
487
+
488
+ <div class="method-source-code" id="organization-source">
489
+ <pre><span class="ruby-comment"># File lib/esp/resources/custom_signature.rb, line 5</span>
490
+ <span class="ruby-identifier">belongs_to</span> <span class="ruby-value">:organization</span>, <span class="ruby-identifier">class_name</span><span class="ruby-operator">:</span> <span class="ruby-string">&#39;ESP::Organization&#39;</span>
491
+ </pre>
492
+ </div><!-- organization-source -->
493
+
494
+ </div>
495
+
496
+
497
+
498
+
499
+ </div><!-- organization-method -->
500
+
501
+
502
+ <div id="method-i-run" class="method-detail ">
503
+
504
+ <div class="method-heading">
505
+ <span class="method-name">run</span><span
506
+ class="method-args">(arguments = {})</span>
507
+
508
+ <span class="method-click-advice">click to toggle source</span>
509
+
510
+ </div>
511
+
512
+
513
+ <div class="method-description">
514
+
515
+ <p>Run this custom signature instance. Returns a collection of alerts. If not
516
+ successful, returns a <a href="CustomSignature.html">CustomSignature</a>
517
+ object with the errors object populated.</p>
518
+
519
+ <h4 id="method-i-run-label-Parameters">Parameters<span><a href="#method-i-run-label-Parameters">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
520
+
521
+ <p><code>arguments</code> | Required | A hash of run arguments</p>
522
+
523
+ <h5 id="method-i-run-label-Valid+Arguments">Valid Arguments<span><a href="#method-i-run-label-Valid+Arguments">&para;</a> <a href="#documentation">&uarr;</a></span></h5>
524
+
525
+ <p><code>external_account_id</code> | Required | The ID of the external
526
+ account to run this custom signature against</p>
527
+
528
+ <p><code>regions</code> | Required | Array of region names to run this custom
529
+ signature against</p>
530
+
531
+ <h4 id="method-i-run-label-Example">Example<span><a href="#method-i-run-label-Example">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
532
+
533
+ <pre>custom_signature = ESP::CustomSignature.find(365)
534
+ alerts = custom_signature.run(external_account_id: 3, regions: [&#39;us_east_1&#39;])</pre>
535
+
536
+
537
+
538
+
539
+ <div class="method-source-code" id="run-source">
540
+ <pre><span class="ruby-comment"># File lib/esp/resources/custom_signature.rb, line 103</span>
541
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">run</span>(<span class="ruby-identifier">arguments</span> = {})
542
+ <span class="ruby-identifier">arguments</span> = <span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">with_indifferent_access</span>
543
+
544
+ <span class="ruby-identifier">attributes</span>[<span class="ruby-string">&#39;external_account_id&#39;</span>] <span class="ruby-operator">||=</span> <span class="ruby-identifier">arguments</span>[<span class="ruby-value">:external_account_id</span>]
545
+ <span class="ruby-identifier">attributes</span>[<span class="ruby-string">&#39;regions&#39;</span>] <span class="ruby-operator">||=</span> <span class="ruby-constant">Array</span>(<span class="ruby-identifier">arguments</span>[<span class="ruby-value">:regions</span>])
546
+
547
+ <span class="ruby-identifier">response</span> = <span class="ruby-identifier">connection</span>.<span class="ruby-identifier">post</span> <span class="ruby-identifier">endpoint</span>, <span class="ruby-identifier">to_json</span>
548
+ <span class="ruby-constant">ESP</span><span class="ruby-operator">::</span><span class="ruby-constant">Alert</span>.<span class="ruby-identifier">send</span>(<span class="ruby-value">:instantiate_collection</span>, <span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">format</span>.<span class="ruby-identifier">decode</span>(<span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>))
549
+ <span class="ruby-keyword">rescue</span> <span class="ruby-constant">ActiveResource</span><span class="ruby-operator">::</span><span class="ruby-constant">BadRequest</span>, <span class="ruby-constant">ActiveResource</span><span class="ruby-operator">::</span><span class="ruby-constant">ResourceInvalid</span>, <span class="ruby-constant">ActiveResource</span><span class="ruby-operator">::</span><span class="ruby-constant">ResourceNotFound</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">error</span>
550
+ <span class="ruby-identifier">load_remote_errors</span>(<span class="ruby-identifier">error</span>, <span class="ruby-keyword">true</span>)
551
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">code</span> = <span class="ruby-identifier">error</span>.<span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span>
552
+ <span class="ruby-keyword">self</span>
553
+ <span class="ruby-keyword">end</span></pre>
554
+ </div><!-- run-source -->
555
+
556
+ </div>
557
+
558
+
559
+
560
+
561
+ </div><!-- run-method -->
562
+
563
+
564
+ <div id="method-i-run-21" class="method-detail ">
565
+
566
+ <div class="method-heading">
567
+ <span class="method-name">run!</span><span
568
+ class="method-args">(arguments = {})</span>
569
+
570
+ <span class="method-click-advice">click to toggle source</span>
571
+
572
+ </div>
573
+
574
+
575
+ <div class="method-description">
576
+
577
+ <p>Run this custom signature instance. Returns a collection of alerts. Throws
578
+ an error if not successful.</p>
579
+
580
+ <h4 id="method-i-run-21-label-Parameters">Parameters<span><a href="#method-i-run-21-label-Parameters">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
581
+
582
+ <p><code>arguments</code> | Required | A hash of run arguments</p>
583
+
584
+ <h5 id="method-i-run-21-label-Valid+Arguments">Valid Arguments<span><a href="#method-i-run-21-label-Valid+Arguments">&para;</a> <a href="#documentation">&uarr;</a></span></h5>
585
+
586
+ <p><code>external_account_id</code> | Required | The ID of the external
587
+ account to run this custom signature against</p>
588
+
589
+ <p><code>regions</code> | Required | Array of region names to run this custom
590
+ signature against</p>
591
+
592
+ <h4 id="method-i-run-21-label-Example">Example<span><a href="#method-i-run-21-label-Example">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
593
+
594
+ <pre>custom_signature = ESP::CustomSignature.find(365)
595
+ alerts = custom_signature.run!(external_account_id: 3, regions: [&#39;us_east_1&#39;])</pre>
596
+
597
+
598
+
599
+
600
+ <div class="method-source-code" id="run-21-source">
601
+ <pre><span class="ruby-comment"># File lib/esp/resources/custom_signature.rb, line 79</span>
602
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">run!</span>(<span class="ruby-identifier">arguments</span> = {})
603
+ <span class="ruby-identifier">result</span> = <span class="ruby-identifier">run</span>(<span class="ruby-identifier">arguments</span>)
604
+ <span class="ruby-keyword">return</span> <span class="ruby-identifier">result</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">ActiveResource</span><span class="ruby-operator">::</span><span class="ruby-constant">Collection</span>)
605
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">message</span> = <span class="ruby-identifier">errors</span>.<span class="ruby-identifier">full_messages</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39; &#39;</span>)
606
+ <span class="ruby-identifier">fail</span>(<span class="ruby-constant">ActiveResource</span><span class="ruby-operator">::</span><span class="ruby-constant">ResourceInvalid</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword">self</span>)) <span class="ruby-comment"># rubocop:disable Style/RaiseArgs</span>
607
+ <span class="ruby-keyword">end</span></pre>
608
+ </div><!-- run-21-source -->
609
+
610
+ </div>
611
+
612
+
613
+
614
+
615
+ </div><!-- run-21-method -->
616
+
617
+
618
+ <div id="method-i-save" class="method-detail ">
619
+
620
+ <div class="method-heading">
621
+ <span class="method-name">save</span><span
622
+ class="method-args">()</span>
623
+
624
+ <span class="method-click-advice">click to toggle source</span>
625
+
626
+ </div>
627
+
628
+
629
+ <div class="method-description">
630
+
631
+ <p>Create or update a <a href="CustomSignature.html">CustomSignature</a></p>
632
+
633
+ <h5 id="method-i-save-label-Valid+Attributes">Valid Attributes<span><a href="#method-i-save-label-Valid+Attributes">&para;</a> <a href="#documentation">&uarr;</a></span></h5>
634
+
635
+ <p><code>active</code> | Not Required | Flag that determines if this custom
636
+ signature should run on reports</p>
637
+
638
+ <p><code>description</code> | Not Required | The description of the custom
639
+ signature that is displayed on alerts</p>
640
+
641
+ <p><code>identifier</code> | Required | The identifier to use for the custom
642
+ signature. Common format is AWS:&lt;Service&gt;-&lt;Number&gt; such as
643
+ AWS:IAM-001</p>
644
+
645
+ <p><code>language</code> | Required | The language of the custom signature.
646
+ Possible values are `ruby` or `javascript`</p>
647
+
648
+ <p><code>name</code> | Required | The name of the custom signature</p>
649
+
650
+ <p><code>resolution</code> | Not Required | Details for how to resolve this
651
+ custom signature that is displayed on alerts</p>
652
+
653
+ <p><code>risk_level</code> | Required | The risk-level of the problem
654
+ identified by the custom signature</p>
655
+
656
+ <p><code>signature</code> | Required | The code for this custom signature</p>
657
+
658
+ <h4 id="method-i-save-label-Example">Example<span><a href="#method-i-save-label-Example">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
659
+
660
+ <pre class="ruby"><span class="ruby-identifier">signature</span> = <span class="ruby-node">&quot;# Demo Ruby Signature\r\nconfigure do |c|\r\n # Set regions to run in. Remove this line to run in all regions.\r\n c.valid_regions = [:us_east_1]\r\n # Override region to display as global. Useful when checking resources\r\n # like IAM that do not have a specific region.\r\n c.display_as = :global\r\n # deep_inspection works with set_data to automically collect\r\n # data fields for each alert. Not required.\r\n c.deep_inspection = [:users]\r\nend\r\n\r\n# Required perform method\r\ndef perform(aws)\r\n list_users = aws.iam.list_users\r\n count = list_users[:users].count\r\n\r\n # Set data for deep_inspection to use\r\n set_data(list_users)\r\n\r\n if count == 0\r\n fail(user_count: count, condition: &#39;count == 0&#39;)\r\n else\r\n pass(user_count: count, condition: &#39;count &gt;= 1&#39;)\r\n end\r\nend\r\n&quot;</span>
661
+ <span class="ruby-identifier">custom_signature</span> = <span class="ruby-constant">ESP</span><span class="ruby-operator">::</span><span class="ruby-constant">CustomSignature</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">signature</span><span class="ruby-operator">:</span> <span class="ruby-identifier">signature</span>, <span class="ruby-identifier">description</span><span class="ruby-operator">:</span> <span class="ruby-string">&quot;A test custom signature.&quot;</span>, <span class="ruby-identifier">identifier</span><span class="ruby-operator">:</span> <span class="ruby-string">&quot;AWS::IAM::001&quot;</span>, <span class="ruby-identifier">language</span><span class="ruby-operator">:</span> <span class="ruby-string">&quot;ruby&quot;</span>, <span class="ruby-identifier">name</span><span class="ruby-operator">:</span> <span class="ruby-string">&quot;Test Signature&quot;</span>, <span class="ruby-identifier">risk_level</span><span class="ruby-operator">:</span> <span class="ruby-string">&quot;Medium&quot;</span>)
662
+ <span class="ruby-identifier">custom_signature</span>.<span class="ruby-identifier">save</span>
663
+ </pre>
664
+
665
+
666
+
667
+
668
+ <div class="method-source-code" id="save-source">
669
+ <pre><span class="ruby-comment"># File lib/esp/resources/custom_signature.rb, line 211</span>
670
+ </pre>
671
+ </div><!-- save-source -->
672
+
673
+ </div>
674
+
675
+
676
+
677
+
678
+ </div><!-- save-method -->
679
+
680
+
681
+ <div id="method-i-suppress" class="method-detail ">
682
+
683
+ <div class="method-heading">
684
+ <span class="method-name">suppress</span><span
685
+ class="method-args">(arguments = {})</span>
686
+
687
+ <span class="method-click-advice">click to toggle source</span>
688
+
689
+ </div>
690
+
691
+
692
+ <div class="method-description">
693
+
694
+ <p>Create a suppression for this custom signature.</p>
695
+
696
+ <h4 id="method-i-suppress-label-Parameter">Parameter<span><a href="#method-i-suppress-label-Parameter">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
697
+
698
+ <p><code>arguments</code> | Required | A hash of signature suppression
699
+ attributes</p>
700
+
701
+ <h5 id="method-i-suppress-label-Valid+Arguments">Valid Arguments<span><a href="#method-i-suppress-label-Valid+Arguments">&para;</a> <a href="#documentation">&uarr;</a></span></h5>
702
+
703
+ <p><code>regions</code> | Required | An array of region names to suppress.</p>
704
+
705
+ <p><code>external_account_ids</code> | Required | An Array of the external
706
+ accounts identified by <code>external_account_id</code> to suppress the
707
+ signature or custom signature on.</p>
708
+
709
+ <p><code>reason</code> | Required | The reason for creating the suppression.</p>
710
+
711
+ <h4 id="method-i-suppress-label-Example">Example<span><a href="#method-i-suppress-label-Example">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
712
+
713
+ <pre>suppress(regions: [&#39;us_east_1&#39;], external_account_ids: [5], reason: &#39;My very good reason for creating this suppression&#39;)</pre>
714
+
715
+
716
+
717
+
718
+ <div class="method-source-code" id="suppress-source">
719
+ <pre><span class="ruby-comment"># File lib/esp/resources/custom_signature.rb, line 133</span>
720
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">suppress</span>(<span class="ruby-identifier">arguments</span> = {})
721
+ <span class="ruby-identifier">arguments</span> = <span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">with_indifferent_access</span>
722
+ <span class="ruby-constant">ESP</span><span class="ruby-operator">::</span><span class="ruby-constant">Suppression</span><span class="ruby-operator">::</span><span class="ruby-constant">Signature</span>.<span class="ruby-identifier">create</span>(<span class="ruby-identifier">custom_signature_ids</span><span class="ruby-operator">:</span> [<span class="ruby-identifier">id</span>], <span class="ruby-identifier">regions</span><span class="ruby-operator">:</span> <span class="ruby-constant">Array</span>(<span class="ruby-identifier">arguments</span>[<span class="ruby-value">:regions</span>]), <span class="ruby-identifier">external_account_ids</span><span class="ruby-operator">:</span> <span class="ruby-constant">Array</span>(<span class="ruby-identifier">arguments</span>[<span class="ruby-value">:external_account_ids</span>]), <span class="ruby-identifier">reason</span><span class="ruby-operator">:</span> <span class="ruby-identifier">arguments</span>[<span class="ruby-value">:reason</span>])
723
+ <span class="ruby-keyword">end</span></pre>
724
+ </div><!-- suppress-source -->
725
+
726
+ </div>
727
+
728
+
729
+
730
+
731
+ </div><!-- suppress-method -->
732
+
733
+
734
+ </section><!-- public-instance-method-details -->
735
+
736
+ </section><!-- 5Buntitled-5D -->
737
+
738
+ </div><!-- documentation -->
739
+
740
+
741
+ <footer id="validator-badges">
742
+ <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
743
+ <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 4.0.0.
744
+ <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
745
+ </footer>
746
+