S3cmd put contentfile S3:// test_bucket/test_fileを使用して、S3cmdツールを介して資格情報で一部のコンテンツをS3バケットにプッシュできます。
質問は、s3cmdがインストールされていない他のコンピューターのこのバケットからコンテンツをダウンロードする必要があることですが、wgetがインストールされています。
wgetを使用してバケットからコンテンツをダウンロードしようとすると、次のようになります。
https://s3.amazonaws.com/test_bucket/test_file
--2013-08-14 18:17:40-- `https`://s3.amazonaws.com/test_bucket/test_file
Resolving s3.amazonaws.com (s3.amazonaws.com)... [ip_here]
Connecting to s3.amazonaws.com (s3.amazonaws.com)|ip_here|:port... connected.
HTTP request sent, awaiting response... 403 Forbidden
`2013`-08-14 18:17:40 ERROR 403: Forbidden.
Amazon AWSウェブコンソールを介して、このバケットを手動で公開しました。
質問:wgetを使用してS3バケットからコンテンツをダウンロードするにはどうすればよいですか? txtローカルファイルに?
わかりました... --aclパブリックフラグを指定してS3CMDでS3バケットにファイルをアップロードすると、wgetでS3からファイルを簡単にダウンロードできるようになります...
結論:wgetでダウンロードするには、最初にs3cmd put --acl public --guess-mime-type <test_file> s3://test_bucket/test_file
でS3のコンテンツをアップロードする必要があります
代わりに試すことができます:
s3cmd setacl --acl-public --guess-mime-type s3://test_bucket/test_file
上記のsetaclフラグに注目してください。 s3のファイルをパブリックにアクセス可能に設定すると、wget http://s3.amazonaws.com/test_bucket/test_file
を実行できます
次のように作成されたURLからアクセスできるはずです。
http://{bucket-name}.s3.amazonaws.com/<path-to-file>
ここで、s3ファイルのパスは次のとおりです。
s3://test-bucket/test-folder/test-file.txt
次のURLでこのファイルをwgetできるはずです。
http://test-bucket.s3.amazonaws.com/test-folder/test-file.txt
次のコマンドを使用できます。
wget --no-check-certificate --no-proxy 'http://your_bucket.s3.amazonaws.com/my-file.jpg'
AWS CLIには、プライベートs3リソースへの一時パブリックURLを取得するために使用できる「presign」コマンドがあります。
aws s3 presign s3://private_resource
その後、wgetを使用して、事前署名されたURLを使用してリソースをダウンロードできます。
同じエラーが発生したため、セキュリティグループの受信ルールを追加して解決しました。
インスタンスが存在するサブネットのポート443でのHTTPSタイプ(私のIPアドレスにアクセスするのは私だけなので)。
これを含めるのを忘れた人に役立つことを願っています
linuxマシンにawsクライアントをインストールする方法がない場合は、以下の方法を試してください。
以下のコマンドを実行します
wget --no-check-certificate --no-proxy --user = username --ask-password -O "download url"
ありがとう