IBM Cloud Object Storage 的 Fog/aws gem 不工作
Fog/aws gem for IBM Cloud Object Storage is not working
由于 Softlayer 或 IBM Cloud 已从基于 Swift 的对象存储迁移到基于 S3 的云对象存储。我正在使用 fog/aws 而不是 fog/softlayer。
下面是代码:
require 'fog/aws'
fog_properties = {
provider: 'AWS',
aws_access_key_id: username,
aws_secret_access_key: api_key
}
@client = Fog::Storage.new(fog_properties)
@client.directories
但即使使用有效的密钥和 ID 也失败了。
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.\</Message><AWSAccessKeyId>####</AWSAccessKeyId><RequestId>####</RequestId><HostId>##</HostId></Error>
IBM COS 使用的端点是“https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints”
当我尝试单独使用雾时(需要'fog')。它抛出以下错误:
Unable to activate google-api-client-0.23.9, because mime-types-2.99.3 conflicts with mime-types (~> 3.0) (Gem::ConflictError)
请建议如何解决这些问题。
https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints"
This is not an endpoint but a list of endpoints in JSON.
为您的存储桶位置选择端点。
例如,如果您的存储桶位于 us-south,则 public 端点为
https://s3.us-south.cloud-object-storage.appdomain.cloud
以下代码适用于 IBM Cloud Objects Storage
properties = {
region: region,
endpoint: URI('https://s3.us-south.cloud-object-storage.appdomain.cloud'),
credentials: Aws::Credentials.new(access_key_id, secret_access_key)
}
Aws.config.update(properties)
@client = Aws::S3::Client.new
配置的属性也可以设置为 ENV 变量。
以下是对 COS 执行的一些基本操作。
列出所有 bucker 名称
@client.list_buckets.buckets.map(&:name)
创建存储桶
@client.create_bucket(bucket: )
上传文件
@client.put_object(bucket: , key: , body: )
下载文件
@client.get_object(bucket: , key: )
删除文件
@client.delete_object(bucket: , key: )
删除存储桶
@client.delete_bucket(bucket: )
由于 Softlayer 或 IBM Cloud 已从基于 Swift 的对象存储迁移到基于 S3 的云对象存储。我正在使用 fog/aws 而不是 fog/softlayer。
下面是代码:
require 'fog/aws'
fog_properties = {
provider: 'AWS',
aws_access_key_id: username,
aws_secret_access_key: api_key
}
@client = Fog::Storage.new(fog_properties)
@client.directories
但即使使用有效的密钥和 ID 也失败了。
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.\</Message><AWSAccessKeyId>####</AWSAccessKeyId><RequestId>####</RequestId><HostId>##</HostId></Error>
IBM COS 使用的端点是“https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints”
当我尝试单独使用雾时(需要'fog')。它抛出以下错误:
Unable to activate google-api-client-0.23.9, because mime-types-2.99.3 conflicts with mime-types (~> 3.0) (Gem::ConflictError)
请建议如何解决这些问题。
https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints" This is not an endpoint but a list of endpoints in JSON.
为您的存储桶位置选择端点。 例如,如果您的存储桶位于 us-south,则 public 端点为 https://s3.us-south.cloud-object-storage.appdomain.cloud
以下代码适用于 IBM Cloud Objects Storage
properties = {
region: region,
endpoint: URI('https://s3.us-south.cloud-object-storage.appdomain.cloud'),
credentials: Aws::Credentials.new(access_key_id, secret_access_key)
}
Aws.config.update(properties)
@client = Aws::S3::Client.new
配置的属性也可以设置为 ENV 变量。
以下是对 COS 执行的一些基本操作。
列出所有 bucker 名称
@client.list_buckets.buckets.map(&:name)
创建存储桶
@client.create_bucket(bucket: )
上传文件
@client.put_object(bucket: , key: , body: )
下载文件
@client.get_object(bucket: , key: )
删除文件
@client.delete_object(bucket: , key: )
删除存储桶
@client.delete_bucket(bucket: )