- 1. LambdaでPandasとMatplotlibを使う時の注意点
- 2. AWS Lambdaのコールドスタートとウォームスタートの挙動
- 3. 【2023/10アップデート】Amazon EventBridgeのワイルドカードフィルターについての検証
- 4. 【AWS】S3-APIGateway-Lambda間リクエスト・レスポンス確認方法
- 5. Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your functionに遭遇した
- 6. 【実務で使えるLambda】describe_instancesで色々やってみる
- 7. AWS Lambdaで日本時間を扱う
- 8. コスト効率向上!「WakeOnLambda」CDK Constructが登場
- 9. Step FunctionでのループをCDKで試したメモ
- 10. Amazon bedrockのSample serverless-pdf-chatを日本リージョンで動かしてみた
- 11. go-awslambda
- 12. AWS LambdaとEventbridgeを使って毎朝7時に気象庁天気予報をLINEに通知
- 13. 【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part5
- 14. 【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part4
- 15. Serverless FrameworkとTerraformの責任分界点
- 16. AWS Lambda Web Adapterを使ってAgents for Amazon Bedrockを高速開発
- 17. Firehoseのレコード出力の設定をCDKで構築する(改行の区切り文字/動的パーティショニング)
- 18. Windowsで作成したLambdaレイヤーで”Unable to import module”エラーが発生した場合の対処(の一つ)
- 19. 【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part3
- 20. 【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part2
LambdaでPandasとMatplotlibを使う時の注意点
# はじめに
LambdaでPandasとMatplotlib(外部ライブラリ)を使おうとしたときにハマったので、備忘録として残しています。
# Lambdaの『250MB制限』の壁
>デプロイパッケージ (.zip ファイルアーカイブ) のサイズ
>50 MB (zip 圧縮済み、直接アップロード)
>250 MB (解凍後)
>このクォータは、レイヤーやカスタムランタイムなど、アップロードするすべてのファイルに適用されます。https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/gettingstarted-limits.html
# 外部ライブラリは『Layer』を用意する
**Pandas**
– AWSレイヤー(AWS が提供するレイヤー)
– ARN指定(arn:aws:lambda:ap-northeast-1:770693421928:layer:Klayers-p39-pandas:22)**Matplotlib**
– ARN指定(arn:aws:lambda:ap-northeast-1:77069342
AWS Lambdaのコールドスタートとウォームスタートの挙動
::: note
この記事はMIERUNEの朝LT会で発表した内容を公開しているものです
:::# はじめに
https://aws.amazon.com/jp/builders-flash/202402/lambda-container-runtime/?awsf.filter-name=*all
– AWS Lambdaでコンテナを動かす記事が公開されました。いつもLambdaを深堀しています
# Lambda=サーバーレス
– Lambdaはサーバーレス実行環境です。基本的に、処理の実行時にサーバーリソースが充当されます
– =関数を実行しない限りは、サーバーリソースを必要としない
– このサーバーリソースの充当を行うケースを「コールドスタート」と呼びます。ある程度の時間がかかります(数秒はザラにかかる)
– ただし、一度コールドスタートしていると、二回目の関数実行時にはコールドスタートは必要ありません(=ウォームスタート)
– ウォームスタートの有効時間は明言されていない# ウォームスタート時の挙動
– ウォームスタート時は:
【2023/10アップデート】Amazon EventBridgeのワイルドカードフィルターについての検証
# はじめに
今回は2023/10/3アップデートの【Amazon EventBridgeがルールでのワイルドカードフィルターのサポートを開始した件】についての検証結果をご紹介いたします。# 目次
・検証するアップデート内容について
・prefix・suffixとの違い
・簡単な図解
・利用サービスと準備するもの
・検証方法
・環境構築
・検証結果
・注意
・おわりに
・参考# 検証するアップデート内容について
**Amazon EventBridgeのルールにおいて、** アップデート前まではワイルドカードが使用できなかったが、今回のリリースにより**ワイルドカードフィルターがサポートされるようになった**というのがアップデートの内容です。https://aws.amazon.com/jp/about-aws/whats-new/2023/10/amazon-eventbridge-wildcard-filters-rules/
# prefix・suffixとの違い
今回のアップデートの以前から、EventBridgeのルールでは、「prefix」「suffix」
【AWS】S3-APIGateway-Lambda間リクエスト・レスポンス確認方法
## はじめに
CORSエラーなどが解消せず、
リクエスト/レスポンス情報を見たい経験はありませんか?対応方法やエラー発生時の切り分けをまとめた備忘になります。
## 直面した問題
静的ホスティングしているS3からAPIGateway経由でLambdaを呼び出そうとした時に、
CORS関連のエラーが発生
> CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.## 結論
APIGatewayでCORS設定に必要な設定項目が不足していたためエラーが発生## 確認方法
### ブラウザ開発者ツールによるリクエスト確認
1. F12を押下してブラウザに備わっている開発者ツールを表示
2. Networkを選択すると各リ
Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your functionに遭遇した
### 起こったこと
“`bash
╷
│ Error: putting CloudWatch Logs Subscription Filter (subscription-filter): InvalidParameterException: Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your function.
│
│ with aws_cloudwatch_log_subscription_filter.this,
│ on main.tf line 34, in resource “aws_cloudwatch_log_subscription_filter” “this”:
│ 34: resource “aws_cloudwatch_log_subscription_filter” “this” {
│
“`CloudwatchLogsのロググループにサブスクリプションフィルターを通してL
【実務で使えるLambda】describe_instancesで色々やってみる
# はじめに
実際に実務で扱ったLambdaの汎用的なコードを備忘録として残しています。
(※機密情報は載せてないのでご安心ください)# インスタンスIDをリストで取得してみる
とりあえずこれをコピペすればOK
“`python
import boto3client = boto3.client(‘ec2′, region_name=’ap-northeast-1’) # リージョンは任意
instances = client.describe_instances()
instance_ids = [] # 空のリストを用意
for reservation in instances[‘Reservations’]:
for instance in reservation[‘Instances’]:
instance_id = instance[‘InstanceId’]
instance_ids.append(instance_id)
“`# インスタンスに付いているタグ名をリストで取得してみる
さっき取得した`ins
AWS Lambdaで日本時間を扱う
AWS Lambdaの関数内で、日本時間をUNIX時間に変換する処理を実装した時に、9時間足されたUNIX時間に変換されてしまいました。
コードは下記の感じ。
“`csharp
if (DateTimeOffset.TryParse(input, out DateTimeOffset dateTimeOffset))
{
DateTime dateTime = dateTimeOffset.DateTime;long unixTimestamp = ((DateTimeOffset)dateTime).ToUnixTimeSeconds();
return unixTimestamp.ToString();
}
else
{
return string.Empty;
}
“`
`input`に日本時間(フォーマット:`2024-01-01T00:00:00+09:00`)の文字列が入ります。
上にコードを示しましたが、このコードには特に問題はありません。# 解決方法
Lambdaの環境変数を追加する。
– キー:`TZ`
– 値:`Asia/
コスト効率向上!「WakeOnLambda」CDK Constructが登場
## 背景
Amazon EC2インスタンスの常時起動にはコストがかかります。サービスが必要ない時間帯でもインスタンスが動いていると、無駄なコストが発生してしまいます。今回は、WebサービスにアクセスするだけでEC2インスタンスを起動できる「WakeOnLambda」CDK Constructを開発し、その利点について紹介します。
## コンストラクトの概要
「WakeOnLambda」は、AWS CDKを使用して、特定のURLにアクセスすることでEC2インスタンスを起動するLambda関数を簡単に構築できるConstructです。これにより、ユーザーは手動での操作なしに、Webサービスへのアクセスを通じてインスタンスをスタートできます。Construct Hub のリンクはこちら
[![View on Construct Hub](https://constructs.dev/badge?package=wake-on-lambda)](https://constructs.dev/packages/wake-on-lambda)
Construct Hubへの登録は以下の
Step FunctionでのループをCDKで試したメモ
## 概要
Step Functionの理解を深める。
[Lambda を使用してループを反復する](https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/tutorial-create-iterate-pattern-section.html)をCDKで書いてみた。## callbackとreturnの書き換え
例では戻り値をcallbackに渡しているが、冗長なのでreturnで返す形に書き換えた。
([Node.js の AWS Lambda 関数ハンドラー](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/nodejs-handler.html))[ソースコード](https://github.com/hibohiboo/aws-cdk-v2/blob/2046e79638a2000e1f791b8aaf98c669379be79e/cdk/lib/step-functions-stack.ts)
以下の2つのソースは等価となる。
“`js
exp
Amazon bedrockのSample serverless-pdf-chatを日本リージョンで動かしてみた
## はじめに
部内のナレッジをRAGで活用しようと思い、まずはRAGの理解深耕とBedrockがGAされたこともありaws sampleから試してみました。
今回は下記を用いて実施しています。
https://github.com/aws-samples/serverless-pdf-chatFrontendはClientPCで動作させるので下記のようなイメージになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922657/dd716d4a-7f82-30be-85e0-e90789a7d84f.png)## リージョンをap-northeast-1にする
GitのREADMEに以下のように記載があるので、従って修正します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922657/552f96db-75f0-76ff-389f-fe9d345aca84.png)
go-awslambda
“`text
— FAIL: TestSlogtest (0.03s)
\zapslog\logger.go:130: message
\zapslog\logger.go:130: INFO message {“k”: “v”}
\zapslog\logger.go:130: msg {“a”: “b”, “c”: “d”}
\zapslog\logger.go:130: INFO msg {“k”: “v”}
\zapslog\logger.go:130: msg {“a”: “b”, “k”: “v”}
\zapslog\logger.go:130: msg {“a”: “b”, “G”: {“c”: “d”}, “e”: “f”}
\zapslog\logger.go:130: msg {“a”: “b”, “e”: “f”}
\zapslog\logger.go:130: msg {“a”: “b”, “c”: “d”, “e”: “f”}
\zapslog\logger.go:130
AWS LambdaとEventbridgeを使って毎朝7時に気象庁天気予報をLINEに通知
## 概要
気象庁から天気予報データを取得、必要情報を抽出してLINEに通知するLambdaを作成して、Eventbridgeで毎朝7時に起動するよう設定しました。## 準備
– 事前にLINE Notifyのアクセストークンを取得
– エリアコードの確認
https://www.jma.go.jp/bosai/common/const/area.json
東京地方は130000です。## 作成
– Lambda作成
Lambda作成方法は他の有志の方の記事または公式を参照ください。
なお、PythonのRequestsモジュールをLambdaで使用するためにはLayerの追加の必要があります。
– エリアコードは東京地方の天気を対象としています
– 抽出データは、時間、天気、6時間ごとの降水確率と最高気温です
– 【LINE Notifyアクセストークン】を取得したアクセストークンに置き換えてください“`python.py
import requests
import json
import iodef lambda_ha
【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part5
# 概要
この記事ではAWS認定DASに出題されるリソースを使った構成をシリーズ化して紹介します。
前回までの内容は以下をご覧ください!
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part1](https://qiita.com/mcen/items/24f20be7a3094dfef6a0)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part2](https://qiita.com/mcen/items/7d978203ef22412309f2)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part3](https://qiita.com/mcen/items/e66e77743963084a3d7b)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part4](https://qiita.com/mcen/items/802a43a28358303125f6)# 今回の実施内容
前回Part4の内容を行いました。今回は
【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part4
# 概要
この記事ではAWS認定DASに出題されるリソースを使った構成をシリーズ化して紹介します。
前回までの内容は以下をご覧ください!
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part1](https://qiita.com/mcen/items/24f20be7a3094dfef6a0)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part2](https://qiita.com/mcen/items/7d978203ef22412309f2)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part3](https://qiita.com/mcen/items/e66e77743963084a3d7b)# 今回の実施内容
前回Part3の内容を行いました。今回はAthenaの設定を行います。
* Part1
* JSONのダミーデータの作成
* S3バケットの作成
* Part2
* Lambda作成
* S3イベントとLam
Serverless FrameworkとTerraformの責任分界点
# 概要
Lambdaアプリケーションを構築する上では、Terraform以外に [Serverless Framework](https://www.serverless.com/) や [AWS SAM](https://aws.amazon.com/serverless/sam/) といったフレームワークを使うことがあります。
メタップスホールディングスではLambdaのアプリケーション開発にServerless Frameworkを使うことが多いのですが、インフラを構築する上で、Terraformとの使い分けはどうするべきか、という課題が度々発生します。
今回は弊社のプロダクト開発におけるフレームワークの使い分けについて、一例を紹介したいと思います。# Terraformの利点
TerraformはInfrastructure as Code (IaC) の中でもとりわけ人気が高く、多数のクラウドプロバイダーに対応しており、デプロイメントやプロビジョニングを自動化できる利点があります。
弊社のSREチームもAWSを始め、DatadogやGitHub、PagerDuty
AWS Lambda Web Adapterを使ってAgents for Amazon Bedrockを高速開発
Amazon Bedrockでエージェントを構築できるAgents for Amazon Bedrockという機能があります。この機能はLambdaで構築するのですが、構築に際して次のものが必要です。
* エージェントが実行するアクションのビジネスロジックを含んだLambda関数
* APIの説明、構造、パラメーターを含むOpenAPIスキーマまた、イベントのJSONが専用フォーマットなので、どういったイベントが来るのか気にしながら開発する必要があります。
AWS謹製のAWS Lambda Web AdapterがAgents for Amazon Bedrockに対応しましたので、使用方法を紹介します。
## AWS Lambda Web Adapterとは
AWS Lambda 上で Web アプリケーションを実行するツールです。
AWS Lambda Web Adaptor を使用すると、開発者は使い慣れたフレームワーク (Express.js、Next.js、Flask、SpringBoot、ASP.NET、Laravel など、HTTP 1.1/1.0 を使用
Firehoseのレコード出力の設定をCDKで構築する(改行の区切り文字/動的パーティショニング)
# 背景
Firehoseでは、1行1レコードとして出力したり、Lambdaで1レコードごとに処理するためには、追加での設定が必要です。
画面からだと簡単に設定できますが、CloudFormationおよびCDKでは、設定方法が直感的とは言い難いです。この記事では、CDKのみを使用して、こちらの画像の状態にする方法を紹介します。
![スクリーンショット 2024-01-18 8.52.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3468968/31379ea2-7606-ab85-f8e2-dc3593f89f88.png)
## 設定項目解説
### New line delimiter/改行の区切り文字
設定することで、各レコードが1行ごとに出力されます。“`json
{“id”:1}
{“id”:2}
“`
JSONL形式になるため、後続の処理でS3から取り出した時に処理しやすくなります。#### 設定しない場合に困ること
これを設定しないと、いわゆるJSONL形式では
Windowsで作成したLambdaレイヤーで”Unable to import module”エラーが発生した場合の対処(の一つ)
LambdaでAPI等を作っていると外部ライブラリをLambdaレイヤーに追加するシーンが多々発生しますが、ローカルのWindows環境で外部ライブラリの動作確認をした後に、`pip install -t`してLambdaレイヤーを作成したらLambdaで以下のエラーが発生した際の調査メモ。
※他の原因(循環参照)でも同じエラーが発生するようなのでどちらが原因かは適宜判断`[ERROR] Runtime.ImportModuleError: Unable to import module’lambda_function’: cannot import name ‘xxx’ from partially initialized module ‘xxx’ (most likely due to a circular import)
`# 環境
– ローカル環境:Windows
– Lambda:Python# 原因
そのまま書いてありました。
要はライブラリにバイナリを含む場合は、インストール時の環境(Windows)とLambda実行環境(Amazon Linux)の差異でエ
【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part3
# 概要
この記事ではAWS認定DASに出題されるリソースを使った構成をシリーズ化して紹介します。
前回までの内容は以下をご覧ください!
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part1](https://qiita.com/mcen/items/24f20be7a3094dfef6a0)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part2](https://qiita.com/mcen/items/7d978203ef22412309f2)# 今回の実施内容
前回Part2の内容を行いました。今回はGlueの設定を行います。
* Part1
* JSONのダミーデータの作成
* S3バケットの作成
* Part2
* Lambda作成
* S3イベントとLambdaの連動
* Part3
* Glueの設定
* Part4
* Athenaの設定
* Part5
* Quicksightでの可視化## AWS Glueとは?
AW
【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part2
# 概要
この記事ではAWS認定DASに出題されるリソースを使った構成をシリーズ化して紹介します。
前回までの内容は以下をご覧ください!
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part1](https://qiita.com/mcen/items/24f20be7a3094dfef6a0)# 今回の実施内容
前回Part1の内容を行いました。今回はLambda関連の設定を行います。
* Part1
* JSONのダミーデータの作成
* S3バケットの作成
* Part2
* Lambda作成
* S3イベントとLambdaの連動
* Part3
* Glueの設定
* Part4
* Athenaの設定
* Part5
* Quicksightでの可視化## Lambda作成
S3バケット「**transbucket-2024**」のinputフォルダにアップロードしたjsonファイルを
csvファイルに加工後、outputフォルダに格納するLambdaを作成していきます。