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 S3λ₯Ό μ‚¬μš©ν•˜λŠ” 일상적인 μž‘μ—…μ— κ·€μ€‘ν•œ 도ꡬ가 된 AWS CLI에 μ΄λŸ¬ν•œ κΈ°λŠ₯을 정말 μ΄ˆλŒ€ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

+1

+1

Heroku에 배포할 μ½”λ“œ λ²ˆλ“€μ„ ν˜ΈμŠ€νŒ…ν•˜κΈ° μœ„ν•΄ S3λ₯Ό μ‚¬μš©ν•˜λ €κ³  ν•©λ‹ˆλ‹€. 이것은 멋진 κΈ°λŠ₯이 될 κ²ƒμž…λ‹ˆλ‹€. :)

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

+1

+1은 AWS CLI에 있으면 쒋을 κ²ƒμž…λ‹ˆλ‹€.

μ—¬κΈ°κΉŒμ§€ μ˜€λŠ” μ‚¬λžŒμ„ μœ„ν•œ μ°Έκ³  μ‚¬ν•­μž…λ‹ˆλ‹€. boto λΌμ΄λΈŒλŸ¬λ¦¬μ— λ„λ‹¬ν•˜μ—¬ κ°„λ‹¨ν•˜κ²Œ 직접 이 μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. https://boto.readthedocs.org/en/latest/ref/s3.html#boto .s3.key.Key.generate_url

ν”Όλ“œλ°±μ„ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. 이것을 μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. AWS CLI에 μΆ”κ°€ν•  수 μžˆλŠ” ν›Œλ₯­ν•œ κΈ°λŠ₯μ΄λΌλŠ” 데 λ™μ˜ν•©λ‹ˆλ‹€.

@johnboxall κ°μ‚¬ν•©λ‹ˆλ‹€. BotoλŠ” ν™•μ‹€νžˆ μ˜΅μ…˜μ΄μ§€λ§Œ κΈ°λ³Έ Python 배포 없이 cli λ°”μ΄λ„ˆλ¦¬λ₯Ό λ°°ν¬ν•˜λŠ” μ‚¬λžŒλ“€(Windows μ‚¬μš©μž 생각)의 경우 ν•΄λ‹Ή 경둜둜 μ΄λ™ν•˜λŠ” 것은 PowerShell SDKλ₯Ό ν’€λ‹€μš΄ν•˜κ³  .NET SDKλ₯Ό 톡해 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” κ²ƒλ§ŒνΌμ΄λ‚˜ λ§Žμ€ μž‘μ—…μž…λ‹ˆλ‹€. CLIμ—μ„œ 이 λ„€μ΄ν‹°λΈŒλ₯Ό 계속 보고 μ‹ΆμŠ΅λ‹ˆλ‹€. :이λ₯Ό λ“œλŸ¬λ‚΄κ³  웃닀:

이것이 aws-cli에 좔가될 λ•ŒκΉŒμ§€ μ§€κΈˆμ€ botoλ₯Ό 직접 μ‚¬μš©ν•˜λ €λŠ” μ‚¬λžŒμ„ μœ„ν•΄ λΉ λ₯Έ μƒ˜ν”Œ 지침을 μΆ”κ°€ν•  것이라고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 이제 이것을 두어 번 μ°Ύμ•˜κ³  이 ν‹°μΌ“κ³Ό μ‹ΆμŠ΅λ‹ˆλ‹€ . 이것은 μΌλΆ€μ—κ²ŒλŠ” 맀우 λͺ…λ°±ν•  수 μžˆμ§€λ§Œ λΉ„ 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

μ•ˆλ…•ν•˜μ„Έμš” μ—¬λŸ¬λΆ„
이 문제의 μƒνƒœμ— λŒ€ν•œ 또 λ‹€λ₯Έ 검사 ν›„ λ‚˜λŠ” 도ꡬλ₯Ό 제곡 ttr.aws.utils.s3 파이썬 νŒ¨ν‚€μ§€μ— λŒ€ν•œ μ—…λ°μ΄νŠΈλ₯Όν–ˆλ‹€ s3tmpgen을 . μ—…λ°μ΄νŠΈλ₯Ό 톡해 httpsλ₯Ό μ‚¬μš©ν•  뿐만 μ•„λ‹ˆλΌ ( -http μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ—¬) http도 μ‚¬μš©ν•˜μ—¬ URL을 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ—¬μ „νžˆ 이것을 awscli μ†”λ£¨μ…˜μœΌλ‘œ κ΅μ²΄ν•˜κΈ°λ₯Ό κ³ λŒ€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

