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

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

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にあれば社内規則・ルール確認時に活用でき

元記事を表示

AWSで〇〇やってみた!に踏み出せないあなたへ

#はじめに

本記事は、NTTドコモ R&D Advent Calendar 2021の11日目の投稿です。

こんにちは。この記事は、

* AWSを実際に触ってみたいけど、どうすればいいか分からない人
* 参考書を読んだりはしているけど、手を動かしてみたい人
* 開発チームときちんと議論したいと思っているプロダクトオーナーの人

など、主にAWS初心者の方に向けて、お送りします。
持って帰れるものは、以下を想定しています。

* AWSを触る最初の一歩の始め方
* 何を作るかと、構成に落とし込む考え方
* 手を動かしてみた結果、見え方がどう変わったか

***

まず、私の所属する、サービスデザイン部第三クラウド推進を簡単に紹介いたします。
第三クラウド推進では、主にドコモ商用サービスのサーバ構築/アプリ開発・運用を担当しています。
私はアジャイル開発のプロダクトオーナーとして働いており、ここでは1年目2年目から若手の社員も多く活躍中です。

また、サービスデザイン部では、オンプレミスからAWSへの移行を進めており、
現在、第三クラウド推進が担当する準内製サービス45件の内、42

元記事を表示

アレクサ、助けて

この記事は[Hamee Advent Calendar 2021](https://qiita.com/advent-calendar/2021/hamee)の11日目の記事です。

# はじめに

この記事は「開発してみた」系の記事です。
あまり技術や思想的に「おおお!!!!」となる記事ではありません。
Goでアレクサスキルを作ってみたい。lambdaからDynamoDBに触りたいという人には向いているかもしれません。

# 課題

> 私「(この設計どうしようかな)」
私「アレクサーこの設計どうすればいい?」
アレクサ「わかりません」

そう。アレクサは助けてくれない。
在宅が続き、アレクサと二人っきりの時間が増えようともアレクサは仕事を手伝ってはくれない。外出も減った今とでは天気を聞くこともなく、音楽を流すことしかしない。

せめて相槌でもして欲しい。

そう何か、いい感じに、返事をして欲しい。
# 仕組み

AlexaからLambdaを叩き、DynamoDBから**それっぽい文章**を取ってきてもらう。
Lambdaは最近社内で勉強会があったのでGoを使ってみます。
![スクリ

元記事を表示

AWSのKDA・EMR(Spark Streaming)・Lambdaによるストリーム処理の特徴

著者: 伊藤 雅博, 株式会社日立製作所

# はじめに
AWSでストリーム処理を実現するサービスには複数の選択肢があります。本投稿では、AWSが提供する主要なストリーム処理サービスの特徴を紹介します。

なお、本投稿の内容は2020年中頃の調査結果をベースに、いくつか更新を加えたものです。AWSのサービス仕様は随時更新されるため、最新の仕様とは異なる場合があります。最新の情報はAWSの公式ドキュメントをご参照ください。

投稿一覧:
1. [AWSでストリームデータを扱うためのメッセージングサービス](https://qiita.com/sigmalist/items/73d3feeb6e0f5905ed64)
2. [AWSのストリーム処理向けメッセージングサービスKDS・MSK・SQSの特徴](https://qiita.com/sigmalist/items/1a65b0b0456516e2056b)
3. AWSのKDA・EMR(Spark Streaming)・Lambdaによるストリーム処理の特徴 (本投稿)

# AWSにおけるストリーム処理の基本構成

AWSでスト

元記事を表示

AWS SAMのCORSを設定する(REST APIバージョン)

## 困っていたこと
ローカル開発環境で、ブラウザでReactからAWS SAMのAPI Gatewayを叩きたかったのですが、CORSに行く手を阻まれておりました。

下記は、CORS未設定の状態でAPIを叩いたときにブラウザのコンソールに出るエラーメッセージです。
>Access to fetch at ‘http://127.0.0.1:3001/hello_world’ from origin ‘http://127.0.0.1:3000’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resourc

元記事を表示

AWS初心者がNodejsで作ったLineBotのインフラを構築してみた

# AWS初心者がNodejsで作ったLineBotのインフラを構築してみた

## 概要
専門学生1年生なので大目にみてください…。
今回は、ApiGatewayをトリガーにLambdaを動かしてその結果をApiGatewayに返してくれるという単純なものです。

## インフラ構築
### Lambda作成
linebotという名前で関数を作ります。
![eb4f8059-38e4-467e-98a3-b3f28c195817.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2286850/d58e184f-3845-ad54-e768-0d1a45c260d4.jpeg)

作成できたら、LineBotのプログラムをzipファイルにして上げます。
ちなみに作成した初期の呼び出す関数は、indexのhandlerになっているので適切に設定する必要があります。

### ApiGateway作成
ApiGatewayのHTTP APIを作成します。
名前はLineBotApiにしました。
![e0

元記事を表示

OTHERカテゴリの最新記事