问题标签 [cloud-object-storage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
449 浏览

ibm-cloud - 使用 IBM Cloud Object Storage CLI 对存储桶发出获取请求时出现 403 错误

我创建了一个云对象存储服务并创建了一个标准存储桶。我的目标是在 CLI 中使用服务 ID 上传文件。

作为步骤-1,我正在测试我正在按照以下链接在我从该链接创建的存储桶上运行一些命令:https ://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-cli- ic-cos-cli

以下是一些输出:

我在其他存储桶上尝试过,我看到相同的 403。

我进入了存储桶的访问策略并创建了一个将自己设置为经理的策略。但这没有帮助。

从 cli 创建存储桶效果很好:

然后我尝试获取存储桶列表:

看起来不错,但尝试检索hog-cli-bucket-name存储桶的类没有用。它要求我登录。

在我登录后,当我测试时get-bucket-class它一直告诉我再次登录。

0 投票
1 回答
178 浏览

angular - 仅使用 Angular 框架(不是 AngularJS 和中间层)对 Oracle 云进行身份验证

这是我第一次使用 Oracle 云(或任何云),我正在做一个自学练习,我创建了一个 Angular 应用程序(不是 AngularJS),我想在我的 Oracle 云对象存储中上传图像桶。我正在假设只有 Angular 才能实现我想要实现的目标(即:不需要中间层,如 PHP、C#、Java 等)。

我现在需要创建“授权”标头(据我所知)用于验证 PUT 请求,但我无法使其正常工作。根据我阅读请求签名文档的理解,似乎我实际上可能无法纯粹在 Angular 中做到这一点,并且某种中间层是必要的,因为文档只显示了中间层技术的代码示例。

我想知道的是,在技术上是否可以仅使用 Angular 这样的前端框架来调用 Oracle 云对象存储 API?我尝试使用CryptoJS并使用 HmacSHA256 之类的东西来生成签名,但是每次执行 API 调用时,Oracle Cloud 都会不断收到以下错误:

根据 [Request Signature documentation],我需要的唯一标头是(request-target)hostdate,所以我只包括这些标头。

如果仅使用 Angular(不使用中间层)实现身份验证在技术上是可行的,那么我会相当有信心我正在做的创建签名的操作是不正确的,以及我当时将寻求的在创建该签名以进行身份​​验证方面有一些帮助。如果不是,我想这就是我的实验结束的地方。

提前感谢大家的帮助!

0 投票
1 回答
104 浏览

db2 - 我使用什么 REST API load_source 和 params 将 CSV 数据从 IBM COS S3 加载到 IBM Db2 on Cloud

我一直无法使用Db2 on Cloud REST API 从 IBM Cloud Object Storage (COS) 中的文件加载数据。这可以防止混合集成 POC。

另一个用户使用 SERVER 配置报告了类似的 REST API 问题,请参阅https://developer.ibm.com/answers/questions/526660/how-to-use-db2-on-cloud-rest-api上的 IBM Developer 线程-to-load-data-from.html

我似乎无法正确获取参数,并且我认为文档中包含当前具有 HMAC 密钥的云对象存储的错误......例如要使用的端点,以及auth_id是否应该是access_key_id

我尝试了各种数据加载命令,如下所示,但都没有。有人可以提供一个有效的命令示例(对值有任何考虑/解释)吗?

使用 API 调用的不同尝试会因各种消息而失败,这些消息通常没有足够的信息进行调试(并且在 doc/web 中搜索找不到消息);例如:

{"trace":"","errors":[{"code":"not_found", "message":"HWCBAS0030E: 在服务管理中找不到请求的资源。", "target":{"type": "","name":""},"more_info":""}]}

PS 我能够使用 DB2 on Cloud UI 从 COS S3 中的文件加载数据,具有相同的访问键值。

PPS 也许“load_source”:“SOFTLAYER”是一个问题,但它是唯一可能映射到 IBM 云对象存储的选项。API 文档没有提供任何其他可能适用于 IBM COS S3 的选项。

0 投票
0 回答
9 浏览

triggers - 无法删除函数命名空间

我创建了一个 Functions 命名空间来测试 COS 触发器,我已经删除了所有触发器和函数,但是当我尝试删除命名空间时,我收到此消息“由于现有 COS 触发器,无法删除命名空间。删除 COS 触发器这个命名空间,然后再试一次..”

如何删除 de COS 触发器?

提前致谢

0 投票
2 回答
2498 浏览

amazon-web-services - 我应该使用 nginx 反向代理进行云对象存储吗?

我目前正在为我的服务实现图像存储架构。 正如我在一篇文章中所读到的,将整个图像上传和下载流量
移动到外部云对象存储是一个好主意。https://medium.com/@jgefroh/software-architecture-image-uploading-67997101a034

我注意到有许多云对象存储提供商:

- Amazon S3
- Google 云存储
- Microsoft Azure Blob 存储
-阿里巴巴对象存储
- Oracle 对象存储
- IBM 对象存储
- Backblaze B2 对象
- Exoscale 对象存储
- Aruba 对象存储
- OVH 对象存储
- DreamHost DreamObjects
- Rackspace 云文件
-数字海洋空间
- Wasabi Hot Object Storage


我的第一选择是 Amazon S3,因为
我几乎所有的系统基础设施都位于 AWS 上。
但是我看到这个对象存储有很多问题。
(如果我在以下任何一点上错了,请纠正我)


1) 昂贵的日志交付

AWS 对所有操作请求收费。如果我必须为所有请求付费,我希望查看所有请求日志。我想尽快得到这些日志。AWS S3 提供日志传递,但延迟很大,并且每个日志在其他 S3 存储桶中作为单独的文件提供,因此每个日志都是一个单独的 S3 写入请求。写入请求的成本更高,每 100 万个请求的成本约为 5 美元。每当发出请求时,还有另一种触发 AWS Lambda 的选项,但是每 1M lambda 调用也需要额外花费 0.2 美元。总而言之-在我看来,S3 请求的日志交付方式非常昂贵。

2) 无法为整个桶全局配置最大对象内容长度。