:+1:

s3 μ„œλͺ…λœ URL이 cli의 일뢀가 λ˜λ„λ‘ +1

:+1:

+1

μ™œ κ·Έλ ‡κ²Œ 였랜 μ‹œκ°„μ΄ κ±Έλ¦¬λŠ”μ§€ μ΄ν•΄ν•©λ‹ˆλ‹€. λͺ¨λ“  일이 μˆœμ„œλŒ€λ‘œ μ§„ν–‰λ˜μ–΄μ•Ό ν•˜κ³  쒋은 점은 λ‘œλ“œλ§΅μ— μžˆλŠ” κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

AWS CLIλŠ” botocore 기반으둜 ν•˜λ―€λ‘œ λ¨Όμ € ν•΄κ²°ν•΄μ•Ό ν•©λ‹ˆλ‹€. boto/botocore#291이(κ°€) μš”μ²­ν•©λ‹ˆλ‹€.

ν’€ μš”μ²­ BOTO은 / botocore # 504 이미 지점에 ν•©λ³‘λ˜μ—ˆλ‹€ clients-only 및 청ꡬ (https://github.com/boto/botocoreμ—μ„œ README에 μ–ΈκΈ‰ 된) λ‘œλ“œλ§΅, ν˜„μž¬ λΆ„κΈ° 병합 이전에 ν•œ 단계 botocoreμž…λ‹ˆλ‹€ clients-only 개발(베타, GA 및 AWS CLIμ—λŠ” μš°λ¦¬μ—κ²Œ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” "λ„€μ΄ν‹°λΈŒ" 도ꡬ가 μžˆμŠ΅λ‹ˆλ‹€).

@vlcinsky

예, ν΄λΌμ΄μ–ΈνŠΈ μ „μš© λΆ„κΈ°κ°€ botocore에 λ³‘ν•©λ˜λ©΄ CLIμ—μ„œ μ„œλͺ…λœ URL 생성을 선택할 수 μžˆμŠ΅λ‹ˆλ‹€. 그런 λ‹€μŒ CLI μΈ‘μ—μ„œ μˆ˜ν–‰ν•΄μ•Ό ν•˜λŠ” μ£Όμš” μž‘μ—…μ€ κΈ°λŠ₯을 λ…ΈμΆœν•˜λŠ” 쒋은 APIλ₯Ό λ§Œλ“œλŠ” κ²ƒμž…λ‹ˆλ‹€.

:+1: 정말 νŽΈλ¦¬ν•œ κΈ°λŠ₯이 될 κ²ƒμž…λ‹ˆλ‹€.

+1

@kyleknap이 μ–ΈκΈ‰ν–ˆλ“―μ΄ ν•΄μ•Ό ν•  일 쀑 ν•˜λ‚˜λŠ” 이 κΈ°λŠ₯을 μœ„ν•œ 쒋은 APIλ₯Ό μ„€κ³„ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

λ‹€μŒ μ‚¬μš© 사둀가 μžˆμŠ΅λ‹ˆλ‹€.

  • "tmpGET": GET μš”μ²­μ— λŒ€ν•œ tmpurl 생성
  • "tmpPOST": POST μš”μ²­μ„ μœ„ν•œ tmpurl 생성
  • "tmp???": μ§€μ›ν•˜λŠ” 방법이 더 μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” μ•Œμ§€ λͺ»ν•œλ‹€ (그리고 λ‹€λ₯Έ 것을 μ‚¬μš©ν•œ 적이 μ—†λ‹€.
    GET 및 POST)

μœ μΌν•œ 좜λ ₯은 url이고 μœ μΌν•œ μž…λ ₯은 버킷/ν‚€ 및 λ§Œλ£Œμ΄λ―€λ‘œ "tmpGET"은 정말 μ‰½μŠ΅λ‹ˆλ‹€.
λ‚ μ§œ(만료 μ‹œκ°„).

"tmpPOST"λŠ” κ²Œμ‹œ 정책을 μ •μ˜ν•΄μ•Ό ν•˜λ―€λ‘œ 훨씬 더 λ³΅μž‘ν•©λ‹ˆλ‹€.

