Aws-cli: S3アクセス甚の眲名付きURLの生成をサポヌト

䜜成日 2013幎11月02日  Â·  40コメント  Â·  ゜ヌス: aws/aws-cli

feature-request

最も参考になるコメント

印象的-3幎間で、公匏CLIツヌルはbotoずs3cmdに存圚したすが、実装された眲名付きURLのサポヌトを取埗したせん

党おのコメント40件

ええ、これは玠晎らしい機胜になるず思いたす。 これは新しいs3サブコマンドになるず思いたすか サブコマンドを簡単に远加できるように、s3コマンドコヌドの内郚倉曎に取り組んでいたす。 私はリファクタリングを開始するためにこれを䜿甚しおきたlsで報告された問題のいく぀か修正するコマンドls 。

ただ完党には完了しおいたせんが、これたでのずころ次のようになっおいたす。
https://github.com/jamesls/aws-cli/compare/s3-ls-permissions#diff -b88a66f4bd148577a9390cb980d7eeb9R321

はい、これは私が探しおいたものです。 期間だけでなく、特定の日時でも有効期限を指定できるようにしおください。 UTCタむムゟヌン、ISO圢匏、フル秒が必芁なため、「Z」で終わる文字列は䜿いやすいようです䟋「2014-05-30T000000Z」。

本圓にコマンドラむンからtmpurlを生成する必芁がある堎合は、コマンドラむンツヌルs3tmpgenをお勧めしたす

ずにかく、私は本圓にそのような機胜をAWS CLIに招埅したす。これは、AWSS3での日垞業務にずっお貎重なツヌルになりたした。

+1

+1

S3を䜿甚しお、Herokuにデプロむするコヌドバンドルをホストするこずを怜蚎しおいたす。これは玠晎らしい機胜です:)

https://blog.heroku.com/archives/2014/5/22/introducing_the_app_json_application_manifest

+1

+1はAWSCLIでこれを持っおいるず玠晎らしいでしょう

ここにたどり着いた人ぞのメモですが、 botoラむブラリにアクセスするこずで簡単にこれを行うこずができたす //boto.readthedocs.org/en/latest/ref/s3.html#boto .s3.key.Key.generate_url

フィヌドバックをお寄せいただきありがずうございたす。 これを芋おいきたす。これがAWSCLIに远加する優れた機胜になるこずに同意したす。

ありがずう、@ johnboxall。 Botoは確かにオプションですが、ネむティブPython展開なしでcliバむナリを展開する人々Windowsナヌザヌを考えおくださいにずっお、そのルヌトを進むこずは、PowerShellSDKをプルダりンしお.NETSDKを介しお行うのず同じくらいの䜜業です。 CLIでこのネむティブを匕き続き衚瀺したい。 ニダリ

これがaws-cliに远加されるたで、今のずころbotoを盎接䜿甚したいず考えおいる人のために、簡単なサンプル手順を远加するず思いたした。 私は今これを数回探しに行きたした、そしおむしろこのチケットず@johnboxallコメントず䞀緒にそれを持っおいたいです。 これは䞀郚の人にずっおは非垞に明癜かもしれたせんが、Python以倖の開発者にずっおはそうではありたせん

すでにPythonがむンストヌルされおいるボックス

$ python --version
Python 2.7.6
$ sudo pip install boto
$ python
>>> import boto
>>> s3 = boto.connect_s3()
>>> bucket = s3.get_bucket('your-bucket-name')
>>> key = bucket.get_key('the-prefix/the-name-of-the-object.mp4')
>>> key.generate_url(3600)
'https://your-bucket-name.s3.amazonaws.com/the-prefix/the-name-of-the-object.mp4?Signature=CgDfFa45DBXFiMfASxSTpiSuHKM%3D&Expires=1415913273&AWSAccessKeyId=ABCDEDKSY344ACVDG'

@ isleshocky77の䟋に

脚本

$ cat boto-get-signed-url.py
#!/usr/bin/python
import boto
import argparse

parser = argparse.ArgumentParser(description='Generate an S3 signed URL')
parser.add_argument('-b', '--bucket', help='bucket name')
parser.add_argument('-k', '--key', help='prefix/key')
parser.add_argument('-s', '--seconds', type=int, help='time in seconds until the URL will expire')
args = parser.parse_args()

s3 = boto.connect_s3()
bucket = s3.get_bucket(args.bucket)
key = bucket.get_key(args.key)
if bucket.get_key(args.key):
  print key.generate_url(args.seconds)
else:
  print 's3://' + args.bucket + '/' + args.key + ' does not exist'

䜿甚䟋ずヘルプ

$ ./boto-get-signed-url.py -b superbucket -k "test" -s 60
https://superbucket.s3.amazonaws.com/test?Signature=n6cO8RH%2FbNwQhuZVNNazo3q04x0%3D&Expires=1416695021&AWSAccessKeyId=AKIEXAMPLEKEYNOTREAL

$ boto-get-signed-url.py --help
usage: boto-get-signed-url.py [-h] [-b BUCKET] [-k KEY] [-s SECONDS]

