问题标签 [aws-sdk-ruby]

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 回答
700 浏览

ruby-on-rails - 浏览器缓存神社 s3 私人附件

我刚刚在 s3 上创建了一个私有存储桶,用于包含用户个人资料图片。使用公共存储桶,所有图像都被正确缓存(以前的回形针配置具有相同的设置)。

我有以下神社初始化程序:

以及以下上传者:

CacheControl 在 s3 对象上正确设置为 1 周,并且在响应中可见。我注意到,在每个请求上,签名的 url 关于X-Amz-Signature哈希值都不同,这很可能导致缓存未命中(每个请求的 Etag 相同)。我认为这是它不起作用的原因,但我不知道如何在对象未过期的情况下使 X-Amz-Signature 相同。

0 投票
1 回答
2063 浏览

ruby-on-rails - 存根 AWS S3 对象请求

我正在尝试排除在 AWS 存储桶中获取对象的请求。我已经阅读了他们关于存根请求的文档,并且只能存根存储桶,而不是对象。这是我尝试过的一些事情:

通过 AWS 配置存根:

虽然得到了桶,但它没有给我对象。调用s3.buckets会列出存储桶,但s3.objects会是空的。

webmock通过gem存根:

这似乎仍然不起作用。调用bucket.objects仍然返回一个空集合。

我要测试的控制器中的代码:

目标是我想确保我的视图显示指向@file变量中对象的链接,并且我想测试该链接。任何帮助将不胜感激!我是使用 AWS S3 开发的新手,而 googlge 并没有太多帮助。我正在使用aws-sdk-s3gem 来处理 AWS S3。

0 投票
3 回答
7567 浏览

ruby - 从 AWS S3 下载文件时的文件编码问题

我在 AWS S3 中有一个 CSV 文件,我试图在本地临时文件中打开它。这是代码:

它从 AWS 中提取文件并将其加载到一个名为“temp.csv”的新临时文件中。对于某些文件,该obj.get(..)行会引发以下错误:

Stacktrace 显示错误最初是由.get适用于 Ruby 的 AWS 开发工具包引发的。

我尝试过的事情:

将文件(对象)上传到 AWS S3 时,您可以指定content_encoding,因此我尝试将其设置为 UTF-8:

此外,当您打电话时,.get您可以设置response_content_encoding

这些都不起作用,它们会导致与上述相同的错误。我真的希望这样做可以解决问题。在 AWS S3 仪表板中,我可以看到确实通过代码正确设置了内容编码,但它似乎没有任何区别。

当我在上面的第一个代码片段中执行以下操作时,它确实有效:

但我更喜欢使用正确的编码从 AWS S3 上传和/或下载文件。有人可以解释为什么在临时文件上指定编码有效吗?或者如何通过 AWS S3 上传/下载使其工作?

需要注意的重要一点:错误消息中的问题字符似乎只是在我正在使用的这个自动生成的文件的开头添加的随机符号。我不担心正确读取字符,无论如何解析文件时它都会被忽略。

0 投票
1 回答
3866 浏览

aws-sdk-ruby - 将 AWS S3 Select 与适用于 Ruby 的 AWS 开发工具包一起使用时出现编码错误

我正在尝试执行以下操作:

  • 从 S3 下载 Athena 查询的输出 ( file.csv)
  • gzip 输出并上传到不同的 S3 位置 ( file.csv.gz)
  • 在 Ruby SDK 中使用 S3 Select 来查询file.csv.gz

我总是收到以下错误,总是“接近字节 8192”,即使内容file.csv.gz完全不同:

Aws::S3::Errors::InvalidTextEncoding (UTF-8 encoding is required. The text encoding error was found near byte 8,192.)

注意:对相同的未压缩file.csv工作使用相同的 S3 Select 查询。我尝试过各种奇怪的事情,但我充满了绝望。

重现步骤:

  1. 从文件开始s3://mybucket/file.csv
  2. 使用 aws-cli 下载:aws s3 cp s3://mybucket/file.csv file.csv
  3. 压缩文件:gzip file.csv
  4. 上传file.csv.gzaws s3 cp file.csv.gz s3://mybucket/file.csv.gz

这是代码:

以下收到文本编码错误。

但是,针对未压缩的运行file.csv不会:

