fluent-plugin-ec2-metadata 0.1.2 → 0.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 51d18cb9bf76683868d83333fb3392de5558841f
4
- data.tar.gz: a2afe995beea65ed8d1e1e7916a33b00fb852a6a
2
+ SHA256:
3
+ metadata.gz: 8edbffe5e89033b3a4afd3987dca6ba91397c13196b35aed4c8f9f86c0a7790e
4
+ data.tar.gz: 8c48870da4ca4898ee8b0962e01d00107cb4a23c668bc175a40945e71b105d92
5
5
  SHA512:
6
- metadata.gz: dec9971874bc1ddd376fe053554f498dd814904166c2d0e9c9f6ab88fc46bad6f488ab4b0785d5bb1c2ed488b281fea082252b6887f3bdd036e2a63c74c9620d
7
- data.tar.gz: a0abf8a74a99c74b5ed93ad8cd8d81fbda353ff00f4160d98fcb0d29488b7cbad3e2a125dbb15eeb52f71b6e8d079a3ae669d2b326667274f4c59c0a750dd5ec
6
+ metadata.gz: f281b7634cccf2c9f93b1b85ac266d35df5e6ea634b2ca2abb98f72f83213f987fbaef0b929a843dead5647f78b935ad6546e2be58f515a9f57c2d8e4f90adbd
7
+ data.tar.gz: 429e24060b389ce45be6d2b8eb12f03d08c8b1cc3cbe6b63f61cdece3160aff8b348fabf430063c2cdb05d5896bbbc1e48dd93f34890940264683c6f618cb169
@@ -0,0 +1,70 @@
1
+ stages:
2
+ - build
3
+ - test
4
+
5
+ bundle:
6
+ stage: build
7
+ image: ruby:2.5
8
+ cache:
9
+ paths:
10
+ - vendor/ruby
11
+ script:
12
+ - bundle install -j $(nproc) --path vendor
13
+ artifacts:
14
+ paths:
15
+ - Gemfile.lock
16
+
17
+ dependency_scanning:
18
+ stage: test
19
+ image: docker:stable
20
+ variables:
21
+ DOCKER_DRIVER: overlay2
22
+ allow_failure: true
23
+ services:
24
+ - docker:stable-dind
25
+ script:
26
+ - export DS_VERSION=${SP_VERSION:-$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')}
27
+ - |
28
+ if ! docker info &>/dev/null; then
29
+ if [ -z "$DOCKER_HOST" -a "$KUBERNETES_PORT" ]; then
30
+ export DOCKER_HOST='tcp://localhost:2375'
31
+ fi
32
+ fi
33
+ - | # this is required to avoid undesirable reset of Docker image ENV variables being set on build stage
34
+ function propagate_env_vars() {
35
+ CURRENT_ENV=$(printenv)
36
+
37
+ for VAR_NAME; do
38
+ echo $CURRENT_ENV | grep "${VAR_NAME}=" > /dev/null && echo "--env $VAR_NAME "
39
+ done
40
+ }
41
+ - |
42
+ docker run \
43
+ $(propagate_env_vars \
44
+ DS_ANALYZER_IMAGES \
45
+ DS_ANALYZER_IMAGE_PREFIX \
46
+ DS_ANALYZER_IMAGE_TAG \
47
+ DS_DEFAULT_ANALYZERS \
48
+ DS_EXCLUDED_PATHS \
49
+ DEP_SCAN_DISABLE_REMOTE_CHECKS \
50
+ DS_DOCKER_CLIENT_NEGOTIATION_TIMEOUT \
51
+ DS_PULL_ANALYZER_IMAGE_TIMEOUT \
52
+ DS_RUN_ANALYZER_TIMEOUT \
53
+ ) \
54
+ --volume "$PWD:/code" \
55
+ --volume /var/run/docker.sock:/var/run/docker.sock \
56
+ "registry.gitlab.com/gitlab-org/security-products/dependency-scanning:$DS_VERSION" /code
57
+ artifacts:
58
+ reports:
59
+ dependency_scanning: gl-dependency-scanning-report.json
60
+ dependencies:
61
+ - bundle
62
+ only:
63
+ refs:
64
+ - branches
65
+ variables:
66
+ - $GITLAB_FEATURES =~ /\bdependency_scanning\b/
67
+ except:
68
+ variables:
69
+ - $DEPENDENCY_SCANNING_DISABLED
70
+
@@ -1,7 +1,9 @@
1
1
  rvm:
2
2
  - 2.1.*
3
3
  - 2.2.*
4
- - 2.3.0
4
+ - 2.3.*
5
+ - 2.4.*
6
+ - 2.5.*
5
7
  gemfile:
6
8
  - Gemfile
7
9
  before_install: gem update bundler
data/README.md CHANGED
@@ -2,12 +2,11 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/fluent-plugin-ec2-metadata.svg)](http://badge.fury.io/rb/fluent-plugin-ec2-metadata)
4
4
  [![Build Status](https://travis-ci.org/takus/fluent-plugin-ec2-metadata.svg?branch=master)](https://travis-ci.org/takus/fluent-plugin-ec2-metadata)
5
- [![Dependency Status](https://gemnasium.com/takus/fluent-plugin-ec2-metadata.svg)](https://gemnasium.com/takus/fluent-plugin-ec2-metadata)
6
5
  [![Test Coverage](https://codeclimate.com/github/takus/fluent-plugin-ec2-metadata/badges/coverage.svg)](https://codeclimate.com/github/takus/fluent-plugin-ec2-metadata/coverage)
7
6
  [![Code Climate](https://codeclimate.com/github/takus/fluent-plugin-ec2-metadata/badges/gpa.svg)](https://codeclimate.com/github/takus/fluent-plugin-ec2-metadata)
8
7
  [![Codacy Badge](https://api.codacy.com/project/badge/grade/16f6786edb554f1ea7462353808011d6)](https://www.codacy.com/app/takus/fluent-plugin-ec2-metadata)
9
8
 
10
- [Fluentd](http://fluentd.org) plugin to add ec2 metadata fields to a event record
9
+ [Fluentd](http://fluentd.org) plugin to add Amazon EC2 metadata fields to a event record
11
10
 
12
11
  ## Requirements
13
12
 
@@ -26,12 +25,13 @@ Use RubyGems:
26
25
  Example:
27
26
 
28
27
  <match foo.**>
29
- type ec2_metadata
28
+ @type ec2_metadata
30
29
 
31
30
  aws_key_id YOUR_AWS_KEY_ID
32
31
  aws_sec_key YOUR_AWS_SECRET/KEY
33
32
 
34
33
  metadata_refresh_seconds 300 # Optional, default 300 seconds
34
+ imdsv2 true # Optional, default false
35
35
 
36
36
  output_tag ${instance_id}.${tag}
37
37
  <record>
@@ -71,12 +71,13 @@ i-28b5ee77.foo.bar {
71
71
  Or you can use filter version:
72
72
 
73
73
  <filter foo.**>
74
- type ec2_metadata
74
+ @type ec2_metadata
75
75
 
76
76
  aws_key_id YOUR_AWS_KEY_ID
77
77
  aws_sec_key YOUR_AWS_SECRET/KEY
78
78
 
79
79
  metadata_refresh_seconds 300 # Optional, default 300 seconds
80
+ imdsv2 true # Optional, default false
80
81
 
81
82
  <record>
82
83
  hostname ${tagset_name}
@@ -4,11 +4,11 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "fluent-plugin-ec2-metadata"
7
- spec.version = "0.1.2"
7
+ spec.version = "0.1.3"
8
8
  spec.authors = ["SAKAMOTO Takumi"]
9
9
  spec.email = ["takumi.saka@gmail.com"]
10
- spec.description = %q{Fluentd output plugin to add ec2 metadata fields to a event record}
11
- spec.summary = %q{Fluentd output plugin to add ec2 metadata fields to a event record}
10
+ spec.description = %q{Fluentd output plugin to add Amazon EC2 metadata fields to a event record}
11
+ spec.summary = %q{Fluentd output plugin to add Amazon EC2 metadata fields to a event record}
12
12
  spec.homepage = "https://github.com/takus/fluent-plugin-ec2-metadata"
13
13
  spec.license = "APLv2"
14
14
 
@@ -68,15 +68,31 @@ module Fluent
68
68
  end
69
69
 
70
70
  def get_dynamic_data(f)
71
- res = Net::HTTP.get_response("169.254.169.254", "/latest/dynamic/#{f}")
72
- raise Fluent::ConfigError, "ec2-dynamic-data: failed to get #{f}" unless res.is_a?(Net::HTTPSuccess)
73
- res.body
71
+ Net::HTTP.start('169.254.169.254') do |http|
72
+ res = http.get("/latest/dynamic/#{f}", get_header())
73
+ raise Fluent::ConfigError, "ec2-dynamic-data: failed to get #{f}" unless res.is_a?(Net::HTTPSuccess)
74
+ res.body
75
+ end
74
76
  end
75
77
 
76
78
  def get_metadata(f)
77
- res = Net::HTTP.get_response("169.254.169.254", "/latest/meta-data/#{f}")
78
- raise Fluent::ConfigError, "ec2-metadata: failed to get #{f}" unless res.is_a?(Net::HTTPSuccess)
79
- res.body
79
+ Net::HTTP.start('169.254.169.254') do |http|
80
+ res = http.get("/latest/meta-data/#{f}", get_header())
81
+ raise Fluent::ConfigError, "ec2-metadata: failed to get #{f}" unless res.is_a?(Net::HTTPSuccess)
82
+ res.body
83
+ end
84
+ end
85
+
86
+ def get_header()
87
+ if @imdsv2
88
+ Net::HTTP.start('169.254.169.254') do |http|
89
+ res = http.put("/latest/api/token", '', { 'X-aws-ec2-metadata-token-ttl-seconds' => '300' })
90
+ raise Fluent::ConfigError, "ec2-metadata: failed to get token" unless res.is_a?(Net::HTTPSuccess)
91
+ { 'X-aws-ec2-metadata-token' => res.body }
92
+ end
93
+ else
94
+ {}
95
+ end
80
96
  end
81
97
 
82
98
  def set_tag(ec2_metadata)
@@ -10,6 +10,7 @@ module Fluent::Plugin
10
10
  config_param :aws_key_id, :string, default: ENV['AWS_ACCESS_KEY_ID'], secret: true
11
11
  config_param :aws_sec_key, :string, default: ENV['AWS_SECRET_ACCESS_KEY'], secret: true
12
12
  config_param :metadata_refresh_seconds, :integer, default: 300
13
+ config_param :imdsv2, :bool, default: false
13
14
 
14
15
  attr_reader :ec2_metadata
15
16
 
@@ -13,6 +13,7 @@ module Fluent::Plugin
13
13
  config_param :aws_key_id, :string, default: ENV['AWS_ACCESS_KEY_ID'], secret: true
14
14
  config_param :aws_sec_key, :string, default: ENV['AWS_SECRET_ACCESS_KEY'], secret: true
15
15
  config_param :metadata_refresh_seconds, :integer, default: 300
16
+ config_param :imdsv2, :bool, default: false
16
17
 
17
18
  attr_reader :ec2_metadata
18
19
 
@@ -0,0 +1,545 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: put
5
+ uri: http://169.254.169.254/latest/api/token
6
+ body:
7
+ encoding: UTF-8
8
+ string: ''
9
+ headers:
10
+ X-Aws-Ec2-Metadata-Token-Ttl-Seconds:
11
+ - '300'
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ User-Agent:
17
+ - Ruby
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Content-Length:
24
+ - '56'
25
+ Content-Type:
26
+ - text/plain
27
+ Date:
28
+ - Thu, 12 Dec 2019 11:38:19 GMT
29
+ X-Aws-Ec2-Metadata-Token-Ttl-Seconds:
30
+ - '300'
31
+ Connection:
32
+ - close
33
+ Server:
34
+ - EC2ws
35
+ body:
36
+ encoding: UTF-8
37
+ string: AAAAAAAAAAAAA__AAAAAAAAAAAAAAA_AAAAAAAAAAAAAAAAAAAAAAA==
38
+ http_version:
39
+ recorded_at: Thu, 12 Dec 2019 11:38:19 GMT
40
+ - request:
41
+ method: get
42
+ uri: http://169.254.169.254/latest/meta-data/instance-id
43
+ body:
44
+ encoding: US-ASCII
45
+ string: ''
46
+ headers:
47
+ Accept-Encoding:
48
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
49
+ Accept:
50
+ - '*/*'
51
+ User-Agent:
52
+ - Ruby
53
+ X-aws-ec2-metadata-token:
54
+ - AAAAAAAAAAAAA__AAAAAAAAAAAAAAA_AAAAAAAAAAAAAAAAAAAAAAA==
55
+ response:
56
+ status:
57
+ code: 200
58
+ message: OK
59
+ headers:
60
+ Content-Type:
61
+ - text/plain
62
+ Accept-Ranges:
63
+ - bytes
64
+ Etag:
65
+ - '"1971254081"'
66
+ Last-Modified:
67
+ - Thu, 02 Jul 2015 12:49:17 GMT
68
+ Content-Length:
69
+ - '10'
70
+ Connection:
71
+ - close
72
+ Date:
73
+ - Sun, 13 Dec 2015 06:37:00 GMT
74
+ Server:
75
+ - EC2ws
76
+ body:
77
+ encoding: UTF-8
78
+ string: i-0c0c0000
79
+ http_version:
80
+ recorded_at: Sun, 13 Dec 2015 06:37:00 GMT
81
+ - request:
82
+ method: get
83
+ uri: http://169.254.169.254/latest/meta-data/instance-type
84
+ body:
85
+ encoding: US-ASCII
86
+ string: ''
87
+ headers:
88
+ Accept-Encoding:
89
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
90
+ Accept:
91
+ - '*/*'
92
+ User-Agent:
93
+ - Ruby
94
+ X-aws-ec2-metadata-token:
95
+ - AAAAAAAAAAAAA__AAAAAAAAAAAAAAA_AAAAAAAAAAAAAAAAAAAAAAA==
96
+ response:
97
+ status:
98
+ code: 200
99
+ message: OK
100
+ headers:
101
+ Content-Type:
102
+ - text/plain
103
+ Accept-Ranges:
104
+ - bytes
105
+ Etag:
106
+ - '"765393446"'
107
+ Last-Modified:
108
+ - Thu, 02 Jul 2015 12:49:17 GMT
109
+ Content-Length:
110
+ - '8'
111
+ Connection:
112
+ - close
113
+ Date:
114
+ - Sun, 13 Dec 2015 06:37:00 GMT
115
+ Server:
116
+ - EC2ws
117
+ body:
118
+ encoding: UTF-8
119
+ string: m3.large
120
+ http_version:
121
+ recorded_at: Sun, 13 Dec 2015 06:37:00 GMT
122
+ - request:
123
+ method: get
124
+ uri: http://169.254.169.254/latest/meta-data/placement/availability-zone
125
+ body:
126
+ encoding: US-ASCII
127
+ string: ''
128
+ headers:
129
+ Accept-Encoding:
130
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
131
+ Accept:
132
+ - '*/*'
133
+ User-Agent:
134
+ - Ruby
135
+ X-aws-ec2-metadata-token:
136
+ - AAAAAAAAAAAAA__AAAAAAAAAAAAAAA_AAAAAAAAAAAAAAAAAAAAAAA==
137
+ response:
138
+ status:
139
+ code: 200
140
+ message: OK
141
+ headers:
142
+ Content-Type:
143
+ - text/plain
144
+ Accept-Ranges:
145
+ - bytes
146
+ Etag:
147
+ - '"1870317889"'
148
+ Last-Modified:
149
+ - Thu, 02 Jul 2015 12:49:17 GMT
150
+ Content-Length:
151
+ - '15'
152
+ Connection:
153
+ - close
154
+ Date:
155
+ - Sun, 13 Dec 2015 06:37:00 GMT
156
+ Server:
157
+ - EC2ws
158
+ body:
159
+ encoding: UTF-8
160
+ string: ap-northeast-1b
161
+ http_version:
162
+ recorded_at: Sun, 13 Dec 2015 06:37:00 GMT
163
+ - request:
164
+ method: get
165
+ uri: http://169.254.169.254/latest/meta-data/local-ipv4
166
+ body:
167
+ encoding: US-ASCII
168
+ string: ''
169
+ headers:
170
+ Accept-Encoding:
171
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
172
+ Accept:
173
+ - '*/*'
174
+ User-Agent:
175
+ - Ruby
176
+ X-aws-ec2-metadata-token:
177
+ - AAAAAAAAAAAAA__AAAAAAAAAAAAAAA_AAAAAAAAAAAAAAAAAAAAAAA==
178
+ response:
179
+ status:
180
+ code: 200
181
+ message: OK
182
+ headers:
183
+ Content-Type:
184
+ - text/plain
185
+ Accept-Ranges:
186
+ - bytes
187
+ Etag:
188
+ - '"1870317889"'
189
+ Last-Modified:
190
+ - Thu, 02 Jul 2015 12:49:17 GMT
191
+ Content-Length:
192
+ - '15'
193
+ Connection:
194
+ - close
195
+ Date:
196
+ - Sun, 13 Dec 2015 06:37:00 GMT
197
+ Server:
198
+ - EC2ws
199
+ body:
200
+ encoding: UTF-8
201
+ string: 10.21.34.200
202
+ http_version:
203
+ recorded_at: Sun, 13 Dec 2015 06:37:00 GMT
204
+ - request:
205
+ method: get
206
+ uri: http://169.254.169.254/latest/meta-data/mac
207
+ body:
208
+ encoding: US-ASCII
209
+ string: ''
210
+ headers:
211
+ Accept-Encoding:
212
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
213
+ Accept:
214
+ - '*/*'
215
+ User-Agent:
216
+ - Ruby
217
+ X-aws-ec2-metadata-token:
218
+ - AAAAAAAAAAAAA__AAAAAAAAAAAAAAA_AAAAAAAAAAAAAAAAAAAAAAA==
219
+ response:
220
+ status:
221
+ code: 200
222
+ message: OK
223
+ headers:
224
+ Content-Type:
225
+ - text/plain
226
+ Accept-Ranges:
227
+ - bytes
228
+ Etag:
229
+ - '"1996419393"'
230
+ Last-Modified:
231
+ - Thu, 02 Jul 2015 12:49:17 GMT
232
+ Content-Length:
233
+ - '17'
234
+ Connection:
235
+ - close
236
+ Date:
237
+ - Sun, 13 Dec 2015 06:37:00 GMT
238
+ Server:
239
+ - EC2ws
240
+ body:
241
+ encoding: UTF-8
242
+ string: 00:A0:00:0A:AA:00
243
+ http_version:
244
+ recorded_at: Sun, 13 Dec 2015 06:37:00 GMT
245
+ - request:
246
+ method: get
247
+ uri: http://169.254.169.254/latest/meta-data/network/interfaces/macs/00:A0:00:0A:AA:00/vpc-id
248
+ body:
249
+ encoding: US-ASCII
250
+ string: ''
251
+ headers:
252
+ Accept-Encoding:
253
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
254
+ Accept:
255
+ - '*/*'
256
+ User-Agent:
257
+ - Ruby
258
+ X-aws-ec2-metadata-token:
259
+ - AAAAAAAAAAAAA__AAAAAAAAAAAAAAA_AAAAAAAAAAAAAAAAAAAAAAA==
260
+ response:
261
+ status:
262
+ code: 200
263
+ message: OK
264
+ headers:
265
+ Content-Type:
266
+ - text/plain
267
+ Accept-Ranges:
268
+ - bytes
269
+ Etag:
270
+ - '"1822409025"'
271
+ Last-Modified:
272
+ - Thu, 02 Jul 2015 12:49:17 GMT
273
+ Content-Length:
274
+ - '12'
275
+ Connection:
276
+ - close
277
+ Date:
278
+ - Sun, 13 Dec 2015 06:37:00 GMT
279
+ Server:
280
+ - EC2ws
281
+ body:
282
+ encoding: UTF-8
283
+ string: vpc-00000000
284
+ http_version:
285
+ recorded_at: Sun, 13 Dec 2015 06:37:00 GMT
286
+ - request:
287
+ method: get
288
+ uri: http://169.254.169.254/latest/meta-data/network/interfaces/macs/00:A0:00:0A:AA:00/subnet-id
289
+ body:
290
+ encoding: US-ASCII
291
+ string: ''
292
+ headers:
293
+ Accept-Encoding:
294
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
295
+ Accept:
296
+ - '*/*'
297
+ User-Agent:
298
+ - Ruby
299
+ X-aws-ec2-metadata-token:
300
+ - AAAAAAAAAAAAA__AAAAAAAAAAAAAAA_AAAAAAAAAAAAAAAAAAAAAAA==
301
+ response:
302
+ status:
303
+ code: 200
304
+ message: OK
305
+ headers:
306
+ Content-Type:
307
+ - text/plain
308
+ Accept-Ranges:
309
+ - bytes
310
+ Etag:
311
+ - '"1870330753"'
312
+ Last-Modified:
313
+ - Thu, 02 Jul 2015 12:49:17 GMT
314
+ Content-Length:
315
+ - '15'
316
+ Connection:
317
+ - close
318
+ Date:
319
+ - Sun, 13 Dec 2015 06:37:00 GMT
320
+ Server:
321
+ - EC2ws
322
+ body:
323
+ encoding: UTF-8
324
+ string: subnet-00000000
325
+ http_version:
326
+ recorded_at: Sun, 13 Dec 2015 06:37:00 GMT
327
+ - request:
328
+ method: get
329
+ uri: http://169.254.169.254/latest/meta-data/network/interfaces/macs/00:00:0A:AA:0A:0A/vpc-id
330
+ body:
331
+ encoding: US-ASCII
332
+ string: ''
333
+ headers:
334
+ Accept-Encoding:
335
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
336
+ Accept:
337
+ - '*/*'
338
+ User-Agent:
339
+ - Ruby
340
+ X-aws-ec2-metadata-token:
341
+ - AAAAAAAAAAAAA__AAAAAAAAAAAAAAA_AAAAAAAAAAAAAAAAAAAAAAA==
342
+ response:
343
+ status:
344
+ code: 404
345
+ message: Not Found
346
+ headers:
347
+ Content-Type:
348
+ - text/html
349
+ Content-Length:
350
+ - '345'
351
+ Connection:
352
+ - close
353
+ Date:
354
+ - Wed, 16 Dec 2015 17:11:22 GMT
355
+ Server:
356
+ - EC2ws
357
+ body:
358
+ encoding: UTF-8
359
+ string: |
360
+ <?xml version="1.0" encoding="iso-8859-1"?>
361
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
362
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
363
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
364
+ <head>
365
+ <title>404 - Not Found</title>
366
+ </head>
367
+ <body>
368
+ <h1>404 - Not Found</h1>
369
+ </body>
370
+ </html>
371
+ http_version:
372
+ recorded_at: Wed, 16 Dec 2015 17:11:22 GMT
373
+ - request:
374
+ method: get
375
+ uri: http://169.254.169.254/latest/meta-data/network/interfaces/macs/00:00:0A:AA:0A:0A/subnet-id
376
+ body:
377
+ encoding: US-ASCII
378
+ string: ''
379
+ headers:
380
+ Accept-Encoding:
381
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
382
+ Accept:
383
+ - '*/*'
384
+ User-Agent:
385
+ - Ruby
386
+ X-aws-ec2-metadata-token:
387
+ - AAAAAAAAAAAAA__AAAAAAAAAAAAAAA_AAAAAAAAAAAAAAAAAAAAAAA==
388
+ response:
389
+ status:
390
+ code: 404
391
+ message: Not Found
392
+ headers:
393
+ Content-Type:
394
+ - text/html
395
+ Content-Length:
396
+ - '345'
397
+ Connection:
398
+ - close
399
+ Date:
400
+ - Wed, 16 Dec 2015 17:11:22 GMT
401
+ Server:
402
+ - EC2ws
403
+ body:
404
+ encoding: UTF-8
405
+ string: |
406
+ <?xml version="1.0" encoding="iso-8859-1"?>
407
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
408
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
409
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
410
+ <head>
411
+ <title>404 - Not Found</title>
412
+ </head>
413
+ <body>
414
+ <h1>404 - Not Found</h1>
415
+ </body>
416
+ </html>
417
+ http_version:
418
+ recorded_at: Wed, 16 Dec 2015 17:11:22 GMT
419
+ - request:
420
+ method: post
421
+ uri: https://ec2.ap-northeast-1.amazonaws.com/
422
+ body:
423
+ encoding: UTF-8
424
+ string: Action=DescribeInstances&InstanceId.1=i-0c0c0000&Version=2015-10-01
425
+ headers:
426
+ Content-Type:
427
+ - application/x-www-form-urlencoded; charset=utf-8
428
+ Accept-Encoding:
429
+ - ''
430
+ User-Agent:
431
+ - aws-sdk-ruby2/2.2.5 ruby/2.1.4 x86_64-linux
432
+ X-Amz-Date:
433
+ - 20151213T100607Z
434
+ Host:
435
+ - ec2.ap-northeast-1.amazonaws.com
436
+ Content-Length:
437
+ - '67'
438
+ Accept:
439
+ - '*/*'
440
+ X-aws-ec2-metadata-token:
441
+ - AAAAAAAAAAAAA__AAAAAAAAAAAAAAA_AAAAAAAAAAAAAAAAAAAAAAA==
442
+ response:
443
+ status:
444
+ code: 200
445
+ message: OK
446
+ headers:
447
+ Content-Type:
448
+ - text/xml;charset=UTF-8
449
+ Transfer-Encoding:
450
+ - chunked
451
+ Vary:
452
+ - Accept-Encoding
453
+ Date:
454
+ - Sun, 13 Dec 2015 10:06:07 GMT
455
+ Server:
456
+ - AmazonEC2
457
+ body:
458
+ encoding: UTF-8
459
+ string: |-
460
+ <?xml version="1.0" encoding="UTF-8"?>
461
+ <DescribeInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2015-10-01/">
462
+ <requestId>00f71347-3b87-4f5b-a60f-8c46d76ea808</requestId>
463
+ <reservationSet>
464
+ <item>
465
+ <reservationId>r-44d8965d</reservationId>
466
+ <ownerId>000000000000</ownerId>
467
+ <groupSet/>
468
+ <instancesSet>
469
+ <item>
470
+ <instanceId>i-0c0c0000</instanceId>
471
+ <tagSet>
472
+ <item>
473
+ <key>Name</key>
474
+ <value>instance-name</value>
475
+ </item>
476
+ <item>
477
+ <key>aws:cloudformation:stack-name</key>
478
+ <value>mystack</value>
479
+ </item>
480
+ </tagSet>
481
+ </item>
482
+ </instancesSet>
483
+ </item>
484
+ </reservationSet>
485
+ </DescribeInstancesResponse>
486
+ http_version:
487
+ recorded_at: Sun, 13 Dec 2015 10:06:07 GMT
488
+ - request:
489
+ method: get
490
+ uri: http://169.254.169.254/latest/dynamic/instance-identity/document
491
+ body:
492
+ encoding: US-ASCII
493
+ string: ''
494
+ headers:
495
+ Accept-Encoding:
496
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
497
+ Accept:
498
+ - '*/*'
499
+ User-Agent:
500
+ - Ruby
501
+ X-aws-ec2-metadata-token:
502
+ - AAAAAAAAAAAAA__AAAAAAAAAAAAAAA_AAAAAAAAAAAAAAAAAAAAAAA==
503
+ response:
504
+ status:
505
+ code: 200
506
+ message: OK
507
+ headers:
508
+ Content-Type:
509
+ - text/plain
510
+ Accept-Ranges:
511
+ - bytes
512
+ Etag:
513
+ - '"2871764318"'
514
+ Last-Modified:
515
+ - Wed, 11 May 2016 20:52:55 GMT
516
+ Content-Length:
517
+ - '422'
518
+ Connection:
519
+ - close
520
+ Date:
521
+ - Wed, 11 May 2016 21:05:40 GMT
522
+ Server:
523
+ - EC2ws
524
+ body:
525
+ encoding: UTF-8
526
+ string: |-
527
+ {
528
+ "privateIp" : "172.31.1.232",
529
+ "devpayProductCodes" : null,
530
+ "availabilityZone" : "us-west-1c",
531
+ "version" : "2010-08-31",
532
+ "instanceId" : "i-123456",
533
+ "billingProducts" : null,
534
+ "instanceType" : "t2.micro",
535
+ "accountId" : "123456789",
536
+ "imageId" : "ami-123456",
537
+ "pendingTime" : "2016-05-11T20:52:25Z",
538
+ "architecture" : "x86_64",
539
+ "kernelId" : null,
540
+ "ramdiskId" : null,
541
+ "region" : "us-west-1"
542
+ }
543
+ http_version:
544
+ recorded_at: Wed, 11 May 2016 21:05:40 GMT
545
+ recorded_with: VCR 3.0.1
@@ -55,6 +55,36 @@ class EC2MetadataFilterTest < Test::Unit::TestCase
55
55
  end
56
56
  end
57
57
 
58
+ test 'configure-vpc-with-imdsv2' do
59
+ VCR.use_cassette('ec2-vpc-with-imdsv2', :allow_playback_repeats => true) do
60
+ c = %[
61
+ aws_key_id aws_key
62
+ aws_sec_key aws_sec
63
+ imdsv2 true
64
+ <record>
65
+ name ${tagset_name}
66
+ </record>
67
+ ]
68
+ d = create_driver(conf=c)
69
+
70
+ assert_equal("aws_key", d.instance.aws_key_id)
71
+ assert_equal("aws_sec", d.instance.aws_sec_key)
72
+
73
+ assert_equal("ami-123456", d.instance.ec2_metadata['image_id'])
74
+ assert_equal("123456789", d.instance.ec2_metadata['account_id'])
75
+
76
+ assert_equal("i-0c0c0000", d.instance.ec2_metadata['instance_id'])
77
+ assert_equal("m3.large", d.instance.ec2_metadata['instance_type'])
78
+ assert_equal("ap-northeast-1", d.instance.ec2_metadata['region'])
79
+ assert_equal("ap-northeast-1b", d.instance.ec2_metadata['availability_zone'])
80
+ assert_equal("00:A0:00:0A:AA:00", d.instance.ec2_metadata['mac'])
81
+ assert_equal("vpc-00000000", d.instance.ec2_metadata['vpc_id'])
82
+ assert_equal("subnet-00000000", d.instance.ec2_metadata['subnet_id'])
83
+
84
+ assert_equal("instance-name", d.instance.ec2_metadata['tagset_name'])
85
+ end
86
+ end
87
+
58
88
  test 'configure-classic' do
59
89
  VCR.use_cassette('ec2-classic') do
60
90
  c = %[
@@ -62,6 +62,41 @@ class EC2MetadataOutputTest < Test::Unit::TestCase
62
62
  end
63
63
  end
64
64
 
65
+ test 'configure-vpc-with-imdsv2' do
66
+ VCR.use_cassette('ec2-vpc-with-imdsv2', :allow_playback_repeats => true) do
67
+ c = %[
68
+ output_tag ${instance_id}.${tag}
69
+ aws_key_id aws_key
70
+ aws_sec_key aws_sec
71
+ imdsv2 true
72
+ <record>
73
+ name ${tagset_name}
74
+ stack ${tagset_aws:cloudformation:stack-name}
75
+ </record>
76
+ ]
77
+ d = create_driver(conf=c)
78
+
79
+ assert_equal("${instance_id}.${tag}", d.instance.output_tag)
80
+ assert_equal("aws_key", d.instance.aws_key_id)
81
+ assert_equal("aws_sec", d.instance.aws_sec_key)
82
+
83
+ assert_equal("ami-123456", d.instance.ec2_metadata['image_id'])
84
+ assert_equal("123456789", d.instance.ec2_metadata['account_id'])
85
+ assert_equal("10.21.34.200", d.instance.ec2_metadata['private_ip'])
86
+
87
+ assert_equal("i-0c0c0000", d.instance.ec2_metadata['instance_id'])
88
+ assert_equal("m3.large", d.instance.ec2_metadata['instance_type'])
89
+ assert_equal("ap-northeast-1", d.instance.ec2_metadata['region'])
90
+ assert_equal("ap-northeast-1b", d.instance.ec2_metadata['availability_zone'])
91
+ assert_equal("00:A0:00:0A:AA:00", d.instance.ec2_metadata['mac'])
92
+ assert_equal("vpc-00000000", d.instance.ec2_metadata['vpc_id'])
93
+ assert_equal("subnet-00000000", d.instance.ec2_metadata['subnet_id'])
94
+
95
+ assert_equal("instance-name", d.instance.ec2_metadata['tagset_name'])
96
+ assert_equal("mystack", d.instance.ec2_metadata['tagset_aws:cloudformation:stack-name'])
97
+ end
98
+ end
99
+
65
100
  test 'configure-classic' do
66
101
  VCR.use_cassette('ec2-classic') do
67
102
  c = %[
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-ec2-metadata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - SAKAMOTO Takumi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-25 00:00:00.000000000 Z
11
+ date: 2019-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -108,7 +108,7 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: 3.1.0
111
- description: Fluentd output plugin to add ec2 metadata fields to a event record
111
+ description: Fluentd output plugin to add Amazon EC2 metadata fields to a event record
112
112
  email:
113
113
  - takumi.saka@gmail.com
114
114
  executables: []
@@ -116,6 +116,7 @@ extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
118
  - ".gitignore"
119
+ - ".gitlab-ci.yml"
119
120
  - ".travis.yml"
120
121
  - Gemfile
121
122
  - LICENSE.txt
@@ -126,6 +127,7 @@ files:
126
127
  - lib/fluent/plugin/filter_ec2_metadata.rb
127
128
  - lib/fluent/plugin/out_ec2_metadata.rb
128
129
  - test/cassettes/ec2-classic.yml
130
+ - test/cassettes/ec2-vpc-with-imdsv2.yml
129
131
  - test/cassettes/ec2-vpc.yml
130
132
  - test/helper.rb
131
133
  - test/plugin/test_filter_ec2_metadata.rb
@@ -149,13 +151,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
151
  - !ruby/object:Gem::Version
150
152
  version: '0'
151
153
  requirements: []
152
- rubyforge_project:
153
- rubygems_version: 2.5.1
154
+ rubygems_version: 3.0.3
154
155
  signing_key:
155
156
  specification_version: 4
156
- summary: Fluentd output plugin to add ec2 metadata fields to a event record
157
+ summary: Fluentd output plugin to add Amazon EC2 metadata fields to a event record
157
158
  test_files:
158
159
  - test/cassettes/ec2-classic.yml
160
+ - test/cassettes/ec2-vpc-with-imdsv2.yml
159
161
  - test/cassettes/ec2-vpc.yml
160
162
  - test/helper.rb
161
163
  - test/plugin/test_filter_ec2_metadata.rb