В моем приложении на Rails 5 я хотел бы реализовать функцию custom_storage, для которой пользователь может установить свое собственное ведро s3 в качестве хранилища изображений, избегая общедоступного хранилища, которое приложение предоставляет.
Для этого я создалследующий метод внутри моего S3::Client
класса:
require 'aws-sdk-s3'
class S3
class Client
...
def update_aws_config
Aws.config.update(
credentials: Aws::Credentials.new(storage[:access_key_id], storage[:secret_access_key]),
region: "us-east-1"
)
end
...
end
end
и вызовите его с помощью:
S3::Client.new(user).update_aws_config
Это работает нормально, ведро установлено и изображения загружены правильно.Проблема в том, что я боюсь, что я могу менять глобальную конфигурацию для S3 каждый раз, когда я называю это:
Aws.config.update
, и это приведет к проблемам при развертывании на сервере, и разные пользователи с разными учетными данными AWS используютфункция одновременно.
Итак, я меняю глобальную конфигурацию каждый раз, когда я звоню Aws.config.update
?Есть ли способ управлять этим как объектом, а не связываться с глобальной конфигурацией?