W lib/tasks/sitemap.rake
:
namespace :sitemap do
task update: :environment do
Rake::Task["sitemap:generate"].execute
key = ENV["AWS_ACCESS_KEY_ID"]
secret = ENV["AWS_SECRET_ACCESS_KEY"]
bucket = ENV["S3_BUCKET"]
s3 = AWS::S3.new(access_key_id: key, secret_access_key: secret)
s3.buckets[bucket].objects["sitemap.xml"].write(data: File.open(Rails.root.join("tmp","sitemaps","sitemap.xml")), acl: :public_read)
end
end
W tym kodzie, jeśli ręcznie wpisuję ciągi, proces działa poprawnie. Ale jak tylko użyję ENV
Pojawia się następujący błąd:
rake aborted!
AWS::Errors::MissingCredentialsError:
Missing Credentials.
Jak mogę bezpiecznie korzystać z poświadczeń bez ustawiania ich w mojej bazie danych, która może zostać zatwierdzona?
Odpowiedzi:
1 dla odpowiedzi № 1Foreman ładuje zmienne środowiskowe przed uruchomieniem procesów zdefiniowanych w pliku Procfile.
Ponieważ używamy tych wartości w zadaniu prowizji - a nie w rzeczywistym procesie sieciowym, możesz uruchomić:
foreman run rake sitemap:update
Spowoduje to, że majster załaduje wartości przed uruchomieniem zadania prowizji.