なになれ

IT系のことを記録していきます

AWS

ローカル上のAWS LambdaのコードをTerraform化する

ローカル上のAWS LambdaのコードをTerraform化する方法について説明します。 ローカルにあるコードをTerraform化するにあたってはコードのzipファイル化が必要など、そのあたりのポイントを説明します。 説明 以下が全体のコードになります。 lambda.tf reso…

Amazon ECS 入門ハンズオンの環境をTerraformで作成する

本記事では、以下のAmazon ECS 入門ハンズオンの環境をTerraformで作成する具体的な手順を紹介します。 catalog.us-east-1.prod.workshops.aws AWSでコンテナを用いたシステムを構築する際にはECSが有力な選択肢であるため、有用なハンズオンになっていると…

AWS CDKでLambdaをいい感じにIaC化する

AWS Lambdaに対してのIaCのやり方を模索していて、AWS CDKが今のところ一番いい感じだと思ったので試してみた記録です。 各種方法との比較 AWS LambdaをIaC化するやり方は主に以下のやり方があると思います。 他にもいろいろあると思いますが、自分が経験し…

Redshift Serverlessを用いてdbtのGetting startedを実施する

本投稿では、Redshift Serverlessを用いてdbtのGetting startedを実施します。 dbtだとBigQueryを使っている事例が多い印象です。Redshiftでもできるということを確認してみたく実施してみました。 実施するのはdbtの公式ページにある下記の内容です。異なる…

Terraform AWS Cloud Control Providerを用いてAWS Chatbotを作成する

AWSとSlackを使っている場合、AWS上でのイベントをSlackに通知したいことが多々あると思います。最近ではAWS Chatbotを使うとコーディングなしでSlackに通知できるので、よっぽどのことがない限りはAWS Chatbotを使うのではないかと思います。 ただ自分の知…

クラスタマイグレーション方式を用いてAmazon EKSの複数マイナーバージョンを一度に更新する

この頃はEKSのバージョン更新を1年に1回くらいを目処に実施しています。今回、EKSのバージョンを1.19から1.22に更新しました。 1.19は2022年6月にサポート終了するので、ギリギリのタイミングでした。。。 複数のマイナーバージョンを一度に更新する場合には…

Aurora MySQL version2からversion3への更新方法まとめ

Aurora MySQL version2からversion3に更新する機会があったので、やったことをまとめます。 事前情報の把握 AWSのドキュメントの以下に事前情報と大まかな手順が記載されています。こちらを一読しておくと良いです。 docs.aws.amazon.com ポイントとしては、…

AWS SSOを導入したら色々やることがあったので情報をまとめる

AWS SSOを導入したところ、色々やることがあり、なかなか大変だったので、その情報をまとめます。 AWS SSOとは 名前の通り、AWSの認証をシングルサインオン化できるサービスです。 認証方法として、外部のIDプロバイダーを利用できます。 マルチアカウントに…

GitHub Actionsを使ったECSのデプロイメントパイプライン構築

AWS Advent Calendar 2021 カレンダー2の6日目の記事です。 ここでは、GitHub Actionsを使ったECSのデプロイメントパイプラインを構築する方法を紹介します。 ECSのデプロイにおいて、GitHub Actionsを使う理由は以下のとおりです。 環境構築、コンテナイメ…

AWSにおけるSQLを使ったデータ基盤の監視

本投稿では、AWSを前提にして、SQLを使ってデータ基盤の監視を行う方法について紹介します。 以下のBigQueryを使用した事例をかなり参考にさせてもらっています。 tech-blog.monotaro.com データ基盤を運用していると、データ処理後に生成されるデータの中身…

分かりにくいAmazon Athenaでのデータ型の変更方法をまとめる

背景 Amazon Athenaにおいて、既存テーブルのカラムのデータ型を変更する場合、単純に変更できないことがあります。 本内容では、Athenaにおけるデータ型の変更方法について説明します。 また、データの形式としてParquetでデータを扱っていることを前提とし…

AWS Lambdaのコンテナイメージサポートを前提としたローカルでの環境構築・テストを考えた

データエンジニアリングの文脈で、AWS Lambdaを使ってデータ処理を実装することが最近多くなってきました。 Lambdaでは、コンテナイメージサポートを利用することで、ローカルでのテストがやりやすくなっています。 これを踏まえて、Lambdaのローカルでの環…

Udemyにコースを公開して講師デビューした

Udemyにコースを公開して講師デビューしました。この投稿はそのコースの宣伝記事です。 どんなコースでどんな思いで作成したのかを紹介します。 コース内容 Kubernetes、Amazon EKSを手を動かして学ぶハンズオンのコンテンツになります。 www.udemy.com Kube…

AWS ChatbotによるLambda関数を用いたAWSへの操作を試した

AWS Chatbotを使うと、CloudWatchアラームからの通知をSlackにPostしたり、Slack上でAWS CLIライクな操作を実施できます。 今回は、AWS Chatbotを使い、Slack上でLambda関数を介して、CodeBuildを実行する仕組みを作ってみました。 その内容を紹介します。 …

execだけではないECS Execの機能を試した

ECSに対するdocker exec的な機能であるECS Execを試しました。 ECS Fargateでは、ECS Exec登場以前まではexecができずにトラブルシューティングがやりづらい状態だったかと思います。 ECS Execはこの問題が解消される有用な機能です。 また、ECS Execは、単…