我还没有找到为整个存储桶配置最大对象大小(内容长度)限制的可能性。简而言之 - 我希望有可能阻止上传大于所选存储桶指定限制的文件。我知道可以在预签名的 PUT url 中指定上传文件的内容长度,但是我认为这应该可以为整个存储桶全局配置。


3) 无法直接在存储桶上配置每 IP 数每分钟的请求速率限制。

因为所有 S3 请求都是收费的,所以我希望有可能限制将在我的存储桶上从一个 IP 号发出的请求的限制。我想防止从一个 IP 号进行大量上传和下载,并且我希望它可以针对整个存储桶进行配置。我知道附加到 Cloudfront 的 AWS WAF 可以提供此功能,但是这种经过 WAF 检查的请求非常昂贵!您必须为每 100 万个检查请求支付 0.60 美元。直接 Amazon S3 请求每 100 万个请求花费 0.4 美元,因此使用 AWS WAF 作为 S3 请求的速率限制选项作为 DOS 攻击的“钱包保护”完全没有意义,而且完全没有利润。

4) 无法创建“一次性 - 上传”预签名 URL。

只要未过期,生成的预签名 URL 就可以多次使用。这意味着您可以使用相同的预签名 URL 多次上传一个文件。如果 AWS S3 API 能够提供创建“一次性上传”预签名 URL 的可能性,那就太好了。我知道我可以自己实现这样的“一次性上传”功能。
例如,请参阅此链接https://serverless.com/blog/s3-one-time-signed-url/
但是在我看来,此类功能应直接通过 S3 API 提供

5) 对 S3 的每个请求都是收费的!

