sensu-plugins-aws 2.1.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +13 -5
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +26 -1
- data/README.md +4 -1
- data/bin/check-autoscaling-cpucredits.rb +21 -21
- data/bin/check-beanstalk-elb-metric.rb +3 -3
- data/bin/check-certificate-expiry.rb +5 -5
- data/bin/check-cloudwatch-metric.rb +2 -2
- data/bin/check-dynamodb-capacity.rb +29 -18
- data/bin/check-dynamodb-throttle.rb +28 -17
- data/bin/check-ec2-cpu_balance.rb +107 -0
- data/bin/check-ec2-filter.rb +5 -5
- data/bin/check-ec2-network.rb +19 -15
- data/bin/check-elb-certs.rb +2 -2
- data/bin/check-elb-health-fog.rb +3 -5
- data/bin/check-elb-health-sdk.rb +5 -5
- data/bin/check-elb-latency.rb +1 -1
- data/bin/check-elb-sum-requests.rb +1 -1
- data/bin/check-emr-cluster.rb +3 -5
- data/bin/check-instance-events.rb +2 -4
- data/bin/check-instance-health.rb +80 -0
- data/bin/check-rds-events.rb +18 -7
- data/bin/check-rds.rb +30 -27
- data/bin/check-s3-bucket.rb +2 -4
- data/bin/check-s3-object.rb +2 -4
- data/bin/check-vpc-vpn.rb +4 -6
- data/bin/handler-ec2_node.rb +6 -15
- data/bin/handler-ses.rb +5 -5
- data/bin/handler-sns.rb +12 -14
- data/bin/metrics-autoscaling-instance-count.rb +5 -5
- data/bin/metrics-ec2-count.rb +10 -10
- data/bin/metrics-elasticache.rb +5 -5
- data/bin/metrics-elb-full.rb +5 -5
- data/bin/metrics-sqs.rb +5 -5
- data/lib/sensu-plugins-aws/cloudwatch-common.rb +9 -8
- data/lib/sensu-plugins-aws/common.rb +1 -3
- data/lib/sensu-plugins-aws/filter.rb +2 -2
- data/lib/sensu-plugins-aws/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +139 -125
- metadata.gz.sig +0 -0
data/bin/check-ec2-filter.rb
CHANGED
@@ -107,11 +107,11 @@ class EC2Filter < Sensu::Plugin::Check::CLI
|
|
107
107
|
|
108
108
|
filter = Filter.parse(config[:filter])
|
109
109
|
|
110
|
-
if filter.empty?
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
110
|
+
options = if filter.empty?
|
111
|
+
{}
|
112
|
+
else
|
113
|
+
{ filters: filter }
|
114
|
+
end
|
115
115
|
|
116
116
|
data = client.describe_instances(options)
|
117
117
|
|
data/bin/check-ec2-network.rb
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
# Linux
|
13
13
|
#
|
14
14
|
# DEPENDENCIES:
|
15
|
-
# gem: aws-sdk
|
15
|
+
# gem: aws-sdk
|
16
16
|
# gem: sensu-plugin
|
17
17
|
#
|
18
18
|
# USAGE:
|
@@ -29,7 +29,7 @@
|
|
29
29
|
#
|
30
30
|
|
31
31
|
require 'sensu-plugin/check/cli'
|
32
|
-
require 'aws-sdk
|
32
|
+
require 'aws-sdk'
|
33
33
|
|
34
34
|
class CheckEc2Network < Sensu::Plugin::Check::CLI
|
35
35
|
option :aws_access_key,
|
@@ -87,34 +87,38 @@ class CheckEc2Network < Sensu::Plugin::Check::CLI
|
|
87
87
|
end
|
88
88
|
|
89
89
|
def ec2
|
90
|
-
@ec2 ||=
|
90
|
+
@ec2 ||= Aws::EC2::Client.new aws_config
|
91
91
|
end
|
92
92
|
|
93
93
|
def cloud_watch
|
94
|
-
@cloud_watch ||=
|
94
|
+
@cloud_watch ||= Aws::CloudWatch::Client.new aws_config
|
95
95
|
end
|
96
96
|
|
97
97
|
def network_metric(instance)
|
98
|
-
cloud_watch.
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
98
|
+
cloud_watch.get_metric_statistics(
|
99
|
+
namespace: 'AWS/EC2',
|
100
|
+
metric_name: config[:direction].to_s,
|
101
|
+
dimensions: [
|
102
|
+
{
|
103
|
+
name: 'InstanceId',
|
104
|
+
value: instance
|
105
|
+
}
|
106
|
+
],
|
103
107
|
start_time: config[:end_time] - 300,
|
104
|
-
end_time:
|
108
|
+
end_time: config[:end_time],
|
105
109
|
statistics: ['Average'],
|
106
|
-
period:
|
107
|
-
|
110
|
+
period: config[:period],
|
111
|
+
unit: 'Bytes'
|
112
|
+
)
|
108
113
|
end
|
109
114
|
|
110
|
-
def latest_value(
|
111
|
-
value = metric.statistics(statistics_options.merge unit: 'Bytes')
|
115
|
+
def latest_value(value)
|
112
116
|
value.datapoints[0][:average].to_f unless value.datapoints[0].nil?
|
113
117
|
end
|
114
118
|
|
115
119
|
def check_metric(instance)
|
116
120
|
metric = network_metric instance
|
117
|
-
latest_value metric
|
121
|
+
latest_value metric unless metric.nil?
|
118
122
|
end
|
119
123
|
|
120
124
|
def run
|
data/bin/check-elb-certs.rb
CHANGED
@@ -128,11 +128,11 @@ class CheckELBCerts < Sensu::Plugin::Check::CLI
|
|
128
128
|
unknown "An error occurred processing AWS ELB API: #{e.message}"
|
129
129
|
end
|
130
130
|
|
131
|
-
if critical_message.length
|
131
|
+
if !critical_message.length.empty?
|
132
132
|
message = cert_message(critical_message.length, 'expiring within', config[:crit_under])
|
133
133
|
message += ': ' + critical_message.sort.join(' ')
|
134
134
|
critical message
|
135
|
-
elsif warning_message.
|
135
|
+
elsif !warning_message.empty?
|
136
136
|
message = cert_message(warning_message.length, 'expiring within', config[:warn_under])
|
137
137
|
message += ': ' + warning_message.sort.join(' ')
|
138
138
|
warning message
|
data/bin/check-elb-health-fog.rb
CHANGED
@@ -103,12 +103,10 @@ class ELBHealth < Sensu::Plugin::Check::CLI
|
|
103
103
|
end
|
104
104
|
if unhealthy_instances.empty?
|
105
105
|
ok "All instances on ELB #{aws_region}::#{config[:elb_name]} healthy!"
|
106
|
+
elsif config[:verbose]
|
107
|
+
critical "Unhealthy instances detected: #{unhealthy_instances.map { |id, state| '[' + id + '::' + state + ']' }.join(' ')}"
|
106
108
|
else
|
107
|
-
|
108
|
-
critical "Unhealthy instances detected: #{unhealthy_instances.map { |id, state| '[' + id + '::' + state + ']' }.join(' ')}"
|
109
|
-
else
|
110
|
-
critical "Detected [#{unhealthy_instances.size}] unhealthy instances"
|
111
|
-
end
|
109
|
+
critical "Detected [#{unhealthy_instances.size}] unhealthy instances"
|
112
110
|
end
|
113
111
|
rescue => e
|
114
112
|
warning "An issue occured while communicating with the AWS EC2 API: #{e.message}"
|
data/bin/check-elb-health-sdk.rb
CHANGED
@@ -92,11 +92,11 @@ class ELBHealth < Sensu::Plugin::Check::CLI
|
|
92
92
|
|
93
93
|
def check_health(elb)
|
94
94
|
unhealthy_instances = {}
|
95
|
-
if config[:instances]
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
95
|
+
instance_health_hash = if config[:instances]
|
96
|
+
elb.instances.health(config[:instances])
|
97
|
+
else
|
98
|
+
elb.instances.health
|
99
|
+
end
|
100
100
|
instance_health_hash.each do |instance_health|
|
101
101
|
if instance_health[:state] != 'InService'
|
102
102
|
unhealthy_instances[instance_health[:instance].id] = instance_health[:state]
|
data/bin/check-elb-latency.rb
CHANGED
@@ -123,7 +123,7 @@ class CheckELBLatency < Sensu::Plugin::Check::CLI
|
|
123
123
|
end
|
124
124
|
|
125
125
|
def latest_value(metric)
|
126
|
-
metric.statistics(statistics_options.merge
|
126
|
+
metric.statistics(statistics_options.merge(unit: 'Seconds')).datapoints.sort_by { |datapoint| datapoint[:timestamp] }.last[config[:statistics]]
|
127
127
|
end
|
128
128
|
|
129
129
|
def flag_alert(severity, message)
|
@@ -115,7 +115,7 @@ class CheckELBSumRequests < Sensu::Plugin::Check::CLI
|
|
115
115
|
end
|
116
116
|
|
117
117
|
def latest_value(metric)
|
118
|
-
metric.statistics(statistics_options.merge
|
118
|
+
metric.statistics(statistics_options.merge(unit: 'Count')).datapoints.sort_by { |datapoint| datapoint[:timestamp] }.last[:sum]
|
119
119
|
end
|
120
120
|
|
121
121
|
def flag_alert(severity, message)
|
data/bin/check-emr-cluster.rb
CHANGED
@@ -106,10 +106,8 @@ class CheckEMRCluster < Sensu::Plugin::Check::CLI
|
|
106
106
|
def run
|
107
107
|
aws_config = {}
|
108
108
|
if config[:use_iam_role].nil?
|
109
|
-
aws_config
|
110
|
-
|
111
|
-
secret_access_key: config[:aws_secret_access_key]
|
112
|
-
)
|
109
|
+
aws_config[:access_key_id] = config[:aws_access_key]
|
110
|
+
aws_config[:secret_access_key] = config[:aws_secret_access_key]
|
113
111
|
end
|
114
112
|
|
115
113
|
emr = Aws::EMR::Client.new(aws_config.merge!(region: config[:aws_region]))
|
@@ -118,7 +116,7 @@ class CheckEMRCluster < Sensu::Plugin::Check::CLI
|
|
118
116
|
clusters = emr_clusters.select { |c| c.name == config[:cluster_name] }
|
119
117
|
|
120
118
|
critical "EMR cluster #{config[:cluster_name]} appears #{clusters.size} times" if clusters.size > 1
|
121
|
-
critical "EMR cluster #{config[:cluster_name]} not found" if clusters.
|
119
|
+
critical "EMR cluster #{config[:cluster_name]} not found" if clusters.empty?
|
122
120
|
|
123
121
|
cluster = clusters.first
|
124
122
|
state = cluster.status.state
|
@@ -72,10 +72,8 @@ class CheckInstanceEvents < Sensu::Plugin::Check::CLI
|
|
72
72
|
aws_config = {}
|
73
73
|
|
74
74
|
if config[:use_iam_role].nil?
|
75
|
-
aws_config
|
76
|
-
|
77
|
-
secret_access_key: config[:aws_secret_access_key]
|
78
|
-
)
|
75
|
+
aws_config[:access_key_id] = config[:aws_access_key]
|
76
|
+
aws_config[:secret_access_key] = config[:aws_secret_access_key]
|
79
77
|
end
|
80
78
|
|
81
79
|
ec2 = AWS::EC2::Client.new(aws_config.merge!(region: config[:aws_region]))
|
@@ -0,0 +1,80 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# check-instance-health
|
4
|
+
#
|
5
|
+
# DESCRIPTION:
|
6
|
+
# This plugin looks up all instances in an account and checks event data, system status
|
7
|
+
#
|
8
|
+
# OUTPUT:
|
9
|
+
# plain-text
|
10
|
+
#
|
11
|
+
# PLATFORMS:
|
12
|
+
# Linux
|
13
|
+
#
|
14
|
+
# DEPENDENCIES:
|
15
|
+
# gem: aws-sdk
|
16
|
+
# gem: sensu-plugin
|
17
|
+
#
|
18
|
+
# USAGE:
|
19
|
+
# #YELLOW
|
20
|
+
#
|
21
|
+
# NOTES:
|
22
|
+
#
|
23
|
+
# LICENSE:
|
24
|
+
# Shane Starcher
|
25
|
+
# Copyright (c) 2016
|
26
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
27
|
+
# for details.
|
28
|
+
#
|
29
|
+
|
30
|
+
require 'sensu-plugins-aws'
|
31
|
+
require 'sensu-plugin/check/cli'
|
32
|
+
require 'aws-sdk'
|
33
|
+
|
34
|
+
class CheckInstanceEvents < Sensu::Plugin::Check::CLI
|
35
|
+
include Common
|
36
|
+
|
37
|
+
option :aws_region,
|
38
|
+
short: '-r AWS_REGION',
|
39
|
+
long: '--aws-region REGION',
|
40
|
+
description: 'AWS Region (defaults to us-east-1).',
|
41
|
+
default: 'us-east-1'
|
42
|
+
|
43
|
+
def gather_events(events)
|
44
|
+
useful_events = events.reject { |x| x[:code] == 'system-reboot' && x[:description] =~ /\[Completed\]/ }
|
45
|
+
!useful_events.empty?
|
46
|
+
end
|
47
|
+
|
48
|
+
def gather_status(status_checks)
|
49
|
+
['impaired', 'insufficient-data'].include? status_checks.status
|
50
|
+
end
|
51
|
+
|
52
|
+
def run
|
53
|
+
messages = []
|
54
|
+
ec2 = Aws::EC2::Client.new
|
55
|
+
begin
|
56
|
+
ec2.describe_instance_status.instance_statuses.each do |item|
|
57
|
+
id = item.instance_id
|
58
|
+
if gather_events(item.events)
|
59
|
+
messages << "#{id} has unscheduled events"
|
60
|
+
end
|
61
|
+
|
62
|
+
if gather_status(item.system_status)
|
63
|
+
messages << "#{id} has failed system status checks"
|
64
|
+
end
|
65
|
+
|
66
|
+
if gather_status(item.instance_status)
|
67
|
+
messages << "#{id} has failed instance status checks"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
rescue => e
|
71
|
+
unknown "An error occurred processing AWS EC2 API: #{e.message}"
|
72
|
+
end
|
73
|
+
|
74
|
+
if messages.count > 0
|
75
|
+
critical("#{messages.count} instances #{messages.count > 1 ? 'have' : 'has'}: #{messages.join(',')}")
|
76
|
+
else
|
77
|
+
ok
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
data/bin/check-rds-events.rb
CHANGED
@@ -5,9 +5,12 @@
|
|
5
5
|
#
|
6
6
|
# DESCRIPTION:
|
7
7
|
# This plugin checks rds clusters for critical events.
|
8
|
-
# Due to the number of events types on RDS clusters the check
|
9
|
-
#
|
10
|
-
#
|
8
|
+
# Due to the number of events types on RDS clusters, the check
|
9
|
+
# should filter out non-disruptive events that are part of
|
10
|
+
# basic operations.
|
11
|
+
#
|
12
|
+
# More info on RDS events:
|
13
|
+
# http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html
|
11
14
|
#
|
12
15
|
# OUTPUT:
|
13
16
|
# plain-text
|
@@ -76,14 +79,22 @@ class CheckRDSEvents < Sensu::Plugin::Check::CLI
|
|
76
79
|
clusters = rds.describe_db_instances[:db_instances].map { |db| db[:db_instance_identifier] }
|
77
80
|
maint_clusters = []
|
78
81
|
|
79
|
-
# fetch the last
|
82
|
+
# fetch the last 15 minutes of events for each cluster
|
83
|
+
# that way, we're only spammed with persistent notifications that we'd care about.
|
80
84
|
clusters.each do |cluster_name|
|
81
|
-
events_record = rds.describe_events(start_time: (Time.now -
|
85
|
+
events_record = rds.describe_events(start_time: (Time.now - 900).iso8601, source_type: 'db-instance', source_identifier: cluster_name)
|
82
86
|
next if events_record[:events].empty?
|
83
87
|
|
84
|
-
#
|
88
|
+
# we will need to filter out non-disruptive/basic operation events.
|
89
|
+
# ie. the regular backup operations
|
90
|
+
next if events_record[:events][-1][:message] =~ /Backing up DB instance|Finished DB Instance backup|Restored from snapshot/
|
91
|
+
# ie. Replication resumed
|
92
|
+
next if events_record[:events][-1][:message] =~ /Replication for the Read Replica resumed/
|
93
|
+
# you can add more filters to skip more events.
|
94
|
+
|
95
|
+
# draft the messages
|
85
96
|
cluster_name_long = "#{cluster_name} (#{aws_config[:region]}) #{events_record[:events][-1][:message]}"
|
86
|
-
maint_clusters.push(cluster_name_long)
|
97
|
+
maint_clusters.push(cluster_name_long)
|
87
98
|
end
|
88
99
|
rescue => e
|
89
100
|
unknown "An error occurred processing AWS RDS API: #{e.message}"
|
data/bin/check-rds.rb
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
# Linux
|
13
13
|
#
|
14
14
|
# DEPENDENCIES:
|
15
|
-
# gem: aws-sdk
|
15
|
+
# gem: aws-sdk
|
16
16
|
# gem: sensu-plugin
|
17
17
|
#
|
18
18
|
# USAGE:
|
@@ -51,7 +51,7 @@
|
|
51
51
|
#
|
52
52
|
|
53
53
|
require 'sensu-plugin/check/cli'
|
54
|
-
require 'aws-sdk
|
54
|
+
require 'aws-sdk'
|
55
55
|
require 'time'
|
56
56
|
|
57
57
|
class CheckRDS < Sensu::Plugin::Check::CLI
|
@@ -126,36 +126,39 @@ class CheckRDS < Sensu::Plugin::Check::CLI
|
|
126
126
|
end
|
127
127
|
|
128
128
|
def rds
|
129
|
-
@rds ||=
|
129
|
+
@rds ||= Aws::RDS::Client.new aws_config
|
130
130
|
end
|
131
131
|
|
132
132
|
def cloud_watch
|
133
|
-
@cloud_watch ||=
|
133
|
+
@cloud_watch ||= Aws::CloudWatch::Client.new aws_config
|
134
134
|
end
|
135
135
|
|
136
136
|
def find_db_instance(id)
|
137
|
-
db = rds.
|
138
|
-
|
137
|
+
db = rds.describe_db_instances.db_instances.select { |db_instance| db_instance.db_instance_identifier == id }
|
138
|
+
unknown 'DB instance not found.' if db.empty?
|
139
139
|
db
|
140
|
-
rescue
|
141
|
-
unknown 'DB instance not found.'
|
142
140
|
end
|
143
141
|
|
144
|
-
def cloud_watch_metric(metric_name)
|
145
|
-
cloud_watch.
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
142
|
+
def cloud_watch_metric(metric_name, unit)
|
143
|
+
cloud_watch.get_metric_statistics(
|
144
|
+
namespace: 'AWS/RDS',
|
145
|
+
metric_name: metric_name,
|
146
|
+
dimensions: [
|
147
|
+
{
|
148
|
+
name: 'DBInstanceIdentifier',
|
149
|
+
value: @db_instance.id
|
150
|
+
}
|
151
|
+
],
|
150
152
|
start_time: config[:end_time] - config[:period],
|
151
|
-
end_time:
|
153
|
+
end_time: config[:end_time],
|
152
154
|
statistics: [config[:statistics].to_s.capitalize],
|
153
|
-
period:
|
154
|
-
|
155
|
+
period: config[:period],
|
156
|
+
unit: unit
|
157
|
+
)
|
155
158
|
end
|
156
159
|
|
157
|
-
def latest_value(metric
|
158
|
-
values = metric.
|
160
|
+
def latest_value(metric)
|
161
|
+
values = metric.datapoints.sort_by { |datapoint| datapoint[:timestamp] }
|
159
162
|
|
160
163
|
# handle time periods that are too small to return usable values. # this is a cozy addition that wouldn't port upstream.
|
161
164
|
if values.empty?
|
@@ -205,20 +208,20 @@ class CheckRDS < Sensu::Plugin::Check::CLI
|
|
205
208
|
end
|
206
209
|
|
207
210
|
def check_az(severity, expected_az)
|
208
|
-
return if @db_instance.
|
209
|
-
flag_alert severity, "; AZ is #{@db_instance.
|
211
|
+
return if @db_instance.availability_zone == expected_az
|
212
|
+
flag_alert severity, "; AZ is #{@db_instance.availability_zone} (expected #{expected_az})"
|
210
213
|
end
|
211
214
|
|
212
215
|
def check_cpu(severity, expected_lower_than)
|
213
|
-
@cpu_metric ||= cloud_watch_metric 'CPUUtilization'
|
214
|
-
@cpu_metric_value ||= latest_value @cpu_metric
|
216
|
+
@cpu_metric ||= cloud_watch_metric 'CPUUtilization', 'Percent'
|
217
|
+
@cpu_metric_value ||= latest_value @cpu_metric
|
215
218
|
return if @cpu_metric_value < expected_lower_than
|
216
219
|
flag_alert severity, "; CPUUtilization is #{sprintf '%.2f', @cpu_metric_value}% (expected lower than #{expected_lower_than}%)"
|
217
220
|
end
|
218
221
|
|
219
222
|
def check_memory(severity, expected_lower_than)
|
220
|
-
@memory_metric ||= cloud_watch_metric 'FreeableMemory'
|
221
|
-
@memory_metric_value ||= latest_value @memory_metric
|
223
|
+
@memory_metric ||= cloud_watch_metric 'FreeableMemory', 'Bytes'
|
224
|
+
@memory_metric_value ||= latest_value @memory_metric
|
222
225
|
@memory_total_bytes ||= memory_total_bytes @db_instance.db_instance_class
|
223
226
|
@memory_usage_bytes ||= @memory_total_bytes - @memory_metric_value
|
224
227
|
@memory_usage_percentage ||= @memory_usage_bytes / @memory_total_bytes * 100
|
@@ -227,8 +230,8 @@ class CheckRDS < Sensu::Plugin::Check::CLI
|
|
227
230
|
end
|
228
231
|
|
229
232
|
def check_disk(severity, expected_lower_than)
|
230
|
-
@disk_metric ||= cloud_watch_metric 'FreeStorageSpace'
|
231
|
-
@disk_metric_value ||= latest_value @disk_metric
|
233
|
+
@disk_metric ||= cloud_watch_metric 'FreeStorageSpace', 'Bytes'
|
234
|
+
@disk_metric_value ||= latest_value @disk_metric
|
232
235
|
@disk_total_bytes ||= @db_instance.allocated_storage * 1024**3
|
233
236
|
@disk_usage_bytes ||= @disk_total_bytes - @disk_metric_value
|
234
237
|
@disk_usage_percentage ||= @disk_usage_bytes / @disk_total_bytes * 100
|
data/bin/check-s3-bucket.rb
CHANGED
@@ -70,10 +70,8 @@ class CheckS3Bucket < Sensu::Plugin::Check::CLI
|
|
70
70
|
aws_config = {}
|
71
71
|
|
72
72
|
if config[:use_iam_role].nil?
|
73
|
-
aws_config
|
74
|
-
|
75
|
-
secret_access_key: config[:aws_secret_access_key]
|
76
|
-
)
|
73
|
+
aws_config[:access_key_id] = config[:aws_access_key]
|
74
|
+
aws_config[:secret_access_key] = config[:aws_secret_access_key]
|
77
75
|
end
|
78
76
|
|
79
77
|
s3 = Aws::S3::Client.new(aws_config.merge!(region: config[:aws_region]))
|
data/bin/check-s3-object.rb
CHANGED
@@ -101,10 +101,8 @@ class CheckS3Bucket < Sensu::Plugin::Check::CLI
|
|
101
101
|
def run
|
102
102
|
aws_config = {}
|
103
103
|
if config[:use_iam_role].nil?
|
104
|
-
aws_config
|
105
|
-
|
106
|
-
secret_access_key: config[:aws_secret_access_key]
|
107
|
-
)
|
104
|
+
aws_config[:access_key_id] = config[:aws_access_key]
|
105
|
+
aws_config[:secret_access_key] = config[:aws_secret_access_key]
|
108
106
|
end
|
109
107
|
|
110
108
|
s3 = Aws::S3::Client.new(aws_config.merge!(region: config[:aws_region]))
|