- 1. SAM CLIを用いたLambda Layer 検証方法メモ
- 2. API Gateway + Lambdaを用いた外部APIリクエスト中継用エンドポイントの作成 メモ
- 3. Flutter から Lambda を経由し Amazon Pinpoint のPush通知を実装
- 4. Amazon Inspectorの診断結果から”High”のみ抽出して通知する
- 5. AWS Lambdaを使ってTimeTreeのイベントをGoogleCalenderに同期したい
- 6. cdkでtypescriptのlambdaをデプロイしてみた
- 7. lambda-uploaderでResourceConflictExceptionが発生する時の対処
- 8. いろんなことに引っかかりながらAPI Gateway⇔Lambdaを試す
- 9. AWS Lambdaのトリガーについて
- 10. AmazonのURLをひたすらDynamoDBに登録するだけのAPIをLambda Function URLsでつくった
- 11. Lambdaでデータベースプロキシが勝手に付与されるので調査してみた
- 12. AWS LambdaでRustをDockerで使う
- 13. Workload Identity連携で、GCP操作するLambdaをAWS SAMで作成
- 14. AWS Lambda Function URLsの使い方
- 15. Amazon SageMakerノートブックインスタンスの長時間稼働を自動検知する
- 16. VSCode & Docker で(自称)モダンなLambda開発環境を作る
- 17. Python初心者がAWS LambdaのPython3.6→3.9へランタイム変更対応を行ってみた。
- 18. 誰よりも易しくAWS LambdaにHello World!!
- 19. lambda から OpenSearch ( ElasticSearch )にqueryする
- 20. SQSのキューをトリガーにしてLambdaでメッセージを受信する(Python)
SAM CLIを用いたLambda Layer 検証方法メモ
## Lambda Layerとは
* 複数のLambda関数で外部ライブラリやビジネスロジックを共有できる仕組み
* メリット
* ライブラリなどの共通コンテンツをレイヤーとして作成することで、パッケージにライブラリを含める必要がなくなる。
* アップロードされたデプロイアーカイブのサイズを縮小し、デプロイスピードを高速化できる。
## 検証
* DynamoDBアクセス共通処理をLayer化し、SAMで検証用APIを作成する。
### 事前準備
* DynamoDB環境構築
* `docker-compose.yml`
“`yaml
version: ‘3’services:
dynamodb-local:
container_name: dynamodb-local
image: amazon/dynamodb-local:latest
user: root
command: -jar DynamoDBLocal.jar -share
API Gateway + Lambdaを用いた外部APIリクエスト中継用エンドポイントの作成 メモ
* アプリから外部APIを呼び出す際、一度API Gateway + Lambdaの中継用エンドポイントで受けて転送したいケースがあった。
![]()
* SAMで作成してみたので、メモとして残しておく。
## 事前準備
* プロジェクト作成
“`shell
sam init
“`※RuntimeにはPython 3.8を選択し、テンプレートには、Hello Worldテンプレートを使用。
## コード
* `swagger.json`
* API定義
“`json
{
“openapi”: “3.0.0”,
“info”: {
“version”: “2016-09-12T17:50:37Z”,
“title”:
Flutter から Lambda を経由し Amazon Pinpoint のPush通知を実装
# はじめに
flutterでpush通知の実装を目的に、Lambdaを経由してAmazon Pinpointでpush通知する構築方法についてまとめます。
1. pinpointに対して、エンドポイントの登録

1. pinpointに対して、エンドポイントの更新

2. pinpointに対して、セグメントとキャンペーンを作成

High,Mediumが混在した38件の結果が表示されました。
それぞれ個別に内容を確認できます。今回は診断結果が”High”のものをフィルタリングして、Lambdaを経由してEメ
AWS Lambdaを使ってTimeTreeのイベントをGoogleCalenderに同期したい
家庭のカレンダーにTimeTreeを利用していて、予定を共有するのに重宝しているのですが、ロック画面上に予定を表示してくれるGalaxyのAlways On Displayには連携できず、不便だったため連携処理をAWS Lambda上で連携させてみました。
TimeTreeに他のカレンダーを表示することは可能ですが、逆のパターンはCalDAVには対応しておらず、1件づつコピーする方法しかありません。
[他のカレンダー(Google カレンダーなど)をTimeTree上で利用する](https://support.timetreeapp.com/hc/ja/articles/360000629341)
Galaxyに関わらず、TimeTreeを他のカレンダーに連携したい方にも役にたつかもしれないです。
普段Serverless framework + AWS Lambdaを利用しているので、今回もAWS Lambda上で連携してみたいと思います。
記事を書いてみてかなりの長文になってしまったので、実際のソースものせますので合わせて見ていただければと思います。
# Always
cdkでtypescriptのlambdaをデプロイしてみた
# AWS lambda
## サービスの概要
– サーバレスでイベント駆動型のコンピューティングサービス
– サーバーの管理をする必要がない
– 従量課金## 料金
まずは利用料金の確認です。
コード実行時間(1ミリ秒単位)で課金されます。
料金は関数に割り当てたメモリ量によって異なります。
メモリ量を増やすとCPUパワーも増加し、結果として処理時間が短くなるので料金が安くなる場合もあります。
割り当てるメモリ量はチューニングが必要となりますね。詳細な料金は更新ページを参照。
https://aws.amazon.com/jp/lambda/pricing/
### 無料枠
100万件/月リクエストの無料枠があります。また、40万GB-sのコンピューティングタイムが含まれます。
少しさわってみるのには十分すぎますね。他のリージョンにデータを転送したり、S3と連携させると別途費用がかかるようです。微々たるものですが。
## まずはリソースを作ってみよう
無料枠の確認ができたところで、簡単な関数を作ってみます。
ディレクトリの構成はこんな感じです。
.
├─
lambda-uploaderでResourceConflictExceptionが発生する時の対処
## 事象
lambda-uploaderを実行した際に以下のエラーが発生していた。“`
ResourceConflictException: An error occurred (ResourceConflictException) when calling the UpdateFunctionConfiguration operation: The operation cannot be performed at this time. An update is in progress for resource
“`## 原因
2019/11/27 lambdaの仕様が変更された。
https://aws.amazon.com/jp/blogs/compute/tracking-the-state-of-lambda-functions/
おそらく、これが原因で、lambda-uploaderコマンドにて実行時ResourceConflictExceptionが発生するようになった。
以下のPRで問題解消されており、v1.3.1(2022/4/16)としてリリース
いろんなことに引っかかりながらAPI Gateway⇔Lambdaを試す
# はじめに
[前回](https://qiita.com/kiii142/items/b25e83d505ca049f3df5)Lambdaを使ってみたので
つぎはAPI Gateway との連携できたらいいよね!と思ってチュートリアルやってみようとしたら
初心者すぎていろんなことに引っかかったという記事です。
丁寧な公式チュートリアルはこちら
+ [API Gateway の開始方法](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/getting-started.html)Lambda関数はどうしてもpythonで書きたかったので
公式チュートリアルからはちょっと外れてそこの処理だけpythonで書くこととします。
最初に手順を一通りなぞった後に、私が引っかかったポイントについてまとめていこうと思います。# 公式のステップに則った手順
## ステップ 1: Lambda 関数を作成する
+ Lambdaのページに行き、「関数の作成」ボタンを押す
+ 「一から作成」を選択。「関数名」に適
AWS Lambdaのトリガーについて
## Lambdaについて
AWS Lambda(以下Lambda)はサーバレスコンピューティングサービスです。 オペレーティングシステム(以下OS)などのインフラストラクチャの管理が不要で、利用者はプログラムコードを準備し、Lambdaにアップロードするだけで実行できます。
## トリガーとは
トリガーはLambdaを実行するきっかけです、もちろん手動で実行できますが自動で実行も出来ます、それは色々の方法あります。

これは普通の作成したlambdaです、画面で左側は「トリガーを追加」オプションがあります、それをクリックすると色々選べます。選べるオプションの中にちょっと説明します。
## s3
S3にファイルが置かれた時に自動でLambdaを実行できます。
設定画面はこちら
AmazonのURLをひたすらDynamoDBに登録するだけのAPIをLambda Function URLsでつくった
# はじめに
この記事はLambda(Function URLs)とDynamoDBと連携させる内容となっています。
前回の記事の続きとなっているため同様の手順は省略しています。GoでLambda Function URLs ハンズオン
https://qiita.com/tkhs1121/items/b1e332acdbc50fad8c45# 環境
MacBook Air M1
開発言語 Go# 追加で必要なパッケージのインストール
“`
go get -u github.com/aws/aws-sdk-go
“`# ソースコード
“`main.go
func HandleRequest(ctx context.Context, payload Payload) error {
url, err := parseRequest(payload)
if err != nil {
return err
}
isAmazonURL, err := checkAmazonURL(url)
if err != nil {
return err
}
i
Lambdaでデータベースプロキシが勝手に付与されるので調査してみた
## 概要
Lambdaでデータベースプロキシが勝手に付与される現象が発生したので、調査してみました。## 結論
Lambdaの実行ロールにRDSプロキシ関連のポリシーが含まれていると、勝手に付与されるようです。## 検証内容
### 1. 準備
#### RDSプロキシ
事前にRDSプロキシを作成しておきます。
作成時にIAMロールを作成するように設定をします。
RDSプロキシ作成後にIAMロールが自動で作成されます。#### Lambda
適当にLambdaを新規作成します。### 2. 検証結果
#### Lambdaの実行ロールにRDSプロキシ関連のポリシーが含まれている場合
RDSプロキシ関連のポリシーが含まれている実行ロールに変更してみます。
には以下のようなデプロイの仕方がありました。
* バイナリを作成してzipにしてアップロード
* SAM
* Serverless Framework
* DockerServerless Framewrokを使いたいんですが、pluginのバージョンが古くて微妙でした。
ここでは本家には無いServeless FrameworkとDockerを組み合わせた方法でデプロイします。# フォルダー構成
workspaceを使った構成にします。apiがメインの処理でcommonがライブラリとなります。“`
service
– api
– Cargo.toml
– main.rs
– common
– Cargo.toml
– lib.rs
– Cargo.toml
– Cargo.lock
Workload Identity連携で、GCP操作するLambdaをAWS SAMで作成
# はじめに
AWSからGCPの操作がセキュアにできるWorkload Identity連携を、AWS SAMを使って作成したLambdaから行った内容を記事にしました。# やったこと
## GCP側
以前の記事をそのままやっています。https://qiita.com/a_b_/items/f30b85be4f44ed1f620c#gcp%E5%81%B4
こちらで作られたファイルをそのまま使います。
## AWS側
### Cloud9
#### 環境
AWS SAMを実行するので、ボリュームは50GB程度あるといいです。
以前記事にした内容と同じ環境でやっています。https://qiita.com/a_b_/items/6b02e08ecacdd21524c2#%E7%92%B0%E5%A2%83
#### 設定
ローカルでテストを行う際に、Cloud9からGCPにアクセスできるよう、EC2にIAMロールを付けます。
前回の記事と同様です。https://qiita.com/a_b_/items/102dfa252761eceab528#cloud9
AWS Lambda Function URLsの使い方
# AWS Lambda Function URLs
## やれること
– Lambda関数に紐づくURLを作成する
– 簡単に関数の前にHTTPSエンドポイントを設定する## 何が嬉しい?
### Lambda Function URLsが無い時

今まではこんな感じで、API GatewayやAppSync、ALBをLambdaの前に置いてました。### Lambda Function URLsがある時

これだけでOK!## やり方
1. Lambda関数の作成で詳細設定を開く
の記事で、EC2インスタンスの長時間稼働を検知して、自動通知を送る検証を行いました。
今回SageMakerノートブックインスタンスの長時間稼働を検知して、自動通知を送るようにします。
前回のようにRunCommandを使った検知はできなかったので、CloudWatchのログを利用した検知方法を検証します。# 概要
(★)がついているセクションは、手を動かして頂く項目です。1. 今回の構成(★)
2. SageMakerの環境構築(★)
3. SNSトピック/サブスクリプションの準備(★)
4. Lambda実装(連続稼働の検知)(★)
5. EventBridgeで検知を自動化する(★)
6. 挙動確認(★)
事前準備
– AWSアカウント作成
– AdministratorAccessを付与したIAMユーザーの作成# 1.今回の構成
– Amazon SageMaker
– AWS Lambd
VSCode & Docker で(自称)モダンなLambda開発環境を作る
# この記事について
最近Lambdaの関数を作成する機会がありました。
その際に、DockerとVScodeを使用してそれっぽい感じの開発環境作ってみました。
その環境の作り方をこの記事にまとめます。# 前提
– 端末
– macbook pro (mojave)
– VSCodeインストール済み
– Dockerインストール済み
– AWS CLIを実行するためのクレデンシャルが取得可能(権限は割愛しますが、Administrator Accessを持っていたら楽だと思います)
– https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-files.html※DockerとVSCodeはバージョンが古すぎなければ大丈夫だと思います
# VSCode + Docker + Pythonの環境を作る
## VSCodeにremote-containerの拡張機能を入れる
拡張機能名`ms-vscode-remote.remote-containers`
Python初心者がAWS LambdaのPython3.6→3.9へランタイム変更対応を行ってみた。
## 1.はじめに
2022年8月17日に[LambdaのPython3.6ランタイムが非推奨になるとのアナウンス](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.html#runtime-support-policy)がありました。
| 名前|識別子|オペレーティングシステム|非推奨化フェーズ 1|非推奨化フェーズ 2|
|:———–|————:|:————:|:————:|:————:|
| Python 3.6|python3.6|Amazon Linux|2022 年 7 月 18 日|2022 年 8 月 17 日|現在のプロジェクトではPython3.6ランタイムを使用しているLambdaが開発環境2つ、本番環境2つの合計4つありました。
今回はバージョンアップで追加された新機能等は使用せず、バージョンアップのみの対応を行う事となります。
私はAWS実務1か月、Python実務1か月の初心者で、初めて行った
誰よりも易しくAWS LambdaにHello World!!
# はじめに
WEBアプリ的なのをさっくり作ってみたくなりいろいろ方法調べてたのですが、
サーバ周りのこと全くわからんな…となったので
サーバレスなやつならさっくりいけるんちゃうか!(安直)
と思い、AWSの機能組み合わせればなんかできそう!という感触を得たので
まずはLambda触ってみますという記事です。本格的なアプリ作りこむ前にいくつか実験したいことがあるの
できたところからちまちま記事にしていけたらと思います。# AWS Lambdaとは
公式の概要は[こちら](https://aws.amazon.com/jp/lambda/)私のざっくりとしたイメージは、
AWS他サービスでのイベントなどをトリガとしてなんらかの処理を行うものを
特に実行環境用意することなく用意できちゃう!というものです。
またサポートしている言語としてJava、Go、PowerShell、Node.js、C#、Python、Ruby があり
お好きな言語で書けちゃうというのもありがたポイントな気がします。
公式によると「関数の作成にその他のプログラミング言語を使用できるようにするための R
lambda から OpenSearch ( ElasticSearch )にqueryする
# はじめに
定期的にOpenSearchからデータ(ドキュメントの件数)を取得し、cloudwatchのカスタムメトリクスとして設定したかったので、lambdaからOpenSearchのデータ取得することを検討しました。curlの実行事例は多くありますが、lambda(python)はあまりなかったのでメモしておきます。# lambdaの設定
lambdaがOpenSearchにアクセスできる必要があるため、OpenSearchと同じVPCに配置しておきます。また、セキュリティグループを設定します。# OpenSearchに対してQueryする
pythonで書きました。専用ライブラリなどはなく、普通にjsonでhttpリクエストします。
query条件に応じて、URLとBodyを設定します。curlでリクエストできていれば、同じ内容でリクエストすればOK。“` py
import json
import boto3
from urllib import requestdef lambda_handler(event, context):
#URL
SQSのキューをトリガーにしてLambdaでメッセージを受信する(Python)
## はじめに
[S3をトリガーにしてLambdaでSQSにメッセージを送信する](https://qiita.com/ybsh2891/items/55a2c95a15234acd64d7)の続きとして、SQSのキューに入ったメッセージをLambdaで取得する方法のメモ。## 目標
図のように、SQSをトリガーにして、Lambdaを起動させる。
## 1. SQSでキューを作成する
### キューの新規作成
キューを新規作成する。詳細は[こちら](https://qiita.com/ybsh2891/items/55a2c95a15234acd64d7#1-sqs%E3%81%A7%E3%82%AD%E3%83%A5%E3%83%BC%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)を参照。
既