Lambda関連のことを調べてみた2021年12月15日

Lambda関連のことを調べてみた2021年12月15日
目次

LINE BOTを用いてフォトシャワーを自作した

# はじめに
・そうだ、結婚式しよう
・コロコロウイルスの状況次第でゲストの皆様への連絡増えそう
 →連絡用のLINE公式アカウント作っておこう
・ついでにLINEのAPIで何かおもしろいことできないかなー
・この公式アカウントからフォトシャワーできたらおもしろそう
・ついでにメッセージも送れたらオリジナリティあっておもしろそう

ということで、LINE Messaging APIとクラウドサービスのAWSを利用して、オリジナルのフォト&メッセージシャワーを作りました。

# 構成
以下の構成で実装しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989761/855aed0f-3b67-d3df-173a-be83b10dba74.png)
ゲストの皆様にLINE公式アカウントを登録していただき、そこからテキストや画像を送ると、それらがブラウザ上に表示されるというモノです。テキストが送られた場合、ユーザ名とアイコンも一緒にブラウザ表示されるようにしています。

# LINEか

元記事を表示

AWS-CDKのCustomResourceでAPIGatewayのStageを更新する方法

# AWS-CDKのCustomResourceでAPIGatewayのStageを更新する

AWS-CDKのカスタムリソースを利用してAPIGatewayのStageを更新します。

cdkを使用するとAPIGateway+Lambdaを爆速で構築でき非常に便利ですが、CloudFormationの仕様上APIGatewayのStageを一度デプロイすると以降は更新を行ってくれません。おそらくcdkでAPIGateway+Lambdaを始めたばかりのほとんどの人が躓くポイントなのかなと思います。

そこで今回はカスタムリソースを使用してAPIGatewayの更新を行うスタックを作成してみました。

(AWS-CDK v2のGAおめでとう?)

`node`:v16.13.0

`aws-cdk`:2.1.0

