Top Level Namespace
Defined Under Namespace
Modules: ActiveRecord, ApplicationHelper, AwsLambda, Jets, Kernel
Classes: ApplicationController, ApplicationItem, ApplicationJob, ApplicationRecord, BasePathMapping, BucketConfigurator, File, Thor
Constant Summary
collapse
- STAGE_NAME =
"<%= @stage_name %>"
Instance Method Summary
collapse
Instance Method Details
#delay ⇒ Object
56
57
58
59
60
61
62
|
# File 'lib/jets/internal/app/functions/jets/base_path.rb', line 56
def delay
puts "Delaying 60 seconds to allow user some time to see lambda function logs."
60.times do
puts Time.now
sleep 1
end
end
|
#error_message ⇒ Object
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
|
# File 'lib/jets/internal/app/functions/jets/base_path.rb', line 64
def error_message
" This is ultimately the result of require bundler/setup failing to load.\n On the CloudFormation first pass, the BasePathMapping fails to CREATE.\n CloudFormation does a rollback and tries to delete the BasePathMapping.\n\n Jets will send a success response to CloudFormation so it can continue and delete\n BasePathMapping on the rollback. Otherwise, CloudFormation ends up in the terminal\n UPDATE_FAILED state and the CloudFormation console provides 3 options:\n\n 1) retry 2) update 3) rollback.\n\n The only option that seems to work is rollback to get it out of UPDATE_FAILED to\n UPDATE_ROLLBACK_COMPLETE. But then, if we `jets deploy` again without fixing the\n require bundler/setup issue, we'll end back up in the UPDATE_FAILED state.\n\n Will handle this error so we can continue the stack because we do not want it to fail\n and never be able to send the CfnResponse. Then we have to wait hours for a CloudFormation timeout.\n Sometimes deleting the APP-dev-ApiDeployment20230518230443-EXAMPLEY8YQP0 stack\n allows the cloudformation stacks to continue, but usually, it'll only just slightly speed up the rollback.\n\n Some examples of actual rollback times:\n\n When left alone, the rollback takes about 2.5 hours.\n\n 2023-05-19 05:39:25 User Initiated\n 2023-05-19 08:01:48 UPDATE_ROLLBACK_COMPLETE\n\n When deleting the APP-dev-ApiDeployment20230518230443-EXAMPLEY8YQP0 stack, it takes about 1.5 hours.\n\n 2023-05-19 06:25:41 User Initiated\n 2023-05-19 07:47:03 UPDATE_ROLLBACK_COMPLETE\n\n Rescuing and handling the error here allows the CloudFormation stack to continue and finish the rollback process.\n It takes the rollback time down to about 3 minutes. Example:\n\n 2023-05-19 16:34:19 User Initiated\n 2023-05-19 16:37:34 UPDATE_ROLLBACK_COMPLETE\n\n Note: The first cloudformation CREATE pass sends FAILED Status to CloudFormation,\n and the second cloudformation DELETE pass sends SUCCESS Status to CloudFormation.\n\n Related: https://community.boltops.com/t/could-not-find-timeout-0-3-1-in-any-of-the-sources/996\n EOL\nend\n"
|
#lambda_handler(event:, context:) ⇒ Object
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
|
# File 'lib/jets/internal/app/functions/jets/base_path.rb', line 28
def lambda_handler(event:, context:)
cfn = CfnResponse.new(event, context)
cfn.response do
begin
mapping = BasePathMapping.new(event, STAGE_NAME)
rescue NameError => e
puts "ERROR: #{e.class} #{e.message}"
puts error_message
end
if mapping.nil? && event['RequestType'] == "Delete"
cfn.success
delay
return
end
case event['RequestType']
when "Create", "Update"
mapping.update
when "Delete"
mapping.delete(true) if mapping.should_delete?
end
end
end
|