sentry-lambda 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sentry/lambda.rb +3 -2
- data/lib/sentry/lambda/capture_exceptions.rb +11 -7
- data/lib/sentry/lambda/null_context.rb +27 -0
- data/lib/sentry/lambda/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43b6fafbed0760ae029ded6e4355f60f12a452f9ea27f78e4ec9f0aa42ac09bd
|
4
|
+
data.tar.gz: 84092e98e21a358016c3ee1a00676b277495e00b46b3fed36c0729b3d5c29d7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fefe3c9173a7f5acf45b60ec4073132b0f85f7db3bdede84865e2af0b2062c4d31a534718e2d119afe4b6fed1ddc2ea03348942f4f2d015bcbfa18f175fa6cae
|
7
|
+
data.tar.gz: 7313cc92c8ae7cc65751f15a30119f7300211a5ecac22f332424bf02cad6ddea945637fb9aaafe5a14dccaf89feb5822804bb6ca8301d3e99d58c98b2c5b54be
|
data/lib/sentry/lambda.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
require "sentry-ruby"
|
2
2
|
require "sentry/integrable"
|
3
3
|
require "sentry/lambda/capture_exceptions"
|
4
|
+
require "sentry/lambda/null_context"
|
4
5
|
|
5
6
|
module Sentry
|
6
7
|
module Lambda
|
7
8
|
extend Integrable
|
8
9
|
register_integration name: 'lambda', version: Sentry::Lambda::VERSION
|
9
10
|
|
10
|
-
def self.wrap_handler(event:, context
|
11
|
+
def self.wrap_handler(event:, context: NullContext.new, capture_timeout_warning: false)
|
11
12
|
CaptureExceptions.new(
|
12
13
|
aws_event: event,
|
13
|
-
aws_context: context,
|
14
|
+
aws_context: context || NullContext.new,
|
14
15
|
capture_timeout_warning: capture_timeout_warning
|
15
16
|
).call do
|
16
17
|
yield
|
@@ -3,9 +3,9 @@ module Sentry
|
|
3
3
|
class CaptureExceptions
|
4
4
|
TIMEOUT_WARNING_BUFFER = 1500 # Buffer time required to send timeout warning to Sentry
|
5
5
|
|
6
|
-
def initialize(aws_event:, aws_context
|
6
|
+
def initialize(aws_event:, aws_context: NullContext.new, capture_timeout_warning: false)
|
7
7
|
@aws_event = aws_event
|
8
|
-
@aws_context = aws_context
|
8
|
+
@aws_context = aws_context || NullContext.new
|
9
9
|
@capture_timeout_warning = capture_timeout_warning
|
10
10
|
end
|
11
11
|
|
@@ -30,8 +30,8 @@ module Sentry
|
|
30
30
|
|
31
31
|
Sentry.with_scope do |scope|
|
32
32
|
start_time = Time.now.utc
|
33
|
-
|
34
|
-
execution_expiration_time = Time.now.utc + ((
|
33
|
+
initial_remaining_time_in_millis = @aws_context.get_remaining_time_in_millis
|
34
|
+
execution_expiration_time = Time.now.utc + ((initial_remaining_time_in_millis || 0)/1000.0)
|
35
35
|
|
36
36
|
scope.clear_breadcrumbs
|
37
37
|
scope.set_transaction_name(@aws_context.function_name)
|
@@ -53,7 +53,11 @@ module Sentry
|
|
53
53
|
|
54
54
|
event.extra = event.extra.merge(
|
55
55
|
"cloudwatch logs": {
|
56
|
-
url: _get_cloudwatch_logs_url(
|
56
|
+
url: _get_cloudwatch_logs_url(
|
57
|
+
@aws_context.log_group_name,
|
58
|
+
@aws_context.log_stream_name,
|
59
|
+
start_time
|
60
|
+
),
|
57
61
|
log_group: @aws_context.log_group_name,
|
58
62
|
log_stream: @aws_context.log_stream_name
|
59
63
|
}
|
@@ -101,12 +105,12 @@ module Sentry
|
|
101
105
|
Sentry.capture_exception(exception)
|
102
106
|
end
|
103
107
|
|
104
|
-
def _get_cloudwatch_logs_url(
|
108
|
+
def _get_cloudwatch_logs_url(log_group_name, log_stream_name, start_time)
|
105
109
|
formatstring = "%Y-%m-%dT%H:%M:%SZ"
|
106
110
|
region = ENV['AWS_REGION']
|
107
111
|
|
108
112
|
"https://console.aws.amazon.com/cloudwatch/home?region=#{region}" \
|
109
|
-
"#logEventViewer:group=#{
|
113
|
+
"#logEventViewer:group=#{log_group_name};stream=#{log_stream_name}" \
|
110
114
|
";start=#{start_time.strftime(formatstring)};end=#{(Time.now.utc + 2).strftime(formatstring)}"
|
111
115
|
end
|
112
116
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Sentry
|
2
|
+
module Lambda
|
3
|
+
# This class exists to allow nil to quack like an AWS context object, primarily for the purpose of supporting
|
4
|
+
# automated tests which don't supply a context object.
|
5
|
+
class NullContext
|
6
|
+
def get_remaining_time_in_millis
|
7
|
+
0
|
8
|
+
end
|
9
|
+
|
10
|
+
def function_name
|
11
|
+
'n/a'
|
12
|
+
end
|
13
|
+
|
14
|
+
def function_version
|
15
|
+
'n/a'
|
16
|
+
end
|
17
|
+
|
18
|
+
def invoked_function_arn
|
19
|
+
'n/a'
|
20
|
+
end
|
21
|
+
|
22
|
+
def aws_request_id
|
23
|
+
'n/a'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sentry-lambda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sentry Team
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sentry-ruby-core
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.
|
19
|
+
version: 4.5.0.pre.beta.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 4.
|
26
|
+
version: 4.5.0.pre.beta.1
|
27
27
|
description: A gem that provides AWS Lambda integration for the Sentry error logger
|
28
28
|
email: gateway@paymentspring.com
|
29
29
|
executables: []
|
@@ -37,6 +37,7 @@ files:
|
|
37
37
|
- lib/sentry-lambda.rb
|
38
38
|
- lib/sentry/lambda.rb
|
39
39
|
- lib/sentry/lambda/capture_exceptions.rb
|
40
|
+
- lib/sentry/lambda/null_context.rb
|
40
41
|
- lib/sentry/lambda/version.rb
|
41
42
|
homepage: https://github.com/paymentspring/sentry-ruby
|
42
43
|
licenses:
|