- 1. Lex使用時、Lambdaでできるテクニック
- 2. 【Serverless Framework】Lambda爆速開発
- 3. API Gateway + Lambda(Python) の REST API でステータスコード管理をする
- 4. Mangumを用いたFastAPI製APIのSAM Local実行方法 メモ
- 5. Lambdaで(定期実行)スクレイピングの初期段階の構築をしてみた
- 6. CloudwatchのEC2自動復旧をlambdaで自動一括設定
- 7. Visual Studio Codeを用いたLambda関数ローカルデバッグ方法メモ
- 8. NATインスタンス を用いて、VPC内でLambdaを実行
- 9. 【AWS lambda】Terraformでlambda関数を作成してみよう【Terraform】
- 10. Svelte から AWS Lambda を API Gateway をトリガーに呼び出す
- 11. AWSのチュートリアルでハマった話
- 12. AWS Lambda (Node.js) 上で discord.js を使おうとしてつまずいた
- 13. AWSサービスを使って Lambda関数 の CI/CD を実現する方法を調査してみた
- 14. 【AWS】Lambdaの各種設定項目
- 15. AWS SQS+lambda連携 batchsize, batchwindowについて図解する
- 16. Amazon SESを使うことで通常のGmailで独自ドメインを利用する -転送編-
- 17. DynamoDBトリガーLambdaの「障害時の送信先 (SQS/SNS) 」における出力内容
- 18. Goで書かれたLambdaのpanic時、CloudWatchLogsにスタックトレースが出ない
- 19. cloudwatchのアラームをslackに通知
- 20. [AWS_33]Lambdaについて
Lex使用時、Lambdaでできるテクニック
#はじめに
LexとLambdaでできる応用テクニック?を書き留めます。事前にこちらでLambdaとLexを設定しました。
https://qiita.com/holdout0521/items/58f524be7cc5d9ca2093
# LexとLambdaでできること色々
以下のスロット値の入力のコードについて、できることをまとめます。
[フルのコードは、こちらです](https://qiita.com/holdout0521/items/58f524be7cc5d9ca2093#python%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3)Lexの流れは、以下の通りに聞かれます。
`発話 → telephoneNumber(電話番号) → date(日付) → age(年齢) → 確認 → yes/no`“`py
if slots[‘telephoneNumber’] is None:
return elicit_slot(‘telephoneNumber’, intent_name, slots)
else
【Serverless Framework】Lambda爆速開発
## なぜServerless Frameworkなのか

私自身、LambdaのコードをGitで管理するためにTerraform + GitHub ActionsでCI/CD構築していましたがデプロイに時間がかかり開発効率が非常に悪いことやTerraformの記述量が多くなってシンプルに管理できないことがデメリットに感じていました。しかし、今回のServerless Frameworkを使うことで爆速かつシンプルに開発することができます。
# 開発手順
## AWS CLIのセットアップ
この記事では深く解説しないのでこちらの記事を参考に設定してください。
https://qiita.com/n0bisuke/items/1ea245318283fa118f4a
## Serverless Frameworkをインストール
“
API Gateway + Lambda(Python) の REST API でステータスコード管理をする
# 背景
API Gateway + Lambda(Python) の REST API があったのですが、えいやで作ったのでエラーハンドリングを全然していませんでした。
全てステータスコード200で返してパラメータでエラーかどうかを設定する方法のが簡単そうでしたが、やっぱり個人的に気持ち悪さを感じるのできっちりステータスコードを使い分けようと思いました。
AWS初心者の私には結構複雑だったのでメモっておきます。
自分的ベストプラクティスのつもりですが、一般的なベストプラクティスがあればぜひコメントください。# 結論
先にざっくりと結論から。### API Gateway の設定
– [メソッドレスポンスにステータスコードを追加する](#メソッドレスポンスにステータスコードを追加する)
– [総合レスポンスにステータスコードに対応するマッピングを追加する](#総合レスポンスにステータスコードに対応するマッピングを追加する)### Lambda でやること
– [マッピングに該当する”errorMessage”を返却する](#マッピングに該当するerrormessageを返却
Mangumを用いたFastAPI製APIのSAM Local実行方法 メモ
* Fast APIで作成したAPIをSAM Localで実行する方法についてメモする。
# Mangum
* ASGI(Asynchronous Server Gateway Interface)アプリをAWS Lambdaで動作させるためのアダプター
* FastAPIなどで実装したASGIアプリを、Lambda + API Gateway構成でサーバレスにWebアプリケーションとして動かす事が可能
* FastAPI利用者であれば、Lambda特有の文法を覚えずLambda利用をスモールスタートできる## 手順
### 1.サンプルSAMプロジェクトを作成
“`shell
sam init
“`※ランタイムはPython3.8を選択
* “template.yml`
* Hello World Exampleを利用する。
* 特に内容は変更しない。* `requirements.txt`
“`
requests
mangum
uvicorn
fastapi
“`※Mangum,FastAPIを利用する
Lambdaで(定期実行)スクレイピングの初期段階の構築をしてみた
# はじめに
AWS Labmdaで、Pythonでスクレイピングするアプリの基礎部分の構築をまとめた
CloudWatchで毎時実行する設定も組み込んだ
※LabmdamCloudWatchは永久無料で使用できるため、お気軽にご利用ください
↓詳細はこちらhttps://aws.amazon.com/jp/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=tier%23always-free&awsf.Free%20Tier%20Categories=*all
# モジュールのインストール
下記をローカルで(Macの人はターミナルで)1行ずつコマンド実行してください“`
mkdir packages
cd packages
pip install requests -t ./
pip install beautifulsoup4 -t ./
touch lambda_function.py
“
CloudwatchのEC2自動復旧をlambdaで自動一括設定
Cloudwatchの機能を使ってEC2の自動復旧(オートリカバリー)を設定することができますが、管理しているEC2が増えてくるとアラーム設定自体がとても面倒で、かつ設定漏れのリスクも出てきます
そこで、EC2自動復旧の自動一括設定ができるようにします#前提条件
+ 自動復旧がサポートされているEC2インスタンスタイプであること
[サポートされているEC2を確認](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/UsingAlarmActions.html)
+ Cloudwatch利用#lambdaを使ってEC2のオートリカバリーを自動設定する
Cloudwatchで、EC2の「StatusCheckFailed_System」を検知し自動再起動する設定ができます
lambdaを使って、特定のタグを設定したEC2に対して、オートリカバリーのCloudwatchアラームを自動一括設定できるようにします##まずは、lambdaを作成します
python 3.9でlambda関数を作成しました`
Visual Studio Codeを用いたLambda関数ローカルデバッグ方法メモ
* vscodeでLambdaをデバッグする方法についてメモする。
## 事前準備
* SAMプロジェクト作成
* ひな形作成
“`shell
sam init
“`※ランタイムはPython3.8を選択。
## 手順
**1.vscodeでSAMプロジェクトを開く。**
**2.Lambda関数`app.py`を開き、テスト用にコメントアウトを外す。**
“`python
import json
import requestsdef lambda_handler(event, context):
“””Sample pure Lambda functionParameters
———-
event: dict, required
API Gateway Lambda Proxy Input FormatEvent doc: https://docs.aws.amazon.com/apigateway/latest/develope
NATインスタンス を用いて、VPC内でLambdaを実行
# はじめに
APIサービスを利用するにあたり固定のIPにする必要があったため、Lambda + 固定IPのNATインスタンスを構築しましたので、まとめます。
NATゲートウェイの方が、運用は楽ですが、サービスが小規模かつ、コスト面でNATインスタンスの方が安いため、こちらを利用しました。##コスト
NATゲートウェイ:稼働時間料金で46 USD/月、+ データ処理および転送料金
NATインスタンス:稼働時間料金で10 USD/月(t3.micro)、+ 転送料金# 完成図

# 事前構築
VPCやサブネットは以下のように作成しましょう。を 一番簡単な構成で作成してみます
## バージョン
試してみたバージョンは以下の通りです
| Name | Version |
| ——— | ——- |
| terraform | 1.1.5 |
| aws | 4.0 |## 構築リソース
– lambda function
– IAM roleIAMロールはlambdaがAWSリソースに変更を与えるために必要になります
今回はHello,Lambdaを表示するだけなのでほぼ何も権限を付与してません## 手順
### 1. IAMロールを定義
IAMロール作成は`Module`を使います
IAMロールをterraformで作成するには、
`aws_iam_role`, `aws_iam_policy`, `aws_iam_role_policy_attachment`
の3つを定義する
Svelte から AWS Lambda を API Gateway をトリガーに呼び出す
Svelte で書かれた、氏名とメールアドレスを入力する欄があるだけのシンプルなフォームの Submit ボタンが押されたとき、AWS Lambda 関数を呼び出す場合を考えます。
## Svelte プロジェクト作成
以下のコマンドを実行して、プロジェクトを作成し、バリデーションの[felte](https://felte.dev/)をインストールします。`
`は、任意の名前です。 “`bash
$ npx degit sveltejs/template$ cd $ npm install
$ npm install –save felte yup @felte/validator-yup
“`ちなみに`npm install`は`npm i`に、`npm –save`は`npm -S`に置き換えられます。
`src`直下にある`App.svelte`を以下に書き換えます。felte を読み込んでいます。
“`svelte:App.svelte