Techioz Blog

AWS S3: アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレス指定される必要があります

概要

AWS-SDK-Core Ruby Gem を使用して、アップロードされた画像ファイルを削除しようとしています。

次のコードがあります。

require 'aws-sdk-core'

def pull_picture(picture)
    Aws.config = {
        :access_key_id => ENV["AWS_ACCESS_KEY_ID"],
        :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"],
        :region => 'us-west-2'
    }

    s3 = Aws::S3::Client.new

    test = s3.get_object(
        :bucket => ENV["AWS_S3_BUCKET"],
        :key => picture.image_url.split('/')[-2],   
    )
end

ただし、次のエラーが発生します。

リージョンを us-east-1 に変更すると、次のエラーが表示されるため、リージョンが正しいことがわかります。

ここで私は何を間違っているのでしょうか?

解決策

このバケットは、us-west-2 ではなく、別のリージョン (IE) で作成された可能性があります。 「アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレス指定する必要があります。今後のすべてのリクエストをこのエンドポイントに送信してください。」というメッセージを見たのはこのときだけです。