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

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

自己学習記録:TypeScript を Lambda で使う為には

# 背景
業務で AWS や JavaScript などが必要になった、おじいちゃんの学習記録。

Lambda では TypeScript を使えないってことで、使う方法は?って探したところ
Serverless Framework が見つかった。

で、試してたら、なんか色々あることを知らされる・・

– serverless
– SAM
– AWS-ToolKit for VSCode
– 結局は、SAM ?

## Serverless に対する期待
– TransCompile しながら Lambda への Deploy が出来そう
– Serverless Offline もあるので、うまくいったあとは、開発は Offline で
– Google Cloud Functions/Azure Function などへも deploy 出来るので、覚えておくと役立つかも?

## SAM & ToolKit
AWS のサポート受けられるってことでやっぱりこっちなのかな・・と
まぁ、どっちも素人なので・・

こっちを選びたくない理由は、Docker 入れないと Of

元記事を表示

AWS Lambda for Python 用に cryptography を同梱する

# はじめに

Lambda 関数デプロイ時に JWT デコードに利用する cryptography を同梱してデプロイしたかった。
そのため、cryptography を含む AWS Lambda Layer を作成 or 再利用しようとしたのだが、[Lambda@Edge 用の関数は Layer を利用できないという制約がある](https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/edge-functions-restrictions.html)。

最初は local で pip でインストールしようとしたのだが、 cryptography のライブラリ自体が pip でインストールする時に環境依存のバイナリを入れてくるため、`pip -t .` でインストールしたモジュールをアップロードしても、基本的には動作しない。

そのための解消方法をメモする。

が、正直、原始的なやり方であり、かなり限定的なユースケースでしかないので、代用が可能ならそちらを利用した方が良いので本当に最終手段と

元記事を表示

Lambdaのメモリサイズの設定値について考える

## 概要

– Lambdaでのパラメータ値であるメモリサイズについての選択についての記事です
– Lambdaをあまり使ったことのない人、チュートリアルで使ったことのある人向けに記事です

## tl;dr

– Lambdaは実行時間課金なのでメモリサイズを大きくする=ランニングコストが高くなるわけではない
– コスパの良いメモリサイズを選択するために、「AWS Lambda Power Tuning」で測定してみましょう
– 並列処理(CPU依存)をしている場合にはメモリサイズとコア数の関係を意識してメモリサイズを選択しましょう

## Lambdaの課金体系

Lambdaの利用料金は、「リクエスト数」×「実行時間」によって決まります。
ここでいう実行時間は、「何MBのメモリサイズで何秒実行されたか」というような計算で決まります。
つまり、EC2などのサービスとは異なり、リソースサイズが大きいほど利用料金が高くなるというわけではありません。

