aws-xray-sdk 0.14.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 04c1d1cb98a0d55632a4f77d366d4722008401851555c0ab515236f03837b323
4
- data.tar.gz: a0c68de2fadd545185740d95264312687a131e6cdb7d448993ad20b86e9b8084
3
+ metadata.gz: d66dc2f94d7c560ccfcadf771798ece570a3adb37e14cbb6ee5df2c7c21e4493
4
+ data.tar.gz: 8a3a1bb4a8a401eaa76d5a5cd5f9147ede245749d4178d5e034e73beddd66a1d
5
5
  SHA512:
6
- metadata.gz: 3d30fc99a86495bc0cd41100b4b563cec11eab0f05ea14afa3ae8f9cd51fe91ebaa3bfe961d368e895caf7aac0ca88016cc0c90d85ead87f03b0c1678fc1ecf4
7
- data.tar.gz: 56318868c3beea5f5c67635d2a6ec6b3d9e624bfff9ac1c310b0f6b0c4871768ed9213ae69289b91a9f74f7ae69a8f0bd2b1e0f8283852b0670c26ff137eeccd
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
- @@aws ||= begin
15
- { ecs: { container: Socket.gethostname } }
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
@@ -1,3 +1,3 @@
1
1
  module XRay
2
- VERSION = '0.14.0'
2
+ VERSION = '0.15.0'
3
3
  end
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.14.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-04-05 00:00:00.000000000 Z
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