バケット(作成されたバケット)の地域固有のエンドポイントを設定する必要があります。あなたは(また、バケット名にドットを避けるため)DNS comptibleバケット名を使用することにより、将来的にこれを避けることができ
AWS.config(:s3_endpoint => '...')
s3 = AWS::S3.new
または
s3 = AWS::S3.new(:s3_endpoint => '...')
:あなたがこれを行うことができます。バケット名が有効なサブドメインである場合は、リージョン固有のエンドポイントを設定せずにバケットを指定できます。次のことを考えてみましょう:
バケットは「バケット名」という名前とオブジェクトキーは「/ object.txtへのパス/」です
http:://bucket-name.s3.amazonaws.com/path/to/object.txt
。このバケットはどの地域にも存在する可能性がありますが、「デフォルト」領域を使用してアクセスできます。バケット名は、DNSに対応していない場合は、URLは次のようになり、その後、上記の例では
、バケットは、DNS互換性がありません。これは、「バケツ/名前」です。これはパスの一部になり、現在はs3.amazon.comをリージョン固有のエンドポイントに置き換える必要があります(バケットが従来のリージョンで作成されなかった場合)。
他の人が触れたように、パスはバケット名ではなくオブジェクトキーの一部でなければなりません。これにより、オブジェクトを共通の接頭辞でグループ化できます。 '/'は仮想フォルダとして使用されます(慣習的にのみ)。
# print the key of every object with the given prefix
s3.buckets['bucket-name'].objects.with_prefix('path/to/').each do |object|
puts object.key
end
可能な投稿http://stackoverflow.com/questions/6581502/problem-in-accessing-bucket-of-my-aws-s3-account – sgud
@sgudあなたが提供したリンクはAWS-S3ですクラスの定数を置き換えます。 – Anatoly
"my_folder"はオブジェクト名の一部です。バケット – Anatoly