curlはファイルをダウンロードできませんが、ブラウザはダウンロードできます

curlはファイルをダウンロードできませんが、ブラウザはダウンロードできます

URLの例:https://xxxxxxxxxx.s3.amazonaws.com/xxxx-xxxx-xxxx-xxxx/xxxxxxxxxxxxxxx/x?AWSAccessKeyId=AKIAIFKEBR4CLVTDYSLA&Signature=Kv%2B859dJ2eUmLgHdkT%2F9nUJEeRM%3D&Expires=1922517562 です。

%XX をデコードしようとしましたが、成功しませんでした。

また、試してみましたaws s3 cp s3://xxxxxxxxxx/xxxx-xxxx-xxxx-xxxx/xxxxxxxx... - --recursiveStreaming currently is only compatible with non-recursive cp commands、S3 から複数のファイルをストリーミングする必要があります。

使用すると、wget同じ 403 が表示されます。

URL は からs3_client.generate_presigned_url

答え1

特殊文字である可能性のある文字が文字どおりに解釈されるようにするには、一重引用符を使用します。

[user@localhost ~]# curl 'https://xxxxxxxxxx.s3.amazonaws.com/xxxx-xxxx-xxxx-xxxx/xxxxxxxxxxxxx/x?AWSAccessKeyId=AKIAIFKEBR4CLVTDYSLA&Signature=Kv%2B859dJ2eUmLgHdkT%2F9nUJEeRM%3D&Expires=1922517562'

鍵となるのは一重引用符です。

答え2

/なるほど、curl は「二重引用符」で囲まれた URL の場合、引用符で囲まれていない URL (%2F ではなく)をダウンロードできることがわかりました。

関連情報