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)
您必须首先配置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_ID、AWS_SECRET_ACCESS_KEY和AWS_REGION,SDK它们会自动选取。
然后,在您的应用程序或控制器操作中的任何位置,您都可以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)
| 归档时间: |
|
| 查看次数: |
3057 次 |
| 最近记录: |