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

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

.NET 6とVS CodeでAWS Lambdaする

## 前提
– AWS CLI設定済み

## 環境構築

### VS Code
– C# for Visual Studio Code
C#開発環境

### dotnet系
– .NET6 SDK
公式からインストーラー落としてきて入れる。
https://dotnet.microsoft.com/ja-jp/download/visual-studio-sdks

– lambda開発用のテンプレート
“`powershell
dotnet new -i Amazon.Lambda.Templates
“`

– デバッグツール
“`powershell
dotnet tool install -g Amazon.Lambda.TestTool-6.0
“`

– デプロイツール
“`powershell
dotnet tool install -g Amazon.Lambda.Tools
“`

## やってみる

### プロジェクト作成
“`powershell
dotnet new lambda.EmptyFunction –name MyFunctio

元記事を表示

LocalStack ローカル環境でAWSを使おう

# この記事は?
AWSのエミュレーションツール[LocalStack](https://github.com/localstack/localstack)を使って仮想のAWS環境を立ち上げ、その中にLambdaとS3をデプロイして動かしたときの備忘録

https://localstack.cloud/

# LocalStackとは?
Dockerコンテナ内でAWSのエミュレートし、その環境内にデプロイしたりできるツール
無料版では利用できるAWSサービスに制限があるものの、メジャーどころは大体抑えられている

:::note info
無料版で利用できるのは[このページ](https://docs.localstack.cloud/aws/feature-coverage/#aws-feature-coverage)にあるサービスのうち`(Pro)`がついていないもの
**Lambda**, **S3**, **DynamoDB**など主要なサービスはだいたい無料で使える
:::

https://docs.localstack.cloud/aws/feature-coverag

元記事を表示

Flutter × Firebase Cloud Messaging × AWS Lambdaでリモートプッシュ通知を送りたい(2022/08)

# はじめに
初投稿です。

Flutterでアプリ制作を行っていた際にプッシュ通知機能を実装しようとして色々調べた際、様々な情報が錯綜しており、どの記事が正しいのかが分からなくなって色んなことを試した結果、大口の沼にはまり込んでしまったため、自分用の備忘録として残します。

同じ問題に直面している人の助けとなれば幸いです。

# 前提条件
リモートプッシュ通知を送る方法は様々あると思いますが、今回はプロジェクトの要件として利用していたAWS Lambda(以下Lambda)からFirebase Cloud Messaging(以下FCM)を利用してAndroid端末にプッシュ通知を送っていきます。今回は、LambdaはNode.js(TypeScript)で実装します。

iOS端末にプッシュ通知を送る際は、Appleの開発者サイトやXCodeで追加設定が必要になるのですが、今回は割愛します。

この記事では以下のことを行っている前提で説明していきます。
– AWSアカウント・Firebaseアカウント作成済み
– Flutterプロジェクト作成済み

# 事前準備
### Fir

元記事を表示

AWS Lambdaとは

# AWS Lambdaとは
AWS Lambdaは、**データやリクエストのリアルタイム処理やバックエンドの処理を、自動的に実行する仕組み**。このような処理のために専用のサーバーを準備や管理する必要がない。必要なイベントに応じて自動実行される。常駐サーバーとは異なり、プログラムの実行時のみに課金される。
**Lambda関数**と呼ばれる形式の関数を用いますが、これは新しい言語ではない。
よく知られるプログラミング言語で書いたコードをもとに「Lambdaコンソール」などを用いてグラフィカルに作成できる。使える言語は、java,C#,Python,Ruby,Node.js,Goなどで、よくある目的のためのテンプレートも揃っている。
Lambda関数は、Lambdaサービスに保存される。
何かのトリガーで、特定のAWSリソースにおいて実行される。有名な例は、S3バケットに画像が置かれると、サムネイル実行関数が呼び起こされ、サムネイル作成関数が呼び起こされ、サムネイルを自動的に作成する例。
# Lambdaの用語
Lambdaは、プログラムのコードをLambdaサービスにアップロードして

元記事を表示

はじめてのAWS Lambdaを用いたLINEbot作成!

## 概要

サーバーレスコンピューティングを実現するAWSサービスであるAWS Lambdaを勉強するため、LINEbotアカウントを作成するために使うMessaging APIとHTTPリクエストを送るためのPythonプログラムを用いて、簡単なLINEbotシステムの構築を行います。

## AWS Lambda

一般的に、インターネット上でプログラムを実行させるためにはインターネット上にサーバーを準備し、実行環境やプログラムを用意する必要があります。この場合、プログラムを実行するためにサーバー構築やインフラに関する知識や操作の手間が必要です。

これに対し、サーバーやインフラを準備する事なくプログラムをデプロイし実行することを**サーバーレスコンピューティング**と呼ばれています。AWS Lambda(ラムダと呼びます)はサーバーレスコンピューティングを実現するAWSのサービスです。AWS Lambdaを利用することで、エンジニアはプログラム開発のみに専念し、インターネット上でプログラムの実行が可能になります。

### AWS Lambdaのメリット
Lambdaの利用によ

元記事を表示

Lambdaを利用してIAMユーザ作成を自動化してみた

AWSのサーバレスアーキテクチャを実際に触ってみたくて手始めにLambdaを用いてみることにしました。

【やりたいこと】
![実現イメージ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2840619/3d24e664-fae4-50d0-74da-c1ca12dad527.jpeg)

ExcelベースのIAMユーザの登録申請書の内容を基に申請書をS3へアップロードしたらLambdaが実行されて申請書に記載されているIAMユーザを自動作成する。

【使用環境】
boto3
Python3.9
pandasライブラリ

【実現方法】
Excelベースでの読み込みは私には難易度が高かったのでcsv形式に変換するVBAを作成(この部分の詳細は割愛)

csv形式で以下のフォーマットで記載することに決定
1カラム目,2カラム目,3カラム目
IAMユーザ名,IAMグループ,メールアドレス

IAMユーザを作成する際のパスワードはセキュリティの観点からランダムに自動生成したいです。

さて、方針が固まっ

元記事を表示

「terraformを利用してVPC内のlambda起動→VPC外(パブリック)に戻す」の注意点

結論:VPCを「なし」に設定する(できない場合がある) or 再作成してください
vpc_configを消してterraform applyしようとすると・・・こんなエラーが
“`
error deleting Lambda ENIs using Security Group (sg-XXXXX): error waiting for Lambda ENI (eni-XXXXX) to become available for detachment: timeout while waiting for state to become ‘available’ (last state: ‘in-use’, timeout: 45m0s)
“`
手動は良くないですが色々手動でいじって以下のことがわかりました

1.ENIはセキュリティグループが利用していて削除できない
2.セキュリティグループはこんなエラーで削除できない
“`
3 のネットワークインターフェイスが関連付けられています。 ネットワークインターフェイスを削除するか、異なるセキュリティグループに関連付ける
“`
![i

元記事を表示

ServerlessFrameworkでAPI GatewayとLambda資材をgit管理する

# はじめに

– プロジェクト名はとりあえず「test-lambda」にする
– AWSでLambdaに設定するロールを作成する
– 下記を参考にServerlessFreamworkのインストールとAWSの設定をする

https://www.serverless.com/framework/docs/getting-started

https://www.serverless.com/framework/docs/providers/aws/guide/credentials

## やること
– ディレクトリ構成を参考に必要なものを配置する
– serverless.ymlを書く
– 「sls deploy」でデプロイを行う
– デプロイに問題なければgitに入れて終わり

## ServerlessFreamworkのディレクトリ構成
“`
test-lambda
├─lambda(このディレクトリ下にlambdaの各関数を配置)
| ├─user
| | └─index.js
| └─user-regist
| └─index.js
├─model(APIGatew

元記事を表示

SAMのAutoPublishAliasでバージョンがうまく発行されないときの対処法

# はじめに
みなさま,こんにちは.
[株式会社オプティマインド](http://www.optimind.tech)にて,GISエンジニアをしている@tkmbnです.

# 概要
SAMを用いたLambdaのデプロイ時にAutoPublishAliasを利用すると,うまくバージョンが発行されないときがありました.
対処法をいろいろと探っていたところ,良さそうな対処法を見つけたので,ご紹介いたします.

# なぜ書いたか
SAMを用いて,Lambdaをデプロイしたが,以下のパターンのときに,うまくバージョンが発行されませんでした.
– Layerの中身のみ変更
– Lambdaの環境変数のみの変更

手動で,バージョンを発行し,エイリアスに設定をすれば,やりたいことはできるんですが,
CanaryDeployが適用できないのが課題でした.

# 本題
## 現状の環境
– SAM テンプレートの内容
– API Gateway
– Lambda (複数)
– 複数Lambda内で共通で利用するものを集めたLayer
– 環境

元記事を表示

StepFunctionsでLambdaの並列処理をしたかった話

### やりたいこと
1. DBに保存されているトークンを取得し、トークンごとに複数の外部APIを実行したい。
1. APIの実行でエラーとなった場合に全体の処理を止めたくない。
#
### StepFunctionsにおける並列処理
StepFunctionsには並列処理を行うTypeとして、ParralelとMAPがあります。

Parralelは同じ入力を使用してブランチごとに定義した処理を実行するのに対し、MAPは配列の要素ごとに同じ処理を実行するという違いがあります。

[Parallel](https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/amazon-states-language-parallel-state.html)
[MAP](https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/amazon-states-language-map-state.html)

今回はParallelとMAPを組み合わせて使うことにしました。
#
###

元記事を表示

API Gatewayを環境構築しながら学ぶ

「APIを実装する」ということが良く分からなかったため
一度環境構築してみることで理解を深めた際のメモです。
AWSの無料利用枠で試してます。
– **最終目標**

AWS API Gateway と AWS Lambda で `Hello Nodejs!` を出力する

## 1. Lambda関数の作成
API Gatewayを作成する場合、API Gatewayのバックエンドを指定しないといけません。
そのバックエンドをLambda関数としたいので、その関数※を作成します。
※API Gatewayからのデータを受け取り、そのまま返すLambda関数

– 関数の作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1665304/6ecae22d-8e8b-30a2-1400-0a27e6efaaa6.png)

> – apiGateWayTestという関数名で作成
![image.png](https://qiita-image-store.s3.ap-northeast-

元記事を表示

AWS LambdaでStableDiffusionを動かしたい

# はじめに
StableDiffusionが衝撃的です。
使用するにはGPUが必要という要件があったためAWS AWS SageMakerで動かしていたのですが、色々と試すのにGPU付きのインスタンスは費用が若干気になるところ。
ですが先日、CPUのみで動作する「stable_diffusion.openvino」が公開されました。
動作要件を見ると「AWS Lambdaでも動きそう?」→「動いた!」ので、一先ずここに共有します。

本記事は以下に示す「stable_diffusion.openvino」をAWS Lambdaに移植したものです。

https://github.com/bes-dev/stable_diffusion.openvino

# 作成した画像サンプル
「墨田川」と「桜」のキーワードで作成した画像です。
AWS Lambda上で作成しましたが、1枚作成するのに4分前後かかっています。
![sd_2022-09-02-09-12-20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com

元記事を表示

AWS CLI による Lambda Layer (Python) 作成・公開手順

# 手順

`python` という名称でディレクトリを作成します。(`python` でないと Lambda 上でライブラリをインポートできません)

“`sh
% mkdir python
“`

ターゲットディレクトリを `python/` に指定して、利用したい任意のライブラリをインストールします。

“`sh
% pip install -t python/ requests
“`

zip で固めます。

“`sh
% zip -r layer.zip python
“`

S3 上にアップロードします。`${BUCKET_NAME}` およびプロファイルは自身の環境に合わせて読み替えてください。

“`sh
% aws s3 cp layer.zip s3://${BUCKET_NAME}/layer.zip –profile main
“`

AWS CLI コマンド `publish-lambda-layer` [^1] を利用して Lambda Layer を公開します。

“`sh
% aws lambda publish-layer-ver

元記事を表示

AWS CDK初心者が爆速でS3とかlambdaとか「とりあえずそれっぽく」作る方法

# 概要
AWSをwebから初めて使うときって特に気になりませんが、少し慣れてくると
「これいちいち所望のアプリ見に行って設定直すのめんどくせえ、、、!!!!」、と思いませんか?~~(思いますよね???)~~

lambdaとS3を連携したりとかよくあると思うんですが、毎回どのlambdaだっけとか探すのめんどくさい。

これってなんとかならないの〜??
ってことで今回はAWS CDKを使って設計をコード化してまとめてAWSにあげてみます。
コードでインフラストラクチャを定義できるようになりましょう!

初心者用なので、「とりあえずそれっぽく」を軸に話します。
イメージはこんな感じ。

![スクリーンショット 2022-08-31 22.36.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1005334/33a4f94e-95c2-1804-7b89-75ec53553c90.png)

# AWS CDK
そもそもAWSCDKとは?となる人もいるので公式から説明を拝借。
> AWS Clou

元記事を表示

Node.js で AWS Elemental Media Convert を使って動画変換してみた

## 目的
ユーザがiPhone で撮った動画をweb上で再生できるように、mp4フォーマットに変換してみました。

## システム構成
![Untitled Diagram.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821499/6ce38bee-3e5e-843b-7b92-7429ad5b45bf.jpeg)

## 構築手順
1. S3 bucket `s3-media-convert` を作成します。(ユーザの動画は S3 の Presigned URL などを使ってこの bucket にアップロードさせます。)
2. node.js の lambda `trigger-media-convert` を作成します。
3. `trigger-media-convert` lambda に トリガーを追加します。
![Screen Shot 2022-08-31 at 16.44.02.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

KintoneからLambdaを経由してAmazon PinpointでMAを実装①

## はじめに
KintoneでMA構築する上で、Lambdaを経由してAmazon Pinpointでメールの配信をする構築方法を説明します。
##### 1.Kintone(CRM)の顧客情報をLambdaで取得する
![kintone1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821360/5465a8af-b59d-d418-c630-1d037659ac2c.png)
##### 2.pinpointに対してendpointを登録する
![kintone2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821360/22e3df49-055b-d0f2-0fb3-c4aa0a8becaa.png)

##### 3.AWS コンソールで配信環境を設定する
* 3-1.セグメントを作成する
* 3-2.メールのテンプレートを作成する
* 3-3.キャンペーンを作成して配信設定する

配信グループで設定し

元記事を表示

ラズパイとAWS IoTを使った見守りシステム自作で学んだこと(9)S3にuploadした映像の確認用web page

[(6)稿目](https://qiita.com/nsaito9628/items/8126fda477d61d542414)でuploadしたmp4ファイルの表示部になります。

mp4ファイルを確認する為のweb page Projectの構成と、ラズパイでイベント録画してS3にuploadした後にmp4ファイルを処理するLambda関数を説明します。

## web page Projectの構成
web page Projectの[リポジトリー内格納場所](https://github.com/nsaito9628/Monitoring-system-with-Raspberry-Pi-and-AWS)は/Monitoring-system-with-Raspberry-Pi-and-AWS/templateになります。

CloudFrontオリジン(兼mp4のupload先)として構築した[S3バケット](https://qiita.com/nsaito9628/items/312112486ce61ba396ae#origins3bucket)のrootにはindex.

元記事を表示

【AWS】LocalStackを使ってみる

2022/7/13にAWSの[LocalStackがバージョン1.0に到達してGAになった](https://localstack.cloud/blog/2022-07-13-announcing-localstack-v1-general-availability/)ので、簡単に使い方を確認したいと思います。
この記事では環境構築にコンテナを利用します。Docker, Docker Composeをご準備ください。

# 環境

OSはWindows11です。
(Docker, Docker Composeが使用できるならば、その他OSでも動作するように考慮しているつもりですが、動作確認ができていないです…。)
![env.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1166959/83061e13-d52e-ed8a-4697-311324f886fb.png)
“`bash:Windows
$ ver
Microsoft Windows [Version 10.0.22000

元記事を表示

コピペでできるCloudWatch LogsからSlackに通知するコード

Node.jsだと、レイヤーを導入するのが面倒なので、今回はPythonで。

1. 環境変数`WEBHOOK_URL`にSlackから生成したWebhook URLを設定してください。
2. トリガーのソースはCloudWatch Logsで、ロググループを指定しておきます。

従来のSlack Appを使わないIncoming Webhookはレガシーな方法のようです。1Webhook/チャンネルになったんですね。

https://qiita.com/kshibata101/items/0e13c420080a993c5d16

なので、今回はSlack Appを使うことを前提にしたコードです。
CloudWatch LogsのPayloadを全て出力するようになってます。

“`python
#!/usr/bin/python3.9
import urllib3
import json
import base64
import gzip
import os

http = urllib3.PoolManager()

def lambda_handler(event, con

元記事を表示

AWS Lambda を時刻起動する

EventBridgeの時刻起動ルールを作成して、指定時刻にAWS Lambdaを起動する方法を解説します。

## Lambda関数のアクセス権限を設定する

EventBridgeからLambda関数を起動できるよう、アクセス権限を設定します。

– [設定]から[アクセス権限]を選択します。

![image](https://user-images.githubusercontent.com/38905609/187126403-5a8ef77e-653d-4513-9d22-b136be7c2a3d.png)

– [アクセス権限を追加]を選択します。

![image](https://user-images.githubusercontent.com/38905609/187126658-ebfdeaea-677f-4eca-af19-14645c9b3346.png)

– ポリシーステートメントを指定します。

1. [AWS]のサービスを選択
1. サービスに[EventBridge]を選択
1. ステートメントIDは任意のIDを指定
1. プリンシパルは初期表示値

元記事を表示

OTHERカテゴリの最新記事