rails AWS S3 删除文件

Fel*_*lix 1 ruby ruby-on-rails amazon-web-services ruby-on-rails-4

我确实使用运行良好的载波上传到亚马逊 S3。

但是现在我想添加一个删除功能我试过这个:

AWS::S3::S3Object.delete(@vid.video, 'bucket')
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

uninitialized constant MoviesController::AWS
Run Code Online (Sandbox Code Playgroud)

原因很清楚..但是我如何正确设置AWS常量以及在哪里?

配置/初始化程序/carrierwave.rb

CarrierWave.configure do |config|
config.fog_credentials = {
    :provider => 'AWS',
    :aws_access_key_id => '----',
    :aws_secret_access_key => '----',
    :region => 'eu-central-1',
}
config.fog_use_ssl_for_aws = false
config.fog_directory = 'bucekt'
config.storage = :fog
end
Run Code Online (Sandbox Code Playgroud)

Nom*_*man 5

您必须首先配置AWSgem。将此代码添加到config/initializers/aws.rb文件中。

Aws.config.update({
  region: '<default-region>',
  credentials: Aws::Credentials.new('<access-key-id>', '<secret-access-key')
})
Run Code Online (Sandbox Code Playgroud)

您还可以在服务器上设置环境变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGIONSDK它们会自动选取。

然后,在您的应用程序或控制器操作中的任何位置,您都可以S3 API像这样调用:

def some_action
  # You can simply call Aws::S3::Client.new
  # if you are already configuring using the
  # above methods or configure by passing
  # parameters explicitly
  s3_client = Aws::S3::Client.new(
    credentials: Aws::Credentials.new('<aws_access_key_id>', '<aws_secret_key>'),
    region: '<aws_region>'
  )

  # delete object by passing bucket and object key
  s3_response = s3_client.delete_object({
    bucket: '<bucket-name>', # required
    key: '<object-key>', # required
  })
end
Run Code Online (Sandbox Code Playgroud)