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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kento Suzuki
February 26, 2023
Technology
460
0
Share
僕とグレーシア〜グレーシア、どうして貴方はオブジェクトをまとめて復元できないの?〜
2023/2/15(土) JAWS-UG佐賀 3年ぶり!re:Bootするよ!
https://jawsug-saga.doorkeeper.jp/events/149574
登壇資料
Kento Suzuki
February 26, 2023
More Decks by Kento Suzuki
See All by Kento Suzuki
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
230
バッドプラクティスから学ぶハワイアン航空で行く re:Invent
kentosuzuki
0
490
上流工程に挑戦!「俺の考えた最強サーバレス構成」が一瞬で敗北した件
kentosuzuki
2
390
S3から始めるAWS 〜S3の簡単なユースケースの紹介〜
kentosuzuki
1
790
AWS のポリシー言語 “Cedar” で実現するアクセス制御
kentosuzuki
0
480
探せぇ!お薦めAWSセキュリティワークショップ!!〜 怒涛のワークショップ 48 連戦 〜
kentosuzuki
1
810
SIEM って何?〜 Amazon OpenSearch で始める SIEM 〜
kentosuzuki
0
1.1k
Verified Accessから始めるゼロトラストセキュリティ
kentosuzuki
2
840
復活のAWS DeepComposer 〜 古代兵器から始める生成系AI 〜
kentosuzuki
0
490
Other Decks in Technology
See All in Technology
Cortex Codeのコスト見積ヒントご紹介
yokatsuki
0
130
M5Stack CoreS3とZephyr(RTOS)で Edge AIっぽいことしてみた
iotengineer22
0
390
Choose your own adventure in agentic design patterns
glaforge
0
160
VespaのParent Childを用いたフィードパフォーマンスの改善
taking
0
150
「誰一人取り残されない」 AIエージェント時代のプロダクト設計思想 Product Management Summit 2026
mizushimac
1
2.2k
AgentCore Managed Harness を使ってみよう
yakumo
2
270
20260423_執筆の工夫と裏側 技術書の企画から刊行まで / From the planning to the publication of technical book
nash_efp
3
660
AIが自律的に働く時代へ Amazon Quick で実現するAIエージェント紹介
koheiyoshikawa
0
150
AIが盛んな時代に 技術記事を書き始めて起きた私の中での小さな変化
peintangos
0
320
AI時代 に増える データ活用先
takahal
0
340
Google Cloud Next '26 の裏でこっそりリリースされたCloud Number Registry & Cloud Hub コスト分析 を試してみた
hikaru1001
0
120
目的ファーストのハーネス設計 ~ハーネスの変更容易性を高めるための優先順位~
gotalab555
9
3.4k
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
290
Chasing Engaging Ingredients in Design
codingconduct
0
180
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.1k
The SEO Collaboration Effect
kristinabergwall1
1
430
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
250
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
280
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Everyday Curiosity
cassininazir
0
200
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.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、シンプルじゃない