我尝试了各种文本编码、内容类型元数据、内容编码等的组合,但似乎找不到任何有效的方法。在我看来,它总是在字节 8192 上出现错误的事实非常奇怪/可疑。

任何帮助将非常感激!

0 投票
0 回答
189 浏览

amazon-web-services - Ruby 捆绑控制台未从 ~/.aws/credentials 加载 aws 共享凭证

如果我使用捆绑器控制台,如何将 aws 凭据加载到 ruby​​。

设想:

我在 samplefile.rb 中有以下代码,在 ~/.aws/credentials 中有 aws 凭证

当我使用 $ruby samplefile.rb 时,通过获取共享凭据可以正常工作

但是当我使用 $bundle exec bin/console 执行相同的操作时

获取缺少的凭据。

缺少凭据,请提供具有以下选项之一的凭据: - :access_key_id 和 :secret_access_key - :credentials - :credentials_provider

根据 AWS文档,它应该加载 ruby​​ 的共享凭证。

0 投票
0 回答
430 浏览

ruby - ruby 中区域之间的 S3 copy_object

如何使用 ruby​​ aws-sdk-s3 gem 在 AWS S3 中不同区域的存储桶之间复制文件?存储桶位于区域中:“ eu-central-1 ”(target_bucket)和“ eu-west-1 ”(source_bucket)。我想将s3://source_bucket/name_base.checksum复制到s3://target_bucket/source_bucket/name_base.checksum

错误:

测试红宝石代码:

我在文档中找不到有关此用例的任何有用信息: https ://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectUsingRuby.html https://docs.aws.amazon.com/sdkforruby/ api/Aws/S3/Client.html#copy_object-instance_method

我发现了 2011 年的旧线程我希望在这种情况下有所改变: Amazon S3 区域转移?

任何新闻?

0 投票
2 回答
699 浏览

ruby - 为什么小文件大小的 ruby​​ aws-sdk 上传到 S3 需要 40 秒以上

我一直在处理从我的应用程序到 S3 的上传速度非常慢的问题。我有一个在 Elastic Beanstalk 上的单个 docker 环境中运行的 rails 应用程序和一个存储用户创建的文件的特定存储桶。两者都在同一区域和可用区中。上传的文件是非常小的 (< 1kb) 文本文件,平均需要 40 秒才能上传。考虑到我什至没有转移到数据中心之外,这对我来说似乎很可笑。读取文件几乎是即时的,就像移动和删除文件一样。此外,40 秒似乎是传输时间的基本量。我通过上传一个 10 字节的文档和一个 29kb 的文档对此进行了测试,这两个文档都花费了相同的时间。

我正在使用 ruby​​ aws-sdk 执行如下所示的上传:

我看到这样的输出:

在阅读了关于 SO、aws 论坛和其他人的数百篇其他帖子后,我已经用尽了我在这个问题上的研究能力。任何有关我如何改进这一点的见解将不胜感激。

更新:补充说我使用的是Tempfile对象而不是文件路径字符串。从我之前的代码示例中并不清楚。

0 投票
1 回答
834 浏览

ruby - DynamoDB 在 Ruby 中将数字返回为小数而不是整数

我在地图中存储了一些数字。它们设置正确,并正确显示在 DynamoDB 界面中:

但是,当我使用 AWS Ruby SDK 收到响应时,它们已经变成了十进制。

请注意,这不是来自同一个项目,所以我知道数字不匹配,格式是问题。

如何告诉 SDK 我希望它们为整数?

或者

我需要自己在 Ruby 中将它们映射到整数吗?

0 投票
1 回答
621 浏览

ruby - DynamoDB put_item 错误“没有这样的成员”(Ruby SDK)

我将 Ruby 开发工具包aws-sdk-dynamodb与 Ruby 2.5 一起用于将项目保存到 AWS DynamoDB 表的 AWS Lambda 函数。

我可以使用以下代码成功保存项目:

当我使用此代码时,我收到一个错误“没有这样的成员:message_sid”:

我没有找到任何有关“没有这样的成员”错误的 DynamoDB 文档。为什么第二个例子失败了?

0 投票
1 回答
50 浏览

ruby-on-rails - 在将图像上传到 s3 之前,我是否必须下载图像?

我有带有嵌入图像的 Rails 应用程序。我想要的是将这些图像上传到 s3 并从那里提供主题而不是形成原始源 在将其上传到 s3 之前我必须将 img 下载到我的服务器吗?