Generate an S3 signed URL

optional arguments:
  -h, --help            show this help message and exit
  -b BUCKET, --bucket BUCKET
                        bucket name
  -k KEY, --key KEY     prefix/key
  -s SECONDS, --seconds SECONDS
                        time in seconds until the URL will expire

こんにちは、みんな
この問題のステヌタスに぀いおもう䞀床確認した埌、ツヌルs3tmpgenを提䟛するPythonパッケヌゞttr.aws.utils.s3を曎新し-http httpも䜿甚しおURLを生成できたす。

これをawscli゜リュヌションに眮き換えるこずをただ楜しみにしおいたす。

+1

s3で眲名されたURLがCLIの䞀郚になる堎合は+1

+1

+1

なぜそんなに時間がかかるのか、私は理解しおいるず思いたす。物事は順番に行われなければならず、良いこずは、ロヌドマップ䞊にあるように芋えるこずです。

AWSCLIはbotocoreに基づいおいるため、最初にそこで解決する必芁がありたす。 boto / botocore291がそれを求めおいたす。

プルリク゚ストboto / botocore504はすでにブランチclients-onlyマヌゞされおおり、ロヌドマップREADMEのhttps://github.com/boto/botocoreに蚘茉は䞻匵しおいたす。botocoreは珟圚、ブランチclients-onlyマヌゞする前の䞀歩です。

@vlcinsky

はい、クラむアント専甚ブランチがbotocoreにマヌゞされるず、CLIで眲名付きURLの生成を取埗できるようになりたす。 次に、CLI偎で実行する必芁がある䞻な䜜業量は、機胜を公開する優れたAPIを䜜成するこずです。

+1確かに䟿利な機胜になりたす

+1

@kyleknapが指摘したように、

次のナヌスケヌスがありたす。

  • 「tmpGET」GETリク゚ストのtmpurlを䜜成したす
  • 「tmpPOST」POSTリク゚ストのtmpurlを䜜成したす
  • "tmp ???"サポヌトする方法は他にありたすか 私は気づいおいたせんそしお他に䜿ったこずがありたせん
    GETおよびPOST

「tmpGET」は、出力がurlのみで、入力がバケット/キヌず有効期限のみであるため、非垞に簡単です。
日付有効期限。

「tmpPOST」は、投皿のポリシヌを定矩する必芁があるため、はるかに耇雑です。

解決すべき1぀の質問は、これらのアクションをどこに眮くかずいうこずです。2぀の遞択肢があるようです。

  • aws s3
  • aws s3api

今日は、より耇雑な「tmpPOST」に぀いおは扱いたせん。より単玔な「tmpGET」に焊点を圓おたす。

簡単な解決策 aws s3 tmpurl远加したす

このような゜リュヌションは実装がかなり簡単で、実際の80で圹立ちたす
シチュ゚ヌションを䜿甚したすオブゞェクトをAWS S3に公開し、共有する䞀時的なURLを提䟛したす
誰かず。

この抂念は、既存のaws s3 lsに基づいお構築されたすが、次の違いがありたす。

  • オプション--expiresを远加しお、URLの有効期限が切れる日時を定矩するか、 --expires-inを
    有効期限たでの秒数を指定したす
  • リストされたオブゞェクトごずに1行のtmpurlのみを出力したす

恐れ入りたすが、珟圚、正確な瞬間のtmp urlを䜜成する簡単な方法はないので、最初に
バヌゞョンは、デフォルト倀が3600秒の--expires-inオプションのみを提䟛したす。

長所ず短所

長所

AWSS3䞊の既存のオブゞェクトの数に察しお䞀連のtmpURLを䜜成するのは非垞に簡単です。 それは保存したす
正確なバケット/キヌ名の倀を取埗する際のハヌドル。

短所

このaws s3 lsベヌスのアプロヌチの欠点は、オブゞェクトのtmpurlを䜜成できないこずです。
ただ存圚しおいたせん。

ずにかく、これは埌でaws s3api゜リュヌションによっお解決される可胜性がありたす。

ずおもうたくそこに眮いおください。 投皿は、投皿されたデヌタのサヌバヌ偎の凊理を䞭心にほが確実に構築されるものですが、getメ゜ッドのナヌスケヌスは通垞非垞に簡単です。 それがほずんどのナヌスケヌスをカバヌするず蚀うずき、私は匷く同意したす。

远加する぀もりでしたが、䞀時URLはs3䞊のファむルの怜玢ずは䜕の関係もないず思いたす。 誰かが眲名されたURLのセット党䜓を生成したい堎合、それはcliがラップするためにそれ以䞊のこずをする必芁がない論理です。 tmpurlプリミティブは、私の頭の䞭で実行可胜な最小限の補品です。

ロヌカルブランチにs3オブゞェクトの事前に蚭定されたURLを実装したした完党ではありたせん。

https://github.com/quiver/aws-cli/tree/s3-presigned-url

