fluent-plugin-cloudwatch-logs 0.13.3 → 0.14.2
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/.github/workflows/linux.yml +1 -1
- data/.github/workflows/windows.yml +1 -1
- data/README.md +11 -3
- data/fluent-plugin-cloudwatch-logs.gemspec +1 -0
- data/lib/fluent/plugin/cloudwatch/logs/version.rb +1 -1
- data/lib/fluent/plugin/in_cloudwatch_logs.rb +21 -3
- data/lib/fluent/plugin/out_cloudwatch_logs.rb +14 -1
- metadata +17 -4
- data/.travis.yml +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c43fba0083c45e47060ad0aa61d01acbd7d3b5a114e8e96864075a84c5a18397
|
4
|
+
data.tar.gz: 7fb5cce4a8749fd19b53378f8ab0df8b59d233f9491239a2cd98cca704109eff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5854c662f12a1f68068b99f804824547df7c5a6220bb5bf54a29a706422e1bb50625f36fe5f0b51f95f226f887bc28aadfca86d779817b50a13afba1cbf1744c
|
7
|
+
data.tar.gz: 83cd966492bbfc1d7ac96d88088628f4b80148bb72dd21a45cca4cf1f2f14cc98ed097de0be07979812220405989c5f07f34d38cb34d490779633bf06807e505
|
data/.github/workflows/linux.yml
CHANGED
data/README.md
CHANGED
@@ -16,10 +16,18 @@
|
|
16
16
|
|
17
17
|
## Installation
|
18
18
|
|
19
|
+
### For Fluentd
|
20
|
+
|
19
21
|
```sh
|
20
22
|
gem install fluent-plugin-cloudwatch-logs
|
21
23
|
```
|
22
24
|
|
25
|
+
### For td-agent
|
26
|
+
|
27
|
+
```sh
|
28
|
+
td-agent-gem install fluent-plugin-cloudwatch-logs
|
29
|
+
```
|
30
|
+
|
23
31
|
## Preparation
|
24
32
|
|
25
33
|
Create IAM user with a policy like the following:
|
@@ -98,7 +106,7 @@ export AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY"
|
|
98
106
|
export AWS_SECRET_ACCESS_KEY="YOUR_SECRET_ACCESS_KEY"
|
99
107
|
```
|
100
108
|
|
101
|
-
Note: For this to work persistently the
|
109
|
+
Note: For this to work persistently the environment will need to be set in the startup scripts or docker variables.
|
102
110
|
|
103
111
|
### AWS Configuration
|
104
112
|
|
@@ -176,6 +184,7 @@ Fetch sample log from CloudWatch Logs:
|
|
176
184
|
* `aws_sec_key`: AWS Secret Access Key. See [Authentication](#authentication) for more information.
|
177
185
|
* `concurrency`: use to set the number of threads pushing data to CloudWatch. (default: 1)
|
178
186
|
* `endpoint`: use this parameter to connect to the local API endpoint (for testing)
|
187
|
+
* `ssl_verify_peer`: when `true` (default), SSL peer certificates are verified when establishing a connection. Setting to `false` can be useful for testing.
|
179
188
|
* `http_proxy`: use to set an optional HTTP proxy
|
180
189
|
* `include_time_key`: include time key as part of the log entry (defaults to UTC)
|
181
190
|
* `json_handler`: name of the library to be used to handle JSON data. For now, supported libraries are `json` (default) and `yajl`.
|
@@ -255,6 +264,7 @@ Please refer to [the PutRetentionPolicy column in documentation](https://docs.aw
|
|
255
264
|
* `aws_sts_session_name`: the session name to use with sts authentication (default: `fluentd`)
|
256
265
|
* `aws_use_sts`: use [AssumeRoleCredentials](http://docs.aws.amazon.com/sdkforruby/api/Aws/AssumeRoleCredentials.html) to authenticate, rather than the [default credential hierarchy](http://docs.aws.amazon.com/sdkforruby/api/Aws/CloudWatchLogs/Client.html#initialize-instance_method). See 'Cross-Account Operation' below for more detail.
|
257
266
|
* `endpoint`: use this parameter to connect to the local API endpoint (for testing)
|
267
|
+
* `ssl_verify_peer`: when `true` (default), SSL peer certificates are verified when establishing a connection. Setting to `false` can be useful for testing.
|
258
268
|
* `fetch_interval`: time period in seconds between checking CloudWatch for new logs. (default: 60)
|
259
269
|
* `http_proxy`: use to set an optional HTTP proxy
|
260
270
|
* `json_handler`: name of the library to be used to handle JSON data. For now, supported libraries are `json` (default) and `yajl`.
|
@@ -444,10 +454,8 @@ In more detail, please refer to [the officilal document for built-in placeholder
|
|
444
454
|
|
445
455
|
* out_cloudwatch_logs
|
446
456
|
* if the data is too big for API, split into multiple requests
|
447
|
-
* format
|
448
457
|
* check data size
|
449
458
|
* in_cloudwatch_logs
|
450
|
-
* format
|
451
459
|
* fallback to start_time because next_token expires after 24 hours
|
452
460
|
|
453
461
|
## Contributing
|
@@ -17,9 +17,14 @@ module Fluent::Plugin
|
|
17
17
|
config_param :aws_use_sts, :bool, default: false
|
18
18
|
config_param :aws_sts_role_arn, :string, default: nil
|
19
19
|
config_param :aws_sts_session_name, :string, default: 'fluentd'
|
20
|
+
config_param :aws_sts_external_id, :string, default: nil
|
21
|
+
config_param :aws_sts_policy, :string, default: nil
|
22
|
+
config_param :aws_sts_duration_seconds, :time, default: nil
|
20
23
|
config_param :aws_sts_endpoint_url, :string, default: nil
|
24
|
+
config_param :aws_ecs_authentication, :bool, default: false
|
21
25
|
config_param :region, :string, default: nil
|
22
26
|
config_param :endpoint, :string, default: nil
|
27
|
+
config_param :ssl_verify_peer, :bool, :default => true
|
23
28
|
config_param :tag, :string
|
24
29
|
config_param :log_group_name, :string
|
25
30
|
config_param :add_log_group_name, :bool, default: false
|
@@ -28,7 +33,7 @@ module Fluent::Plugin
|
|
28
33
|
config_param :log_stream_name, :string, default: nil
|
29
34
|
config_param :use_log_stream_name_prefix, :bool, default: false
|
30
35
|
config_param :state_file, :string, default: nil,
|
31
|
-
deprecated: "Use <
|
36
|
+
deprecated: "Use <storage> instead."
|
32
37
|
config_param :fetch_interval, :time, default: 60
|
33
38
|
config_param :http_proxy, :string, default: nil
|
34
39
|
config_param :json_handler, :enum, list: [:yajl, :json], default: :yajl
|
@@ -82,13 +87,17 @@ module Fluent::Plugin
|
|
82
87
|
options = {}
|
83
88
|
options[:region] = @region if @region
|
84
89
|
options[:endpoint] = @endpoint if @endpoint
|
90
|
+
options[:ssl_verify_peer] = @ssl_verify_peer
|
85
91
|
options[:http_proxy] = @http_proxy if @http_proxy
|
86
92
|
|
87
93
|
if @aws_use_sts
|
88
94
|
Aws.config[:region] = options[:region]
|
89
95
|
credentials_options = {
|
90
96
|
role_arn: @aws_sts_role_arn,
|
91
|
-
role_session_name: @aws_sts_session_name
|
97
|
+
role_session_name: @aws_sts_session_name,
|
98
|
+
external_id: @aws_sts_external_id,
|
99
|
+
policy: @aws_sts_policy,
|
100
|
+
duration_seconds: @aws_sts_duration_seconds
|
92
101
|
}
|
93
102
|
credentials_options[:sts_endpoint_url] = @aws_sts_endpoint_url if @aws_sts_endpoint_url
|
94
103
|
if @region and @aws_sts_endpoint_url
|
@@ -109,6 +118,10 @@ module Fluent::Plugin
|
|
109
118
|
credentials_options[:client] = Aws::STS::Client.new(:region => @region)
|
110
119
|
end
|
111
120
|
options[:credentials] = Aws::AssumeRoleWebIdentityCredentials.new(credentials_options)
|
121
|
+
elsif @aws_ecs_authentication
|
122
|
+
# collect AWS credential from ECS relative uri ENV variable
|
123
|
+
aws_container_credentials_relative_uri = ENV["AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"]
|
124
|
+
options[:credentials] = Aws::ECSCredentials.new({credential_path: aws_container_credentials_relative_uri}).credentials
|
112
125
|
else
|
113
126
|
options[:credentials] = Aws::Credentials.new(@aws_key_id, @aws_sec_key) if @aws_key_id && @aws_sec_key
|
114
127
|
end
|
@@ -221,8 +234,8 @@ module Fluent::Plugin
|
|
221
234
|
end
|
222
235
|
end
|
223
236
|
end
|
224
|
-
sleep 1
|
225
237
|
end
|
238
|
+
sleep 1
|
226
239
|
end
|
227
240
|
end
|
228
241
|
|
@@ -272,6 +285,7 @@ module Fluent::Plugin
|
|
272
285
|
log_next_token = next_token(log_stream_name)
|
273
286
|
end
|
274
287
|
request[:next_token] = log_next_token if !log_next_token.nil? && !log_next_token.empty?
|
288
|
+
request[:start_from_head] = true if read_from_head?(log_next_token)
|
275
289
|
response = @logs.get_log_events(request)
|
276
290
|
if valid_next_token(log_next_token, response.next_forward_token)
|
277
291
|
if @use_log_group_name_prefix
|
@@ -285,6 +299,10 @@ module Fluent::Plugin
|
|
285
299
|
end
|
286
300
|
end
|
287
301
|
|
302
|
+
def read_from_head?(next_token)
|
303
|
+
(!next_token.nil? && !next_token.empty?) || @start_time || @end_time
|
304
|
+
end
|
305
|
+
|
288
306
|
def describe_log_streams(log_stream_name_prefix, log_streams = nil, next_token = nil, log_group_name=nil)
|
289
307
|
throttling_handler('describe_log_streams') do
|
290
308
|
request = {
|
@@ -19,9 +19,14 @@ module Fluent::Plugin
|
|
19
19
|
config_param :aws_use_sts, :bool, default: false
|
20
20
|
config_param :aws_sts_role_arn, :string, default: nil
|
21
21
|
config_param :aws_sts_session_name, :string, default: 'fluentd'
|
22
|
+
config_param :aws_sts_external_id, :string, default: nil
|
23
|
+
config_param :aws_sts_policy, :string, default: nil
|
24
|
+
config_param :aws_sts_duration_seconds, :time, default: nil
|
22
25
|
config_param :aws_sts_endpoint_url, :string, default: nil
|
26
|
+
config_param :aws_ecs_authentication, :bool, default: false
|
23
27
|
config_param :region, :string, :default => nil
|
24
28
|
config_param :endpoint, :string, :default => nil
|
29
|
+
config_param :ssl_verify_peer, :bool, :default => true
|
25
30
|
config_param :log_group_name, :string, :default => nil
|
26
31
|
config_param :log_stream_name, :string, :default => nil
|
27
32
|
config_param :auto_create_stream, :bool, default: false
|
@@ -117,13 +122,17 @@ module Fluent::Plugin
|
|
117
122
|
options[:log_level] = :debug if log
|
118
123
|
options[:region] = @region if @region
|
119
124
|
options[:endpoint] = @endpoint if @endpoint
|
125
|
+
options[:ssl_verify_peer] = @ssl_verify_peer
|
120
126
|
options[:instance_profile_credentials_retries] = @aws_instance_profile_credentials_retries if @aws_instance_profile_credentials_retries
|
121
127
|
|
122
128
|
if @aws_use_sts
|
123
129
|
Aws.config[:region] = options[:region]
|
124
130
|
credentials_options = {
|
125
131
|
role_arn: @aws_sts_role_arn,
|
126
|
-
role_session_name: @aws_sts_session_name
|
132
|
+
role_session_name: @aws_sts_session_name,
|
133
|
+
external_id: @aws_sts_external_id,
|
134
|
+
policy: @aws_sts_policy,
|
135
|
+
duration_seconds: @aws_sts_duration_seconds
|
127
136
|
}
|
128
137
|
credentials_options[:sts_endpoint_url] = @aws_sts_endpoint_url if @aws_sts_endpoint_url
|
129
138
|
if @region and @aws_sts_endpoint_url
|
@@ -144,6 +153,10 @@ module Fluent::Plugin
|
|
144
153
|
credentials_options[:client] = Aws::STS::Client.new(:region => @region)
|
145
154
|
end
|
146
155
|
options[:credentials] = Aws::AssumeRoleWebIdentityCredentials.new(credentials_options)
|
156
|
+
elsif @aws_ecs_authentication
|
157
|
+
# collect AWS credential from ECS relative uri ENV variable
|
158
|
+
aws_container_credentials_relative_uri = ENV["AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"]
|
159
|
+
options[:credentials] = Aws::ECSCredentials.new({credential_path: aws_container_credentials_relative_uri}).credentials
|
147
160
|
else
|
148
161
|
options[:credentials] = Aws::Credentials.new(@aws_key_id, @aws_sec_key) if @aws_key_id && @aws_sec_key
|
149
162
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-cloudwatch-logs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryota Arai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: nokogiri
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
description:
|
112
126
|
email:
|
113
127
|
- ryota.arai@gmail.com
|
@@ -119,7 +133,6 @@ files:
|
|
119
133
|
- ".github/workflows/linux.yml"
|
120
134
|
- ".github/workflows/windows.yml"
|
121
135
|
- ".gitignore"
|
122
|
-
- ".travis.yml"
|
123
136
|
- Gemfile
|
124
137
|
- ISSUE_TEMPLATE.md
|
125
138
|
- LICENSE.txt
|
@@ -153,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
166
|
- !ruby/object:Gem::Version
|
154
167
|
version: '0'
|
155
168
|
requirements: []
|
156
|
-
rubygems_version: 3.
|
169
|
+
rubygems_version: 3.2.15
|
157
170
|
signing_key:
|
158
171
|
specification_version: 4
|
159
172
|
summary: CloudWatch Logs Plugin for Fluentd
|