今回のソースコードは[こちら](https://github.com/moricom/cdk-custom-resource)から確認できます。

## 環境構築

はじめにcdk用のフォルダを作って初期化します。

“`
mkdir cdk-custom-resource

元記事を表示

コンテナイメージを使ったLambdaのローカル検証用ツールを作った

:::note info
この記事は、AWS Lambda と Serverless Advent Calendar 2021 15日目の投稿です。
:::

https://qiita.com/advent-calendar/2021/lambda

# 記事の要約

1. Lambdaではコンテナイメージを利用した処理実行ができる。
2. Lambdaにデプロイする前にローカルでも検証できる。
3. 2.をサクッと出来るようにラップしたツールを簡単につくった。
4. 使ってみてね!

# 経緯

Lambdaではコンテナイメージを利用して、任意のコンテナ環境での処理実行を行うことができます。
(今回ここの詳細な実装方法は本質でないので割愛します。)

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images-create.html

一度使用する機会があり構築してみたのですが、実装したコンテナイメージをローカルで検証する方法が分からず彷徨っていると、[公式](https://docs.aws.amazon.com/

元記事を表示

ServerlessFrameworkでLambda + puppeteer

[Uzabase Advent Calendar 2021](https://qiita.com/advent-calendar/2021/uzabase) 15日目は @overgoro56 が担当します。

今年の夏くらいにブラウザ操作の作業で自動化したいことがあってLambda + puppeteerをServerlessFramework使って構築してみたので紹介します。

# Lambda + puppeteer で気をつける点
Lambdaデプロイパッケージのサイズ制限とpuppeteerのサイズとの戦いです。
250MBの制限とコンソールエディタ3MBの制限に気をつけます。

[Lambda クォータ](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/gettingstarted-limits.html) の一部抜粋

“`
50 MB (zip 圧縮済み、直接アップロード)
250 MB (解凍後)
このクォータは、レイヤーやカスタムランタイムなど、アップロードするすべてのファイルに適用されます。
3 MB (コ

元記事を表示

AWS Lambda->SNS>(chatbot)->Slack連携ができずに悩む

CloudWatchでサブスクリプションフィルタをLambda連携で作って、Lambdaで適当なsns.publishコードを書いて、Chatbotと連携済みのSNSトピックを指定してもSlackに通知されない。エラーは出てない。切り分けるとメールは送れる。Lambdaでコードの書き方に何か見落としがあるのか? アクセス権限が不足なのか? 意味が分からず色々試したり調べたりしているとクラスメソッドさんの天の声が.. (記事元はAWSのリファレンスではありますが)

https://dev.classmethod.jp/articles/tsnote-support-chatbot-launch-001/
Amazon SNS から AWS Chatbot を経由した通知がうまくいかない原因と対処方法

> Q: AWS Chatbot を使用して任意の通知を受け取ることができますか? いいえ、AWS Chatbot はドキュメントに記載されているサービスからの通知のみをサポートしています。サポート対象外のソースからのイベントはチャットルームに配信されません。

多分これだ..
今回でい

元記事を表示

RDS ProxyとIAM認証を使ってLambdaからRDSにアクセスする

# ポイントまとめ

– RDSProxyを利用する際は、RDSはパスワード認証に設定する。
– RDSProxyのIAM認証を利用するLambdaでは、RDS generate-auth-db-tokenを利用して認証トークンを取得する。

# 概要
ワークロードでLambdaとRDSを組み合わせる場合、LambdaがRDSのコネクションを食いつぶしてしまうという理由から長らくアンチパターンとされてきました。
しかし、[RDS Proxy](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/rds-proxy.html)ができてからはその弱点も解消され、採用されているユースケースも増えているのではないかと思います。
この記事ではLambda(Python)からIAM認証を使ってRDSProxy経由でRDSにアクセスできるように、RDSその他を設定する方法を紹介します。
ハンズオン的に利用してもらえると幸いです。

また、今回は長くなりすぎないようにネットワークの設定や踏み台用インスタンスの作成、RDSサブ

元記事を表示

【AWS】Aurora MySQLのレコードが操作されたら、SNSにTopicを発行したかった

# やりたかったこと

Aurora MySQLの特定のテーブルのInsert/Update/Deleteに反応して、
該当レコードのPKをSNSのTopicにpublishしたい。

# さいしょにやったこと

AuroraにはLambdaを呼び出すネイティブ関数「lambda_(a)sync」が存在します。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Lambda.html#AuroraMySQL.Integrating.NativeLambda

なんで、これで「SNSにTopic発行するLambda」を、PKをパラメータにして呼び出せばいけるじゃんヤッター!

![AuroraToSNS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2386021/e613b71c-3b69-eeee-ac77-2ff6c2166388.png)

“`sql:crea

元記事を表示

tempfileライブラリを使った、AWS Lambdaの一時ディスク領域のスマートなクリーンアップ処理

# 概要
AWS Lambdaのウォームスタートによるバグ防止のための一時ディレクトリのクリーンアップについて、Python標準ライブラリ `tempfile` を使うとスマートに実装できる。

# Lambdaのウォームスタートの仕様
Lambda関数が呼び出されると一時的な実行環境が生成され、一定時間内に同じ関数が呼び出された際は同一の実行環境が再利用される仕様(ウォームスタート)がある。
その際、Lambdaの実行環境における書き込み可能領域の `/tmp` ディレクトリについても、複数の呼び出しで共有される。

> 各実行環境は、/tmp ディレクトリ内の 512 MB のディスク領域を提供します。ディレクトリのコンテンツは、実行環境が停止された際に維持され、複数の呼び出しに使用できる一時的なキャッシュを提供します。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/runtimes-context.html

この仕様により、以前の呼び出し時に書き込んだファイルを意図せず読み込んでしまったり、複数回の実行により512MBの

元記事を表示

AWS DevOps – AWS X-Rayによる分散トレーシング その3 (Node.js編)

# はじめに
本連載は以下の3部で構成されています。

1. [AWS X-Rayによる分散トレーシング その1 (概要編)](https://qiita.com/k-inui/items/18eba083a6fe061e5ea5)
2. [AWS X-Rayによる分散トレーシング その2 (Java編)](https://qiita.com/k-inui/items/33bb5819d0ee24e02e28)
3. **AWS X-Rayによる分散トレーシング その3 (Node.js編) ←今回**

X-Rayの基本から学びたいという方はまず[その1](https://qiita.com/k-inui/items/18eba083a6fe061e5ea5), [その2](https://qiita.com/k-inui/items/33bb5819d0ee24e02e28)を参照下さい。

本記事では、LambdaのランタイムにNode.jsを採用した場合にX-Rayに必要な設定やその際に注意すべきことを記載しています。
それでは、早速LambdaでX-Rayを使ってみましょう!

元記事を表示

AWS Lambda+SNSでSMSを送付してみた! ~社内で大不評の【誰得?】シリーズ~

[パーソンリンク アドベントカレンダー](https://qiita.com/advent-calendar/2021/personlink)13日目です!?

# 内容
SMSを送付する際にめんどくさいなーと思ったので備忘録がてら書いてみました。
AWS Lambda と SNSでSMSを送付するサンプルコードです。

利用言語やバージョンライブラリはこんな感じ。
Python 3.8
boto3

権限は適宜作ってくださいなー

コードはこちら

“`python:lambda_function.py
import boto3

def lambda_handler(event, context):
client = boto3.client(‘sns’)
response = client.publish(
PhoneNumber=’+8190XXXXXXXX’, #E.164形式電話番号 +81(日本国コード)から始めて、日本国内の電話番号の頭の0を取った内容
Message=’Sample Message’, #送付メッセージ

元記事を表示

Amazon ECR のイメージスキャン結果を Slack 通知 (拡張スキャン対応版)

この記事は [**AWS Advent Calendar 2021**](https://qiita.com/advent-calendar/2021/aws) 13日目の記事です。

## はじめに
AWS re:Invent 2021 で 脆弱性管理サービス Amazon Inspector のリニューアルが発表され、新たに Amazon ECR に格納されたコンテナイメージに対するスキャンをサポートしました。Inspector によるイメージスキャン機能の提供により、 ECR のスキャン機能は基本スキャン (Basic scanning)、Inspector によるスキャン機能は拡張スキャン (Enhanced scanning) という名称になりました。

2019年に AWS Lambda を使用して 基本スキャンの結果を Slack に通知する方法について投稿したのですが、拡張スキャンの通知には対応していません。

https://qiita.com/hayao_k/items/116e5540b2bf0c2a2c9d

本記事では 2021年12月時点で各スキャン結果を

元記事を表示

AWS Lambda(Python)のバリデーションロジックについて

## はじめに

皆さんは、AWS Lambdaの開発言語は何を使っていますか?
選択肢はいろいろあるかと思いますが、私はPythonで開発しています。
Lambdaの中で送られてきた値のチェック(バリデーション)をすることも多いかと思いますが、そのロジック自前で実装していませんか?
ライブラリを使うと自前で実装せずに実装できるので紹介します。

## 実装例

### ソースコード

とにもかくにも、コードを見てもらったほうが早いと思います。

“`py
from aws_lambda_powertools.utilities.validation import validate
from aws_lambda_powertools.utilities.validation.exceptions import SchemaValidationError

BODY_SCHEMA = {
“$schema”: “http://json-schema.org/draft-07/schema”,
“type”: “object”,
“examples”: [

元記事を表示

AWS LambdaでEC2インスタンスを起動してコマンドを実行。waiter_until_running()ではなく、waiterコマンドを使用する。

AWS Lambdaで、停止しているEC2インスタンスを起動させて、
立ち上がるのを待ってからコマンドを実行する、とした時に
詰まった点があったので備忘録として。

## 結論から
“`python:function_lambda.py
import boto3

def lambda_handler(event, context):
instance_id = ‘起動したいEC2インスタンスID’
ec2 = boto3.client(‘ec2’)
ec2r = boto3.resource(‘ec2’)
instance = ec2r.Instance(instance_id)
status_instance = ec2.describe_instances(InstanceIds=[instance_id])

if status_instance[‘Reservations’][0][‘Instances’][0][‘State’][‘Name’] == “running”:
print(‘インスタンス起動済

元記事を表示

Làm Bằng Cấp

Làm bằng cấp uy tín nhất

https://www.lambanggia2013.com/

元記事を表示

「今年の漢字」ならぬ「今年のSlackスタンプ」をLambdaとAPI Gatewayで作ってみた

[POLプロダクト Advent Calendar 2021](https://qiita.com/advent-calendar/2021/pol) の12日目担当、プロダクト部でエンジニア/エンジニア広報をしている @sho-kanamaru です!Twitterアカウントは[こちら](https://twitter.com/show_kanamaru)でございます。

11日目担当のリコピンさん(@ryu19-1)からバトンを受けました。AppSync最強!!!

さてさて、本日12月12日は漢字の日らしいです!
毎年「今年の漢字」が発表されていますが、今年は13日午後2時に発表みたいですね!(この記事書くから今日発表してほしかった。。)

せっかく漢字の日だし、今年の漢字っぽいことできないかな〜と考えたときに、「Slackのスタンプで今年1年を表せるのでは?」と思ったのでちょっと作ってみました!

# 完成イメージ

`@nenmatsu`メンションをすると、「2021年は、あなたは◯◯な1年でした!」と教えてくれます。(ついでに、2021年にもらったスタンプベスト3も)

元記事を表示

AWS Transcribeで音声文字起こし

# アーキテクチャ
![transcribe.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2097948/55b76be6-11ab-126d-70b9-7941c92fd89b.png)

input bucketへのアップロードをトリガーに音声ファイルを文字起こし

# 手順
1. bucketの作成(インプットとアウトプット用の2つ)
2. IAMロールの作成
3. transcribe_functionの作成

#S3バケットの作成

Lambdaのトリガー設定時に、下記のような注意書きがあるように、入出力のバケットは分けた方が良い
![スクリーンショット 2021-12-12 14.11.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2097948/110cbd83-4e30-197b-ff53-798b3643a584.png)

#IAMロールの作成

設計図の使用を選択して、関数を作成する

!

元記事を表示

AWS Chalice プロジェクトを CloudFormation でデプロイすると Lambda 関数名がランダムに設定されてしまう、を回避する

# はじめに
Lambda ベースのアプリケーション開発を効率化できる Python フレームワークの AWS Chalice[^chalice]、面倒な設定はフレームワークにお任せしてコードにひたすら集中することができとても重宝しています。また、アプリケーション内で多くの関数が必要になったり、他の AWS サービスとの連携が増えたりしても、CloudFormation でのスマートな構成管理も可能[^chalicecfn]で安心です。でも、、、Chalice プロジェクトを CloudFormation で構成管理するときにはちょっとした困りごとが。。。それは、Lambda 関数名の扱いです。

例えば以下のように、`helloworld` というアプリケーションで `my_function` という関数名の Lambda 関数[^purelambda]を定義することを考えます。

“`python:app.py
from chalice import Chalice

app = Chalice(app_name=’helloworld’)

@app.lambda_functi

元記事を表示

AWS Lambdaで簡単機械学習 = Lambdaコンテナ + serverless framework

:::note info
AWS LambdaとServerless Advent Calendar 2021の12日目の記事です
:::

https://qiita.com/advent-calendar/2021/lambda

## 背景

Pythonでテキストからカテゴリを推定する関数をLambdaで作った際に、mecabの辞書ライブラリやpandas, numpyがでかすぎてデプロイできずに右往左往したのですが、serverless frameworkとLambdaコンテナのおかげで簡単にデプロイができたので、感動をお伝えするためにこの記事を書いていこうと思います。

## やりたかったこと

テキストがどのカテゴリに属するか、tf-idfとコサイン類似度を使って算出するというのが、今回やりたいことになります。
テキストは、S3のPUTされ、PUTイベントをトリガーに関数を走らせるようなイメージです。

以下はカテゴリ推定方法です。

1. テキストをmecabを使ってわかち書き
2. わかち書きされたテキストをtf-idfでベクトル化
1. ベクタライザはカテゴ

元記事を表示

Step FunctionsでサポートされたAWSサービスを活用して既存処理の改善するお話

## はじめに
こんにちは、エキサイト株式会社 SaaS事業部エンジニアの鈴木です。
エキサイトホールディングス Advent Calender 2021の11日目を担当させていただきます。

私事ですがここ2年ほどで衣服を統一してなんちゃってミニマリストとして生活をしています。
不便はないのですが、この時期になると「この服装で去年の冬は越せたから大丈夫だよな・・・」という疑問が湧き上がってくる今日この頃です。
皆様いかがお過ごしでしょうか。

## 本日の内容
最近[Step FunctionsでサポートされるAWSサービスが増えた](https://aws.amazon.com/jp/about-aws/whats-new/2021/09/aws-step-functions-200-aws-sdk-integration/)ようなので、
こちらを活用して`Glueクローラーで分析用のデータカタログを作成するStep Functionsをbefore/after形式`でお届けします。

## ワークフロー図
before/afterともに処理の流れは下記の図となります。

![st

元記事を表示

社内向けチャットボット作成

#目次
[1.はじめに](#1はじめに)
[2.全体スケジュール](#2全体スケジュール)
[3.全体学習](#3全体学習)
[4.Lexチーム作業内容](#4lexチーム作業内容)
[5.Lambdaチーム作業内容](#5lambdaチーム作業内容)
[6.完成したチャットボット](#6完成したチャットボット)
[7.まとめ](#7まとめ)

#1.はじめに
株式会社エニプラでは、社内のチームごとにテーマを決め、
毎月行われるチーム会でテーマに沿った活動を行っています。
チーム会で行った内容は、
年末に「エニプラアワード」という場で全社員や来期の新卒に向けて発表を行っています。
今年度私たちのチームでは
「Amazon lexとSlackを使った社内向けチャットボットの作成」をテーマに活動してきました。
テーマを検討、決定した背景として、4つの点があります。
1.近年、チャット式の質疑応答システムがWebサイトで使われている
2.社内向けの問い合わせ対応にチャットボットが使えそうである
3. Slackにあれば社内規則・ルール確認時に活用でき

元記事を表示

OTHERカテゴリの最新記事