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

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

Workload Identity連携で、GCP操作するLambdaをAWS SAMで作成

# はじめに
AWSからGCPの操作がセキュアにできるWorkload Identity連携を、AWS SAMを使って作成したLambdaから行った内容を記事にしました。

# やったこと

## GCP側
以前の記事をそのままやっています。

https://qiita.com/a_b_/items/f30b85be4f44ed1f620c#gcp%E5%81%B4

こちらで作られたファイルをそのまま使います。

## AWS側

### Cloud9

#### 環境
AWS SAMを実行するので、ボリュームは50GB程度あるといいです。
以前記事にした内容と同じ環境でやっています。

https://qiita.com/a_b_/items/6b02e08ecacdd21524c2#%E7%92%B0%E5%A2%83

#### 設定
ローカルでテストを行う際に、Cloud9からGCPにアクセスできるよう、EC2にIAMロールを付けます。
前回の記事と同様です。

https://qiita.com/a_b_/items/102dfa252761eceab528#cloud9

元記事を表示

AWS Lambda Function URLsの使い方

# AWS Lambda Function URLs

## やれること
– Lambda関数に紐づくURLを作成する
– 簡単に関数の前にHTTPSエンドポイントを設定する

## 何が嬉しい?
### Lambda Function URLsが無い時
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2707757/b2c1e1d9-716d-5f13-59ba-502152ada274.png)
今まではこんな感じで、API GatewayやAppSync、ALBをLambdaの前に置いてました。

### Lambda Function URLsがある時
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2707757/bd9b2daf-7a91-0ee8-8422-e80fea096c41.png)
これだけでOK!

