Lambda関連のことを調べてみた2022年07月01日

Lambda関連のことを調べてみた2022年07月01日
目次

SwitchbotをLINE BOTから操作してみた(Lambda,API Gateway,Go)

# はじめに

自宅を完全スマートホーム化してみたい!!ということで第一弾はSwitchBotの加湿器を買ってみました。

じゃじゃん!
IMG_4786.jpg

今回はこの加湿器をLINE上からON/OFFできるようにしてみます。

# 構成

![kousei.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2610254/eb50aeb1-4ed9-4834-f3b1-6b21d7953ad7.png)

# 準備
## LINEアカウント

https://developers.line.biz/ja/docs/messaging-api/getting-started/
を参考にチャネルを作成します。

![スクリー

元記事を表示

OCI Functions vs AWS Lambda

# General

||OCI Functions|AWS Lambda|
|–|–|–|
|Initial Release|Jul,2019|Nov,2014|
|Based on|[Fn Project](https://fnproject.io/)|N/A|
|Support Language|Java, Python, Ruby, Go, Node.js, C# (.NET). Refer to [Doc ](https://docs.oracle.com/en-us/iaas/Content/Functions/Tasks/languagessupportedbyfunctions.htm)|[Node.js](http://docs.aws.amazon.com/lambda/latest/dg/authoring-function-in-nodejs.html), [Python](http://docs.aws.amazon.com/lambda/latest/dg/python-lambda.html), [Java](http://docs.aws.amaz

元記事を表示

AWS日記43 (AWS Lambda – Rust)

# はじめに
今回は[AWS SDK for Rust](https://aws.amazon.com/jp/about-aws/whats-new/2021/12/aws-sdk-rust-developer-preview/)を試します。
Lambda, DynamoDB, S3を利用し簡易な画像掲示板を作ります。
DynamoDB・S3周りは[aws-sdk-rust](https://github.com/awslabs/aws-sdk-rust)を利用し、Lambda周りやビルド・デプロイは[aws-lambda-rust-runtime](https://github.com/awslabs/aws-lambda-rust-runtime)を利用します。

# [AWS SDK for Rust](https://aws.amazon.com/jp/about-aws/whats-new/2021/12/aws-sdk-rust-developer-preview/)の利点
> すべてのクレートは crates.io で入手できます。SDK は、EC2、ECS、Lambda

元記事を表示

Amazon Connectで音声をふきこみ、ふきこんだ音声で一斉発信してみた

# きっかけ
災害等の危険がある時に、
自治会長さん等の地域のリーダーの「声」で防災無線を使って呼びかけることで、
地域のみなさんの避難行動が促された、というニュースを先日見ました。
(テレビの映像を見る限り、専用の装置やシステムをつかっているようでした)

ふと、
Amazon Connectに電話をかけて、音声をふきこみ、録音する。
その録音された音声を、一斉発信することはできないだろうか?…と考えました。

# やってみたこと

ふきこみ・録音・再生を**すべて電話で**やってみました。

1. Amazon Connectに電話をかけると、**留守番機能**のようにメッセージが録音される。
2. 録音した音声がAmazon Connectのプロンプトで**再生可能な形式で保存**される。
3. Amazon Connectから**一斉発信**すると、(着信先で)**録音した音声が再生される**。

[**【デモ動画】こんな感じになります!**](https://youtu.be/u8w61VM-2C8)

# 実現

元記事を表示

AWS Lambdaの非同期呼び出し機能やデッドレターキューとか良く分からなかったので検証してみた

## 目次

– [目次](#目次)
– [はじめに](#はじめに)
– [AWS Lambdaの非同期呼び出し機能とは](#aws-lambdaの非同期呼び出し機能とは)
– [検証準備](#検証準備)
– [SQS](#sqs)
– [Lambda](#lambda)
– [EventBridge](#eventbridge)
– [検証内容](#検証内容)
– [ログ](#ログ)
– [SQS](#sqs)
– [まとめ](#まとめ)

## はじめに
AWS Lambdaで非同期呼び出し機能がありますが、動作がイマイチ良く分からなかったので実際に検証してみました。

## AWS Lambdaの非同期呼び出し機能とは
Lambdaが非同期呼び出しされた際にエラーとなった場合に、リトライ処理をしたりデッドレターキューにキューを入れることができる機能です。

リトライに関しては以下に記載のあるように、1回目のリトライは1分後、2回目のリトライは2分後に行われます。
> Lambda manages the function’s asynchronous even

元記事を表示

AWS LambdaでSeleniumを動かすときの注意点

# 概要

* ある日、seleniumによるフロント画面の正常性確認を行うAWS Lambdaの実行エラーが頻発していることに気づき調査することになりました。
* その際に気づいたseleniumの特性とAWS Lambdaの特性について今回は記事にしていこうと思います。
* もし同じような現象に陥った人がいた時の何らかの助けになれば幸いです。

## 仕様の確認

* フロント画面の正常性を確認するためにseleniumのwebdriverでヘッドレスモード実行をしていました。
* 実行には、CloudWatchEventを利用し、5分おきにこのLambdaを発火し、実行結果をCloudWatchLogsに吐き出すようになっています。

## 何が起きたのか

* 一定の間隔でこのseleniumを動かすLambdaが実行中にエラーとなり落ちていました。
* ただ毎回の実行で、このLambdaが落ちるというわけではなくたまに実行エラーとなるのがとても不思議でした。

### Lambdaでの実行エラーが発生したときの調査方法

* Lambdaのインサイトメトリクスを有効にするとL

元記事を表示

OpenSearch ( ElasticSearch ) の利用料を最適化する 〜円安ドル高にちょっと抵抗してみる〜

# はじめに
円安が止まりません。20数年ぶりの円安水準だそうです。ガソリン代も高騰していますが、ドルベースのAWS利用料も影響を受けてしまいます。AWS利用料には補助金は導入されませんので、自助努力するしかないですね。仕事の効率が落ちない程度に、コスト最適化を考えてみます。

# OpenSearchの費用について
OpenSearchのデータノードは、マルチAZにすると2(または3)の倍数が必要で、シャード数も考慮すると、両方の公倍数にした方が良いです。となると、必然的にデータノード数はある程度多くなり、それに伴い費用もかさみがちだと思います。

# OpenSearchの運用コストを最適化
商用環境には手をつけにくいので、検証環境(開発環境)にフォーカスします。コストを無視すれば、検証環境はできる限り商用環境と同じ環境であることが理想ではあると思いますが、ほとんどの時間で性能を持て余します。そこで、性能が必要な場合(性能テスト時など)のみ、商用レベルの性能を付与する(動的に設定変更する)ことにします。

# 最適化の方針
とはいえ、手間は増やしたくありません。データ量に依存するデ

元記事を表示

【AWS】Lambda + API Gatewayを触ってみる【Lambda編】

LambdaとAPI Gatewayを使って簡単なAPIを作成してみます。
AWSはほとんど触ったことがないため、内容としては初歩の初歩となります。
今回はLambdaで関数を作成していきます。

# Lambda関数を作成
まずはLambda関数を作成していきます。
マネジメントコンソールでAWS Lambdaの関数のページを開いて、「関数の作成」を押下します。
![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2300564/8baf5339-2848-fec0-58f8-e7558d855f92.png)

「一から作成」を選択し、関数名を「Sample」、ランタイムは「Python 3.9」を選択します。
その他の項目はデフォルトのままとし、「関数の作成」を押下します。
![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2300564/69b080e5-177d-abb3-29ee-84dcd2

元記事を表示

EventBridgeを使用した定期実行の間隔別にLambdaの処理内容を変える

ある検算処理を行って異常がないか確認し、その結果をSlackに通知するLambdaを作成しました。
Lambdaのトリガーは[EventBridge (CloudWatch Events) ](https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/eb-what-is.html#)を使用して、1時間毎と24時間毎に定期実行を行いました。
1時間毎と24時間毎で処理内容を変える方法について記載します。
開発言語はPythonです。

# EventBridgeでルールの作成
EventBridgeで下記のルールを2つ作成しました。

## rule-every-hour 
1時間毎の定期実行 “`rate(1 hour)“`
このイベントをLambdaが受けた場合、異常があれば通知する(異常がなければ通知しない)。

## rule-every-day 
24時間毎の定期実行 “`cron(0 10 * * ? *)“` 毎日午前 10:00 
このイベントをLambdaが受けた場合、異常がなくても結果を通

元記事を表示

【AWS】CDKv2で環境構築 Lambda編

# はじめに
現在運用中の環境をテスト用として複製する際に`CDKv2`を用いて
コード化することになったのでその学びです。

[DynamoDB編はこちら](https://qiita.com/yamato1491038/items/f388afa3aa4f701321f5)
[Cognito編はこちら](https://qiita.com/yamato1491038/items/bbef1df21e54e22d36ca)
[apigateway編はこちら](https://qiita.com/yamato1491038/items/63fc91325c6f72464b49)
[StepFunctions編はこちら](https://qiita.com/yamato1491038/items/7393c910f70bf241ed62)

# 準備

このへんの記事でまずは環境設定
https://aws.amazon.com/jp/getting-started/guides/setup-cdk/

今回は`TypeScript`を用いて実装しました。

“`
$ cdk ini

元記事を表示

ReactのaxiosでAWS lamdaをたたいたらCORSエラー

この前からAWS SAMにと取り組んでます。AWS上にlamda関数は構築できてブラウザからアクセスでは正常に帰ってくるけど、reactのaxiosで叩いたら、でました。いつも引っかかるやつ。CORSエラーです。

`
Access to XMLHttpRequest at ‘http://localhost:3000/hello’ from origin ‘http://localhost:3001’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
`

下記記事に助けられました、localでも同じです。かんしゃかんしゃ。

https://syachiku.net/react-axios-cors/

lamda関数の返り値に以下の内容でheaderを付与します。

“`
return {
‘statusCode’: 200,
‘headers’: {

元記事を表示

AWSマネージドを利用し、はじめてのWEB API開発をしてみた話

## はじめに

最近WEB APIやRESTについて学習中なので、AWSのマネージドを利用してWEB APIの開発をしてみました。

構成の概要や、開発中に参考になった記事、便利だなと思ったツールやデバックについて紹介したいと思います。

AWSマネージドでのWEB API開発に興味のある方に読んでもらえると嬉しいな、と思っています。

### 採用技術

– API Gateway
– Lambda
– DynamoDB

「まずは動くAPIを!」という事で、サーバーサイドの実装のみ行っています。
LambdaはPythonで実装しています。

### その他

– VSCode拡張機能
– REST Client(テスト用)
– Swagger Viewer(ドキュメント生成用)
– CloudWatch(デバック用)

「VSCodeの拡張機能を色々お試ししたい!」という目的もあったので、テストやドキュメント生成用としてVSCodeの拡張機能を利用しています。

### 構成

今回はシンプルなCRUD機能の実装という事で、辞書アプリケ

元記事を表示

pythonで書いたlambdaのreturnはjson.dumps()されている

# はじめに
もうタイトルがそのまんま結論なんですけど、
色々読んで試してやっと自分の中で解決したので記事にします。

対象読者は
+ 公式ディベロッパーズガイドを読んでもあまりピンと来なかった方
+ lambdaからの返り値に無駄にバックスラッシュついてて困ってる方

です。

# 結論
pythonで書いたlambdaのreturnはjson.dumps()されています。
なので一度json.dumps()したものを要素として渡すと
意図しないバックスラッシュがついてきます。

公式のディベロッパーズガイドの「値の返し(Returning a value)」のところ読むと書いてあるんですが、
最初は日本語版読んでも意味わかんなくて
英語で読んでやっとあれ?となって
いろいろ試してやっと「そういうことか!」となりました。

公式のディベロッパーズガイドはこちら
日本語版:[https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-handler.html#python-handler-return](https://docs

元記事を表示

RDS Ploxy 経由で MySQL にアクセスするLambdaを、VPC内で実行

# はじめに
RDS Ploxy 経由で MySQL にアクセスするLambdaをVPC内で実行させましたので、手順をまとめます。

![スクリーンショット 2022-06-23 22.00.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/6391a70c-3d26-f29d-2a5c-a8db47bbb6c3.png)

# RDS Ploxyの作成
RDS Ploxyは、以前作成した記事がありますので、こちらを参考にしてください。

https://qiita.com/hirai-11/items/07b25f81f1a983e0191c

# private subnetにLambdaを作成

## 設定

– IAMロール
– `AWSLambdaENIManagementAccess`を付与します.これによってVPC上でLambdaが実行できます。
– タイムアウト時間
– 30秒にします。実行に数秒かかります。
– 環境変数
– RDS_HOSTN

元記事を表示

Lambda で S3にアクセスするのに access id と secret key はいらないのねー

S3にアクセスしたい!から boto3を使うよ!
普通はこんな感じで、 id と key 渡すんじゃ
“`python:qiita.rb
s3 = boto3.resource(‘s3’,aws_access_key_id, aws_secret_access_key)
“`
でも Lambdaでは
“`python:qiita.rb
s3 = boto3.resource(‘s3’)
“`
でよいんですと!

でも`IAM設定ってものがいりまっせ`、だんな

# S3を使うための、IAM設定
1. 設定 > アクセス権限 
1. 「実行ロール」の中のロール名をクリック![スクリーンショット_2022-06-24_14_51_26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47236/a9718783-2986-5017-c775-5dbc063c0b20.jpeg)
1. 許可 「許可ポリシー」の右「許可を追加」から、「インラインポリシーを作成」![スクリーンショット_2022-06-24

元記事を表示

Lambda Layersの設定 Layer設定するだけでrequestsが使えるって

 lambdaで必要なライブラリはzipであげないといけない!けど、
### 皆んながよく使うやつは、Layerってとこに設定すればいいんですって!
さらに、
有志でこんなものが!
https://github.com/keithrozario/Klayers/blob/master/deployments/python3.8/arns/ap-northeast-1.csv
### このARNをLayerに設定するだけ、すてき!

# requestsの設定の仕方
コード の下

コードソース

コードのプロパティ

ランタイム設定

レイヤー
の右「レイヤーの追加」

1. レイヤーソース > 「ARNを指定」を選択
2. ARNを指定のテキストフィールドに
3. ここから入れたいものをさがして、そのarn欄をコピペ
https://github.com/keithrozario/Klayers/blob/master/deployments/python3.8/arns/ap-northeast-1.csv
今回は「requests」の latest の arn
![スクリー

元記事を表示

関連づけられてないEIPをSlack通知 & 削除するLambda

# はじめに
EIPの料金体系についてご存知でしょうか。
以下のケースで、EIPは料金が発生します。

1. 実行中のインスタンスと関連付けられている追加の IP アドレス(= インスタンスは実行中だが2個以上EIPが関連づけられている)
2. 実行中のインスタンスと関連付けられていないEIP
3. 関連付いているEC2が停止している
4. EIPを、1ヶ月に100回以上リマップ

https://aws.amazon.com/jp/ec2/pricing/on-demand/

ちょくちょく個人の検証環境にて2番目の**EC2に関連付いていない(= 使わずに放置されている)EIP**が湧くことがあります。(単純に消し忘れ)

EIPが1つ生き残っていた場合、1ヶ月あたり大体以下の無駄な費用が発生します。
(これを多いととるか少ないととるかはお任せします)

“`
0.005 × 24 × 30 × 135 = 486円

※計算に必要な値
EIPの料金:$0.005/h
1ヶ月:30日とする
1ドル:135円とする
“`

そこで今回紹介するLambdaを使ってこのEIPを一網打

元記事を表示

Lambda 最初に呼ばれる関数 ハンドラの設定

コード の下

コードソース

コードのプロパティ

ランタイム設定
の中の ハンドラ
右の「編集」から

[ファイル名].[関数名]
![スクリーンショット 2022-06-24 11.40.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47236/a4a001de-546f-a033-f725-f9c03c12c75b.png)

元記事を表示

【AWS】ECSタスクをLambdaから環境変数追加して起動する方法【Java】

# 最初に
ECSタスクをLambdaから起動するのに手間取ったため、その手法を書き記しておきます。
使用言語はJavaですが、ほかの言語でも似たような実装で実現可能なようです。

## やりたかったこと
* S3にファイルをアップロードしたことをトリガにしてLambdaを起動する
* LambdaからECSタスクを起動する
* アップロードされたファイルをECSでダウンロードする。(そのために、S3のファイル名などを知る必要がありました)
※ Lambdaだけで処理するのが簡単だけど、ストレージ10Gの制限があるためECSを使用することにしました。
![ECS-Lambda-AWS-picture.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2618997/d9d9b59b-9117-dfb5-9313-509720fe7e34.png)

## わからなかったこと
1. LambdaからECSタスクを起動する方法
1. 環境変数を指定してECSタスクを起動する方法(S3のファイルパスを指

元記事を表示

非VPC、VPC上のLambdaが リソースに対して実行する・される パターン集

# はじめに
Lambdaを使う上で、VPC内の`public subnet`、`private subnet`にあるLambdaが他のリソースにアクセスするパターンや、他のサービスからLambdaを呼ぶパターンなど、様々なパターンで実現可能かどうかまとめました。

# 非 VPC の Lambda がリソースに対して、アクセスする
![スクリーンショット 2022-06-21 22.39.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/57644825-aec1-e23b-ffe8-0bbeeb0148f1.png)

| Lambda → リソース |アクセス|
|:-:|:-:|
| Lambda → リージョンサービス |○|
| Lambda → public内 リソース | ○ |
| Lambda → private内 リソース | ✗ |

リージョンサービスのリソースに対して、Lambdaを実行することはできます。

Lambdaは、VPC内のサー

元記事を表示

OTHERカテゴリの最新記事