Skip to content

Commit 9268df9

Browse files
authored
Merge pull request #356 from fujiwara/fix/v1-create-url
fix: deploy function url after create function.
2 parents b3ec4d3 + 6fb0198 commit 9268df9

File tree

2 files changed

+43
-29
lines changed

2 files changed

+43
-29
lines changed

deploy.go

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ func (app *App) Deploy(ctx context.Context, opt *DeployOption) error {
9090
if err != nil {
9191
return fmt.Errorf("failed to load function url config: %w", err)
9292
}
93-
return app.deployFunctionURL(ctx, fc)
93+
return app.deployFunctionURL(ctx, fc, opt)
9494
}
9595
}
9696

@@ -104,10 +104,16 @@ func (app *App) Deploy(ctx context.Context, opt *DeployOption) error {
104104
FunctionName: fn.FunctionName,
105105
}); err != nil {
106106
var nfe *types.ResourceNotFoundException
107-
if errors.As(err, &nfe) {
108-
return app.create(ctx, opt, fn)
107+
if !errors.As(err, &nfe) {
108+
return err
109109
}
110-
return err
110+
if err := app.create(ctx, opt, fn); err != nil {
111+
return err
112+
}
113+
if err := deployFunctionURL(ctx); err != nil {
114+
return err
115+
}
116+
return nil
111117
} else if err := validateUpdateFunction(current.Configuration, current.Code, fn); err != nil {
112118
return err
113119
}
@@ -160,7 +166,7 @@ func (app *App) Deploy(ctx context.Context, opt *DeployOption) error {
160166
proc := func(ctx context.Context) error {
161167
return app.updateFunctionConfiguration(ctx, confIn)
162168
}
163-
if err := app.ensureLastUpdateStatusSuccessful(ctx, *fn.FunctionName, "updating function configuration", proc); err != nil {
169+
if err := app.ensureLastUpdateStatusSuccessful(ctx, *fn.FunctionName, "updating function configuration", proc, opt.label()); err != nil {
164170
return fmt.Errorf("failed to update function configuration: %w", err)
165171
}
166172
}
@@ -190,7 +196,7 @@ func (app *App) Deploy(ctx context.Context, opt *DeployOption) error {
190196
res, err = app.updateFunctionCode(ctx, codeIn)
191197
return err
192198
}
193-
if err := app.ensureLastUpdateStatusSuccessful(ctx, *fn.FunctionName, "updating function code", proc); err != nil {
199+
if err := app.ensureLastUpdateStatusSuccessful(ctx, *fn.FunctionName, "updating function code", proc, opt.label()); err != nil {
194200
return err
195201
}
196202
if res.Version != nil {
@@ -256,19 +262,19 @@ func (app *App) updateFunctionCode(ctx context.Context, in *lambda.UpdateFunctio
256262
return res, nil
257263
}
258264

259-
func (app *App) ensureLastUpdateStatusSuccessful(ctx context.Context, name string, msg string, code func(ctx context.Context) error) error {
260-
log.Println("[info]", msg, "...")
265+
func (app *App) ensureLastUpdateStatusSuccessful(ctx context.Context, name string, msg string, code func(ctx context.Context) error, label string) error {
266+
log.Println("[info]", msg, "...", label)
261267
if err := app.waitForLastUpdateStatusSuccessful(ctx, name); err != nil {
262268
return err
263269
}
264270
if err := code(ctx); err != nil {
265271
return err
266272
}
267-
log.Println("[info]", msg, "accepted. waiting for LastUpdateStatus to be successful.")
273+
log.Println("[info]", msg, "accepted. waiting for LastUpdateStatus to be successful.", label)
268274
if err := app.waitForLastUpdateStatusSuccessful(ctx, name); err != nil {
269275
return err
270276
}
271-
log.Println("[info]", msg, "successfully")
277+
log.Println("[info]", msg, "successfully", label)
272278
return nil
273279
}
274280

functionurl.go

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -171,22 +171,22 @@ func (app *App) loadFunctionUrl(path string, functionName string) (*FunctionURL,
171171
return f, nil
172172
}
173173

174-
func (app *App) deployFunctionURL(ctx context.Context, fc *FunctionURL) error {
175-
log.Println("[info] deploying function url...")
174+
func (app *App) deployFunctionURL(ctx context.Context, fc *FunctionURL, opt *DeployOption) error {
175+
log.Printf("[info] deploying function url... %s", opt.label())
176176

177-
if err := app.deployFunctionURLConfig(ctx, fc); err != nil {
177+
if err := app.deployFunctionURLConfig(ctx, fc, opt); err != nil {
178178
return fmt.Errorf("failed to deploy function url config: %w", err)
179179
}
180180

181-
if err := app.deployFunctionURLPermissions(ctx, fc); err != nil {
181+
if err := app.deployFunctionURLPermissions(ctx, fc, opt); err != nil {
182182
return fmt.Errorf("failed to deploy function url permissions: %w", err)
183183
}
184184

185-
log.Println("[info] deployed function url")
185+
log.Println("[info] deployed function url", opt.label())
186186
return nil
187187
}
188188

189-
func (app *App) deployFunctionURLConfig(ctx context.Context, fc *FunctionURL) error {
189+
func (app *App) deployFunctionURLConfig(ctx context.Context, fc *FunctionURL, opt *DeployOption) error {
190190
create := false
191191
fqFunctionName := fullQualifiedFunctionName(*fc.Config.FunctionName, fc.Config.Qualifier)
192192
functinoUrlConfig, err := app.lambda.GetFunctionUrlConfig(ctx, &lambda.GetFunctionUrlConfigInput{
@@ -196,13 +196,18 @@ func (app *App) deployFunctionURLConfig(ctx context.Context, fc *FunctionURL) er
196196
if err != nil {
197197
var nfe *types.ResourceNotFoundException
198198
if errors.As(err, &nfe) {
199-
log.Printf("[info] function url config for %s not found. creating", fqFunctionName)
199+
log.Printf("[info] function url config for %s not found. creating %s", fqFunctionName, opt.label())
200200
create = true
201201
} else {
202202
return fmt.Errorf("failed to get function url config: %w", err)
203203
}
204204
}
205205

206+
if opt.DryRun {
207+
log.Println("[info] dry-run mode. skipping function url config deployment")
208+
return nil
209+
}
210+
206211
if create {
207212
res, err := app.lambda.CreateFunctionUrlConfig(ctx, fc.Config)
208213
if err != nil {
@@ -232,7 +237,7 @@ func (app *App) deployFunctionURLConfig(ctx context.Context, fc *FunctionURL) er
232237
return nil
233238
}
234239

235-
func (app *App) deployFunctionURLPermissions(ctx context.Context, fc *FunctionURL) error {
240+
func (app *App) deployFunctionURLPermissions(ctx context.Context, fc *FunctionURL, opt *DeployOption) error {
236241
adds, removes, err := app.calcFunctionURLPermissionsDiff(ctx, fc)
237242
if err != nil {
238243
return err
@@ -242,22 +247,25 @@ func (app *App) deployFunctionURLPermissions(ctx context.Context, fc *FunctionUR
242247
return nil
243248
}
244249

245-
log.Printf("[info] adding %d permissions", len(adds))
246-
for _, in := range adds {
247-
if _, err := app.lambda.AddPermission(ctx, in); err != nil {
248-
return fmt.Errorf("failed to add permission: %w", err)
250+
log.Printf("[info] adding %d permissions %s", len(adds), opt.label())
251+
if !opt.DryRun {
252+
for _, in := range adds {
253+
if _, err := app.lambda.AddPermission(ctx, in); err != nil {
254+
return fmt.Errorf("failed to add permission: %w", err)
255+
}
256+
log.Printf("[info] added permission Sid: %s", *in.StatementId)
249257
}
250-
log.Printf("[info] added permission Sid: %s", *in.StatementId)
251258
}
252259

253-
log.Printf("[info] removing %d permissions", len(removes))
254-
for _, in := range removes {
255-
if _, err := app.lambda.RemovePermission(ctx, in); err != nil {
256-
return fmt.Errorf("failed to remove permission: %w", err)
260+
log.Printf("[info] removing %d permissions %s", len(removes), opt.label())
261+
if !opt.DryRun {
262+
for _, in := range removes {
263+
if _, err := app.lambda.RemovePermission(ctx, in); err != nil {
264+
return fmt.Errorf("failed to remove permission: %w", err)
265+
}
266+
log.Printf("[info] removed permission Sid: %s", *in.StatementId)
257267
}
258-
log.Printf("[info] removed permission Sid: %s", *in.StatementId)
259268
}
260-
261269
return nil
262270
}
263271

0 commit comments

Comments
 (0)