問題タブ [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.
ruby-on-rails - ブラウザ キャッシング シュライン s3 プライベート アタッチメント
ユーザー プロファイルの写真を格納するために、s3 にプライベート バケットを作成しました。パブリック バケットを使用すると、すべての画像が適切にキャッシュされます (同じ設定の以前のペーパークリップ構成)。
私は次の神社初期化子を持っています:
そして、次のアップローダ:
CacheControl は s3 オブジェクトで 1 週間に適切に設定され、同じことが応答に表示されます。X-Amz-Signatureハッシュに関して、リクエストごとに署名付き URL が異なることに気付きました。これがキャッシュ ミスの原因となる可能性が最も高いです (Etag は各リクエストで同じです)。これが機能しない理由だと思いますが、オブジェクトの有効期限が切れていないときに X-Amz-Signature を同じにする方法についての手がかりがありません。
ruby-on-rails - AWS S3 オブジェクト リクエストのスタブ化
AWS バケット内のオブジェクトを取得するリクエストをスタブ化しようとしています。リクエストのスタブに関するドキュメントを読みましたが、オブジェクトではなくバケットのみをスタブできました。ここに私が試したことがあります:
AWS 構成によるスタブ:
それはバケツを手に入れましたが、私にはオブジェクトを与えませんでした。呼び出すs3.buckets
とバケットがリストされますが、s3.objects
空になります。
gemによるスタブwebmock
:
これはまだうまくいかないようです。呼び出しbucket.objects
ても空のコレクションが返されます。
テストしたいコントローラーのコード:
目標は、ビューに@file
変数内のオブジェクトへのリンクが表示されていることを確認し、そのリンクをテストすることです。どんな助けでも大歓迎です!AWS S3 での開発は初めてで、googlge はあまり役に立ちませんでした。aws-sdk-s3
gem を使用して AWS S3 を操作しています。
aws-sdk-ruby - AWS SDK for Ruby で AWS S3 Select を使用した場合のエンコード エラー
私は次のことをしようとしています:
- S3 から Athena クエリの出力をダウンロードする (
file.csv
) - 出力を gzip し、別の S3 の場所にアップロードします (
file.csv.gz
) - Ruby SDK 内から S3 Select を使用して、
file.csv.gz
file.csv.gz
内容が完全に異なる場合でも、常に次のエラーが発生します。常に「8192バイト近く」です。
Aws::S3::Errors::InvalidTextEncoding (UTF-8 encoding is required. The text encoding error was found near byte 8,192.)
注意: 同じ非圧縮に対して同じ S3 Select クエリを使用すると、file.csv
期待どおりに動作します。私はあらゆる種類の奇妙なことを試みましたが、絶望に満ちています。
再現する手順:
- ファイルから開始
s3://mybucket/file.csv
- aws-cli でダウンロードします。
aws s3 cp s3://mybucket/file.csv file.csv
- ファイルを gzip します。
gzip file.csv
- アップロード
file.csv.gz
:aws s3 cp file.csv.gz s3://mybucket/file.csv.gz
コードは次のとおりです。
以下は、テキスト エンコーディング エラーを受け取ります。
ただし、圧縮されていないものに対して実行しても、次のfile.csv
ことはできません。
テキスト エンコーディング、コンテンツ タイプ メタデータ、コンテンツ エンコーディングなどのあらゆる種類の組み合わせを試しましたが、機能するものが見つからないようです。私の意見では、バイト 8192 で常にエラーが発生するという事実は、かなり奇妙で疑わしいものです。
どんな助けでも大歓迎です!
ruby - ruby aws-sdk を S3 にアップロードすると、ファイル サイズが小さい場合に 40 秒以上かかるのはなぜですか
アプリケーションから S3 へのアップロード速度が非常に遅いことに対処しています。Elastic Beanstalk 上の単一の Docker 環境で実行されている Rails アプリケーションと、ユーザーが作成したファイルを格納する特定のバケットがあります。どちらも同じリージョンとアベイラビリティ ゾーンにあります。アップロードされるファイルは非常に小さい (< 1kb) テキスト ファイルで、アップロードに平均 40 秒かかります。私がデータセンターの外に移動することさえしていないことを考えると、これはばかげているように思えます。ファイルの読み取りは、ファイルの移動と削除と同様にほぼ瞬時に行われます。さらに、転送時間の基本量は 40 秒のようです。10 バイトのドキュメントと 29 KB のドキュメントをアップロードしてテストしましたが、どちらも同じ時間がかかりました。
ruby aws-sdk を使用して、次のようなアップロードを実行しています。
次のような出力が表示されます。
SO、aws フォーラムなどに関する他の何百もの投稿を読んだ後、この問題に関する私の研究能力を使い果たしました。これをどのように改善できるかについての洞察は大歓迎です。
更新:Tempfile
ファイルパス文字列ではなくオブジェクトを使用していたことを追加しました。以前のコード例からは明確ではありませんでした。
ruby - Rubyで整数ではなく小数として数値を返すDynamoDB
Map にいくつかの数値を格納しています。それらは正しく設定されており、DynamoDB インターフェイスに正しく表示されます。
しかし、AWS Ruby SDK を使用して応答を受け取ると、それらは 10 進数に変わっています。
これは同じアイテムのものではないことに注意してください。そのため、数字が一致しないことは承知しています。形式が問題です。
それらを整数として使用したいことをSDKに伝えるにはどうすればよいですか?
また
Ruby でそれらを自分で整数にマップする必要がありますか?