ν•΄κ²°ν•΄μ•Ό ν•  ν•œ 가지 μ§ˆλ¬Έμ€ μ΄λŸ¬ν•œ 쑰치λ₯Ό 어디에 λ‘˜ 것인지에 λŒ€ν•œ 두 가지 λŒ€μ•ˆμ΄ μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

  • aws s3
  • aws s3api

μ˜€λŠ˜μ€ 더 λ³΅μž‘ν•œ "tmpPOST"λ₯Ό 닀루지 μ•Šκ³  더 κ°„λ‹¨ν•œ "tmpGET"에 μ΄ˆμ μ„ 맞좜 κ²ƒμž…λ‹ˆλ‹€.

λΉ λ₯Έ μ†”λ£¨μ…˜: aws s3 tmpurl

κ·ΈλŸ¬ν•œ μ†”λ£¨μ…˜μ€ κ΅¬ν˜„ν•˜κΈ°κ°€ λ‹€μ†Œ μ‰¬μšΈ 것이며 μ‹€μ œ μž‘μ—…μ˜ 80%에 도움이 될 κ²ƒμž…λ‹ˆλ‹€.
상황 μ‚¬μš©(AWS S3에 객체 κ²Œμ‹œ 및 κ³΅μœ ν•  μž„μ‹œ URL 제곡
λˆ„κ΅¬ λž‘ ν•¨κ»˜).

이 κ°œλ…μ€ λ‹€μŒκ³Ό 같은 차이점이 μžˆλŠ” κΈ°μ‘΄ aws s3 ls 으둜 ν•©λ‹ˆλ‹€.

  • --expires μ˜΅μ…˜μ„ μΆ”κ°€ν•˜μ—¬ URL이 λ§Œλ£Œλ˜λŠ” λ‚ μ§œμ™€ μ‹œκ°„μ„ μ •μ˜ν•˜κ±°λ‚˜ --expires-in
    λ§Œλ£ŒκΉŒμ§€μ˜ μ‹œκ°„(초) 지정
  • λ‚˜μ—΄λœ 객체당 ν•œ 쀄씩 tmpurl만 좜λ ₯ν•©λ‹ˆλ‹€.

ν˜„μž¬ μ •ν™•ν•œ μ‹œκ°„μ— λŒ€ν•œ tmp url을 λ§Œλ“œλŠ” μ‰¬μš΄ 방법이 μ—†μœΌλ―€λ‘œ 초기
버전은 기본값이 3600초인 --expires-in μ˜΅μ…˜λ§Œ μ œκ³΅ν•©λ‹ˆλ‹€.

μž₯점과 단점

μž₯점

AWS S3의 κΈ°μ‘΄ 객체 μˆ˜μ— λŒ€ν•œ tmp URL λ¬ΆμŒμ„ μƒμ„±ν•˜λŠ” 것은 맀우 μ‰½μŠ΅λ‹ˆλ‹€. 그것은 μ €μž₯
μ •ν™•ν•œ 버킷/ν‚€ 이름 값을 κ°€μ Έμ˜€λŠ” 데 μž₯애물이 μžˆμŠ΅λ‹ˆλ‹€.

단점

