web-dev-qa-db-ja.com

CLI経由のAWS S3事前署名URL

AWS CLIを使用してS3バケット内のオブジェクトの事前署名済みURLを作成する方法はありますか?

私はそれがSDKを使用して実行できることを知っていますが、CLIで可能ですか?

AWSドキュメントの1つでこれを見つけましたが、コマンドを完了できません。

s3cmd signurl s3://BUCKET/OBJECT <expiry_Epoch|+expiry_offset>

助けがありますか?

15
Shabbir Bata

aws s3 presign を試しましたか?

Amazon S3オブジェクトの事前署名済みURLを生成します。これにより、事前署名されたURLを受け取った人は誰でも、HTTP GETリクエストでS3オブジェクトを取得できます。 sigv4要求の場合、領域を明示的に構成する必要があります。

これにより、3600秒で期限切れになるURLが生成されます(デフォルト)

aws s3 presign s3://mybucket/myobject

これにより、300秒で期限切れになるURLが生成されます

aws s3 presign s3://mybucket/myobject  --expires-in 300

出力

https://mybucket.s3.amazonaws.com/myobject?AWSAccessKeyId=AKIAJXXXXXXXXXXXXXXX&Expires=1503602631&Signature=ibOGfAovnhIF13DALdAgsdtg2s%3D
34
helloV

ワイルドカードがサポートされるようになりました。

例えば。 aws s3 presign s3://mybucket/*

2
Gerald B

@Michaelと@Shabbir、

はい、 aws s3 presignは、グロビング/ワイルドカード/、--include--exclude、または--recursive'. awslsdoes not accept- 1; it behaves asls -lp orls -lph`。

ループが機能する:

for file in $(aws s3 ls s3://mybucket --profile myprofile \
--endpoint-url <my-endpoint> | awk '{print $NF}'); do
    aws s3 presign --expires-in 300 "s3://mybucket/$file" |
    --profile my-profile --endpoint-url <my-endpoint>
done
1
Monte Hayward

したがって、事前署名されたURLのコマンドは次のとおりです。

aws s3 presign s3://bucket-address/  --expires-in 300

ただし、注意点は次のとおりです。ディレクトリレベルではなく、個々のファイル/オブジェクトレベルで機能する事前署名済みURLを使用できます。

間違っている場合は修正できてうれしいです。

1
Shabbir Bata