forked from aws/aws-sdk-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
service.go
289 lines (275 loc) · 10.2 KB
/
service.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
package applicationdiscoveryservice
import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/client"
"github.com/aws/aws-sdk-go/aws/client/metadata"
"github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/aws/signer/v4"
"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
)
// The AWS Application Discovery Service helps Systems Integrators quickly and
// reliably plan application migration projects by automatically identifying
// applications running in on-premises data centers, their associated dependencies,
// and their performance profile.
//
// Planning data center migrations can involve thousands of workloads that are
// often deeply interdependent. Application discovery and dependency mapping
// are important early first steps in the migration process, but difficult to
// perform at scale due to the lack of automated tools.
//
// The AWS Application Discovery Service automatically collects configuration
// and usage data from servers to develop a list of applications, how they perform,
// and how they are interdependent. This information is securely retained in
// an AWS Application Discovery Service database which you can export as a CSV
// file into your preferred visualization tool or cloud migration solution to
// help reduce the complexity and time in planning your cloud migration.
//
// The Application Discovery Service is currently available for preview. Only
// customers who are engaged with AWS Professional Services (https://aws.amazon.com/professional-services/)
// or a certified AWS partner can use the service. To see the list of certified
// partners and request access to the Application Discovery Service, complete
// the following preview form (http://aws.amazon.com/application-discovery/preview/).
//
// This API reference provides descriptions, syntax, and usage examples for
// each of the actions and data types for the Discovery Service. The topic for
// each action shows the API request parameters and the response. Alternatively,
// you can use one of the AWS SDKs to access an API that is tailored to the
// programming language or platform that you're using. For more information,
// see AWS SDKs (http://aws.amazon.com/tools/#SDKs).
//
// This guide is intended for use with the AWS Discovery Service User Guide
// (http://docs.aws.amazon.com/application-discovery/latest/userguide/what-is-appdiscovery.html).
//
// The following are short descriptions of each API action, organized by function.
//
// Managing AWS Agents Using the Application Discovery Service
//
// An AWS agent is software that you install on on-premises servers and virtual
// machines that are targeted for discovery and migration. Agents run on Linux
// and Windows Server and collect server configuration and activity information
// about your applications and infrastructure. Specifically, agents collect
// the following information and send it to the Application Discovery Service
// using Secure Sockets Layer (SSL) encryption:
//
// * User information (user name, home directory)
//
// * Group information (name)
//
// * List of installed packages
//
// * List of kernel modules
//
// * All create and stop process events
//
// * DNS queries
//
// * NIC information
//
// * TCP/UDP process listening ports
//
// * TCPV4/V6 connections
//
// * Operating system information
//
// * System performance
//
// * Process performance
//
// The Application Discovery Service API includes the following actions to manage
// AWS agents:
//
// * StartDataCollectionByAgentIds: Instructs the specified agents to start
// collecting data. The Application Discovery Service takes several minutes
// to receive and process data after you initiate data collection.
//
// * StopDataCollectionByAgentIds: Instructs the specified agents to stop
// collecting data.
//
// * DescribeAgents: Lists AWS agents by ID or lists all agents associated
// with your user account if you did not specify an agent ID. The output
// includes agent IDs, IP addresses, media access control (MAC) addresses,
// agent health, host name where the agent resides, and the version number
// of each agent.
//
// Querying Configuration Items
//
// A configuration item is an IT asset that was discovered in your data center
// by an AWS agent. When you use the Application Discovery Service, you can
// specify filters and query specific configuration items. The service supports
// Server, Process, and Connection configuration items. This means you can specify
// a value for the following keys and query your IT assets:
//
// Server
//
// * server.HostName
//
// * server.osName
//
// * server.osVersion
//
// * server.configurationId
//
// * server.agentId
//
// Process
//
// * process.name
//
// * process.CommandLine
//
// * process.configurationId
//
// * server.hostName
//
// * server.osName
//
// * server.osVersion
//
// * server.configurationId
//
// * server.agentId
//
// Connection
//
// * connection.sourceIp
//
// * connection.sourcePort
//
// * connection.destinationIp
//
// * connection.destinationPort
//
// * sourceProcess.configurationId
//
// * sourceProcess.commandLine
//
// * sourceProcess.name
//
// * destinationProcessId.configurationId
//
// * destinationProcess.commandLine
//
// * destinationProcess.name
//
// * sourceServer.configurationId
//
// * sourceServer.hostName
//
// * sourceServer.osName
//
// * sourceServer.osVersion
//
// * destinationServer.configurationId
//
// * destinationServer.hostName
//
// * destinationServer.osName
//
// * destinationServer.osVersion
//
// The Application Discovery Service includes the following actions for querying
// configuration items.
//
// * DescribeConfigurations: Retrieves a list of attributes for a specific
// configuration ID. For example, the output for a server configuration item
// includes a list of attributes about the server, including host name, operating
// system, number of network cards, etc.
//
// * ListConfigurations: Retrieves a list of configuration items according
// to the criteria you specify in a filter. The filter criteria identify
// relationship requirements. For example, you can specify filter criteria
// of process.name with values of nginx and apache.
//
// Tagging Discovered Configuration Items
//
// You can tag discovered configuration items. Tags are metadata that help you
// categorize IT assets in your data center. Tags use a key-value format. For
// example, {"key": "serverType", "value": "webServer"}.
//
// * CreateTags: Creates one or more tags for a configuration items.
//
// * DescribeTags: Retrieves a list of configuration items that are tagged
// with a specific tag. Or, retrieves a list of all tags assigned to a specific
// configuration item.
//
// * DeleteTags: Deletes the association between a configuration item and
// one or more tags.
//
// Exporting Data
//
// You can export data as a CSV file to an Amazon S3 bucket or into your preferred
// visualization tool or cloud migration solution to help reduce the complexity
// and time in planning your cloud migration.
//
// * ExportConfigurations: Exports all discovered configuration data to an
// Amazon S3 bucket. Data includes tags and tag associations, processes,
// connections, servers, and system performance. This API returns an export
// ID which you can query using the GetExportStatus API.
//
// * DescribeExportConfigurations: Gets the status of the data export. When
// the export is complete, the service returns an Amazon S3 URL where you
// can download CSV files that include the data.
//The service client's operations are safe to be used concurrently.
// It is not safe to mutate any of the client's properties though.
type ApplicationDiscoveryService struct {
*client.Client
}
// Used for custom client initialization logic
var initClient func(*client.Client)
// Used for custom request initialization logic
var initRequest func(*request.Request)
// A ServiceName is the name of the service the client will make API calls to.
const ServiceName = "discovery"
// New creates a new instance of the ApplicationDiscoveryService client with a session.
// If additional configuration is needed for the client instance use the optional
// aws.Config parameter to add your extra config.
//
// Example:
// // Create a ApplicationDiscoveryService client from just a session.
// svc := applicationdiscoveryservice.New(mySession)
//
// // Create a ApplicationDiscoveryService client with additional configuration
// svc := applicationdiscoveryservice.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
func New(p client.ConfigProvider, cfgs ...*aws.Config) *ApplicationDiscoveryService {
c := p.ClientConfig(ServiceName, cfgs...)
return newClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
}
// newClient creates, initializes and returns a new service client instance.
func newClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *ApplicationDiscoveryService {
svc := &ApplicationDiscoveryService{
Client: client.New(
cfg,
metadata.ClientInfo{
ServiceName: ServiceName,
SigningRegion: signingRegion,
Endpoint: endpoint,
APIVersion: "2015-11-01",
JSONVersion: "1.1",
TargetPrefix: "AWSPoseidonService_V2015_11_01",
},
handlers,
),
}
// Handlers
svc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler)
svc.Handlers.Build.PushBackNamed(jsonrpc.BuildHandler)
svc.Handlers.Unmarshal.PushBackNamed(jsonrpc.UnmarshalHandler)
svc.Handlers.UnmarshalMeta.PushBackNamed(jsonrpc.UnmarshalMetaHandler)
svc.Handlers.UnmarshalError.PushBackNamed(jsonrpc.UnmarshalErrorHandler)
// Run custom client initialization if present
if initClient != nil {
initClient(svc.Client)
}
return svc
}
// newRequest creates a new request for a ApplicationDiscoveryService operation and runs any
// custom request initialization.
func (c *ApplicationDiscoveryService) newRequest(op *request.Operation, params, data interface{}) *request.Request {
req := c.NewRequest(op, params, data)
// Run custom request initialization if present
if initRequest != nil {
initRequest(req)
}
return req
}