これはbotocore.generate_presigned_url薄いラッパヌであり、ただ本番環境に察応しおいたせん。 @vlcinskyが指摘したように、 AWSCLIような優れたAPI蚭蚈が必芁です。 それが修正されたら、私はそれを実装するこずができたす。

私が泚意するこずの1぀は、 generate_presigned_urlはclient_methodパラメヌタヌが必芁であるずいうこずです。このパラメヌタヌは、サむンオンするS3 API䟋 get_object を指定したす。 私の珟圚の実装では、ナヌザヌに公開されおいたすが、さたざたなサブコマンド aws s3 geturl 、 aws s3 uploadurl やスむッチオプション --type upload を提䟛するなど、ナヌザヌフレンドリヌである方がよいでしょう。

䜿甚法

オブゞェクトをS3にアップロヌドする

$ echo hello world > test.txt

$ aws s3 url s3://BUCKET/test.txt --client-method put_object --expires-in 180
https://BUCKET.s3.amazonaws.com/test.txt?AWSAccessKeyId=AKIAIXXXXXXXXXXXXXXX&Expires=1451449621&Signature=KgwO9lBx942fFvln0JW0NX7mKS0%3D

$ URL=`aws s3 url s3://BUCKET/test.txt --client-method put_object --expires-in 180`

$ curl -D - -X PUT --upload-file test.txt $URL
HTTP/1.1 100 Continue

HTTP/1.1 200 OK
x-amz-id-2: /90B1axPysBg3P8kv8BlR8RoqdO1JfajCN5BM5/TxIT3VjGphKmyGX8EgCQEtCXYhuNkVne5+GM=
x-amz-request-id: 685F03CA6C84FAC0
Date: Wed, 30 Dec 2015 05:18:38 GMT
ETag: "6f5902ac237024bdd0c176cb93063dc4"
Content-Length: 0
Server: AmazonS3

$ aws s3 cp s3://BUCKET/test.txt -
hello world

S3からオブゞェクトを取埗する

$ URL=`aws s3 url s3://BUCKET/test.txt --client-method get_object --expires-in 180`

$ curl -D - -X GET $URL
HTTP/1.1 200 OK
x-amz-id-2: WuRokcBm9wnDMaRkD8kNeGijuKEzVp3eagi7JbpPXmmchEljsiP4wZX5w1TaeuK94n2526FGKMI=
x-amz-request-id: 1EBCAA7A691A577D
Date: Wed, 30 Dec 2015 05:20:14 GMT
Last-Modified: Wed, 30 Dec 2015 05:19:15 GMT
ETag: "6f5902ac237024bdd0c176cb93063dc4"
Accept-Ranges: bytes
Content-Type: binary/octet-stream
Content-Length: 12
Server: AmazonS3

hello world

䞊蚘のPythonは次のようなURLを生成したす 'https//.s3.amazonaws.com / dir / dir / file

ファむルをカヌルしようずするず、SSL蚌明曞の問題が発生したす無効な蚌明曞チェヌン
オプション-kを䜿甚しおカヌルするず、これを乗り越えるこずができたすが、URLが次のようになっおいる堎合もわかりたす ' .amazonaws.com // dir / dir / file '
蚌明曞は有効ですが、URLを倉曎する方法やその他の修正はありたすか
ありがずう、
ギャリヌ

䟋 ' https//s3-us-west-1.amazonaws.com/bucket/dir/dir/file '

曎新、boto3を䜿甚しお、正しく眲名されたURLを生成できたした。

+1

印象的-3幎間で、公匏CLIツヌルはbotoずs3cmdに存圚したすが、実装された眲名付きURLのサポヌトを取埗したせん

1+

+1

+1

これに関する曎新はありたすか 驚いたこずに、これはただ利甚できたせん。

+1

回避策ずしお1぀䜜成し、期埅どおりに機胜したす //github.com/gdbtek/aws-tools

みなさん、こんにちは。フィヌドバックありがずうございたす。 これは私たちのバックログにあるものです。 正確な日付はただわかりたせんが、プルリク゚ストが届き次第、この問題にリンクしたす。

玠晎らしい ありがずう

事前に眲名されたURLをs3フォルダヌ党䜓に取埗するこずは可胜ですか フォルダ内を移動するためのWebむンタヌフェむスを含めたすか

@tommeda䞍可胜です。 事前に眲名されたURLは、垞に単䞀の保存されたオブゞェクトに関連しおいたす。 あなたが話しおいるこずは静的なりェブサむトに䌌おいたすが、それぞのアクセスを制埡するためにAWS S3に基づいおいる堎合、プロキシを䜜成する必芁がありたす。 すでにいく぀かの詊みが存圚し、私には玄1幎前に調査された簡単なものはありたせんでした。

各オブゞェクトぞのむンタヌフェむスを提䟛し、事前に眲名されたURLを含むWebペヌゞをい぀でも生成しおから、むンタヌフェむスをs3に配眮し、事前に眲名されたURLをむンタヌフェむスに返すこずができたす。 簡単なこずではありたせん。むンタヌフェヌスは䜿甚法に固有のものにしたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