AWS CLIを使用してS3バケット内のオブジェクトの事前署名済みURLを作成する方法はありますか?
私はそれがSDKを使用して実行できることを知っていますが、CLIで可能ですか?
AWSドキュメントの1つでこれを見つけましたが、コマンドを完了できません。
s3cmd signurl s3://BUCKET/OBJECT <expiry_Epoch|+expiry_offset>
助けがありますか?
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
ワイルドカードがサポートされるようになりました。
例えば。 aws s3 presign s3://mybucket/*
@Michaelと@Shabbir、
はい、 aws s3 presign
は、グロビング/ワイルドカード/、--include
、--exclude
、または--recursive'. aws
lsdoes not accept
- 1; it behaves as
ls -lp or
ls -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
したがって、事前署名されたURLのコマンドは次のとおりです。
aws s3 presign s3://bucket-address/ --expires-in 300
ただし、注意点は次のとおりです。ディレクトリレベルではなく、個々のファイル/オブジェクトレベルで機能する事前署名済みURLを使用できます。
間違っている場合は修正できてうれしいです。