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
410
僕とグレーシア〜グレーシア、どうして貴方はオブジェクトをまとめて復元できないの?〜
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
320
上流工程に挑戦!「俺の考えた最強サーバレス構成」が一瞬で敗北した件
kentosuzuki
2
320
S3から始めるAWS 〜S3の簡単なユースケースの紹介〜
kentosuzuki
1
650
AWS のポリシー言語 “Cedar” で実現するアクセス制御
kentosuzuki
0
410
探せぇ!お薦めAWSセキュリティワークショップ!!〜 怒涛のワークショップ 48 連戦 〜
kentosuzuki
1
700
SIEM って何?〜 Amazon OpenSearch で始める SIEM 〜
kentosuzuki
0
930
Verified Accessから始めるゼロトラストセキュリティ
kentosuzuki
1
700
復活のAWS DeepComposer 〜 古代兵器から始める生成系AI 〜
kentosuzuki
0
370
新卒入社が考える『AWSではじめるクラウドセキュリティ』を読むタイミング
kentosuzuki
0
720
Other Decks in Technology
See All in Technology
【新卒研修資料】数理最適化 / Mathematical Optimization
brainpadpr
23
11k
AI時代の経営、Bet AI Vision #BetAIDay
layerx
PRO
1
1.7k
大規模イベントに向けた ABEMA アーキテクチャの遍歴 ~ Platform Strategy 詳細解説 ~
nagapad
0
180
データエンジニアがクラシルでやりたいことの現在地
gappy50
3
850
生成AI導入の効果を最大化する データ活用戦略
ham0215
0
100
AIに全任せしないコーディングとマネジメント思考
kikuchikakeru
0
430
【CEDEC2025】現場を理解して実現!ゲーム開発を効率化するWebサービスの開発と、利用促進のための継続的な改善
cygames
PRO
0
720
私とAWSとの関わりの歩み~意志あるところに道は開けるかも?~
nagisa53
1
160
Rubyの国のPerlMonger
anatofuz
3
720
生成AI時代におけるAI・機械学習技術を用いたプロダクト開発の深化と進化 #BetAIDay
layerx
PRO
1
1k
20250728 MCP, A2A and Multi-Agents in the future
yoshidashingo
1
210
20250807_Kiroと私の反省会
riz3f7
0
110
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
Statistics for Hackers
jakevdp
799
220k
Java REST API Framework Comparison - PWX 2021
mraible
32
8.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.5k
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、シンプルじゃない