薄っぺらりん

厚くしていきたい

S3 BatchReplication 500エラーの対応方法

S3 BatchReplicationを使用することでバケットレプリケーションルールを元に既存のオブジェクトをレプリケートすることができます。便利ですね。
レプリケーションにより作成されたオブジェクトを完全に削除(削除マーカーごと削除)し、その後再びS3 BatchReplicationを行うと失敗します。
その際、ログには次のように記録されます。

<Bucket>,<Key>,<VersionId>,failed,500,DstObjectHardDeleted,Currently object can't be replicated if this object previously existed in the destination but was recently deleted. Please try again at a later time

こうなった場合、バージョン情報を捨てても構わない場合は、S3 BatchOperationのコピージョブでオブジェクトをコピーすることができます。
レプリケーション先のバケットに何らかの理由によりコピージョブでのコピーが難しい場合は、レプリケーション元オブジェクトをコピージョブにより上書きすることでもコピーできます。
レプリケーション元オブジェクトを上書きした場合は、そのバケットレプリケーションルールにより新しいバージョンのオブジェクトがレプリケートされます。

今回、コピージョブによるコピーができない環境だったので、オブジェクトを上書きする方法で急場を凌ぎました。

500エラーのメッセージからは「後でもう一度試して」と言われていますが、2日ほど待ってもエラーは解消しませんでした。
何日か待っているとちゃんとレプリケーションが成功するようになるので、急がないのであれば待っているのがいいかもしれません。

SQS標準キューでLambdaトリガーを再有効化したときの処理順について実験したよ!

SQSで送信順に処理をしたいならFIFOキューを使うと思います。
ですが、標準キューでもLambdaトリガーなどで処理をしている場合はだいたい送信順にメッセージを受信して処理してくれます。
SQSのデベロッパーガイドにも、標準キューの「メッセージ順序」のところに次のように記載があります。

標準キューでは、できる限りメッセージの順序を保持しますが、複数のメッセージのコピーが順無同で配信される場合があります。お使いのシステムで注文を保存する必要がある場合は、FIFO (先入れ先出し) キューするか、各メッセージに順序付け情報を追加して、受信時にメッセージを並べ直せるようにすることもできます。

今回はなんらかの理由によりLambdaトリガーを一度無効化して、その後再度有効化した場合に、標準キューの滞留したメッセージはどれくらい順序を保って処理されるのかを実験してみました。

目次

  • 環境
  • 実験
    • 1. メッセージ1から10を送信
    • 2. Lambda関数のログを確認(トリガー無効化前)
    • 3. トリガーを無効化
    • 4. メッセージ1から10を送信
    • 5. キューの滞留メッセージを確認
    • 6. トリガーを再度有効化
    • 7. Lambda関数のログを確認(トリガー最有効化後)
  • 結果
  • まとめ
続きを読む

parsercherがv3.1.0になったよ!

parsercher v3.1.0

前回のリリース記事「Rustでタグをパースするクレートを公開したよ! - 薄っぺらりん」からバージョンアップしてv3.1.0をリリースしました。
いくつかAPIを追加したりしたので今回はその辺を書こうと思います。変更点はgithubのReleasesやCHANGELOG.mdに記載しています。

github.com

目次

  • parsercher v3.1.0
    • 部分木の検索ができるようになりました
    • タグの属性を検索できるようになりました
    • 木の十分条件を評価できるようになりました
    • domモジュール下の構造体が使いやすくなりました
  • まとめ
続きを読む

Rustでタグをパースするクレートを公開したよ!

parsercher

parsercherというクレートを公開しました。
HTMLやXMLといったタグで記述されたドキュメントをパースし、タグやテキストを抽出することができます。 パース結果は構造体のツリーとして返してくれるので、APIによる操作の他に自分でツリーを操作することができます。

(追記: v3.1.0の記事を書きました

github.com

目次

  • parsercher
  • 使い方
    • 例に使用するHTML
    • ドキュメントをパースする
    • タグ名でタグを抽出する
    • 特定のタグを抽出する
    • 特定のタグの子テキストを抽出する
    • タグ同士の十分条件を判定する
  • まとめ
続きを読む

DDLからコード生成するツールを作ったよ!

MySQLDDLをパースして外部キー制約を考慮したDELETEとINSERTのコード片を生成するツールを作りました。

github.com

Github Pagesからも使えます↓
https://kkmtyyz.github.io/ddl-tool/

続きを読む

親知らず抜いたよ! (4本/日)

親知らずを4本、1日で抜歯した際の記録。

抜歯前の私が知り得たら有益だったであろうことも書いたため、これから親知らずを抜歯しようと思っている人にも参考になる部分があるかもしれない。

 

目次

  • 1. 経緯
  • 2. 診察
  • 3. 入院、そして抜歯
  • 4. 退院後の生活
  • 5. 抜糸
  • 6. まとめ

 

続きを読む