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

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

LambdaでSNSからメール送信できないときの確認事項3選

最近、仕事でLambdaからSNSを使用して、Eメール送信する機能を開発する機会がありました。

Nodeを使って開発し、コード自体はググればコピペして使えるコードが盛りだくさんだったので、直ぐに終わるかと思ったのですが・・・

とにかくSNSへのメッセージ発行ができず、苦労しました。
調査した結果、メッセージ発行ができない原因が3つあったので、メモとしてまとめようと思います!

# その1、権限がない
こちらは、どのサイトでも大体書かれていました。
Lambadaの実行ロールにSNS実行権限を付ける必要があります。
設定タブのアクセス権限から実行ロールを編集可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/4a0383ab-0804-f2c9-defb-7fb615c604e6.png)

# その2、エンドポイントが無い
サイトで紹介されるサンプルだと、ネットワークの利用を特にしないので、忘れがちです。
実際はプライベートなVPCネットワーク内にLambdaを配

元記事を表示

Registry of Open Data on AWS にある気象衛星ひまわりのデータを分析して可視化してみた

この記事は [AWS Analytics Advent Calendar 2021](https://qiita.com/advent-calendar/2021/aws-analytics) の 16日目の記事です。re:Invent 2021 で発表された新しい機能はすでに素敵なエントリがたくさんあったので、自分の興味に寄せてオープンデータの分析・可視化で記事を書いてみようと思います。実は、あまりこういうのに慣れていないので、不備がありましたら優しくご指摘いただけると助かります。

S3にあるオープンデータを分析して、可視化するまでにどんなサービスが利用できるのか、全体の流れを記事にしてみようと思います。要約するとこのような流れになっています。

1. Open Data on AWS のデータへのアクセス
1. Python を利用してデータの理解を深める
1. SageMaker Notebook でデータの探索
1. Lambda で前処理した結果を S3 に保存
1. Athenaでクエリして結果を集約
1. QuickSight に取り込んで可視化

Notebook で

元記事を表示

Lambdaを使用してCloudWatchアラームをLINE Notifyで通知してみる

#ご挨拶
AWS Advent Calendar 2021の16日目の記事になります!
今回はLambdaを使用してLINEにCloudWatchからのアラームを送信したのでその時の知識のまとめです。
#やること
今回のメインはLambdaになります。
Pythonを使用してLambda関数を作成しました。
SNSのサブスクリプションにLambdaを選択してそのSNSをCloudWatchアラームの通知送信先に選択することでLINEに送信できるようにしました。
言葉だけだと理解しにくいので構成図を作成しました。
###構成図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/6d19a780-2b33-d138-0033-fac1ce8ad412.png)

#Lambdaの設定やLINE Notifyの設定、コードを参考にさせていただいたサイト
[LambdaでLine Notifyを使って予定通知をやってみた](https://dev.classmethod.jp/arti

元記事を表示

AWSで構築した「コスト最優先WordPress」改善の歴史を振り返って

# はじめに
本記事は「[Japan APN Ambassador Advent Calendar 2021](https://qiita.com/advent-calendar/2021/japan-apn-ambassador)」の16日目の記事です。

本記事では、私が以前とあるWebサイトの全面改修に関わった時**「コストを最小化しつつ業務も自動化したい」**という、今思えば中々に難易度の高いオーダーを受けて開発した**「コスト最優先WordPress」**の改善の歴史を振り返ります。

この開発では、とあるVPSで運用されていたWebサイトをWordPress化して、AWSに移行しました。

但し、この移行のテーマは**「コスト最優先」**であり、とにかくAWS利用料が安くなるように考えなければならないものでした。
**その要望は、本当にコストを削るためなら何でもありと言わんばかりのものでした。**
移行から約8年が経過し、運用上のトラブルはありましたが、改善を繰り返し、現役で動き続けています。

本記事は、その**「コスト最優先WordPress」**がどんな形でリリースさ

元記事を表示

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ロールの作成

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

!

元記事を表示

OTHERカテゴリの最新記事