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
420
僕とグレーシア〜グレーシア、どうして貴方はオブジェクトをまとめて復元できないの?〜
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
バッドプラクティスから学ぶハワイアン航空で行く re:Invent
kentosuzuki
0
390
上流工程に挑戦!「俺の考えた最強サーバレス構成」が一瞬で敗北した件
kentosuzuki
2
330
S3から始めるAWS 〜S3の簡単なユースケースの紹介〜
kentosuzuki
1
690
AWS のポリシー言語 “Cedar” で実現するアクセス制御
kentosuzuki
0
430
探せぇ!お薦めAWSセキュリティワークショップ!!〜 怒涛のワークショップ 48 連戦 〜
kentosuzuki
1
730
SIEM って何?〜 Amazon OpenSearch で始める SIEM 〜
kentosuzuki
0
960
Verified Accessから始めるゼロトラストセキュリティ
kentosuzuki
1
740
復活のAWS DeepComposer 〜 古代兵器から始める生成系AI 〜
kentosuzuki
0
400
新卒入社が考える『AWSではじめるクラウドセキュリティ』を読むタイミング
kentosuzuki
0
750
Other Decks in Technology
See All in Technology
入院医療費算定業務をAIで支援する:包括医療費支払い制度とDPCコーディング (公開版)
hagino3000
0
110
Zephyr(RTOS)にEdge AIを組み込んでみた話
iotengineer22
1
340
AI時代、“平均値”ではいられない
uhyo
8
2.6k
アウトプットから始めるOSSコントリビューション 〜eslint-plugin-vueの場合〜 #vuefes
bengo4com
3
1.8k
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
3
820
CREが作る自己解決サイクルSlackワークフローに組み込んだAIによる社内ヘルプデスク改革 #cre_meetup
bengo4com
0
330
Azure Well-Architected Framework入門
tomokusaba
1
120
ローカルLLMとLINE Botの組み合わせ その2(EVO-X2でgpt-oss-120bを利用) / LINE DC Generative AI Meetup #7
you
PRO
1
160
現場の壁を乗り越えて、 「計装注入」が拓く オブザーバビリティ / Beyond the Field Barriers: Instrumentation Injection and the Future of Observability
aoto
PRO
1
390
スタートアップの現場で実践しているテストマネジメント #jasst_kyushu
makky_tyuyan
0
130
[2025年10月版] Databricks Data + AI Boot Camp
databricksjapan
1
260
AIエージェントによる業務効率化への飽くなき挑戦-AWS上の実開発事例から学んだ効果、現実そしてギャップ-
nasuvitz
3
990
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Navigating Team Friction
lara
190
15k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
Code Reviewing Like a Champion
maltzj
526
40k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
190
55k
Become a Pro
speakerdeck
PRO
29
5.6k
Practical Orchestrator
shlominoach
190
11k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
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、シンプルじゃない