2023-01-01から1年間の記事一覧

AWS LambdaのCloudTrailイベント名はAPI名と一致しない場合がある

AWS

AWS のCloudTrailログにおいてイベント名は基本的にAPI名と一致する。 例えば、S3に関するCloudTrailログであればイベント名は ListBucketsやGetBucketAclなど。 これはAWSドキュメントのAPI Referenceなどに記載の名前と一致する。 docs.aws.amazon.com 一…

AWS LambdaのGoランタイムを provided.al2023にアップデートする

AWS Lambdaの go1.xランタイムのサポートが切れるのでアップデートする。 aws.amazon.com provided.al2023の選択 ランタイムアップデートについてはAWS LambdaのGo言語向けドキュメントにまとまっている。 以下以外のドキュメントでは Amazon Linux 2023 (pr…

ansibleで繰り返し処理にはloopディレクティブを利用する

ansibleで繰り返し処理を実装する場合は with_XXX系ディレクティブをよく利用していた。 特によく利用するのが with_items で、単純な繰り返し処理には with_itemsで対応することが多かった。 ansible 2.5以降では新しく loopディレクティブが導入された。 l…

github actionsは必須入力を指定しなくてもエラーにならない

github actionsのinputにはrequiredというパラメータがある。 これにより、対象のinuptが必須なのかオプションなのかを区別することができる。 docs.github.com しかし、required: trueに指定したinputが指定されなかったからといってエラーになるわけではな…

fine-grained personal access tokenは単一のユーザor組織のリソースにしかアクセスできない

GitHubの Fine-grained personal access tokenは personal access token(classic)に比べて細かく権限を制御できるだけでなく、対象のResource ownerを1つ指定する必要がある。 所属する組織をResource ownerに指定するには、対象組織がpersonal access token…

Step Functionsでリドライブすると旧リビジョンで動作する

AWS

Step Functionsにはリビジョン・バージョン・エイリアスの概念がある。 単にStep Functionsを更新するとリビジョンが更新されるが、特定のリビジョンにバージョンやエイリアスを発行することもできる。 docs.aws.amazon.com (公式ドキュメントより) Step Fun…

flake8の設定ファイルは .flake8 に記述する

Pythonのビルドまわりの設定はpyproject.tomlに記述することが一般的である。 これはPEP518によって定められている。 一方で、すべてのツールがpyproject.tomlをサポートしているわけではなく、静的解析ツールである flake8 などは pyproject.tomlをサポート…

GitHub Actionsのworkflow_dispatchでさまざまな入力タイプを利用する

GitHub Actionsを手動で実行する workflow_dispatch にはさまざなま入力を指定できる。 input のcontextには string or number or boolean or choice とあり、例としてstring, number, booleanの場合が記載されている。 docs.github.com 実は、 on.workflow_…

mount=type=secretはビルド時にファイルマウントされる

docker build時にクレデンシャルを利用したい場合は --mount=type=secretを利用する。 これによりクレデンシャル情報がdockerイメージ内に保存されることを避けることができる。 docs.docker.com # syntax=docker/dockerfile:1 FROM node:alpine RUN --mount…

pathlibのstemで拡張子を除くファイル名を取得する

ファイルパスが与えられたときに拡張子を除くファイル名を取得したいときがある。 今までは os.path のbasenameおよびsplitextを用いて取得していた。 import os file = os.path.basename("/path/to/file.txt") base = os.path.splitext(file) print(base[0]…

emacsにlsp-pyrightを導入する

emacsのPython LSPとしてlsp-pyrightを導入する。 まず事前にpyrightをインストールする。 ドキュメントにある通り、pyrightはnpmで提供されているので npm insatll -g pyright でインストールする。 elispの設定はuse-packageを利用するのであれば公式READM…

global .gitignore と global .dockerignore

.gitignoreにはグローバル設定があり、各リポジトリの.gitignoreだけでなくアカウント別の共通設定が指定できる。 global .gitignoreは ~/.config/git/ignore に設定する。 git-scm.com zenn.dev 一方で、.dockerignoreにはグローバル設定はなく、プロジェク…

ECS fargateでログドライバにawslogsを利用するときはprefixを指定する

AWS

ECS fargateのログドライバでawslogsを利用するとき、awslogs-groupおよびawslogs-stream-prefixを指定する必要がある。 特にawslogs-stream-prefixはECS on EC2の場合は任意だが、ECS on fargateの場合は必須になるので注意が必要。 docs.aws.amazon.com ま…

keyringの配置場所

apt-keyは廃止となった。 今後は apt-key addの替わりにkeyringを保存してsigned-byで指定する。 gihyo.jp www.clear-code.com このとき、keyringをどこに保存するべきか。 アクセス権限が適切に設定されていれば問題ないが、ソフトウェアによって /etc/apt/…

paths-filter で特定ディレクトリに変更があったときのみGitHub Actions job/stepを実行する

GitHub Actionsにはpathフィルタがあるので特定ディレクトリ以下に変更が生じたときのみworkflowを起動することができる。 ignore条件で変更がなければworkflowを起動しないこともできる。 docs.github.com これらのpathフィルタはworkflowレベルでの条件指…

GitHub Deploymentのイベントをslack通知する

GitHub / Slack連携 SlackのGitHub AppにはDeploymentsの通知機能がある。 これを利用すればGitHub からのデプロイ結果をSlack通知できる。 GitHub 側に通知設定はなく、Slack側で /github subscribe owner/repo コマンドを実行して連携する。deploymentsは…

Go言語で呼び出す関数を変数で管理する

Go

Go言語で呼び出す関数を変数で管理して動的に切り替えたい。 いわゆる関数ポインタのような機能を利用したい。 stackoverflow.com 関数ポインタはないけれど、関数の型を定義すれば変数として扱える。 以下はStackOverflowで例示されていたコード package ma…

Poetryで依存パッケージを指定ディレクトリに出力する

PythonランタイムのLambda関数を作成する場合には依存パッケージを特定ディレクトリに出力したい。 出力したディレクトリをzipファイルに含めることで依存パッケージを利用することができる。 docs.aws.amazon.com このPythonプロジェクトでパッケージ管理に…

VPC内にLambda関数を構築するときはパブリックサブネットは利用できない

AWS

VPC内にLambda関数を構築する場合、プライベートサブネットを利用することが推奨されている。 インターネットアクセスが必要な場合はNAT経由でアクセスしろとある。 アカウントの VPC に関数を接続すると、VPC からアクセス権が付与されない限り、関数はイン…

GitHub Actionsのconcurrencyで同時実行を制御する

GitHub Actionsにはワークフローの同時実行を制御するための機能として concurrencyがある。 ワークフローだけでなく、ジョブの実行の同時制御を制御することもできる。 docs.github.com docs.github.com concurrencyには同時実行を制御する条件を指定する。…