이 aws s3 ls 기반 μ ‘κ·Ό λ°©μ‹μ˜ 단점은 객체에 λŒ€ν•œ tmp url을 생성할 수 μ—†λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.
아직 μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ–΄μ¨Œλ“  이것은 λ‚˜μ€‘μ— 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 λ””μžμΈμ΄ ν•„μš”ν•©λ‹ˆλ‹€. 일단 ν•΄κ²°λ˜λ©΄ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν•œ 가지 μ£Όλͺ©ν•΄μ•Ό ν•  점은 generate_presigned_url μ—λŠ” μ„œλͺ…ν•  S3 API(예: get_object )λ₯Ό μ§€μ •ν•˜λŠ” client_method λ§€κ°œλ³€μˆ˜κ°€ ν•„μš”ν•˜λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. ν˜„μž¬ κ΅¬ν˜„μ—μ„œλŠ” μ‚¬μš©μžμ—κ²Œ λ…ΈμΆœλ˜μ§€λ§Œ λ‹€λ₯Έ ν•˜μœ„ λͺ…λ Ή( 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

μœ„μ˜ νŒŒμ΄μ¬μ€ 'https://.s3.amazonaws.com/dir/dir/file

νŒŒμΌμ„ 말리렀고 ν•˜λ©΄ SSL μΈμ¦μ„œ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. 잘λͺ»λœ μΈμ¦μ„œ 체인
μ˜΅μ…˜ -kλ₯Ό μ‚¬μš©ν•˜μ—¬ 말리면 이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμ§€λ§Œ URL이 ' .amazonaws.com//디렉토리/디렉토리/파일'
μΈμ¦μ„œκ°€ μœ νš¨ν•©λ‹ˆλ‹€. URL을 λ³€κ²½ν•˜λŠ” λ°©λ²•μ΄λ‚˜ λ‹€λ₯Έ μˆ˜μ • 사항이 μžˆμŠ΅λ‹ˆκΉŒ?
감사 ν•΄μš”,
게리

예: ' https://s3-us-west-1.amazonaws.com/bucket/dir/dir/file '

μ—…λ°μ΄νŠΈ, boto3을 μ‚¬μš©ν•˜μ—¬ μ˜¬λ°”λ₯΄κ²Œ μ„œλͺ…λœ URL을 생성할 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

+1

인상적 - 3λ…„ λ™μ•ˆ 곡식 CLI λ„κ΅¬λŠ” boto 및 s3cmd에 μ‘΄μž¬ν•˜μ§€λ§Œ μ„œλͺ…λœ URL에 λŒ€ν•œ 지원을 κ΅¬ν˜„ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.

1+

+1

+1

이에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ? λ†€λžκ²Œλ„ 이것은 아직 μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

+1

ν•΄κ²° λ°©λ²•μœΌλ‘œ ν•˜λ‚˜λ₯Ό μž‘μ„±ν–ˆμœΌλ©° μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€. https://github.com/gdbtek/aws-tools

μ•ˆλ…•ν•˜μ„Έμš” μ—¬λŸ¬λΆ„, ν”Όλ“œλ°± μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. 이것은 우리의 λ°±λ‘œκ·Έμ— μžˆλŠ” κ²ƒμž…λ‹ˆλ‹€. 아직 μ •ν™•ν•œ λ‚ μ§œλŠ” μ—†μ§€λ§Œ ν’€ λ¦¬ν€˜μŠ€νŠΈκ°€ λ°œμƒν•˜λ©΄ 이 λ¬Έμ œμ— λ§ν¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ—„μ²­λ‚œ! κ°μ‚¬ν•©λ‹ˆλ‹€!

전체 s3 폴더에 미리 μ„œλͺ…λœ URL을 κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆκΉŒ? 폴더λ₯Ό 탐색할 수 μžˆλŠ” μ›Ή μΈν„°νŽ˜μ΄μŠ€κ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆκΉŒ?

@tommeda λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€. 미리 μ„œλͺ…λœ URL은 항상 단일 μ €μž₯된 객체와 κ΄€λ ¨λ©λ‹ˆλ‹€. 당신이 λ§ν•˜λŠ” 것은 정적 μ›Ή μ‚¬μ΄νŠΈμ™€ μœ μ‚¬ν•˜μ§€λ§Œ (AWS S3λ₯Ό 기반으둜 ν•˜λŠ” 경우) μ•‘μ„ΈμŠ€λ₯Ό μ œμ–΄ν•˜λ €λ©΄ ν”„λ‘μ‹œλ₯Ό μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€. λͺ‡ 가지 μ‹œλ„κ°€ 이미 μ‘΄μž¬ν•˜μ§€λ§Œ λ‚˜μ—κ²Œ (μ•½ 1 λ…„ 전에 μ‘°μ‚¬ν•œ) μ‰¬μš΄ μ‹œλ„λŠ” μ—†μŠ΅λ‹ˆλ‹€.

항상 각 객체에 λŒ€ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•˜κ³  각 객체에 λŒ€ν•œ 사전 μ„œλͺ…λœ URL을 ν¬ν•¨ν•˜λŠ” μ›Ή νŽ˜μ΄μ§€λ₯Ό μƒμ„±ν•œ λ‹€μŒ μΈν„°νŽ˜μ΄μŠ€λ₯Ό s3에 λ„£κ³  μΈν„°νŽ˜μ΄μŠ€μ— 사전 μ„œλͺ…λœ URL을 λ°˜ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ°„λ‹¨ν•˜μ§€ μ•Šκ³  μΈν„°νŽ˜μ΄μŠ€κ°€ νŠΉμ • μš©λ„λ‘œ μ‚¬μš©λ˜κΈ°λ₯Ό μ›ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