Pytanie Jak zmienić nazwę kubełka AWS S3


Po wszystkich trudnych pracach związanych z migracją itp. Po prostu zdaj sobie sprawę, że jeśli potrzebujesz obsługiwać treści za pomocą CNAME (np. Media.abc.com). Nazwa zasobnika musi zaczynać się od media.abc.com/S3/amazon.com, aby upewnić się, że działa idealnie.

Po prostu zdaj sobie sprawę, że S3 nie pozwala na bezpośrednią zmianę nazwy z konsoli.

Czy są jakieś sposoby na obejście tego?


76
2018-01-06 17:30


pochodzenie




Odpowiedzi:


Myślę, że jedynym sposobem jest stworzenie nowego kubełka z poprawną nazwą, a następnie skopiowanie wszystkich obiektów ze starego wiadra do nowego wiadra. Możesz to zrobić, korzystając z interfejsu Aws CLI.


47
2018-01-06 22:40



czy są jakieś opłaty za powyższe rozwiązanie @navjot? - pavitran
@pavitran nope, to nadal droga - Tashows
@Tashows pavitran pytał o chaRges, a nie chaNges. O ile mi wiadomo, są rzeczywiście opłaty za kopiowanie elementów kubełkowych, uważam, że 1 koszt i 1 koszt operacji PUT dla każdej pozycji. - guival
@guival uuh masz rację, czytam zmiany. Jednakże, chociaż to, co mówisz, ma sens, nie mam żadnej wiedzy na temat możliwych zarzutów. Byłoby pomocne zamieścić link, jeśli znalazłeś to na dokumentacji lub stronie faq od amazonka. - Tashows
@Tashows Właściwie istnieje wpis dla operacji KOPIOWANIA na tabela cen dla S3, w rzeczywistości jest to taki sam koszt jak wykonanie PUT (więc nie ma dodatkowych kosztów GET). - guival


Rozwiązanie

aws s3 mb s3://[new-bucket]
aws s3 sync s3://[old-bucket] s3://[new-bucket]
aws s3 rb --force s3://[old-bucket]

Wyjaśnienie

Nie ma funkcji zmiany nazwy dla S3, ponieważ nie ma technicznych folderów w S3, więc musimy obsługiwać każdy plik w tym segmencie.

Powyższy kod: 1. utworzy nowe wiadro, 2. skopiuje pliki i usunie stare wiadro. to jest to!

Jeśli masz dużo plików w swoim segmencie i martwisz się o koszty, czytaj dalej. Za kulisami jest to, że wszystkie pliki w tym segmencie są najpierw kopiowane, a następnie usuwane. Powinno to kosztować niewielką kwotę, jeśli masz kilka tysięcy plików. W przeciwnym razie sprawdź ta odpowiedź aby zobaczyć, jak to wpłynie na Ciebie.

Przykład

W poniższym przykładzie tworzymy i zapełniamy stare wiadro, a następnie synchronizujemy pliki do nowego. Sprawdź dane wyjściowe poleceń, aby zobaczyć, co robi AWS.

> # bucket suffix so we keep it unique
> suffix="ieXiy2"  # used `pwgen -1 -6` to get this
>
> # populate old bucket
> echo "asdf" > asdf.txt
> echo "yxcv" > yxcv.txt
> aws s3 mb s3://old-bucket-$suffix
make_bucket: old-bucket-ieXiy2
> aws s3 cp asdf.txt s3://old-bucket-$suffix/asdf.txt
upload: ./asdf.txt to s3://old-bucket-ieXiy2/asdf.txt
> aws s3 cp yxcv.txt s3://old-bucket-$suffix/yxcv.txt
upload: ./yxcv.txt to s3://old-bucket-ieXiy2/yxcv.txt
>
> # "rename" to new bucket
> aws s3 mb s3://new-bucket-$suffix
make_bucket: new-bucket-ieXiy2
> aws s3 sync s3://old-bucket-$suffix s3://new-bucket-$suffix
copy: s3://old-bucket-ieXiy2/yxcv.txt to s3://new-bucket-ieXiy2/yxcv.txt
copy: s3://old-bucket-ieXiy2/asdf.txt to s3://new-bucket-ieXiy2/asdf.txt
> aws s3 rb --force s3://old-bucket-$suffix
delete: s3://old-bucket-ieXiy2/asdf.txt
delete: s3://old-bucket-ieXiy2/yxcv.txt
remove_bucket: old-bucket-ieXiy2

136
2018-04-07 10:05



To powinna być zaakceptowana odpowiedź - Jacob Tomlinson
Ta odpowiedź jest taka sama, jak przyjęta odpowiedź, z wyjątkiem tego, że ten post stanowi bardzo przydatny przykład krok po kroku, jak to zrobić. (Przykład należy skrócić, nie ma potrzeby pokazywania tworzenia przykładowego starego wiadra i używania zmiennej sufiksu.) Część wyjaśniająca tej odpowiedzi mnie jednak nie satysfakcjonuje. Mówi, że brak folderów w S3 powoduje, że ta niezręczna procedura jest wymagana. Ponieważ oryginalne pytanie nie wspomniało o folderach, nie rozumiem, w jaki sposób wyjaśnia to niemożność zmiany nazwy wiader S3. - L S
Próbowałem tej metody ... wydawało się działać ... jednak z jakiegoś dziwnego powodu nie widzę żadnego z elementów (obrazów). Mogę nawigować przez przeglądarkę poprzez elementy na desce rozdzielczej s3 ... ale nie mogę ich oglądać za pomocą adresu URL lub pobrać. Jakieś pomysły, dlaczego? Uprawnienia wydają się być identyczne. Czy są jakieś specjalne uprawnienia, na które należy zwrócić uwagę? - bmiskie
@duality_ można dodać do powiadomienia o udzieleniu odpowiedzi na temat uprawnień i można kopiować pliki za pomocą --acl bucket-owner-full-control(jak w tym odpowiedź) - Евгений Масленков
Jeśli masz wersjonowanie, będziesz musiał użyć zarządzania cyklem życia, aby wygasić wersje ... najwyraźniej: docs.aws.amazon.com/AmazonS3/latest/dev/... - carlin.scott


Prawdopodobnie nowsza wersja zestawu narzędzi AWS CLI dostarczyła mv opcja.

$ aws --version
aws-cli/1.15.30 Python/3.6.5 Darwin/17.6.0 botocore/1.10.30

Zmieniam nazwę wiaderek za pomocą następującego polecenia:

aws s3 mv s3://old-bucket s3://new-bucket --recursive

2
2018-06-19 12:01