假设您创建了一个私有存储桶。然而,没有人可以访问其中的数据......互联网上的任何人都可以在您的存储桶上运行批量请求......亚马逊将向您收取所有被禁止的 403 请求的费用!只知道我的bucket的名字就可以随时“掏空我的钱包”,这不是很舒服!这远非安全!,特别是如果您直接向某人提供带有存储桶地址的 S3 预签名 URL。每个知道bucket名称的人都可以运行批量403请求并耗尽我的钱包!有人已经在这里问过这个问题,我想这仍然是一个问题
https://forums.aws.amazon.com/message.jspa?messageID=58518
在我看来,禁止的 403 请求根本不应该收费!

6) 无法通过 NaCL 规则阻止到 S3 的网络流量

因为对 S3 的每个请求都是收费的。我希望有可能在较低的网络层中完全阻止到我的 S3 存储桶的网络流量。由于无法将 S3 存储桶放置在私有 VPC 中,我无法通过 NaCl 规则阻止来自特定 IP 号的流量。在我看来,AWS 应该为 S3 存储桶提供这样的 NaCl 规则(我的意思是 NaCLs 规则而不是仅阻止应用程序层的 ACLs 规则)

由于所有这些问题,我正在考虑使用 nginx
作为对我的私有 S3 存储桶的所有请求的代理


该解决方案的优点:

  1. 我可以免费对 S3 的限制请求进行评级,但是我想要
  2. 我可以在我的 nginx 上免费缓存图像 - 对 S3 的请求更少
  3. 我可以使用 Lua Resty WAF 添加额外的安全层(https://github.com/p0pr0ck5/lua-resty-waf
  4. 我可以快速切断请求正文大于指定的请求
  5. 我可以使用 openresty 提供额外的请求身份验证
    (可以在每个请求上执行自定义 lua 代码)
  6. 我可以轻松快速地从我的 EC2 nginx 机器上获取所有访问日志,并使用 cloud-watch-agent 将它们转发到 cloud watch。

这种解决方案的缺点:

  1. 我必须通过我的 EC2 机器将所有流量传输到 S3,并使用自动缩放组扩展我的 EC2 nginx 机器。

  2. 对于知道我的存储桶名称的每个人来说,仍然可以从互联网直接访问 S3 存储桶!
    (无法在私有网络中隐藏 S3 存储桶)


我的问题

  1. 您认为这种在对象存储前使用反向代理 nginx 服务器的方法好吗?

  2. 或者更好的方法是只找到替代的云对象存储提供商而不是代理对象存储请求?
    我会非常感谢替代存储提供商的建议。
    有关给定推荐的此类信息将是首选。

对象存储提供程序名称

A. INGRESS 流量的价格是多少?
B. EGRESS 流量的价格是多少?
C. REQUESTS 的价格是多少?
D. 有哪些付款方式可用?
E. 是否有任何长期协议?
F. 数据中心位于哪里?
G. 是否提供与 S3 兼容的 API?
H. 它是否提供对所有请求日志的完全访问权限?
I. 它是否为桶提供每分钟每 IP 数的可配置速率限制?
J. 是否允许在私有网络中隐藏对象存储或仅允许来自特定 IP 号的网络流量?

在我看来,一个完美的云对象存储提供商应该:

1) 提供对存储桶发出的所有请求的访问日志(IP 号、响应代码、内容长度等)
2) 提供对每分钟每个 IP 号的存储桶请求进行速率限制的可能性
3) 提供在网络层切断来自恶意 IP 号码的流量的
可能性 4) 提供在私有网络中隐藏对象存储桶或仅授予指定 IP 号码访问权限的可能性
5) 对禁止的 403 请求不收费

我将非常感谢所有的答案、评论和建议
最好的问候

0 投票
1 回答
510 浏览

ibm-cloud - 具有 VPC 集群的 IBM Cloud Object Storage

为了将 IBM Cloud 对象存储添加到我的集群,我一直在遵循本指南。

