fluent-plugin-ec2-metadata 0.1.2 → 0.1.3

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
- 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