-
Notifications
You must be signed in to change notification settings - Fork 597
/
api_op_CreateSMBFileShare.go
269 lines (227 loc) · 9.87 KB
/
api_op_CreateSMBFileShare.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
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
package storagegateway
import (
"context"
"fmt"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/internal/awsutil"
)
// CreateSMBFileShareInput
// Please also see https://docs.aws.amazon.com/goto/WebAPI/storagegateway-2013-06-30/CreateSMBFileShareInput
type CreateSMBFileShareInput struct {
_ struct{} `type:"structure"`
// A list of users in the Active Directory that will be granted administrator
// privileges on the file share. These users can do all file operations as the
// super-user.
//
// Use this option very carefully, because any user in this list can do anything
// they like on the file share, regardless of file permissions.
AdminUserList []string `type:"list"`
// The authentication method that users use to access the file share.
//
// Valid values are ActiveDirectory or GuestAccess. The default is ActiveDirectory.
Authentication *string `min:"5" type:"string"`
// A unique string value that you supply that is used by file gateway to ensure
// idempotent file share creation.
//
// ClientToken is a required field
ClientToken *string `min:"5" type:"string" required:"true"`
// The default storage class for objects put into an Amazon S3 bucket by the
// file gateway. Possible values are S3_STANDARD, S3_STANDARD_IA, or S3_ONEZONE_IA.
// If this field is not populated, the default value S3_STANDARD is used. Optional.
DefaultStorageClass *string `min:"5" type:"string"`
// The Amazon Resource Name (ARN) of the file gateway on which you want to create
// a file share.
//
// GatewayARN is a required field
GatewayARN *string `min:"50" type:"string" required:"true"`
// A value that enables guessing of the MIME type for uploaded objects based
// on file extensions. Set this value to true to enable MIME type guessing,
// and otherwise to false. The default value is true.
GuessMIMETypeEnabled *bool `type:"boolean"`
// A list of users or groups in the Active Directory that are not allowed to
// access the file share. A group must be prefixed with the @ character. For
// example @group1. Can only be set if Authentication is set to ActiveDirectory.
InvalidUserList []string `type:"list"`
// True to use Amazon S3 server side encryption with your own AWS KMS key, or
// false to use a key managed by Amazon S3. Optional.
KMSEncrypted *bool `type:"boolean"`
// The Amazon Resource Name (ARN) of the AWS KMS key used for Amazon S3 server
// side encryption. This value can only be set when KMSEncrypted is true. Optional.
KMSKey *string `min:"7" type:"string"`
// The ARN of the backed storage used for storing file data.
//
// LocationARN is a required field
LocationARN *string `min:"16" type:"string" required:"true"`
// A value that sets the access control list permission for objects in the S3
// bucket that a file gateway puts objects into. The default value is "private".
ObjectACL ObjectACL `type:"string" enum:"true"`
// A value that sets the write status of a file share. This value is true if
// the write status is read-only, and otherwise false.
ReadOnly *bool `type:"boolean"`
// A value that sets who pays the cost of the request and the cost associated
// with data download from the S3 bucket. If this value is set to true, the
// requester pays the costs. Otherwise the S3 bucket owner pays. However, the
// S3 bucket owner always pays the cost of storing data.
//
// RequesterPays is a configuration for the S3 bucket that backs the file share,
// so make sure that the configuration on the file share is the same as the
// S3 bucket configuration.
RequesterPays *bool `type:"boolean"`
// The ARN of the AWS Identity and Access Management (IAM) role that a file
// gateway assumes when it accesses the underlying storage.
//
// Role is a required field
Role *string `min:"20" type:"string" required:"true"`
// Set this value to "true to enable ACL (access control list) on the SMB file
// share. Set it to "false" to map file and directory permissions to the POSIX
// permissions.
//
// For more information, see https://docs.aws.amazon.com/storagegateway/latest/userguide/smb-acl.html
// in the Storage Gateway User Guide.
SMBACLEnabled *bool `type:"boolean"`
// A list of up to 50 tags that can be assigned to the NFS file share. Each
// tag is a key-value pair.
//
// Valid characters for key and value are letters, spaces, and numbers representable
// in UTF-8 format, and the following special characters: + - = . _ : / @. The
// maximum length of a tag's key is 128 characters, and the maximum length for
// a tag's value is 256.
Tags []Tag `type:"list"`
// A list of users or groups in the Active Directory that are allowed to access
// the file share. A group must be prefixed with the @ character. For example
// @group1. Can only be set if Authentication is set to ActiveDirectory.
ValidUserList []string `type:"list"`
}
// String returns the string representation
func (s CreateSMBFileShareInput) String() string {
return awsutil.Prettify(s)
}
// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateSMBFileShareInput) Validate() error {
invalidParams := aws.ErrInvalidParams{Context: "CreateSMBFileShareInput"}
if s.Authentication != nil && len(*s.Authentication) < 5 {
invalidParams.Add(aws.NewErrParamMinLen("Authentication", 5))
}
if s.ClientToken == nil {
invalidParams.Add(aws.NewErrParamRequired("ClientToken"))
}
if s.ClientToken != nil && len(*s.ClientToken) < 5 {
invalidParams.Add(aws.NewErrParamMinLen("ClientToken", 5))
}
if s.DefaultStorageClass != nil && len(*s.DefaultStorageClass) < 5 {
invalidParams.Add(aws.NewErrParamMinLen("DefaultStorageClass", 5))
}
if s.GatewayARN == nil {
invalidParams.Add(aws.NewErrParamRequired("GatewayARN"))
}
if s.GatewayARN != nil && len(*s.GatewayARN) < 50 {
invalidParams.Add(aws.NewErrParamMinLen("GatewayARN", 50))
}
if s.KMSKey != nil && len(*s.KMSKey) < 7 {
invalidParams.Add(aws.NewErrParamMinLen("KMSKey", 7))
}
if s.LocationARN == nil {
invalidParams.Add(aws.NewErrParamRequired("LocationARN"))
}
if s.LocationARN != nil && len(*s.LocationARN) < 16 {
invalidParams.Add(aws.NewErrParamMinLen("LocationARN", 16))
}
if s.Role == nil {
invalidParams.Add(aws.NewErrParamRequired("Role"))
}
if s.Role != nil && len(*s.Role) < 20 {
invalidParams.Add(aws.NewErrParamMinLen("Role", 20))
}
if s.Tags != nil {
for i, v := range s.Tags {
if err := v.Validate(); err != nil {
invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(aws.ErrInvalidParams))
}
}
}
if invalidParams.Len() > 0 {
return invalidParams
}
return nil
}
// CreateSMBFileShareOutput
// Please also see https://docs.aws.amazon.com/goto/WebAPI/storagegateway-2013-06-30/CreateSMBFileShareOutput
type CreateSMBFileShareOutput struct {
_ struct{} `type:"structure"`
// The Amazon Resource Name (ARN) of the newly created file share.
FileShareARN *string `min:"50" type:"string"`
}
// String returns the string representation
func (s CreateSMBFileShareOutput) String() string {
return awsutil.Prettify(s)
}
const opCreateSMBFileShare = "CreateSMBFileShare"
// CreateSMBFileShareRequest returns a request value for making API operation for
// AWS Storage Gateway.
//
// Creates a Server Message Block (SMB) file share on an existing file gateway.
// In Storage Gateway, a file share is a file system mount point backed by Amazon
// S3 cloud storage. Storage Gateway expose file shares using a SMB interface.
// This operation is only supported for file gateways.
//
// File gateways require AWS Security Token Service (AWS STS) to be activated
// to enable you to create a file share. Make sure that AWS STS is activated
// in the AWS Region you are creating your file gateway in. If AWS STS is not
// activated in this AWS Region, activate it. For information about how to activate
// AWS STS, see Activating and Deactivating AWS STS in an AWS Region (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)
// in the AWS Identity and Access Management User Guide.
//
// File gateways don't support creating hard or symbolic links on a file share.
//
// // Example sending a request using CreateSMBFileShareRequest.
// req := client.CreateSMBFileShareRequest(params)
// resp, err := req.Send(context.TODO())
// if err == nil {
// fmt.Println(resp)
// }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/storagegateway-2013-06-30/CreateSMBFileShare
func (c *Client) CreateSMBFileShareRequest(input *CreateSMBFileShareInput) CreateSMBFileShareRequest {
op := &aws.Operation{
Name: opCreateSMBFileShare,
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &CreateSMBFileShareInput{}
}
req := c.newRequest(op, input, &CreateSMBFileShareOutput{})
return CreateSMBFileShareRequest{Request: req, Input: input, Copy: c.CreateSMBFileShareRequest}
}
// CreateSMBFileShareRequest is the request type for the
// CreateSMBFileShare API operation.
type CreateSMBFileShareRequest struct {
*aws.Request
Input *CreateSMBFileShareInput
Copy func(*CreateSMBFileShareInput) CreateSMBFileShareRequest
}
// Send marshals and sends the CreateSMBFileShare API request.
func (r CreateSMBFileShareRequest) Send(ctx context.Context) (*CreateSMBFileShareResponse, error) {
r.Request.SetContext(ctx)
err := r.Request.Send()
if err != nil {
return nil, err
}
resp := &CreateSMBFileShareResponse{
CreateSMBFileShareOutput: r.Request.Data.(*CreateSMBFileShareOutput),
response: &aws.Response{Request: r.Request},
}
return resp, nil
}
// CreateSMBFileShareResponse is the response type for the
// CreateSMBFileShare API operation.
type CreateSMBFileShareResponse struct {
*CreateSMBFileShareOutput
response *aws.Response
}
// SDKResponseMetdata returns the response metadata for the
// CreateSMBFileShare request.
func (r *CreateSMBFileShareResponse) SDKResponseMetdata() *aws.Response {
return r.response
}