kratos 1.0.3 → 1.1.0

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
2
  SHA1:
3
- metadata.gz: 61045f764eef6fc5ffdcfc250d496b31695a5437
4
- data.tar.gz: b32ec368b9ea11ad6e59f595d987d834ed5c460a
3
+ metadata.gz: f7b3bdd730f01861415f2ffdf2981945f07fbcb5
4
+ data.tar.gz: 2523567b4804055c1ee62fe55a5a657113837f1e
5
5
  SHA512:
6
- metadata.gz: a32eb2325a7f1f870030355a70810e0b046a556fa8b7b266d162b401cc722ef1be6b041e31ef4521259487d33328c66c61f7abe66977a4db2f3a2c7e05c22a7c
7
- data.tar.gz: 8769fc3162ba927a705b862ddda36a6260cdb2c26b8c955b644fff8daf970a86ef8c6c8792a1b6a416671961016ed0f213e31e160ae29edfa83bed37b6ab95ef
6
+ metadata.gz: 4ecb0629c7eaf9c02e8744e107457c6b5126973b7eeb0fb24d84c42aee6691ade30f165f3c820cbd9392e0f2849bfcc2ca7b0714c0b29ec425edb04cd76e1488
7
+ data.tar.gz: 687a4251bcb6ebdc2ced44836b491b4503ff0b0ae54bf45798535c9f25e38ec000a1efc15598c505ef87b108dead9adf4ed34a1e80cda1c864dd6bd8d0b859fd
data/README.md CHANGED
@@ -15,9 +15,19 @@ Then run:
15
15
 
16
16
  This will create a Rails app in `projectname` using the latest version of Rails.
17
17
 
