1
1
package s3control
2
2
3
3
import (
4
+ "context"
4
5
"fmt"
5
6
"log"
6
7
"strings"
@@ -9,6 +10,8 @@ import (
9
10
"github.com/aws/aws-sdk-go/aws/arn"
10
11
"github.com/aws/aws-sdk-go/service/s3control"
11
12
"github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr"
13
+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
14
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
12
15
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
13
16
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
14
17
"github.com/hashicorp/terraform-provider-aws/internal/conns"
@@ -17,12 +20,16 @@ import (
17
20
"github.com/hashicorp/terraform-provider-aws/internal/verify"
18
21
)
19
22
20
- func ResourceObjectLambdaAccessPoint () * schema.Resource {
23
+ func init () {
24
+ _sp .registerSDKResourceFactory ("aws_s3control_object_lambda_access_point" , resourceObjectLambdaAccessPoint )
25
+ }
26
+
27
+ func resourceObjectLambdaAccessPoint () * schema.Resource {
21
28
return & schema.Resource {
22
- Create : resourceObjectLambdaAccessPointCreate ,
23
- Read : resourceObjectLambdaAccessPointRead ,
24
- Update : resourceObjectLambdaAccessPointUpdate ,
25
- Delete : resourceObjectLambdaAccessPointDelete ,
29
+ CreateWithoutTimeout : resourceObjectLambdaAccessPointCreate ,
30
+ ReadWithoutTimeout : resourceObjectLambdaAccessPointRead ,
31
+ UpdateWithoutTimeout : resourceObjectLambdaAccessPointUpdate ,
32
+ DeleteWithoutTimeout : resourceObjectLambdaAccessPointDelete ,
26
33
27
34
Importer : & schema.ResourceImporter {
28
35
State : schema .ImportStatePassthrough ,
@@ -119,7 +126,7 @@ func ResourceObjectLambdaAccessPoint() *schema.Resource {
119
126
}
120
127
}
121
128
122
- func resourceObjectLambdaAccessPointCreate (d * schema.ResourceData , meta interface {}) error {
129
+ func resourceObjectLambdaAccessPointCreate (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
123
130
conn := meta .(* conns.AWSClient ).S3ControlConn ()
124
131
125
132
accountID := meta .(* conns.AWSClient ).AccountID
@@ -138,28 +145,27 @@ func resourceObjectLambdaAccessPointCreate(d *schema.ResourceData, meta interfac
138
145
input .Configuration = expandObjectLambdaConfiguration (v .([]interface {})[0 ].(map [string ]interface {}))
139
146
}
140
147
141
- log .Printf ("[DEBUG] Creating S3 Object Lambda Access Point: %s" , input )
142
- _ , err := conn .CreateAccessPointForObjectLambda (input )
148
+ _ , err := conn .CreateAccessPointForObjectLambdaWithContext (ctx , input )
143
149
144
150
if err != nil {
145
- return fmt .Errorf ("error creating S3 Object Lambda Access Point (%s): %w " , resourceID , err )
151
+ return diag .Errorf ("creating S3 Object Lambda Access Point (%s): %s " , resourceID , err )
146
152
}
147
153
148
154
d .SetId (resourceID )
149
155
150
- return resourceObjectLambdaAccessPointRead (d , meta )
156
+ return resourceObjectLambdaAccessPointRead (ctx , d , meta )
151
157
}
152
158
153
- func resourceObjectLambdaAccessPointRead (d * schema.ResourceData , meta interface {}) error {
159
+ func resourceObjectLambdaAccessPointRead (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
154
160
conn := meta .(* conns.AWSClient ).S3ControlConn ()
155
161
156
162
accountID , name , err := ObjectLambdaAccessPointParseResourceID (d .Id ())
157
163
158
164
if err != nil {
159
- return err
165
+ return diag . FromErr ( err )
160
166
}
161
167
162
- output , err := FindObjectLambdaAccessPointByAccountIDAndName (conn , accountID , name )
168
+ output , err := FindObjectLambdaAccessPointByAccountIDAndName (ctx , conn , accountID , name )
163
169
164
170
if ! d .IsNewResource () && tfresource .NotFound (err ) {
165
171
log .Printf ("[WARN] S3 Object Lambda Access Point (%s) not found, removing from state" , d .Id ())
@@ -168,7 +174,7 @@ func resourceObjectLambdaAccessPointRead(d *schema.ResourceData, meta interface{
168
174
}
169
175
170
176
if err != nil {
171
- return fmt .Errorf ("error reading S3 Object Lambda Access Point (%s): %w " , d .Id (), err )
177
+ return diag .Errorf ("reading S3 Object Lambda Access Point (%s): %s " , d .Id (), err )
172
178
}
173
179
174
180
d .Set ("account_id" , accountID )
@@ -182,20 +188,20 @@ func resourceObjectLambdaAccessPointRead(d *schema.ResourceData, meta interface{
182
188
}.String ()
183
189
d .Set ("arn" , arn )
184
190
if err := d .Set ("configuration" , []interface {}{flattenObjectLambdaConfiguration (output )}); err != nil {
185
- return fmt .Errorf ("error setting configuration: %w " , err )
191
+ return diag .Errorf ("setting configuration: %s " , err )
186
192
}
187
193
d .Set ("name" , name )
188
194
189
195
return nil
190
196
}
191
197
192
- func resourceObjectLambdaAccessPointUpdate (d * schema.ResourceData , meta interface {}) error {
198
+ func resourceObjectLambdaAccessPointUpdate (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
193
199
conn := meta .(* conns.AWSClient ).S3ControlConn ()
194
200
195
201
accountID , name , err := ObjectLambdaAccessPointParseResourceID (d .Id ())
196
202
197
203
if err != nil {
198
- return err
204
+ return diag . FromErr ( err )
199
205
}
200
206
201
207
input := & s3control.PutAccessPointConfigurationForObjectLambdaInput {
@@ -207,27 +213,26 @@ func resourceObjectLambdaAccessPointUpdate(d *schema.ResourceData, meta interfac
207
213
input .Configuration = expandObjectLambdaConfiguration (v .([]interface {})[0 ].(map [string ]interface {}))
208
214
}
209
215
210
- log .Printf ("[DEBUG] Updating S3 Object Lambda Access Point: %s" , input )
211
- _ , err = conn .PutAccessPointConfigurationForObjectLambda (input )
216
+ _ , err = conn .PutAccessPointConfigurationForObjectLambdaWithContext (ctx , input )
212
217
213
218
if err != nil {
214
- return fmt .Errorf ("error updating S3 Object Lambda Access Point (%s): %w " , d .Id (), err )
219
+ return diag .Errorf ("updating S3 Object Lambda Access Point (%s): %s " , d .Id (), err )
215
220
}
216
221
217
- return resourceObjectLambdaAccessPointRead (d , meta )
222
+ return resourceObjectLambdaAccessPointRead (ctx , d , meta )
218
223
}
219
224
220
- func resourceObjectLambdaAccessPointDelete (d * schema.ResourceData , meta interface {}) error {
225
+ func resourceObjectLambdaAccessPointDelete (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
221
226
conn := meta .(* conns.AWSClient ).S3ControlConn ()
222
227
223
228
accountID , name , err := ObjectLambdaAccessPointParseResourceID (d .Id ())
224
229
225
230
if err != nil {
226
- return err
231
+ return diag . FromErr ( err )
227
232
}
228
233
229
234
log .Printf ("[DEBUG] Deleting S3 Object Lambda Access Point: %s" , d .Id ())
230
- _ , err = conn .DeleteAccessPointForObjectLambda ( & s3control.DeleteAccessPointForObjectLambdaInput {
235
+ _ , err = conn .DeleteAccessPointForObjectLambdaWithContext ( ctx , & s3control.DeleteAccessPointForObjectLambdaInput {
231
236
AccountId : aws .String (accountID ),
232
237
Name : aws .String (name ),
233
238
})
@@ -237,12 +242,38 @@ func resourceObjectLambdaAccessPointDelete(d *schema.ResourceData, meta interfac
237
242
}
238
243
239
244
if err != nil {
240
- return fmt .Errorf ("error deleting S3 Object Lambda Access Point (%s): %w " , d .Id (), err )
245
+ return diag .Errorf ("deleting S3 Object Lambda Access Point (%s): %s " , d .Id (), err )
241
246
}
242
247
243
248
return nil
244
249
}
245
250
251
+ func FindObjectLambdaAccessPointByAccountIDAndName (ctx context.Context , conn * s3control.S3Control , accountID string , name string ) (* s3control.ObjectLambdaConfiguration , error ) {
252
+ input := & s3control.GetAccessPointConfigurationForObjectLambdaInput {
253
+ AccountId : aws .String (accountID ),
254
+ Name : aws .String (name ),
255
+ }
256
+
257
+ output , err := conn .GetAccessPointConfigurationForObjectLambdaWithContext (ctx , input )
258
+
259
+ if tfawserr .ErrCodeEquals (err , errCodeNoSuchAccessPoint ) {
260
+ return nil , & resource.NotFoundError {
261
+ LastError : err ,
262
+ LastRequest : input ,
263
+ }
264
+ }
265
+
266
+ if err != nil {
267
+ return nil , err
268
+ }
269
+
270
+ if output == nil || output .Configuration == nil {
271
+ return nil , tfresource .NewEmptyResultError (input )
272
+ }
273
+
274
+ return output .Configuration , nil
275
+ }
276
+
246
277
const objectLambdaAccessPointResourceIDSeparator = ":"
247
278
248
279
func ObjectLambdaAccessPointCreateResourceID (accountID , accessPointName string ) string {
0 commit comments