AWS Lambdaのコンテナイメージサポートを使用したCI/CD環境の構築

AWS

現在では、AWS Lambdaの実行環境にコンテナイメージが利用できます。 aws.amazon.com これにより、ECSやEKSといったコンテナ系のサービスだけでなく、Lambdaでもコンテナネイティブな開発環境を作ることができます。 自分の環境では、ECSやEKSとLambdaを併用…

AWS Load Balancer Controllerの省力Getting Started

ALB Ingress ControllerからAWS Load Balancer Controllerに変わってから、Getting Startedしてなかったので、試してみました。 公式ドキュメントのExamplesを試すでも良かったのですが、手数が多そうだったので、自分なりに手順を作りました。 kubernetes-s…

Kubernetesのマルチクラスタ管理に役立ちそうなCluster API Provider AWSを試した

Kubecon EU 2021のセッションで知ったCluster API Provider AWSを軽く試したので、その内容を紹介します。 Cluster API Provider AWSを使って、EKSでKubernetes Clusterを作成しました。 ちなみにセッションはこれです。 kccnceu2021.sched.com youtu.be な…

Terraformとecspressoを使用してRedashをECS上で動かす例を紹介する

本記事では、AWS環境でRedashを動かす場合に、ECSを使う例を紹介します。 できるだけ、手間をかけずにセットアップしたいため、Terraformとecspressoを使用します。 これらのツールを使われていない方でもRedashをECSで動かす参考になると思います。 公式に…

AWSでTerraformの実行を自動化する方法

AWSでTerraformの実行を自動化する環境を作成しました。 github.com AWS内で閉じた形で、Terraformを使い、自動的にAWSリソースを作成する前提です。 Terraformを実行する環境はCodeBuildで用意しました。 その実現方法を紹介します。 環境作成 ディレクトリ…

Athenaでパーティションを楽に作成する方法

以前にAthenaの記事を投稿した時にパーティションの作り方として、Lambda関数からAthenaのクエリを実行する方法を紹介しました。 hi1280.hatenablog.com このやり方よりも簡単にパーティションを作成する方法を今回は紹介します。 内容としては、パーティシ…

AWS環境におけるモノレポでのDockerイメージのビルド方法

調べた限り、モノレポでDockerイメージをいい感じにビルドする方法が見つからなかったので実装してみました。 AWS環境が前提で、CodeBuildを使ってDockerイメージをビルドする想定です。 GitHub Actionsを使えばもっとスマートに実装できるかもしれませんが…

AWSとTerraformでKubernetesを学ぶ本を書いたので1章をまるっと公開します

この記事は、Kubernetes3 Advent Calendar 2020の25日目の投稿です。 最近AWSとTerraformを使ってKubernetesを学ぶ本を書きました。 本記事では、その内容をただ載せるだけの楽をしてしまっています。すみません。ただの宣伝です。 興味を持った方は、明日か…

AWSにおけるデータ基盤の作り方

データ活用によって新たな価値を提供したいというニーズは日に日に高まっているように思います。 そんな昨今、データ基盤の構築に関わっています。 今回はAWSで実現するデータ基盤について、いくつかの例を交えて紹介します。 AWSではデータ基盤向けのサービ…

Gitに秘匿情報をcommitする必要がなくなるKustomize Pluginを作った

AWS Systems Manager Parameter Storeを使って、SecretsリソースをGenerateするKustomize Pluginを作りました。 作ったもの github.com この記事では、なぜこのPluginが必要だったのか、どのようにPluginを作ったかといったことを紹介します。 このPlugin自…

EC2の起動・停止をスケジュール実行できるAWS Instance Schedulerが便利

AWS Instance Schedulerを知るまでは、LambdaとCloudWatch Eventを使用してEC2を起動・停止する処理を作成していました。 より高機能に起動・停止処理を行えるのがAWS Instance Schedulerです。 docs.aws.amazon.com EC2の起動時間を抑えるとコスト削減の効…

S3で知らなかった色々なこと

S3を利用していて色々知らないことがあるなと思ったので記録しておきます。 アクセス権限 パブリックアクセスブロックでバケット及びオブジェクトに対するパブリックアクセスを有効にする操作を無効化できます。 Amazon S3 パブリックアクセスブロックの使用…

Athenaを使ってALBのアクセスログからリクエスト毎のパフォーマンスを計測する

Athenaを使うとS3上のデータを分析することが可能です。 今回はS3上に出力されるALBのアクセスログをAthenaを使って分析してみました。 パフォーマンスを計測する用途です。 ALBのアクセスログは結構なデータ量になることが想定されるので、パーティションを…

TerraformでEKSの環境を作ることで環境構築方法を統一したい

EKSの環境を作るにはeksctlという便利なツールがあります。 これを使えば、様々なパターンの環境構築に簡単に対応できて、とても便利です。 ただし、eksctlはEKS周辺の環境構築しか行うことができません。 今の環境ではAWSリソースの管理はTerraformで実施し…

Amazon EKSでAWS Fargateを動かす

EKSでFargateを動かしてみたので、その記録です。 セットアップ fargate起動向けのクラスタを作成する eksctlを使います。クラスタの設定は下記です。 cluster.yaml apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: fargate-cluster re…