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

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

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 で翻訳機能使ってみた! サーバレス編No.1

*この記事は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

元記事を表示

chatwork-webhook→AWS Lambda →Googleスプレッドシートでメッセージを記録する

# 実現したいこと
chatworkの無料アカウントだと過去のメッセージが閲覧できなくなってしまったので、
閲覧期限が過ぎたメッセージを見返すために都度メッセージを記録する処理を作りたい。

# はじめに
復習を兼ねて記事にしました。
スプレッドシートウェブアプリとlambdaを併用する意味はあまりないと思います。
lambdaを使いたくなったというのと最初はメッセージの保存先をスプレッドシートにするつもりがなかったので、
結局この形になってしまいました。
特にこだわりがなければスプレッドシートウェブアプリをwebhook urlとして使った方が早いかもしれません。

# 環境
chatwork webhook
AWS Lambda
AWS API Gateway
python 3.9
Googleスプレッドシート
GAS
Windows 11

# 実行手順
## 1 スプレッドシートウェブアプリの作成

### [1] GASプロジェクトに以下コードを転記
“`
function doPost(e) {
const post = e.postData.contents

元記事を表示

初心者エンジニアが『Hello, World!をサーバーレスで実行する』公式チュートリアルやってみた。

# はじめに
今回はAWS公式から出ている、『「Hello, World!」をサーバーレスで実行する』というチュートリアルをやっていきます。
この記事はAWSアカウントを作り終わってることが前提条件になりますので、下記URLから作成をお願いします。

https://aws.amazon.com/jp/getting-started/hands-on/run-serverless-code/

### 自分のスペック
新卒でエンジニアになったが、Pythonに関しては簡単なものを読解、コーディングするぐらいの知識しかないです。
ほとんど初心者な人が今回はやっていきます。

### 環境
* Windows10
* Chrome

# 実行していく
### 関数作成までの手順
まず、AWSに入ってもらって左上の検索ボックスで「lambda」と検索して**Lambda**をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629918/4a9de036-5538-2b19-d56f-

元記事を表示

コンタクト追跡レコード(CTR)のFirehose~S3~経由のデータ連携 (後編)

# 前提条件
Saleforce API Version : v55.0
serverlessrepo-AmazonConnectSalesforceLambda : 5.19.0
この記事は、2022/10頃に書かれています。

AmazonConnect自体には、コンタクト追跡レコードをFirehoseに流す機能があるけど、連携用のLambdaは提供されてないけど、提供されてるLambdaを流用して、どうにかならないかな?というお試しした話の後編。

+ serverlessrepo-AmazonConnectSalesf-sfIntervalAgent-xxxxxx
+ serverlessrepo-AmazonConnectS-sfContactTraceRecord-xxxxxx

設定に迷った時に参照するのは、上記2つの『Amazon Connect Salesforce CTI Adapter』で作成されるLambdaです。

# Lambdaの作成
Lambdaの一覧画面から作成画面へ遷移する。

![Lambda_01.JPG](https://qiita-image

元記事を表示

[AWS Lambda Powertools Python]ログに実行ファイル名を含める

# 経緯

[AWS Lambda Powertools Python](https://awslabs.github.io/aws-lambda-powertools-python/latest/) [^1] のLogger機能はとても強力です。

ログを出力する目的は色々ありますが、デバッグ時のように処理を追いかける場面では「そのログがどこで出力されたのか」をまず知りたいのではないでしょうか。

デフォルト設定の出力では、 `location` 属性として出力されています。
下記の例だと、 `get_users` 関数内で、そのソースコードの40行目で出力したログであることがわかります。

“`json
{
“level”: “DEBUG”,
“location”: “get_users:40”,
“message”: “…
“`

シンプルな構造であれば「ああ、get_users()はあそこだな」とわかるでしょうが、いくつものファイルで構成されている場合は「get_users()ってどこの?」となりませんか?

# 出力内容の変更

出力内容をカ

元記事を表示

M1 MacでAWS Lambdaへ dockerイメージを cdk deploy すると exec format error になる

# 現象
M1 MacでAWS LambdaへDockerイメージをcdk deployしたところ、デプロイはうまくいきますが、Lambdaを動かすとexec format error になります。

“`
IMAGE Launch error: fork/exec /lambda-entrypoint.sh: exec format error Entrypoint: [/lambda-entrypoint.sh] Cmd: [app.handler] WorkingDir: [/var/task]
“`

# 対策
いろいろ調べるとM1 Mac上ではDockerイメージのビルドのデフォルトがArm64になっている(当たり前だが)ためでした。対処法として環境変数を設定してDockerのビルドのデフォルトを変更することもできるらしいですが、それだとコードを他の人に渡したときに同様のエラーを発生させることになるので、Dockerfileに記述するのがいいのではないかと思います。

“`Dockerfile:Dockerfile
FROM –platform=linux/amd64

元記事を表示

Lambdaコンソールに直書きしていたコードをAWS SAMに対応させる

## 概要
以前、LambdaをEventBridgeで定期実行するバッチを作ったのだが、
その際、Lambdaのコードをコンソール上に直書きしていた。

そうしたところ以下の問題が発生した
・デプロイの際、手動でコンソール上のコードを書き換える必要がある(めんどくさい&ミスする)
・テストがローカル環境でできない

この問題を解消するため、既存のLambdaのコードををAWS SAMに対応させてみる
本記事にはその際の手順を載せる

### 今回SAM対応させるアプリケーションの構成
LambdaをEventBridgeで定期実行しているだけ
![スクリーンショット 2022-11-05 17.21.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/813353/b9193cae-b949-7c2e-4ccf-02259971b50a.png)

## 対応後の感想
– メリット
– (小規模なら)対応が楽
– SAM CLIをインストールして、template.

元記事を表示

OTHERカテゴリの最新記事