Skip to content

MackerelチームでLambda関数から内部のリソースにアクセスするときの指針

  • Lambda関数の実装はパラメータストアの値をできるだけ見ない設計にする
  • シークレット情報をLambdaの環境変数にセットしない
  • Lambda関数がmackerel3と同じVPCに存在する場合、ALBのinternal URLを参照する
  • Lambda関数でパラメータストアの値を拾うには、レートリミット回避のためAWS Parameters and Secrets Lambda extensionを入れてパラメータストアを参照する
  • Lambda関数のOpenTelemetry Collectorは ADOT Connector extension として実装される
  • OpenTelemetry Collectorがシグナルを投稿するためにはAPI Keyが必要
  • API Keyを得るには Parameters and Secrets Lambda extension を経由する必要がある
  • 拡張の実行順序を制御できずOpenTelemetry CollectorはAPI Keyを参照できない
  • なので otel-gateway プロキシを経由する
flowchart TD
request(リクエスト) --> Lambda
subgraph Lambda
main --> handler
subgraph "otellambda.InstrumentHandler"
handler(Lambda Handler)
end
handler --> exporter(SDK Exporter)
end
exporter -- localhost:4317 --> adot(ADOT Connector extension)
adot --> lb(ALB) --> gw
subgraph ECS
gw(otel-gateway)
end
gw --> vaxila(Vaxila)
adot --> xray(X-Ray)