## やり方
1. Lambda関数の作成で詳細設定を開く
![im

元記事を表示

Amazon SageMakerノートブックインスタンスの長時間稼働を自動検知する

# はじめに
ご覧いただきありがとうございます。

[前回](https://qiita.com/gahirosan/items/257116510b133c1a2889)の記事で、EC2インスタンスの長時間稼働を検知して、自動通知を送る検証を行いました。

今回SageMakerノートブックインスタンスの長時間稼働を検知して、自動通知を送るようにします。
前回のようにRunCommandを使った検知はできなかったので、CloudWatchのログを利用した検知方法を検証します。

# 概要
(★)がついているセクションは、手を動かして頂く項目です。

1. 今回の構成(★)
2. SageMakerの環境構築(★)
3. SNSトピック/サブスクリプションの準備(★)
4. Lambda実装(連続稼働の検知)(★)
5. EventBridgeで検知を自動化する(★)
6. 挙動確認(★)
 

事前準備
– AWSアカウント作成
– AdministratorAccessを付与したIAMユーザーの作成

# 1.今回の構成
– Amazon SageMaker
– AWS Lambd

元記事を表示

VSCode & Docker で(自称)モダンなLambda開発環境を作る

# この記事について

最近Lambdaの関数を作成する機会がありました。
その際に、DockerとVScodeを使用してそれっぽい感じの開発環境作ってみました。
その環境の作り方をこの記事にまとめます。

# 前提

– 端末
– macbook pro (mojave)
– VSCodeインストール済み
– Dockerインストール済み
– AWS CLIを実行するためのクレデンシャルが取得可能(権限は割愛しますが、Administrator Accessを持っていたら楽だと思います)
– https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-files.html

※DockerとVSCodeはバージョンが古すぎなければ大丈夫だと思います

# VSCode + Docker + Pythonの環境を作る

## VSCodeにremote-containerの拡張機能を入れる

拡張機能名`ms-vscode-remote.remote-containers`

元記事を表示

Python初心者がAWS LambdaのPython3.6→3.9へランタイム変更対応を行ってみた。

## 1.はじめに
2022年8月17日に[LambdaのPython3.6ランタイムが非推奨になるとのアナウンス](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.html#runtime-support-policy)がありました。
| 名前|識別子|オペレーティングシステム|非推奨化フェーズ 1|非推奨化フェーズ 2|
|:———–|————:|:————:|:————:|:————:|
| Python 3.6|python3.6|Amazon Linux|2022 年 7 月 18 日|2022 年 8 月 17 日|

現在のプロジェクトではPython3.6ランタイムを使用しているLambdaが開発環境2つ、本番環境2つの合計4つありました。
今回はバージョンアップで追加された新機能等は使用せず、バージョンアップのみの対応を行う事となります。
私はAWS実務1か月、Python実務1か月の初心者で、初めて行った

元記事を表示

誰よりも易しくAWS LambdaにHello World!!

# はじめに
WEBアプリ的なのをさっくり作ってみたくなりいろいろ方法調べてたのですが、
サーバ周りのこと全くわからんな…となったので
サーバレスなやつならさっくりいけるんちゃうか!(安直)
と思い、AWSの機能組み合わせればなんかできそう!という感触を得たので
まずはLambda触ってみますという記事です。

本格的なアプリ作りこむ前にいくつか実験したいことがあるの
できたところからちまちま記事にしていけたらと思います。

# AWS Lambdaとは
公式の概要は[こちら](https://aws.amazon.com/jp/lambda/)

私のざっくりとしたイメージは、
AWS他サービスでのイベントなどをトリガとしてなんらかの処理を行うものを
特に実行環境用意することなく用意できちゃう!というものです。
またサポートしている言語としてJava、Go、PowerShell、Node.js、C#、Python、Ruby があり
お好きな言語で書けちゃうというのもありがたポイントな気がします。
公式によると「関数の作成にその他のプログラミング言語を使用できるようにするための R

元記事を表示

lambda から OpenSearch ( ElasticSearch )にqueryする

# はじめに
定期的にOpenSearchからデータ(ドキュメントの件数)を取得し、cloudwatchのカスタムメトリクスとして設定したかったので、lambdaからOpenSearchのデータ取得することを検討しました。curlの実行事例は多くありますが、lambda(python)はあまりなかったのでメモしておきます。

# lambdaの設定
lambdaがOpenSearchにアクセスできる必要があるため、OpenSearchと同じVPCに配置しておきます。また、セキュリティグループを設定します。

# OpenSearchに対してQueryする
pythonで書きました。専用ライブラリなどはなく、普通にjsonでhttpリクエストします。
query条件に応じて、URLとBodyを設定します。curlでリクエストできていれば、同じ内容でリクエストすればOK。

“` py
import json
import boto3
from urllib import request

def lambda_handler(event, context):

#URL

元記事を表示

SQSのキューをトリガーにしてLambdaでメッセージを受信する(Python)

## はじめに
[S3をトリガーにしてLambdaでSQSにメッセージを送信する](https://qiita.com/ybsh2891/items/55a2c95a15234acd64d7)の続きとして、SQSのキューに入ったメッセージをLambdaで取得する方法のメモ。

## 目標
図のように、SQSをトリガーにして、Lambdaを起動させる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1259842/0c31e192-bcc3-6325-7737-c610b4e790ec.png)

## 1. SQSでキューを作成する
### キューの新規作成
キューを新規作成する。詳細は[こちら](https://qiita.com/ybsh2891/items/55a2c95a15234acd64d7#1-sqs%E3%81%A7%E3%82%AD%E3%83%A5%E3%83%BC%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)を参照。

元記事を表示

S3をトリガーにしてLambdaでSQSにメッセージを送信する(Python)

## はじめに
ひとまず、S3に新しいファイルを保存した際にLambdaを起動したり、SQSにメッセージをキューイングしたりしたときの手順。初歩的な部分から書いています。ところどころぼかしあります。
SQSにキューイングして処理する部分については[こちら](https://qiita.com/ybsh2891/items/c137660f72007b73dbe1)。

## 目標
図の通り、S3にcsvファイルが入ったらLambda経由からSQSにメッセージを投げる仕組みを作成する。
![s3tosqs.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1259842/904ab2ec-148b-906a-f3df-d3d47bf61789.jpeg)

## 1. SQSでキューを作成する
### Amazon SQSでキューを作成
「キューを作成」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1

元記事を表示

AIで一問一答を自動生成するAPIを作った話【Creating an AI-powered Q&A API】

# 完成品
![スクリーンショット 2022-06-03 18.42.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2503518/6227f908-5d69-626d-2bbd-5a3e24333225.png)

# 関連記事
[テレワーク孤立を解消する、なんでも相談Botをチャットに入れる方法](https://qiita.com/ssc-yshikeda/items/acae1fa00319ba3c4d97)
同じOpenAIのAPIを使っています。おすすめです。
本記事のタイトルも考えてもらいました。
![スクリーンショット 2022-06-03 19.12.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2503518/480d64ba-4acd-c2fa-957b-3c87e7c54565.png)

# 一問一答を自動生成したいという夢
私は一問一答形式の勉強が好きです。
テンポよく学習し、その

元記事を表示

[AWS Lambda] Pythonで外部モジュール(Pillow)を使う

# AWS Lambdaで外部モジュールを追加する方法を情報まとめた
AWS Lambdaだと使えないライブラリ(モジュール)がありますね。追加が必要な場面がありますので外部モジュールの追加についてまとめます。

![amazon_awslambda_logo_icon_167887.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260345/f2d6c424-010e-6845-9656-63ee0a4e6716.png)

今回LambdaでS3にアップされた画像いじりたいのでで`Pillow`使おうとしました。
モジュールをzipでアップすればいいのは知っていたのでpip installでデータ取得できたらzipにしてOKでしょ!
と思ってテストを実行したら

“`
[ERROR] Runtime.ImportModuleError: Unable to import module ‘lambda_function’: No module named ‘PIL’
“`

とエラー。pip in

元記事を表示

ローカルにてLambda関数を組む二つ方法まとめ(VSCode,Pycharmなど)

方法としては下記の2種類です。

# 1、Dockerを利用してローカルで実行
手順は[この記事](https://qiita.com/zukakosan/items/9c01aba5ff537382c856)の通りですが、実際設定・実行する時は二つ問題が発見しました。
①VSCodeにの`app.py`ファイルには`Run Locally | Debug Locally | Configure`が表示せず、代わりに`AWS: Add Debug Configuration | AWS: Edit Debug Configuration`が表示しました。記事の[ここに書いている内容](https://qiita.com/zukakosan/items/9c01aba5ff537382c856#vscodeでlambdaをローカルテスト)と違います。なんか仕様変更らしいです。
`Add Debug Configuration`或いは`Edit Debug Configuration`をクリックしたら、`launch.json`デバッグ設定を追加しまして、`Edit SAM Debug C

元記事を表示

【boto3】API Gateway経由で一定時間以上起動しているEC2インスタンスを検知し、ユーザーに通知する

# はじめに

ご覧いただきありがとうございます。

業務の中でAmazon SageMakerを利用しているお客様と話すことがあります。
使用するノートブックインスタンスのスペックが高いので、起動し続けるとお金がかかります。

連続稼働時間を検知して自動通知を行えないかと試行錯誤する中で、そもそも普段使用しているEC2インスタンスの連続稼働時間を検知してユーザー通知する方法についても検討を行いました。

Lambdaを使用して「EC2インスタンスが一定時間以上稼働しているか確認して、1時間以上稼働していたらユーザー通知を行う」という検証を行ってみました。

# 概要

(★)がついているセクションは、手を動かして頂く項目です。

1. 今回の構成
2. 下準備(★)
3. EC2の連続稼働時間を検知するには?(★)
4. EC2をSysmtes Managerで扱えるようにする(★)
5. LambdaからEC2の連続稼働時間を取得する(★)
6. 稼働時間が一定時間を超えた場合、SNS通知を管理者に送る(★)
7. API Gatewayを経由した手動実行(★)
8. (おまけ

元記事を表示

平日に起動するLambda関数を作成してみた

## 概要

平日の営業時間は処理を実行したいが、土日祝日は処理を動かしたくないケースがあるかと思います。
そこで平日のみLambdaを実行し、土日祝日はLambdaを実行しないようにする構成をCloudFormationで作成します。

## 今回の構成を作成する前に

まずは、月~金に処理を実行し、土日は処理を実行しない場合の構成をCloudFormationで作成してみます。

### 構成
構成としては以下のようなシンプルな形になります。

![構成図-1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/78cd9af3-d899-dd43-3133-902f7c0122a3.png)

### リソースの作成に使用するファイル
リソースの作成には以下のテンプレートを使用します。

“`template.yaml
AWSTemplateFormatVersion: ‘2010-09-09’
Description: “Periodic Execution Function Templ

元記事を表示

インターネットと通信するLambda関数はプライベートサブネットに配置する必要があるという一見矛盾した話

正確には「VPC内に配置したLabmda関数がインターネットと通信する場合」の話しです。
Lambda関数をVPC内に配置するときはこうしろっていうのは検索すればすぐ出てくるのですが、理由が書かれてない記事が多いので取り上げてみました。

## 背景
Security Hubを導入したところ準拠すべきセキュリティルールの中に「Lambda関数はVPC内に配置せよ」とあったので、適当なVPCの適当なパブリックサブネットに配置した。

## 事象
EC2を自動起動停止させるLambda関数が「Task timed out after XX.XX seconds」で動かなくなった。

## 対応1 (解決せず)
タイムアウトを伸ばしてみた。→解決せず
元々タイムアウト3秒で正常に動いていたが、エラーメッセージがタイムアウトなので30秒まで伸ばしてみたが、それでもタイムアウトする。

## 原因
今回言いたかったのはこれ。
実はLambda関数はパブリックサブネットに配置してもパブリックIPが払い出されないらしい。
AWSのドキュメントに下記の記述があった。

[VPC 内のリソースにアクセス

元記事を表示

lambda_runtimeのレスポンスオブジェクト作成に使えるクレートを作った話

ServerlessFramework のプラグインである [serverless-rust](https://www.serverless.com/plugins/serverless-rust) を使用して、API GatewayとAWS Lambdaを使ったAPIを作成しようとしていた。

Rustでラムダ関数を作成するのに便利なクレートはないだろうか?と調べたところ、[lambda_runtime](https://crates.io/crates/lambda_runtime) なるものを見つけた。
おおこれは便利だ、とサンプルコードをそのまま使用してみた。何かあれば修正してデプロイすれば良いし、無料枠を潰すほど実行することもないだろう。できればデプロイにかかる時間を有料枠で買えればよかったが…

[紆余曲折](https://qiita.com/mwataame/items/5247a1deb98e68561413)あったものの、serverlessコマンドで無事APIを作成することはできたようだ。
試しに実行してみよう。

“`
$ curl https://xx

元記事を表示

今さらRustランタイムを使用してAWS Lambdaで関数を作成してみたのだが…

### はじめに

– 基本的にAWSのラムダはRuby2.7ランタイムでServerlessFrameworkを用いてデプロイしている。
– Rust言語でラムダ関数をデプロイできると聞いていたものの試したことはなく、思い出したのでせっかうだから試してみたら、意外と躓いてしまった。
– 結果的に大した話ではなかったのだが、同じ沼にはまってしまっている人がいないとも限らないので残しておく。

### 実行環境

– Ubuntu20.04 on WSL2
– rustup 1.24.3 (ce5817a94 2021-05-31)
– cargo 1.56.0 (4ed5d137b 2021-10-04)
– serverless@3.4.0
– serverless-rust@0.3.8

# 普通にラムダ関数を作る

### コードの用意

AWSがRust向けのSDKを提供してくれているので、いつもお世話になっているrusotoではなく、lambda_runtimeというクレートを使用する。

“`toml:Cargo.toml
[package]
name = “lambda

元記事を表示

【AWS】関数URLを利用して外部からLambda関数を呼び出す

# 1.はじめに
どうも、ARIの名古屋支社に勤務している愛知県民です♪
(/・ω・)/

2022年4月6日にLambda関数に「関数URL」という機能が追加されたようです。

https://aws.amazon.com/jp/about-aws/whats-new/2022/04/aws-lambda-function-urls-built-in-https-endpoints/

一言でいうと、API Gatewayの設定なしで外部からLambda関数を呼べるみたいです!
そこで今回は**Lambda関数の関数URLの使い方を説明したいと思います♪**
AWSについて勉強中の方の参考になれば幸いです。
(*^^)v

# 2.用語の説明
## 2.1.Lambdaとは
LambdaとはAWSのサービスの1つで、コードを書くだけで即実行ができるサービスのことです。
サーバの設定等が不要なため、便利です。

ただし、15分以上続けて実行することはできないため、
複雑なアプリケーションの場合はEC2やECRでの実行が必要となります。

# 3.前提条件
* Lambda関数が作成済で

元記事を表示

S3トリガのLambdaを作成する際の注意点について

## 事象
今回、AWS S3にファイルがputされたことをトリガに起動するLambdaを作成したのですが、ファイルサイズが大きいファイルを該当のS3バケットにアップロードした際にイベント通知がされずLambdaが起動しないというトラブルがありました。
その原因と対策を共有させて頂きます。

## 原因
そもそもS3には様々なイベント通知のタイプが存在します。

S3トリガのLambdaを作成する場合は、トリガーとしてS3バケットに対してどのようなアクションがあった時に通知を送るかを設定する必要があります。

今回の場合は、S3にファイルが配置(PUT)された時にLambdaを起動させたかったので、以下のPUTのイベントタイプを設定しました。

イベントタイプ:s3:ObjectCreated:Put

AWSのドキュメントを見て頂くと全てのイベント通知のタイプを確認できます。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinati

元記事を表示

Lambdaの説明とlambdaのlayersの作り方

## lambdaとは

AWS Lambda は、サーバーレスでイベント駆動型のコンピューティングサービスであり、サーバーのプロビジョニングや管理をすることなく、事実上あらゆるタイプのアプリケーションやバックエンドサービスのコードを実行することができます。インフラストラクチャのプロビジョニングや管理をすることなくコードを実行コードを書いて、.zip ファイルやコンテナイメージとしてアップロードするだけです。

### サーバーレス

サーバーではなくて、その場でコードを実行する環境です、trigger(s3,SQSなど)で実行しても良い、定期実行もCloudwatchイベントからでも出来ます、サーバーと違って使ってる分だけを支払いします。同時実行も1秒で1000件まで出来ますのでインフラが楽です。

### 使い方

Lambdaを作るには割と簡単です!名前と言語とアーキテクチャを選べたらもうコード修正とテストが出来ます。

名前はエンドポイントになりますので気をつけてお名乗りください。

環境としては色々の言語は出来ます。

![Screen Shot 2022-05-27 a

元記事を表示

OTHERカテゴリの最新記事