18
- After run, configure sidekiq panel password in the
19
- `config/initializers/sidekiq.rb` file. The panel is accessible by the URL
20
- `/sidekiq`.
18
+ After run, you must configure:
19
+
20
+ - Change the sidekiq panel password in the `config/initializers/sidekiq.rb`
21
+ file. The panel is accessible by the URL `/sidekiq`.
22
+ - Setup your development environment variables: `NEW_RELIC_LICENSE_KEY`,
23
+ `ROLLBAR_TOKEN`, `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`
24
+ - Setup your production and staging environment variables using dotgpg. You must
25
+ create two files on the root of your project: `env_production.gpg` and
26
+ `env_staging.gpg`. To initialize dotgpg on your project run `dotgpg init`.
27
+ It'll create a `.gpg` folder and add your public key to it. To edit the files,
28
+ use the `dotgpg edit env_<environment>.gpg` command. For more information look
29
+ at the [DotGPG](https://github.com/ConradIrwin/dotgpg).
30
+ - Run `bin/setup` to initialize your database and files.
21
31
 
22
32
  ## License
23
33
 
@@ -152,6 +152,18 @@ class AppBuilder < Rails::AppBuilder
152
152
  copy_file 'i18n-tasks.yml', 'config/i18n-tasks.yml'
153
153
  end
154
154
 
155
+ def configure_newrelic
156
+ template 'newrelic.yml.erb', 'config/newrelic.yml'
157
+ end
158
+
159
+ def configure_rollbar
160
+ template 'rollbar.rb.erb', 'config/initializers/rollbar.rb'
161
+ end
162
+
163
+ def configure_nginx
164
+ copy_file 'nginx.conf.erb', 'config/deploy/nginx.conf.erb'
165
+ end
166
+
155
167
  def configure_smtp
156
168
  copy_file 'smtp.rb', 'config/smtp.rb'
157
169
 
@@ -413,6 +425,11 @@ end
413
425
  force: true
414
426
  end
415
427
 
428
+ def use_mysql_config_template
429
+ template 'mysql_database.yml.erb', 'config/database.yml',
430
+ force: true
431
+ end
432
+
416
433
  def create_database
417
434
  bundle_command 'exec rake db:create db:migrate'
418
435
  end
@@ -428,9 +445,6 @@ end
428
445
 
429
446
  def create_capistrano_config
430
447
  template 'deploy_config.rb.erb', 'config/deploy.rb'
431
- end
432
-
433
- def create_capistrano_config
434
448
  copy_file 'cap_environment.rb', 'config/deploy/production.rb'
435
449
  copy_file 'cap_environment.rb', 'config/deploy/staging.rb'
436
450
  end
@@ -3,7 +3,7 @@ require 'rails/generators/rails/app/app_generator'
3
3
 
4
4
  module Kratos
5
5
  class AppGenerator < Rails::Generators::AppGenerator
6
- class_option :database, type: :string, aliases: '-d', default: 'postgresql',
6
+ class_option :database, type: :string, aliases: '-d', default: 'mysql',
7
7
  desc: "Configure for selected database (options: #{DATABASES.join('/')})"
8
8
 
9
9
  class_option :skip_test_unit, type: :boolean, aliases: '-T', default: true,
@@ -77,6 +77,9 @@ module Kratos
77
77
 
78
78
  def setup_production_environment
79
79
  say 'Setting up the production environment'
80
+ build :configure_newrelic
81
+ build :configure_rollbar
82
+ build :configure_nginx
80
83
  build :configure_smtp
81
84
  build :enable_rack_deflater
82
85
  build :setup_asset_host
@@ -142,6 +145,7 @@ module Kratos
142
145
  say 'Setting up database'
143
146
 
144
147
  build :use_postgres_config_template if 'postgresql' == options[:database]
148
+ build :use_mysql_config_template if 'mysql' == options[:database]
145
149
 
146
150
  build :create_database
147
151
  end
@@ -2,5 +2,5 @@
2
2
  module Kratos
3
3
  RAILS_VERSION = '~> 4.2.0'.freeze
4
4
  RUBY_VERSION = IO.read("#{File.dirname(__FILE__)}/../../.ruby-version").strip
5
- VERSION = '1.0.3'.freeze
5
+ VERSION = '1.1.0'.freeze
6
6
  end
@@ -1,3 +1,7 @@
1
+ require 'dotenv'
2
+
3
+ Dotenv.load
4
+
1
5
  # Load DSL and set up stages
2
6
  require 'capistrano/setup'
3
7
 
@@ -7,6 +11,10 @@ require 'capistrano/rbenv'
7
11
  require 'capistrano/bundler'
8
12
  require 'capistrano/rails/migrations'
9
13
  require 'capistrano/rails/assets'
14
+ require 'capistrano/rails/console'
15
+ require 'capistrano/nginx'
16
+ require 'new_relic/recipes'
17
+ require 'rollbar/capistrano3'
10
18
 
11
19
  # Setup Whenever tasks
12
20
  require 'whenever/capistrano'
@@ -2,6 +2,7 @@ source "https://rubygems.org"
2
2
 
3
3
  ruby "<%= Kratos::RUBY_VERSION %>"
4
4
 
5
+ gem 'rollbar'
5
6
  gem "email_validator"
6
7
  gem "i18n-tasks"
7
8
  gem "autoprefixer-rails"
@@ -9,7 +10,12 @@ gem "bourbon", "~> 4.2.0"
9
10
  gem "flutie"
10
11
  gem "jquery-rails"
11
12
  gem "normalize-rails", "~> 3.0.0"
13
+ <% if options.database == 'postgresql' %>
12
14
  gem "pg"
15
+ <% end %>
16
+ <% if options.database == 'mysql' %>
17
+ gem 'mysql2', '~> 0.3.20'
18
+ <% end %>
13
19
  gem "puma"
14
20
  gem "rails", "<%= Kratos::RAILS_VERSION %>"
15
21
  gem "recipient_interceptor"
@@ -23,12 +29,11 @@ gem "sinatra", require: nil
23
29
  gem "redis-rails"
24
30
  gem "dalli"
25
31
  gem "lograge"
32
+ gem 'newrelic_rpm', '>= 3.9.8'
26
33
  gem "whenever", require: false
27
- gem "premailer-rails"
28
34
  gem "nokogiri", ">= 1.6.7.2"
29
35
  gem "geocoder"
30
36
  gem "aws-sdk"
31
- gem "figaro"
32
37
  gem "httparty"
33
38
 
34
39
  group :development do
@@ -37,12 +42,16 @@ group :development do
37
42
  gem "capistrano", "~> 3.1"
38
43
  gem "capistrano-rails", "~> 1.1"
39
44
  gem "capistrano-rbenv", "~> 2.0"
45
+ gem 'capistrano3-nginx', '~> 2.0'
46
+ gem 'capistrano-rails-console'
40
47
  end
41
48
 
42
49
  group :development, :test do
43
50
  gem "pry-meta"
44
51
  gem "bullet"
45
52
  gem "bundler-audit", require: false
53
+ gem 'dotgpg'
54
+ gem 'dotenv-rails'
46
55
  gem "factory_girl_rails"
47
56
  gem "ffaker"
48
57
  gem "rspec-rails", "~> 3.4.0"
@@ -10,10 +10,6 @@ set -e
10
10
  gem install bundler --conservative
11
11
  bundle check || bundle install
12
12
 
13
- if [ ! -f config/application.yml ]; then
14
- cp .sample.application.yml config/application.yml
15
- fi
16
-
17
13
  # Set up database and add any development seed data
18
14
  bin/rake dev:prime
19
15
 
@@ -1,28 +1,40 @@
1
1
  namespace :deploy do
2
- task :setup_env do
3
- on roles(:web) do
4
- within release_path do
5
- execute(:cp, "~/.#{fetch(:application)}.yml config/application.yml")
6
- execute(:cp, "~/.#{fetch(:application)}.env .env")
7
- execute(:cp, "~/.#{fetch(:application)}.foreman .foreman")
8
- end
9
- end
10
- end
11
- before :updated, :setup_env
12
-
13
2
  task :restart do
14
3
  invoke 'foreman:export'
15
4
  invoke 'foreman:restart'
5
+ invoke 'deploy:setup_nginx'
16
6
  end
17
7
 
18
- desc 'reload the database with seed data'
19
- task :seed do
20
- on primary :db do
21
- within current_path do
22
- with rails_env: fetch(:stage) do
23
- execute(:rake, 'db:seed')
24
- end
25
- end
8
+ task :setup_nginx do
9
+ invoke 'nginx:site:add'
10
+ invoke 'nginx:site:enable'
11
+ invoke 'nginx:reload'
12
+ end
13
+
14
+ task :setup_env do
15
+ env_file = "env_#{fetch(:stage)}.gpg"
16
+
17
+ dotenv_contents = ''
18
+ run_locally do
19
+ fail "You must have a #{env_file} file on your project root " \
20
+ 'to be able to deploy it' unless File.exist?(env_file)
21
+
22
+ dotenv_contents = `bundle exec dotgpg cat #{env_file}`
23
+ end
24
+
25
+ on roles(:app) do
26
+ dotenv = StringIO.new
27
+ dotenv << dotenv_contents
28
+ dotenv.rewind
29
+
30
+ upload! dotenv, File.join(shared_path, '.env')
26
31
  end
27
32
  end
33
+ after :started, :setup_env
34
+
35
+ namespace :check do
36
+ task linked_files: '.env'
37
+ end
28
38
  end
39
+
40
+ remote_file '.env' => 'deploy:setup_env', roles: :app
@@ -8,6 +8,15 @@ set :user, 'deploy'
8
8
  set :rbenv_ruby, File.read('.ruby-version').strip
9
9
  set :rbenv_type, :user
10
10
  set :rbenv_bin_path, '/home/deploy/.rbenv/shims'
11
+ set :rbenv_prefix, -> { "#{fetch(:rbenv_path)}/bin/rbenv exec dotenv" }
12
+
13
+ set :nginx_domains, '<%= app_name.dasherize %>.com.br'
14
+ set :nginx_template, "#{stage_config_path}/nginx.conf.erb"
15
+ set :app_server_port, 3000
16
+
17
+ set :rollbar_token, ENV['ROLLBAR_TOKEN']
18
+ set :rollbar_env, proc { fetch :stage }
19
+ set :rollbar_role, proc { :db }
11
20
 
12
21
  # Always deploy the current branch.
13
22
  set :branch, `git rev-parse --abbrev-ref HEAD`.chomp
@@ -19,15 +28,8 @@ set :linked_dirs, fetch(:linked_dirs, []).push('log',
19
28
  'tmp/pids',
20
29
  'tmp/cache')
21
30
 
31
+ set :linked_files, %w(.env)
32
+
22
33
  set :default_env, path: '/home/deploy/.rbenv/shims:$PATH'
23
34
 
24
- namespace :deploy do
25
- after :restart, :clear_cache do
26
- on roles(:web), in: :groups, limit: 3, wait: 10 do
27
- # Here we can do anything such as:
28
- # within release_path do
29
- # execute :rake, 'cache:clear'
30
- # end
31
- end
32
- end
33
- end
35
+ after 'deploy:updated', 'newrelic:notice_deployment'
@@ -1,3 +1,16 @@
1
1
  WEB_CONCURRENCY=1
2
2
  MAX_THREADS=3
3
3
  PORT=3000
4
+ ASSET_HOST=localhost:3000
5
+ APPLICATION_HOST=localhost:3000
6
+ REDIS_URL=redis://127.0.0.1:6379
7
+ SECRET_TOKEN=development_token
8
+ SECRET_KEY_BASE=development_secret
9
+ EXECJS_RUNTIME=Node
10
+ SMTP_ADDRESS=smtp.example.com
11
+ SMTP_DOMAIN=example.com
12
+ SMTP_PASSWORD=password
13
+ SMTP_USERNAME=username
14
+ AWS_REGION=us-east-1
15
+ AWS_ACCESS_KEY_ID=<put-your-key-here>
16
+ AWS_SECRET_ACCESS_KEY=<put-your-secret-here>
@@ -3,9 +3,6 @@ namespace :foreman do
3
3
  task :export do
4
4
  on roles(:app) do
5
5
  within current_path do
6
- # Add path to .env.
7
- # Needed for rbenv to work properly.
8
- execute(:echo, "\"PATH=#{fetch(:rbenv_bin_path)}:$PATH\" >> .env")
9
6
  # Create the upstart script
10
7
  execute(:sudo, "#{fetch(:rbenv_prefix)} " \
11
8
  'foreman export upstart /etc/init ' \
@@ -1,7 +1,8 @@
1
1
  Rails.application.configure do
2
2
  if Rails.env.production?
3
3
  config.lograge.enabled = true
4
- config.log_tags = [:uuid]
4
+ config.log_tags = [:uuid, :remote_ip]
5
+ config.lograge.formatter = Lograge::Formatters::Json.new
5
6
 
6
7
  config.lograge.custom_options = lambda do |event|
7
8
  params = event.payload[:params].reject do |k|
@@ -0,0 +1,26 @@
1
+ development: &default
2
+ adapter: mysql2
3
+ database: <%= app_name %>_development
4
+ encoding: utf8mb4
5
+ charset: utf8mb4
6
+ collation: utf8mb4_unicode_ci
7
+ host: localhost
8
+ min_messages: warning
9
+ pool: <%%= Integer(ENV.fetch("DB_POOL", 5)) %>
10
+ reaping_frequency: <%%= Integer(ENV.fetch("DB_REAPING_FREQUENCY", 10)) %>
11
+ timeout: 5000
12
+
13
+ test:
14
+ <<: *default
15
+ database: <%= app_name %>_test
16
+
17
+ production: &deploy
18
+ encoding: utf8mb4
19
+ charset: utf8mb4
20
+ collation: utf8mb4_unicode_ci
21
+ min_messages: warning
22
+ pool: <%%= [Integer(ENV.fetch("MAX_THREADS", 5)), Integer(ENV.fetch("DB_POOL", 5))].max %>
23
+ timeout: 5000
24
+ url: <%%= ENV.fetch("DATABASE_URL", "") %>
25
+
26
+ staging: *deploy
@@ -0,0 +1,34 @@
1
+ common: &default_settings
2
+ app_name: "<%= app_name %>"
3
+ audit_log:
4
+ enabled: false
5
+ browser_monitoring:
6
+ auto_instrument: true
7
+ capture_params: false
8
+ developer_mode: false
9
+ error_collector:
10
+ capture_source: true
11
+ enabled: true
12
+ ignore_errors: "ActionController::RoutingError,Sinatra::NotFound"
13
+ license_key: "<%%= ENV["NEW_RELIC_LICENSE_KEY"] %>"
14
+ log_level: info
15
+ monitor_mode: true
16
+ transaction_tracer:
17
+ enabled: true
18
+ record_sql: obfuscated
19
+ stack_trace_threshold: 0.500
20
+ transaction_threshold: apdex_f
21
+ development:
22
+ <<: *default_settings
23
+ monitor_mode: false
24
+ developer_mode: true
25
+ test:
26
+ <<: *default_settings
27
+ monitor_mode: false
28
+ production:
29
+ <<: *default_settings
30
+ monitor_mode: true
31
+ staging:
32
+ <<: *default_settings
33
+ app_name: "<%= app_name %> (Staging)"
34
+ monitor_mode: true
@@ -0,0 +1,86 @@
1
+ <% if fetch(:app_server) && (fetch(:app_server_socket) || fetch(:app_server_port))%>
2
+ # Define App Server Upstream
3
+ upstream <%= fetch(:application) %>-app-server {
4
+ <% if fetch(:app_server_socket) %>
5
+ server unix:<%= fetch(:app_server_socket) %> fail_timeout=0;
6
+ <% elsif fetch(:app_server_port) %>
7
+ server <%= fetch(:app_server_host, '127.0.0.1') %>:<%= fetch(:app_server_port) %> fail_timeout=0;
8
+ <% end %>
9
+ }
10
+ <% end %>
11
+
12
+ # HTTP Server
13
+
14
+ <% if fetch(:nginx_redirected_domains) %>
15
+ server {
16
+ listen 80;
17
+ server_name <%= fetch(:nginx_redirected_domains) %>;
18
+ rewrite ^(.*) http://<%= fetch(:nginx_domains).gsub(/\s.*/,'') %> permanent;
19
+ }
20
+ <% end %>
21
+
22
+ <% if fetch(:nginx_use_ssl) %>
23
+ server {
24
+ listen 80;
25
+ server_name <%= fetch(:nginx_domains) %>;
26
+ rewrite ^(.*) https://$host$1 permanent;
27
+ }
28
+ <% end %>
29
+
30
+ server {
31
+
32
+ <% if fetch(:nginx_use_ssl) %>
33
+ listen 443;
34
+ ssl on;
35
+ ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
36
+ ssl_certificate <%= fetch(:nginx_ssl_certificate_path) %>/<%= fetch(:nginx_ssl_certificate) %>;
37
+ ssl_certificate_key <%= fetch(:nginx_ssl_certificate_key_path) %>/<%= fetch(:nginx_ssl_certificate_key) %>;
38
+ <% else %>
39
+ listen 80;
40
+ <% end %>
41
+
42
+ server_name <%= fetch(:nginx_domains) %>;
43
+ root <%= fetch(:deploy_to) %>/current/<%= fetch(:nginx_static_dir) %>;
44
+
45
+ access_log <%= fetch(:nginx_log_path) %>/nginx-access.log timed_combined;
46
+ error_log <%= fetch(:nginx_log_path) %>/nginx-error.log;
47
+
48
+ error_page 404 /404.html;
49
+ location /404.html { root <%= fetch(:deploy_to) %>/current/<%= fetch(:nginx_static_dir) %>; }
50
+
51
+ error_page 500 /500.html;
52
+ location /500.html { root <%= fetch (:deploy_to) %>/current/<%= fetch(:nginx_static_dir) %>; }
53
+
54
+ client_max_body_size 4G;
55
+ keepalive_timeout 10;
56
+
57
+ <% if fetch(:app_server) && (fetch(:app_server_socket) || fetch(:app_server_port))%>
58
+ location ^~ /assets/ {
59
+ gzip_static on;
60
+ expires max;
61
+ add_header Cache-Control public;
62
+ }
63
+
64
+ try_files $uri/index.html $uri @<%= fetch(:application) %>-app-server;
65
+
66
+ location @<%= fetch(:application) %>-app-server {
67
+ proxy_set_header X-Real-IP $remote_addr;
68
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
69
+ proxy_set_header X-FORWARDED_PROTO http;
70
+ proxy_set_header Host $http_host;
71
+ <% if fetch(:nginx_use_ssl) %>
72
+ proxy_set_header X-Forwarded-Proto https;
73
+ <% end %>
74
+ <% if fetch(:nginx_read_timeout) %>
75
+ proxy_read_timeout <%= fetch(:nginx_read_timeout) %>;
76
+ <% end %>
77
+ proxy_redirect off;
78
+ proxy_pass http://<%= fetch(:application) %>-app-server;
79
+
80
+ proxy_cache default;
81
+ proxy_cache_lock on;
82
+ proxy_cache_use_stale updating;
83
+ add_header X-Cache-Status $upstream_cache_status;
84
+ }
85
+ <% end %>
86
+ }
@@ -0,0 +1,12 @@
1
+ Rollbar.configure do |config|
2
+ if Rails.env.test? || Rails.env.development?
3
+ config.enabled = false
4
+ end
5
+
6
+ config.access_token = ENV['ROLLBAR_TOKEN']
7
+
8
+ config.use_sidekiq
9
+ config.use_sidekiq 'queue' => 'default'
10
+
11
+ config.environment = Rails.env
12
+ end
@@ -2,6 +2,11 @@
2
2
  #
3
3
  # It's helpful, but not entirely necessary to understand cron before proceeding.
4
4
  # http://en.wikipedia.org/wiki/Cron
5
+ #
6
+ job_type :command, 'dotenv :task :output'
7
+ job_type :rake, 'cd :path && dotenv bundle exec rake :task --silent :output'
8
+ job_type :runner, "cd :path && dotenv bin/rails runner -e :environment ':task' :output"
9
+ job_type :script, 'cd :path && dotenv bin/:task :output'
5
10
 
6
11
  # every 1.day, at: '1:00 am' do
7
12
  # rake ...
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kratos
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jaisonerick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-24 00:00:00.000000000 Z
11
+ date: 2016-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -88,7 +88,6 @@ files:
88
88
  - templates/dotfiles/.ctags
89
89
  - templates/dotfiles/.env
90
90
  - templates/dotfiles/.gitignore
91
- - templates/dotfiles/.sample.application.yml
92
91
  - templates/errors.rb
93
92
  - templates/factory_girl_rspec.rb
94
93
  - templates/foreman.rake
@@ -98,10 +97,14 @@ files:
98
97
  - templates/json_encoding.rb
99
98
  - templates/kratos_layout.html.erb.erb
100
99
  - templates/lograge.rb
100
+ - templates/mysql_database.yml.erb
101
+ - templates/newrelic.yml.erb
102
+ - templates/nginx.conf.erb
101
103
  - templates/postgresql_database.yml.erb
102
104
  - templates/puma.rb
103
105
  - templates/rails_helper.rb
104
106
  - templates/redis.rb
107
+ - templates/rollbar.rb.erb
105
108
  - templates/routes.rb
106
109
  - templates/rspec_api_documentation_rspec.rb.erb
107
110
  - templates/rubocop.rake
@@ -139,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
142
  version: '0'
140
143
  requirements: []
141
144
  rubyforge_project:
142
- rubygems_version: 2.5.1
145
+ rubygems_version: 2.5.2
143
146
  signing_key:
144
147
  specification_version: 4
145
148
  summary: A rails project generator based on thoughtbot's suspenders.
@@ -1,13 +0,0 @@
1
- ASSET_HOST: localhost:3000
2
- APPLICATION_HOST: localhost:3000
3
- REDIS_URL: redis://127.0.0.1:6379
4
- SECRET_TOKEN: development_token
5
- SECRET_KEY_BASE: development_secret
6
- EXECJS_RUNTIME: Node
7
- SMTP_ADDRESS: smtp.example.com
8
- SMTP_DOMAIN: example.com
9
- SMTP_PASSWORD: password
10
- SMTP_USERNAME: username
11
- AWS_REGION: us-east-1
12
- AWS_ACCESS_KEY_ID: <put-your-key-here>
13
- AWS_SECRET_ACCESS_KEY: <put-your-secret-here>