虽然我已经让它与标准集群一起工作,但在尝试将 COS 连接到 VPC 集群时遇到了问题。(不是同一个对象存储,也不是集群。两个完全不同的环境)

我已启用 VRF(并且已获得批准),并且我已使用 s3.direct 端点创建了自己的存储类。

但是,存储类似乎无法配置卷。我得到的错误来自 TokenManagerRetrieveError: error retrieving the token。我找不到任何有关此案的文件。我已经检查了帐户 IAM 令牌并且它们已经到位。以下是来自以下命令的事件。尤其见第二段。

这是我创建的存储类:

这是PVC:

描述pvc。

任何帮助是极大的赞赏。

0 投票
3 回答
1065 浏览

apache-spark - 如何使用 SPARK 连接到 IBM COS(云对象存储),如何解决“No FileSystem for scheme:cos”

我正在尝试使用 Spark 创建与 IBM COS(云对象存储)的连接。Spark 版本 = 2.4.4,Scala 版本 = 2.11.12。

我使用正确的凭据在本地运行它,但我观察到以下错误 - “方案没有文件系统:cos”

我正在共享代码片段以及错误日志。有人可以帮我解决这个问题。

提前致谢 !

代码片段:

错误:

0 投票
1 回答
190 浏览

command-line-interface - IBM Cloud:如何从 CLI 对存储桶启用公共访问?

我成功地启用了对 IBM Cloud Object Storage 中我的一个存储桶的公共访问,并使用了控制台(浏览器 UI)。我遵循了这些步骤。在 UI 中,访问组显示为ID为AccessGroupId-PublicAccess 的Public Access。但是我在使用 CLI 时找不到它,无论是列出所有访问组还是尝试直接检索它:

$ ibmcloud iam access-group AccessGroupId-PublicAccess

正在检索帐户 Henrik 的帐户下的访问组 AccessGroupId-PublicAccess 作为 HENRIK...

FAILED 访问组 AccessGroupId-PublicAccess 未找到

如何查看有关该访问组的详细信息,如何为给定存储桶分配新策略?

0 投票
0 回答
91 浏览

cloud-object-storage - 无法在 IBM Cloud 中的轻量帐户上创建云对象存储

我无法在我的 lite 帐户上创建云对象存储计划。一切都很好,但它不断带来这个错误。

[409, Conflict] 该帐户已经有一个使用 Lite 计划创建的实例。

交易 ID:0d6c5ad8f82f401f979876fca94f5254:59967a3beae87f54

可能是什么问题。

0 投票
1 回答
233 浏览

ibm-cloud - IBM Cloud:通过 API 为存储桶创建与 S3 兼容的凭据

TL;DR我们如何使用 S3 兼容层自动创建每个用户的凭证以访问 COS 存储桶?
AFAIK 唯一记录在案的方式是 CLI;但是在 Web 服务中嵌入命令行执行并不是很吸引人!


COS (云对象存储)的 IBM 在线文档显示了为给定存储桶和给定角色创建“具有 HMAC 凭据的服务密钥”的两种方法[参考]

  • 从管理 UI
  • 使用 CLI >>ibmcloud resource service-key-create ****** --parameters '{"HMAC":true}'

这些“HMAC 凭据”的重点是访问存储桶,就好像它存储在 S3(或与 S3 API 兼容的任何其他设备)中一样。

现在,我假设 UI 和 CLI 都在幕后使用某种 API。也许他们必须同时使用 IAM API 和 COS API 才能将特定于 COS 的功能公开为“通用”安全功能。

但我在 IAM API 的在线文档中找不到任何相关内容——唯一指定“资源”和“授权策略”的 API 调用是关于创建临时令牌,而不是持久密钥[参考]
我无法'在 COS API 中也找不到任何相关的内容。那里没有什么安全问题。
如果它是开源的,我会尝试深入研究 CLI 的源代码,但可惜它不是。

我想我唯一的希望是从实际开发 CLI 的 IBM 员工那里获得“内部信息”......因此下面的标签。