- 1. 【AWS Lambda】複数のLamda関数を1つのコンテナイメージにまとめる
- 2. NestJSをAPI Gateway + AWS Lambdaで構成する(その3)- Controllersコントローラー
- 3. API Gateway→Lambda→DynamoDBとデータを受け渡す
- 4. 署名付きアップロード・ダウンロードの構成をterraformで作る。
- 5. 初心者がAWSでWebサイトを公開するまで
- 6. bundle install先に ‘vendor/bundle’を指定しないとLambdaでInit error when loading handlerになる
- 7. 2023年のAWSアップデート追いかけてみる(6月後半編)
- 8. 2023年のAWSアップデート追いかけてみる(7月前半編)
- 9. 【AWS Lamba】コンテナイメージから Lambda関数を作成する
- 10. API Gatewayのリクエストバリデーション機能でLambdaのリソース消費を抑制する
- 11. 「お前らの AWS Lambda エイリアスは間違っている」と言われた気がしたので備忘録
- 12. lambda + RDS proxy + Aurora serverless v2でまぁまぁ請求された話し
- 13. Amazon Connectからエイリアス版Lambda関数を呼び出す方法 [小ネタ]
- 14. EventBridgeからLambda起動
- 15. Lambdaでコンテナイメージから関数を作成する
- 16. 2023/07 GlueとStepfunctions①(全体像の把握編)
- 17. 100台超のEC2自動停止をAIに聞いて3分で実装してみた!
- 18. API Gateway、Cognito、Lambda、S3を使って署名付きアップロード・ダウンロードを実装する。
- 19. NestJSをAPI Gateway + AWS Lambdaで構成する(その2)- NestJS実行用のローカル環境構築
- 20. Serverless Express rootディレクトリのPOSTメソッドで403発生
【AWS Lambda】複数のLamda関数を1つのコンテナイメージにまとめる
## 目的
1つのイメージ内に複数のLambda関数をまとめて管理したかったので、その方法をまとめました。Lambda関数の作成時にエントリポイントを指定することで実現可能です。## ローカル環境の準備
– フォルダ構成
root/
├ Dockerfile
├ main1.go
├ main2.go
└ main3.go– Dockerfile作成
“`docker:Dockerfile
# ベースイメージの指定とビルドステージの開始
FROM golang:1.17-buster as builder# 作業ディレクトリの設定
WORKDIR /go/src/lambda# 依存関係のダウンロード
COPY go.mod go.sum ./
RUN go mod download# ソースコードのコピー
COPY ./ ./# ビルドの実行
RUN go build -o function1 ./main1.go
RUN go build -o function2 ./main2.go
RUN go build -o function3 ./m
NestJSをAPI Gateway + AWS Lambdaで構成する(その3)- Controllersコントローラー
#
– [その1 NestJSやLambdaでのnode.jsの話し](https://qiita.com/ssugimoto/items/988320d34022555401fb)
– [その2 NestJSのサンプルを動かす、Hello World.](https://qiita.com/ssugimoto/items/557e7a7cce5111bf5de7)
– その3 コントローラーを追加する# Controllers(コントローラー)
## 公式
https://8-0-0–docs-nestjs.netlify.app/controllers## コントロールはざっくり
– サーバー側としてHttp リクエストを処理する起点となるところ
– リクエストされるURLの部分と処理するclassを紐付けるのはNestJSのフレームワーク側でやってくれる`aws-node-typescript-nest/src/app.controller.ts`をみてみると、
“`aws-node-typescript-nest/src/app.controller.ts
API Gateway→Lambda→DynamoDBとデータを受け渡す
# 背景
最近業務外でサーバレス系サービスに触れる機会が増えました。せっかくなので理解を深めようと考え、タイトルの3サービスを触ったのでそれについての備忘です。サクッと作成できるので、興味がある方はぜひお手元の環境でお試しください。なお、DynamoDBとLambdaの構築は慣れている方が多いので構築手順は省いています。本記事の内容は以下のUdemy講座を参考にしています。https://www.udemy.com/course/aws-vlfc/
# 構築する内容
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/08d48572-2f8b-3843-c50c-6a6fcff12134.png)
# DynamoDBの用意
テーブル名は`users`として、パーティションキー`id`、`文字列`のみ設定します。
# Lambdaの用意
この後作成するAPI GWからデータを受け取り、DynamoDBに格納するコードです。
ランタイムは`Python 3.9`で、Lam
署名付きアップロード・ダウンロードの構成をterraformで作る。
# はじめに
[前回](https://qiita.com/sakai00kou/items/ba5618f0a67064355752)、[AWSブログ](https://aws.amazon.com/jp/blogs/news/large-size-files-transferring-by-serverless-s3presignedurl-and-clientside-javascript/)で公開されていた署名付きアップロード・ダウンロードの構成をAWSマネジメントコンソール画面から構築しましたが、色々と使えそうなので、terraformの勉強も兼ねてterraform化したので公開しようと思います。– 【前】[API Gateway、Cognito、Lambda、S3を使って署名付きアップロード・ダウンロードを実装する。](https://qiita.com/sakai00kou/items/ba5618f0a67064355752)
**元のブログ記事**
– [AWS のサーバーレスと Amazon S3 署名付き URL、クライアントサイド JavaScript
初心者がAWSでWebサイトを公開するまで
# やりたいこと
AWSでWebサービスを公開するまでの流れをまとめました。
公式が用意しているサンプルWebサービスを使ってWebサイトの環境構築を学びます。参考にした公式チュートリアルはこちらです。
https://aws.amazon.com/jp/getting-started/hands-on/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/# サンプルWebサービスの説明
まずサンプルWebサービスがどんなものかをざっくりと説明します。![いらすとやユニコーン](https://2.bp.blogspot.com/-kwlzIOtHvuM/XOPXUYPc19I/AAAAAAABS7k/YyQ6OZTB2O4Wg4HSlYMgfOKkOy5E99uUgCLcBGAs/s800/yumekawa_animal_unicorn.png)
シチュエーションは以下です。
> あなた(の会社)はユコニーンを世界各地に派遣する能力を持っています。
そこで世界中の人がユニコーンをタクシーのように乗り
bundle install先に ‘vendor/bundle’を指定しないとLambdaでInit error when loading handlerになる
# はじめに
Rubyを使用しているプロジェクトで3.2にバージョンアップする対応を進めていたのですが、その際に発生したエラーに沼ってしまい、参考記事も見つけることができなかったのでまとめることにします。# 環境
– Ruby2.7.5→3.2
– Rails5.2→7.0
– Docker image public.ecr.aws/lambda/ruby:2.7→3.2
– serverless 3.33.0# 状況
Ruby on Railsアプリケーションをサーバレスデプロイしているプロジェクトでバージョンアップ対応を行っていました。具体的にLambdaのランタイムイメージとGemfileをRuby2.7から3.2にバージョンアップし、デプロイを行ったのですがページにアクセスできなくなりました。Cloud Watchでログを確認すると以下のエラーが発生していました。
“`
“Could not find net-pop-0.1.2, net-smtp-0.3.3, rake-13.0.6 in locally installed gems”
“`![imag
2023年のAWSアップデート追いかけてみる(6月後半編)
どうも、若松です。
前回の記事に引き続き6月後半のアップデートを追いかけます。
(追記)一覧にまとめました
https://qiita.com/t_wkm2/items/2b0fcf742b94c2eacea2
# AWSアップデート2023年6月後半編
#### [Amazon CloudWatch がダッシュボード変数のサポートを開始](https://aws.amazon.com/jp/about-aws/whats-new/2023/06/amazon-cloudwatch-dashboard-variables/)
ダッシュボードに変数が加わりました。
変数を変更するとそれに応じてグラフに表示される値が変化するというもののようです。
ディメンジョンごとにビューを作成するのではなく、変数でディメンジョンを切り替えられるのはすっきり見えていいですね。#### [Mountpoint for Amazon S3 が新しいファイルの作成のサポートを追加](https://aws.amazon.com/jp/about-aws/whats-new/2023/06/mount
2023年のAWSアップデート追いかけてみる(7月前半編)
どうも、気づいたら2個もAWS資格を失効してた若松です。
AWSのアップデートってre:Inventのときだけ必死に追いかけるのに年明けになるとサボっちゃうの何なんですかね?
ご多分に漏れず、私も2023年のアップデートを全然追いかけられていません。
当然ながら、AWSは年中アップデートを続けているわけで、その数も年々多くなってきて追いかけるのが大変です。
そこで、2023年分のアップデートを一気に舐めて、個人的に熱いと思ったものをピックアップしていきます。
※現時点で翻訳記事が出ていないものはGoogle翻訳で日本語化したタイトルにしています。(追記)一覧にまとめました
https://qiita.com/t_wkm2/items/2b0fcf742b94c2eacea2
# AWSアップデート2023年7月前半編
#### [Meta の Llama 2 基礎モデルが Amazon SageMaker JumpStart で利用可能になりました](https://aws.amazon.com/about-aws/whats-new/2023/07/llama-2-foun
【AWS Lamba】コンテナイメージから Lambda関数を作成する
## ローカル環境の準備
– Golangインストール
https://go.dev/dl/– Dockerfile作成
“`dockerfile:Dockerfile
FROM golang:1.17-buster as builder
WORKDIR /go/src/lambda
COPY go.mod go.sum ./
RUN go mod download
COPY ./ .
RUN go build -a -o /main .FROM debian:buster as runner
WORKDIR /app/
COPY –from=builder /main /main
ENTRYPOINT [ “/main” ]
“`– main.go作成
“`golang:main.go
package mainimport (
“fmt”
“context”
“github.com/aws/aws-lambda-go/lambda”
)type MyEvent struct {
Name stri
API Gatewayのリクエストバリデーション機能でLambdaのリソース消費を抑制する
# 課題
AWS SAM (Serverless Application Model)は、サーバーレスアプリケーションを簡単に作成、デプロイするためのフレームワークです。
私たちのプロジェクトでは、API Gateway, Lambda, DynamoDBを組み合わせたサーバーレスアーキテクチャを採用しており、AWS SAMを用いてデプロイを管理しています。しかし、その際に直面した課題があります。
それは、リクエストのバリデーションをLambda関数内で行っていたため、不適切なリクエストがLambdaまで到達してしまい、リソースの無駄遣いにつながっていました。# 考えた方法
この課題に対して考えた解決策は、API Gatewayでリクエストのバリデーションを行うことです。
AWS SAMのテンプレートを修正して、API Gatewayにリクエストの定義を追加し、リクエストが定義に合致しているかどうかをチェックする設定を加えることで、リソースの無駄遣いを防ぐことが可能になります。# 今日の目標
今日の目標は、AWS SAMのテンプレートを修正し、API Gatewayで
「お前らの AWS Lambda エイリアスは間違っている」と言われた気がしたので備忘録
# はじめに
こんなこと言われてないです。ごめんなさい。
AWS Lambda のエイリアス機能について先日思ったことなんです。
インターネットでよく見かける紹介は、
**開発環境は dev エイリアス、本番環境は prod エイリアスを利用して、環境を分けることができます!**
って感じではないでしょうか?でも**↑これ、無理じゃないですか?**
いや、やろうと思えばできますよ。
でも、運用上怖い点があるし、何より IaC(ここでは CDK を念頭に置きます)との相性悪すぎじゃない?と思ったので、思ったことを書いてみます。[^1]
# 前提知識
いくつか前提知識を整理しておきます。AWS Lambda についてある程度利用経験がある方はスキップいただいてOKだと思います。
## AWS Lambda
https://aws.amazon.com/jp/lambda/
何かしらのイベントをトリガーにコードを実行できる AWS のサーバーレスコンピューティングサービスです。
いくつか提供されているランタイムがあり、例えば Node.js で動くアプリケーションを
lambda + RDS proxy + Aurora serverless v2でまぁまぁ請求された話し
# はじめに
医療系クラウドサービスを提供しているレイヤードという会社で働いています。新サービスを開発中で、社内リソースの問題から外注に開発してもらっていました。
まだ **本番稼働していないにも関わらず、2023年6月25日時点でaws費用が$915、月末予測が$1,200にもなっており** 、調査依頼してもはっきりとした回答が無かったので、横槍ですが原因調査した内容の共有です。調査は弊社エンジニアの采本さんがほとんどやってくれました。
いつもありがとう、頼りにしてます。[![Image from Gyazo](https://i.gyazo.com/934ab01b3a63566353cc56015cdf65ff.png)](https://gyazo.com/934ab01b3a63566353cc56015cdf65ff)
# アーキテクチャ構成
アプリケーションの構成は以下のとおり。言語:TypeScript
フロント:Vue.js
バックエンド:Node.js on lambda
データベース:RDS proxy + Aurora serverless v
Amazon Connectからエイリアス版Lambda関数を呼び出す方法 [小ネタ]
### はじめに
ARI コンタクトセンター最適化支援チームのbayashiです。
Amazon Connect インスタンスのコンソール画面から登録できるLambda関数は、通常の方法だとエイリアス(特定関数のバージョンに対するポインタ)がない最新の関数を指定することになります。
・問い合わせフロー > AWS Lambdaから関数の追加
![ac-lambda1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2605350/8db9f284-5b12-db8b-b7f5-6bd3bfa81a42.png)「lambda add-permission」コマンド登録後に、フローの「AWS Lambda 関数を呼び出す」ブロックでLambdaエイリアスのARN値を直接記載する方法もありますが、今回は「AWS Lambda 関数を呼び出す」ブロックの一覧リストから関数を選択できる方法を共有します。(AWSサポートから対応方法を回答いただきました。)
既にご存じの方もいるとは思いますが、Web検索して
EventBridgeからLambda起動
# はじめに
2年目に突入したエンジニアでございます。今回はAWSを少し触れることがあったので忘れないためにここに備忘録として記載しておきます。
# 今回の内容:EventBridgeからLambdaを起動する。
[1. Lambda関数の用意](#1-Lambda関数の用意)
[2. EventBridgeルールの作成](#2-sEventBridgeルールの作成)
[3. 結果の確認](#3-結果の確認)## 1. Lambda関数の用意
まずは今回実行するLambda関数を用意します。
https://qiita.com/Hamoto/items/bd486937de142a589f8f
上記の記事を参考にしましたが、今回EventBridgeからLambdaを起動するだけの構成を予定しているため、
メッセージを返すのではなくS3にファイル出力するようなコードにしてみました。### コードの修正
“`python:lambda_function.py
import boto3def lambda_handler(event, context):
Lambdaでコンテナイメージから関数を作成する
# 目的
Lambdaの関数を作成する際、3つのケースから選択できます。
– 一から作成
– 設計図の使用
– コンテナイメージ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621838/df642e70-7f56-a11c-6d31-64492721ca18.png)
今回はこの「コンテナイメージ」から関数の作成を行う方法について、AWSベースイメージを使う場合と代替イメージを使う場合に分けて示します。
公式サイトは以下↓
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images-create.html# コンテナを使用するメリット
– カスタムランタイムの使用:
– 従来のLambdaでサポートされている実行環境に依存することなく、好みの言語、フレームワーク、ライブラリを選択し、独自の実行環境を構築できる
– バージョン管理:
– コンテナのイメージはイメージレジストリであるECRで管理されるため、
2023/07 GlueとStepfunctions①(全体像の把握編)
# 執筆にあたって
弊社では、S3に保存されているデータをRDS(MySQL)にimportする際に、LambdaやECSを用いておりました。
この作業をAWSのサービスの一つである「Glue」で行うように変更することが決まりました。
それに伴って情報のキャッチアップを行なっていたのですが、Stepfinctionsと合わせて運用されている記事で、lambdaを使って実装されていたり(今回は直接実行をしたい)、古めの記事や内容のものが多かったので、新しい情報を纏めようと思いました。
※現在は検証段階なので、記事の内容が「全て正しい」、あるいは「ベストプラクティスである」というわけではありません。
※以下、本記事においては、RDSはMySQLと同義とします。# この記事におけるGlue活用の目標
S3に保存されているデータをRDSにimportする際に、lambdaやECSを使わずに、GlueとStepfunctionsだけを用いて完了させることを目標としています。
以下、具体的にimportに必要なGlueの操作をまとめます。・Glue crawlerの作成
・Glue cra
100台超のEC2自動停止をAIに聞いて3分で実装してみた!
EC2の自動停止(メンテ不要Version)
—以前の執筆記事でLambdaでのEC2の自動停止について
ご紹介しました。
[EC2の自動停止について](https://qiita.com/fukuchan_milk/items/64c924f8fa3fd4342ba8)上記は超入門編で、AWSを初めて利用する方でも
行えるように記載しました。さて、前回のコードでは課題にも記載した通りEC2の数が増減した場合にLambdaコードの修正が必要となってしまうため管理が煩雑になっています。
今回はメンテナンスフリー(EC2が増減してもLambdaの修正が不要!)な
コードでEC2の自動停止を実現します。今回もAIに質問しながらコードを実装しました。
Q1)東京リージョンで稼働するすべてのEC2を日本時間の午前1時に停止したいです。LambdaでPythonコードを書くとどうなりますか
—A1)EC2インスタンスを停止するPythonコードをLambdaで実行することができます。以下のコードは、東京リージョンで稼働するすべてのEC2インスタンスを日本時間の午前
API Gateway、Cognito、Lambda、S3を使って署名付きアップロード・ダウンロードを実装する。
# はじめに
AWSが運営している[AWSブログ](https://aws.amazon.com/jp/blogs/news/)を流し見していたところ、ちょうどこんなシステムを作ってみたいと思い描いていた内容と合致するソリューションが手順・サンプル付きで紹介されていたので、少しハマったところも含めて手順をまとめてみようと思います。– [AWS のサーバーレスと Amazon S3 署名付き URL、クライアントサイド JavaScript で大きなサイズの複数ファイルの一括アップロード・ダウンロード機能を実現する方法](https://aws.amazon.com/jp/blogs/news/large-size-files-transferring-by-serverless-s3presignedurl-and-clientside-javascript/)
2023/7/22 今回の構成をterraformで作りました。
– 【次】[署名付きアップロード・ダウンロードの構成をterraformで作る。](https://qiita.com/sakai00kou/items
NestJSをAPI Gateway + AWS Lambdaで構成する(その2)- NestJS実行用のローカル環境構築
# つづき、その2
– [その1 NestJSやLambdaでのnode.jsの話し](https://qiita.com/ssugimoto/items/988320d34022555401fb)## 動かし方
– REAEMEは、こちら https://github.com/serverless/examples/blob/v3/aws-node-typescript-nest/README.md
## 上記のREAMEだけではよくわからない場合に必要なものは
### Node.js実行環境
– コンテナを使うことを推奨
– 環境を汚さない、人ごとや環境依存しない、他のプロジェクトが動かなくなるようなことはない
– Node.js 16 または Node.js 18(18を使う方が良いです)
– バージョンやコマンド確認
“`
which node
node -v
npm -v
“`### serverless frameworkインストール、V3を使う
– V3
– グローバルインストール“`
npm install -g serverless
np
Serverless Express rootディレクトリのPOSTメソッドで403発生
# rootディレクトリのPOSTメソッドで403発生
### 結論
API Gatewayの特定のリソース配下にProxを配置してる場合、Expressでルートはproxyのルートを指定すること!
“`jsx
//account (POST)
|-//abc(GET/POST)
|-//efg(GET/POST)
“`![API Gatewayの設定](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5968e051-e33f-46e5-975c-a1a78beddfc3/Untitled.png)
API Gatewayの設定
“`jsx
a.app.use(‘/’, accountRouter);
b.app.use(‘/account’, accountRouter);
c.app.use(‘/abc’, abcRouter);
d.app.use(‘/efg’, efgRouter);
“`Q: 次のパスへのリクエストは、上記どのルーティング処理が実行されるでしょうか。