例: メモリサイズを2倍にすることで実行時間が1/2になる場合は、利用料金としては変わらなくなります(変わらないということは

元記事を表示

Twitter 画像付き自動投稿つくってみた【AWS Lambda】

## あらまし
素数の日(=yy/mm/dd のdd 部が素数)[^1]にその素数にちなんだ画像を自動ツイートする機能をAWS Lambda で作成しました。

[^1]:yyyymmdd の8桁が素数の場合を「素数の日」と呼ぶ流派もあるようです。

元記事を表示

自己学習記録:Lambda で DynamoDB 連携

# 背景
業務で使うことになったので、ついていくために、おじいちゃんの自己学習記録。

Node.js + AWS で少し見えてきた。

ということで、今度は DynamoDB + Lambda で少し遊んでみる

ゴールイメージは、
1. DynamoDB のテーブルAに値を追加すると
1. Lambda で追加内容に応じて、別テーブルに項目追加

# まずは、DynamoDB のテーブル準備
[DynamoDB](https://ap-northeast-1.console.aws.amazon.com/dynamodbv2/home?region=ap-northeast-1#service) にて、テーブル作成

とりあえず、適当に以下で作ってみた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/b8aae7db-33ea-292d-abc9-6c93dd2bebdf.png)

## 命名規則とデータ型
https://docs.aws.amazon.com/ja

元記事を表示

[初心者向け]たった50行のコードでTwitter Botを作成してみる

## 目次
0. 概要
1. プログラミング初心者のアプリケーション開発の悩みとTwitter Botを題材にした理由
2. 今回、使用する各種サービスの説明とシステム全体の構成図(登場する用語の解説や構成の全体像の解説)
3. 実装
4. まとめ

## 1. 概要
### 記事の目的
本記事は、プログラミング初心者向けに、Twitter Botアプリケーションの作り方を紹介します。

記事の目的としては、`とにかくアプリケーションを動かしたい人に対して、簡単にアプリケーションが実装できることを理解してもらう`ことにあります。

この記事を通して、アプリケーション開発の第1歩目を踏み出してもらえたらと思います。

### 想定読者
多少言及がありましたが、想定読者は、`プログラミング初心者でアプリケーションとして動くものを作りたい人`としています。

### 説明しないこと
– 利用したサービスの選定理由や使用する技術に対する詳細な解説
– 今回のアプリケーションに必要なアカウントの作成手順(参考にできそう記事を添付します)

### 説明すること
– 今回使用する各種サービスの

元記事を表示

EventBridgeのサンドボックスを使いイベントパターンのチェックを行う。

# はじめに
先日、`EventBridge`で`CloudTrail`に記録されたイベントを契機にするルールを作成した際、四苦八苦しながら少しだけサンドボックスの機能を使ってみたので、残しておこうと思います。

# EventBridgeのサンドボックス機能とは
`EventBridge`のルールを「**イベントパターンを持つルール**」の形式で作成する場合、各サービス等から出力されるイベントに合致するように「**イベントパターン**」を記載して、イベントに合致した場合にルールを実行する動作となりますが、「**イベントパターン**」の記載方法があっているかを確認するためには実際にイベントを発生させて確認する必要があります。

ただ、記載方法があっているかを確認するのに毎回イベントを発生させるのは非常に手間なので、2022年3月に新たに「**サンドボックス**」の機能が加わりました。

– 「[Amazon EventBridge がマネジメントコンソールでルールフィルタリングとイベント変換機能の強化を開始](https://aws.amazon.com/jp/about-aws/wh

元記事を表示

The Lambda Function Returned An Error.の原因

## 背景
Amazon ConnectからLambdaを呼んでDynamoDBに値を保存する事を実現する上で注意する必要のある事を残しておく

## 起きうる現象
### 1. Roleの設定ミス
必要に応じて、設定>アクセス制限>実行ロールからロールを作成して付与してあげる必要がある。

### 2. returnでstatusCode:200を返していない事によるLambdaの失敗
下記エラーが発生する要因の一つとして、
“`
The Lambda Function Returned An Error.
“`
下記のようにreturn分で200を返していない事が挙げられる。
※[こちら](https://dev.classmethod.jp/articles/amazon-connect-calling-lambda-and-subscribe-lambda/ “クラスメソッド”)にも記載がある。
“`
return {
‘statusCode’: 200
};
“`

元記事を表示

SQS(FIFO) – Lambda構成の備忘録

# SQS(FIFO) – Lambda構成の備忘録

AWS歴5-6年なのにSQSを一度も触ったことがなく。。。
AssociateやPro資格は全て取得したので、多少のドキュメントレベルの知識ならあると思うんですが。
触る経験がないことが心残りでした。

そんな中、やっとSQSのキュートリガーを使ったLambdaの構成を検証する機会が舞い降りたので!
自分の備忘録がてらにメモを残します。

## 構成

![screenshot.78.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236355/eaf3b382-52b8-ef0a-a5cf-ff65b38ccffa.jpeg)

## CFnコード(yaml)

### IAM Role

“`yaml
AWSTemplateFormatVersion: ‘2010-09-09’
Description: [TEST] IAM Role for Lambda.
Parameters:
RoleName:
Type: String

元記事を表示

AWS Lambda + Translate で翻訳機能使ってみた!

*この記事はawsハンズオンビギナーズをやってみて復習として作成しています

https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Serverless-1-2022-reg-event.html?trk=aws_introduction_page

今回は、Lambdaをテスト実行してその結果を英訳できるところまでをやります。

## 1 Lambda関数の作成

以下の画面から「関数の作成」ボタンをクリックします。

![スクリーンショット 2022-11-20 15.46.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686037/a3aec48b-ffb2-c6ec-24fb-e142114865ae.png)

~設定項目~
1,任意の関数名を入力
2,ランタイムの設定(今回はpython3.7にしました)
3,アーキテクチャは「x86_64」を選択

![スクリーンショット 2022-11-20 16.00

元記事を表示

AWSの無料期間が終了するのでEC2からlambdaに移行した

## EC2の無料期間が終了してしまう(まずい)
AWSのEC2を使って、アニメの配信通知をつぶやく[Twitterボット]()を動かしているのですが、私のアカウントのAWS無料期間が2022年12月で終わってしまうため、その後は毎月約3000円の料金が発生してしまいます(もったいない!)。
費用圧縮のためにLambdaに移行しようと作業していた所、つまづいた箇所がいくつかありました。
同じようなことで困っている方の参考になればと思います。

### lambda(ラムダ)で出来ること
> Lambda は必要に応じて関数を実行し、1 日あたり数個から 1 秒あたり数千個のリクエストまで自動的にスケーリングします。課金は実際に消費したコンピューティング時間に対してのみ発生します。コードが実行されていない場合、料金は発生しません。

引用元:[Amazon](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html)

## 1) フォルダごと圧縮しても動かない
lambdaでは、プログラムを「lambda_funct

元記事を表示

初心者がAWS lambdaを使ってみたお話

初心者がAWS lambdaを使ってみた感想。
# AWS lambdaとは
Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを関数として実行できるサービスです。
関数とは・・・中学校の数学の関数、y=f(x)を想像してください。(懐かしい)
![Screenshot_20221119_161402.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933408/8c016890-457d-7dcd-11e4-b3d3e2c6e15b.png)
左からxが来てます。真ん中の四角が関数のf(x)。で、右側にyが出力されています。
つまり、xが何らかのブラックボックスf(x)を通るとyに変換されて出てくるわけですね。この四角のf(x)の部分がlambdaです。
左のxはトリガー、右のyは送信先になります。
# サーバレスって言ったって・・・
lambdaはサーバーレスであるのが特徴で、EC2とかにデプロイする必要がありません。ですが、実際にはそれを意識させないだけで、どこかの仮想環境に関数が

元記事を表示

Lambda で どうしても大きい容量のライブラリが必要な場合

Selenium を動かすときにはまったので、備忘録として。

https://valmore.work/aws-labmda-pytorch/

の内容の追加になります。

## Lambda のレイヤーでは対応できない場合

Lambda のレイヤーを使えば、250MB までのライブラリを比較的簡単にインストールできます。
ですが、250MB 以上になった場合は、どうしても EFS を使って EC2 も使って ライブラリを呼び出す必要があります。

使い方は、

https://valmore.work/aws-labmda-pytorch/

に載っている通りなのですが、いくつかハマるポイントがあるので、それを説明します。

#### 2049番ポートからのアクセスを開放しているセキュリティグループ

EC2 のセキュリティルールで、インバウンド 2049・アウトバウンド全許可のルールを作りましょう。SSH も忘れずに。

#### Lambda への ポリシーのアタッチ

https://valmore.work/aws-lambda-s3/#lambda

にポリシーへのアタ

元記事を表示

LambdaからTeamsへ通知するAPIを作る方法

# はじめに
今回はAWSのサービスの1つである、LambdaでAPIを作って実行したときにTeamsへ通知がくるようにします。

## 開発環境
+ OS Windows 10(NVIDIA GTX 1650Ti,16GB RAM, i5-10300H CPU)
+ Visual Studio Code 1.73.1
+ Python 3.9

## 実際にAPIを作ります!
### TeamsでWebhookを使ってURLを作成
作成したURL用いることでTeamsに情報を送信できるようになります。
[公式](https://learn.microsoft.com/ja-jp/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook)に載っているやり方でURLを作成します。

1. 通知を出すチャネルから「・・・(その他のオプション)」をクリック
1. 「コネクタ」を選択したらWebhookを検索し、**追加**をする
1. 「構成」を選択
![MicrosoftTeams-image.p

元記事を表示

AWS Lambda の 環境変数のTZ 指定してもよさそう

# 結論
環境変数TZは予約されてないらしい

# 過去記事は信用しすぎるなって話

LambdaのタイムゾーンはデフォルトではUTCになっていて、タイムゾーンをAsia/Tokyoに変えたい
というのはよくある話だと思う。

しかし、「Lambda TZ」などで検索すると
Lambdaの環境変数は予約されていて、それを上書きできるというのが今後もできる保証がないから環境変数で指定しない方がいい

という記事が結構たくさんある。

しかし、AWSのドキュメントを見ると

> 以下の追加の環境変数は予約されていないため、関数設定で拡張できます。
> 予約されていない環境変数
> …
> TZ - 環境のタイムゾーン (UTC)。実行環境は、システムクロックを同期するために NTP を使用します。

(2022/11/16時点)

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-envvars.html#configuration-envvars-runtime

予約されてないってさ

AWSは更新があ

元記事を表示

vpc 内 Lambda から Lambda を呼ぶ( invoke する)場合、public subnet や private subnet などのパターン別に呼べるか検証してみた

# はじめに
LambdaからLambdaを呼ぶ時、以下のパターンでアクセス可能かどうか検証しました。
– vpc 内の public 内にいる Lambda が呼ぶ / 呼ばれる
– vpc 内の public 内にいる Lambda が呼ぶ / 呼ばれる (vpc endpointあり)
– vpc 内の private 内にいる Lambda が呼ぶ / 呼ばれる
– vpc 内の private 内にいる Lambda が呼ぶ / 呼ばれる (vpc endpointあり)
– vpc 外にいる Lambda が呼ぶ / 呼ばれる

# 構成図
以下のようにLambdaを呼ぶ側のLambdaと呼ばれる側のLambdaをそれぞれの2つずつ作成しました。
![スクリーンショット 2022-11-15 22.37.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/13fc38dd-86a6-cdaf-3100-7288cd3a089b.png)

# sg作成
まずsgを作成します

元記事を表示

ソースコード変えてないのにLambdaをデプロイしたら急にエラーになって焦った話

# 起きたこと
GitHub Actionsで毎朝自動デプロイを行っているServerless FrameworkのAPIサービス(API Gateway + Lambda)がある朝急にエラーを吐くようになった。

“`
TypeError: _convert_to_request_dict() missing 1 required positional argument: ‘endpoint_url’
“`

# 試したこと、調査したこと
## どこでエラーになっているか
[PynamoDB](https://github.com/pynamodb/PynamoDB)というライブラリを使っていて、それが吐いているエラーだということは確認できた。
ただ、掘っていくのが大変で真因を突き止めるのに難航。
ライブラリのバージョンは固定していたのでライブラリが更新されているわけではないと判断。

## エラーが起きてなかった時点の昨日のソースに戻して再デプロイして解消するか試す
もしソースの変更が原因なら解消するはずなのだが解消しなかった。

不可解なことに時間差でほぼ同様のソースがデプロ

元記事を表示

RSSとAWS-Lambdaを使って自社ホームページにQiita記事を掲載する方法メモ

# はじめに
RSSとAWSのLAMBDAを使って自社ホームページにQiita記事を掲載する方法のメモ
Qiitaに限らず、CORS制限のかかっているRSS取得全般で使えるのではないかと思う
本メモでは主に、
・QiitaのRSS取得ロジック(Lambda関数内)
・非同期でLambda関数呼び出し、XML形式からJsonへの変換(JS)
を記録している

株式会社Growfit HP

https://growfit.co.jp/
# 目次
1. [前提条件](#Chapter1)
1. [調べて分かったこと](#Chapter2)
1. [解決方法](#Chapter3)
1. [参考文献](#reference)


# 前提条件
・QiitaのRSS(記事情報)を取得してHtmlファイル(ホームページ)に追記したい
・Html,Css,Javascriptの構成で、バックエンドの言語とサーバー非使用


# 調べて分かったこと
・QiitaのRSSは、JSから非同期通信する際にCORS制限が

元記事を表示

AWS Lambdaで.NET Core 3.1から.NET 6に移行したときにやったこと

# はじめに

AWS Lambdaで.NET6がサポートされました。ですが.Net Core 3.1のMicrosoftのサポート期限が2022/12/13まで、AWS Lambdaにおける.Net Core 3.1のランタイムサポートは2023/1/20までとなっており、.NET Core 3.1から.NET 6への移行が必要になりました。
やってみると、項目によって`net6.0`だったり`dotnet6`だったりと、意外と紛らわしかったので忘れないようにメモしておきます。

# やったこと

## ターゲットフレームワークの変更

まずは言わずもがなですが、プロジェクトファイルのターゲットフレームワークを変更します。

“`diff_xml:***.csproj
netcoreapp3.1
+ net6.0
“`

## aws-lambda-tools-defaults.jsonの修正

AWS Toolkit for

元記事を表示

AWSIOT: 既存の Lambda にトリガーをかけるトピックの作成

既存の Lambda 関数を lambdatodb とします。

## ルールの作成
TESTlambda というルールを作成
トピックは、test/topica

“`bash:create_rule.sh
aws iot create-topic-rule –rule-name TESTlambda –topic-rule-payload file://new01.json
“`

“`json:new01.json
{
“sql”: “SELECT x AS vX,y AS vY,z AS vZ FROM ‘test/topica'”,
“ruleDisabled”: false,
“awsIotSqlVersion”: “2016-03-23”,
“actions”: [
{
“lambda”: {
“functionArn”: “arn:aws:lambda:ap-northeast-1:123454806

元記事を表示

OTHERカテゴリの最新記事