Module: AwsConfiguration

Extended by:
ActiveSupport::Concern
Defined in:
lib/app/models/concerns/aws_configuration.rb

Overview

AWS Configuration

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/app/models/concerns/aws_configuration.rb', line 9

def self.included(base)
  base.class_eval do
    #
    # Fields
    #
    field :aws_region, type: String
    field :aws_access_key_id, type: String
    field :aws_secret_access_key, type: String
    field :aws_bucket_name, type: String
    field :aws_min_worker_job_count, type: Integer, default: 1
    field :aws_ecs_cluster_worker_name, type: String
    field :aws_ecs_service_worker_name, type: String

    validates :aws_min_worker_job_count, numericality: { only_integer: true, greater_than: 0 }
  end
end

Instance Method Details

#aws_auto_scale_clientAws::AutoScaling::Client

This method is abstract.

AutoScaling Client

Returns:

  • (Aws::AutoScaling::Client)


79
80
81
82
83
84
85
# File 'lib/app/models/concerns/aws_configuration.rb', line 79

def aws_auto_scale_client
  return nil unless aws_configured?

  @auto_scale_client ||= Aws::AutoScaling::Client.new(access_key_id: aws_access_key_id,
                                                      secret_access_key: aws_secret_access_key,
                                                      region: aws_region)
end

#aws_auto_scaling_configured?Boolean

Determine if auto scaling group is configured

Returns:

  • (Boolean)


43
44
45
# File 'lib/app/models/concerns/aws_configuration.rb', line 43

def aws_auto_scaling_configured?
  aws_configured? && aws_ecs_cluster_worker_name.present? && aws_ecs_service_worker_name.present?
end

#aws_configured?Boolean

Determine if AWS is configured

Returns:

  • (Boolean)


36
37
38
# File 'lib/app/models/concerns/aws_configuration.rb', line 36

def aws_configured?
  [aws_region.present?, aws_access_key_id.present?, aws_secret_access_key.present?].all?
end

#aws_ec2_clientAws::EC2::Client

This method is abstract.

EC2 Client

Returns:

  • (Aws::EC2::Client)


49
50
51
52
53
54
55
# File 'lib/app/models/concerns/aws_configuration.rb', line 49

def aws_ec2_client
  return nil unless aws_configured?

  @aws_ec2_client ||= Aws::EC2::Client.new(region: aws_region,
                                           credentials: Aws::Credentials.new(aws_access_key_id,
                                                                             aws_secret_access_key))
end

#aws_ecs_clientAws::ECS::Client

This method is abstract.

ECS Client

Returns:

  • (Aws::ECS::Client)


69
70
71
72
73
74
75
# File 'lib/app/models/concerns/aws_configuration.rb', line 69

def aws_ecs_client
  return nil unless aws_configured?

  @aws_s3_client ||= Aws::ECS::Client.new(region: aws_region,
                                          access_key_id: aws_access_key_id,
                                          secret_access_key: aws_secret_access_key)
end

#aws_s3_clientAws::S3::Client

This method is abstract.

S3 Client

Returns:

  • (Aws::S3::Client)


59
60
61
62
63
64
65
# File 'lib/app/models/concerns/aws_configuration.rb', line 59

def aws_s3_client
  return nil unless aws_configured?

  @aws_s3_client ||= Aws::S3::Client.new(region: aws_region,
                                         access_key_id: aws_access_key_id,
                                         secret_access_key: aws_secret_access_key)
end

#secure_fieldsObject

Make sure the password doesn’t get blanked out on an update



29
30
31
# File 'lib/app/models/concerns/aws_configuration.rb', line 29

def secure_fields
  super + i[aws_secret_access_key]
end