emahiro/b.log

日々の勉強の記録とか育児の記録とか。

AWS

AWS SDK for Go V2 で Endpoint Resolver の実装方法が変わった話

Overview タイトルのとおりです。 AWS SDK for Go V2 を使ってるケースで従来の Endpoint Resolver の実装方法が非推奨になり、新しい実装方法が公開されていました。 aws.github.io Endpoint Resolver とは? 文字通り AWS SDK 経由で AWS のサービスにアク…

Amazon Pinpoint で S3 上のファイルからセグメントを作成する

Overview 用語の整理 実装方法 利用する API ファイル形式 ハマったところ Pinpoint -> S3 に触る role を設定する 余談 Overview Amazon Pinpoint という AWS が提供してるマネージドCRM ツールを使ってセグメント(配信対象)を S3 上のファイルから作成す…

AWS Go SDK でのエラーハンドリングについて

AWS の Go SDK はその本体のコードを読もうとすると実装がものすごく抽象化されていて、慣れていないと実際のコードを追いかけることも結構難しい。 Go の実装でエラーの中身(型)を見て処理を変えたいケースやそもそもどういうエラーを返すのかを知りたい…

SES SendRawEmail API を使って画像付きメールを送信する

Overview SES SendRawEmail API を利用して画像付きのメールを送信するための備忘録です。 実装について 基本的な実装方法については Amazon SES API を使用して raw E メールを送信する を参考にすればできます。 画像付きのメールを送信する上でポイントに…

Serverless Framework@v3 で monorepo 構成にする

Overview Motivation ワークアラウンドについて actions も v3 にあげる entrypoint option を設定する SSM を使ってる場合 ~true suffix を削除する environment で JSON を読み込む場合には raw 指定する まとめ Overview Serverless Framework@v3 で mono…

aws.EndpointResolverWithOptions はエラー時にデフォルトの Endpoint Endpoint Resolver を返す

タイトルの通りなんですが、AWS SDK Go V2 を利用して AWS の設定を初期化する実装をする際に Endpoint Resolver Option を設定したいケースがあると思います。 リージョンが異なるなどで AWS に各サービスごとに設定内容を変えたいケースなどが使いたいケー…

AWS の API Call に Retry option を設定する

サマリ AWS のリソースを API 経由で Call するときに Retry option を使うと便利、というお話です。 メッセージを trigger にして Lambda を起動させるなど、イベント駆動でプロセスを開始するようなサービスを使うケースでは、失敗しても Retry してくれる…

Lambda -> 各種 AWS へのアクセスで権限エラーが発生した場合の調査方法

これは何 Lambda から AWS のリソースに触るときに権限なしエラーが発生したときの調査でいつも手間取るのでその備忘録です。 config ファイルの iamRoleStatements ディレクティブを確認する 大体これで解決します。基本的にはコールしたい API のアクショ…

DynamoDB のリクエストで Context Canceled をハンドリングする

AWS

Overview タイトルの通りです。 DynamoDB へのリクエストにおいて Context Cancel エラーになった場合にその Context Cancel をハンドリングします。 DynamoDB 側でのエラーハンドリング DynamoDB へのリクエストにおいて Context Cancel の実装は https://p…

dynamodbattribute には omitempty が使える

ただの備忘録です。 dynamodbattribute には omitemtpty タグが使えてStruct の中でゼロ値になってしまうところを無視したい(Item の attribute として登録したくない)ケースにおいては使えるなと思いました。 https://docs.aws.amazon.com/sdk-for-go/api…

DynamoDB の Query with FilterExpression の挙動を調べた話

Overview どういう挙動だったか Conclusion DynamoDB のクセ的なもの DynamoDB について学んだこと Overview DynamoDB の Scan の挙動について以下のエントリで調べましたが、FilterExpression を指定した場合の Query の挙動について実際に API で Query を…

DynamoDB の Scan の挙動がわからなかったので調べた話

Overview DynamoDB の Scan 操作について AWS のマネジメントコンソールと API 直叩きで返ってくる List が違う、ということがあったので調べてみました。 どう違ったのか? 以下のような事象が起きてました。 AWS マネジメントコンソール上からあるテーブル…

DynamoDB で Update GSI しようとしてやらかした話

Overview 何をしたのか? 何が起きたか どうして起きたか? 今後どうすればいいか まとめ Overview タイトルの通りなのですが、DynamoDB の Global Secondary Index(以下 GSI) を更新するにあたり、更新方法でミスったのでことの顛末を備忘録として記載しま…

Lambda の同時実行数を制限する

AWS

Overview タイトルの通りです。 久しぶりに Lambda on Serverless Framework を触っていて忘れていたので備忘録です。 Conclusion Lambda の同時実行数を制限するには Reseved Concurrency の設定を 1 にします。 Serverless Framework は function の reser…

AWS Go SDK V2 を使ってみる

Overview AWS SDK for Go V2 について AWS の設定をロードする 独自で環境変数を持ってる場合 DynamoDB を使う DynamoDB クライアントを Load する リソースを更新する expression はまだ feature だった 余談: 毎回めんどいなーところと思うところ Transact…

コンテナで Lambda を動かす

Overview 12 月の re:invent で Lambda のパッケージングフォーマットにコンテナイメージがサポートされたので、少し遅くなりましたが、デプロイまで試してみました。 今回はランタイムに Go を使用してます。 このエントリは以下のドキュメントを参考にして…

Elastic Container Registory に Image をアップロードする

Overview Lambda on Container を試す際に Elastic Container Registory (以下 ECR) にコンテナイメージをアップロードする必要がありました。 このエントリではその ECR に Docker イメージをアップロードする方法について記載します。 以下に書かれてる内…

AWS Lambda 向けに trace 付き Logger を作った

Overview 業務で AWS Lambda を使用してとある実装をしたのでその紹介です。 久しぶりに業務でOSS作りました。https://t.co/5fNBhiRsle— ema (@ema_hiro) 2020年11月19日 github.com なぜ作ったのか? Lambda 上でログを吐くとデフォルトで Cloud Watch Logs…

Eureka Advent Calendar 2020 に投稿しました。

所属してる企業のアドベントカレンダーに記事を投稿しました。 Lambda にガッツリ触れた際の振り返りについて書いています。 興味がありましたら是非ご一読ください。 medium.com

久しぶりに sqlx を使ったら色々忘れてた

Overview すごい久しぶりに sqlx を使ったら色々忘れてたので備忘録です。 github.com driver は blank import しておかないといけない driver の種類は下記を参照 https://github.com/golang/go/wiki/SQLDrivers 例えば MySQL を Driver として選択したい場…

Local での DynamoDB の動作確認方法

サマリ DynamoDB を使った機能を Local で動作確認したいケースでは以下の2つのツールが使えそう。 DynamoDB Local ddbcli DynamoDB Local ブラウザでGUIとして操作できる。 Docker image があるので落としてくればそのまま使える。 hub.docker.com ddbcli …