Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
僕とグレーシア〜グレーシア、どうして貴方はオブジェクトをまとめて復元できないの?〜
Search
Kento Suzuki
February 26, 2023
Technology
0
350
僕とグレーシア〜グレーシア、どうして貴方はオブジェクトをまとめて復元できないの?〜
2023/2/15(土) JAWS-UG佐賀 3年ぶり!re:Bootするよ!
https://jawsug-saga.doorkeeper.jp/events/149574
登壇資料
Kento Suzuki
February 26, 2023
Tweet
Share
More Decks by Kento Suzuki
See All by Kento Suzuki
上流工程に挑戦!「俺の考えた最強サーバレス構成」が一瞬で敗北した件
kentosuzuki
2
260
S3から始めるAWS 〜S3の簡単なユースケースの紹介〜
kentosuzuki
1
480
AWS のポリシー言語 “Cedar” で実現するアクセス制御
kentosuzuki
0
260
探せぇ!お薦めAWSセキュリティワークショップ!!〜 怒涛のワークショップ 48 連戦 〜
kentosuzuki
1
600
SIEM って何?〜 Amazon OpenSearch で始める SIEM 〜
kentosuzuki
0
730
Verified Accessから始めるゼロトラストセキュリティ
kentosuzuki
1
590
復活のAWS DeepComposer 〜 古代兵器から始める生成系AI 〜
kentosuzuki
0
290
新卒入社が考える『AWSではじめるクラウドセキュリティ』を読むタイミング
kentosuzuki
0
600
Cloudflare Pages使ってみた- ついでにAWS Amplifyもワカル -
kentosuzuki
3
950
Other Decks in Technology
See All in Technology
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
990
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
250
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
590
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
520
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
170
Python(PYNQ)がテーマのAMD主催のFPGAコンテストに参加してきた
iotengineer22
0
470
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
410
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
210
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
130
適材適所の技術選定 〜GraphQL・REST API・tRPC〜 / Optimal Technology Selection
kakehashi
1
170
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
180
Featured
See All Featured
The Cult of Friendly URLs
andyhume
78
6k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Statistics for Hackers
jakevdp
796
220k
Designing Experiences People Love
moore
138
23k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Producing Creativity
orderedlist
PRO
341
39k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
The Language of Interfaces
destraynor
154
24k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Transcript
僕とグレーシア 〜グレーシア、どうして貴方はオブジェクトをまとめて復元できないの?〜 JAWS-UG佐賀 3年ぶり︕re:Bootするよ︕( 2023/2/25 )
名前︓鈴⽊健⽃ 所属︓アイレット株式会社(東京オフィス) お仕事︓ AWSのインフラ構築・運⽤ 経歴︓ ・新卒 3 年⽬(エンジニア歴 = 社会⼈歴)
・2022 APN ALL AWS Certifications Engineer ・2022 APN AWS Top Engineer ・昨年はJAWS-UG で14 回発表 ・ AWS Community Builder(Cloud Operations)︖ @k_suzuki_pnx 自己紹介
はじまり やりたかったこと
安定のエラー 一部のオブジェクトがライフサイクルルールでGlacierに送られていたため、 以下のようなエラーが発生 Object is of storage class GLACIER. Unable
to perform copy operations on GLACIER objects. You must restore the object to be able to perform the operation. See aws s3 copy help for additional parameter options to ignore or force these transfers. ×
Glacierの仕様 ◦ Glacierはオブジェクトを取り出す際に一度復元する必要がある ◦ 以下のようなまとめて復元ができない 「バケット内のオブジェクトを一括復元」 「特定のパス配下にあるオブジェクトを全て復元」 ◦ まとめて復元するにはAWS CLIなどを使って
オブジェクトを1つずつループで復元するスクリプトを作る必要がある
シェルスクリプトを作ることにした ◦ ターミナルから以下のコマンドを実行 sh restore_glacier_objects.sh <バケット名> <プレフィックス> #!/bin/bash bucket=$1 prefix=$2
aws s3api list-objects --bucket $bucket --prefix "$prefix" --query "Contents[?StorageClass=='GLACIER'].[Key]" --output text | while read object; do echo "Restoring object $object from $bucket" aws s3api restore-object --bucket $bucket --key "$object" --restore-request '{"Days":10,"GlacierJobParameters":{"Tier":"Bulk"}}' done
実行例 バケット名を「s3-test」、プレフィックス(パス)を「s3://s3-test/page1/」とすると sh restore_glacier_objects.sh s3-test page1/ で実行できる #!/bin/bash bucket=$1 prefix=$2
aws s3api list-objects --bucket $bucket --prefix "$prefix" --query "Contents[?StorageClass=='GLACIER'].[Key]" --output text | while read object; do echo "Restoring object $object from $bucket" aws s3api restore-object --bucket $bucket --key "$object" --restore-request '{"Days":10,"GlacierJobParameters":{"Tier":"Bulk"}}' done
シェルスクリプトの仕様 ◦ AWS CLIの「s3api list-objects」を使用してストレージクラスが Glacierのオブジェクトを抽出 ◦ 抽出したオブジェクトなくなるまで、1つずつ復元を繰り返す ◦ 復元されている期間は3日
◦ 大容量取り出し(Bulk)を使用することで取り出しにかかる費用を抑える #!/bin/bash bucket=$1 prefix=$2 aws s3api list-objects --bucket $bucket --prefix "$prefix" --query "Contents[?StorageClass=='GLACIER'].[Key]" --output text | while read object; do echo "Restoring object $object from $bucket" aws s3api restore-object --bucket $bucket --key "$object" --restore-request '{"Days":10,"GlacierJobParameters":{"Tier":"Bulk"}}' done
注意点 AWS CloudShellでの大量オブジェクトの復元は非推奨 ◦ 20~30分、キーボードとポインタを使った操作がない場合、セッションは強制終了 ◦ キーボードとポインタを使っていても、12時間経つとセッションが強制終了 ◦ コンピューティングのリソースが1 vCPU、2
GiBのため処理が遅い AWS CLIをインストールしたローカルPCから 実行した方が断然速い
おわりに
S3、シンプルじゃない