aws-xray-sdk 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/aws-xray-sdk/plugins/ecs.rb +68 -5
- data/lib/aws-xray-sdk/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d66dc2f94d7c560ccfcadf771798ece570a3adb37e14cbb6ee5df2c7c21e4493
|
4
|
+
data.tar.gz: 8a3a1bb4a8a401eaa76d5a5cd5f9147ede245749d4178d5e034e73beddd66a1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee957cc6062a09d99c3f2d2b009c3336b616efabedfba3f5f4aa61a65f1300d4bcb73a21d73c8d7056499ae72edf2212e9a45fa98afe05a844e6ea7eb6921622
|
7
|
+
data.tar.gz: 649c3ec1ecb12015f6ab6c8f7180d7569d97c21e704ee597c6b6c22297dcaa2517850f20afda61622818f34084eec77e661d70b435bf6cd80aedda976151c897
|
@@ -3,19 +3,82 @@ require 'aws-xray-sdk/logger'
|
|
3
3
|
|
4
4
|
module XRay
|
5
5
|
module Plugins
|
6
|
-
# Due to lack of ECS container metadata service, the only host information
|
7
|
-
# available is the host name.
|
8
6
|
module ECS
|
9
7
|
include Logging
|
10
8
|
|
11
9
|
ORIGIN = 'AWS::ECS::Container'.freeze
|
12
10
|
|
11
|
+
# Only compatible with v4!
|
12
|
+
# The v3 metadata url does not contain cloudwatch informations
|
13
|
+
METADATA_ENV_KEY = 'ECS_CONTAINER_METADATA_URI_V4'
|
14
|
+
|
13
15
|
def self.aws
|
14
|
-
|
15
|
-
|
16
|
+
metadata = get_metadata()
|
17
|
+
|
18
|
+
begin
|
19
|
+
metadata[:ecs][:container] = Socket.gethostname
|
16
20
|
rescue StandardError => e
|
17
|
-
@@aws = {}
|
18
21
|
Logging.logger.warn %(cannot get the ecs container hostname due to: #{e.message}.)
|
22
|
+
metadata[:ecs][:container] = nil
|
23
|
+
end
|
24
|
+
|
25
|
+
@@aws = {
|
26
|
+
ecs: metadata[:ecs],
|
27
|
+
cloudwatch_logs: metadata[:cloudwatch_logs]
|
28
|
+
}
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def self.get_metadata()
|
34
|
+
begin
|
35
|
+
metadata_uri = URI(ENV[METADATA_ENV_KEY])
|
36
|
+
req = Net::HTTP::Get.new(metadata_uri)
|
37
|
+
metadata_json = do_request(req)
|
38
|
+
return parse_metadata(metadata_json)
|
39
|
+
rescue StandardError => e
|
40
|
+
Logging.logger.warn %(cannot get the ecs instance metadata due to: #{e.message}. Make sure you are using Fargate platform version >=1.4.0)
|
41
|
+
{ ecs: {}, cloudwatch_logs: {} }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.parse_metadata(json_str)
|
46
|
+
data = JSON(json_str)
|
47
|
+
|
48
|
+
metadata = {
|
49
|
+
ecs: {
|
50
|
+
container_arn: data['ContainerARN'],
|
51
|
+
},
|
52
|
+
cloudwatch_logs: {
|
53
|
+
log_group: data["LogOptions"]['awslogs-group'],
|
54
|
+
log_region: data["LogOptions"]['awslogs-region'],
|
55
|
+
arn: data['ContainerARN']
|
56
|
+
}
|
57
|
+
}
|
58
|
+
metadata
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.do_request(request)
|
62
|
+
begin
|
63
|
+
response = Net::HTTP.start(request.uri.hostname, read_timeout: 1) { |http|
|
64
|
+
http.request(request)
|
65
|
+
}
|
66
|
+
|
67
|
+
if response.code == '200'
|
68
|
+
return response.body
|
69
|
+
else
|
70
|
+
raise(StandardError.new('Unsuccessful response::' + response.code + '::' + response.message))
|
71
|
+
end
|
72
|
+
rescue StandardError => e
|
73
|
+
# Two attempts in total to complete the request successfully
|
74
|
+
@retries ||= 0
|
75
|
+
if @retries < 1
|
76
|
+
@retries += 1
|
77
|
+
retry
|
78
|
+
else
|
79
|
+
Logging.logger.warn %(Failed to complete request due to: #{e.message}.)
|
80
|
+
raise e
|
81
|
+
end
|
19
82
|
end
|
20
83
|
end
|
21
84
|
end
|
data/lib/aws-xray-sdk/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-xray-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amazon Web Services
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-xray
|