- 1. 【10分AWSハンズオン】ExpressをAWS Lambda+API Gatewayにデプロイする
- 2. 【初心者】AWS Lambda Function URLs (関数URL) を使ってみる
- 3. GuardDutyの脅威検出結果をSlack/Teamsに通知する
- 4. Cost Explorer API でアカウント毎に日別の請求額を取得する
- 5. 【Serverless Framework】AWS Lambda構築手順
- 6. lambdaでEventBridgeなどからJSONで渡された中身をチェックする
- 7. Runtime(ランタイム)とは?
- 8. LambdaでDropboxにファイルアップロード
- 9. LambdaをDockerコンテナイメージで動かす場合、rootユーザで実行されないらしい
- 10. Lambda(golang)でFargate Spotの終了通知を受けたECSのタスクをNLBから切り離す
- 11. 初心者がAWS Lambdaを活用してログインが必要なGoogle Formに自動回答するプログラムを作ってみた
- 12. NATインスタンス起動・停止のSlackスラッシュコマンドを作る
- 13. アプリ用EC2周りの構築でやったこと(2) AutoScalingGroupの起動テンプレートVer設定
- 14. アプリ用EC2周りの構築でやったこと(1) Backup先のGolden image作成
- 15. CloudWatchLogsで取得したログを加工してEFSに格納するLambda作ってみた
- 16. LambdaのSecurityGroupが削除できなくて困った話
- 17. AWS LambdaでPython基礎~Amazon S3とAmazon Translateを利用する
- 18. API Gateway – Lambda構成でのアクセス制御方法 メモ
- 19. Webサイトのメンテナンス情報を定期的にslack送信する
- 20. Lambdaでindex.handler is undefined or not exportedが出た時の対処法
【10分AWSハンズオン】ExpressをAWS Lambda+API Gatewayにデプロイする
# やること
Lambda 上の Express にアクセスできるようにする。
# 学べること
* サーバレス Express アプリケーションの作り方
* Lambda へのデプロイ
* API Gateway と Lambda の連携# 扱わないこと
* Infrastructure as Code
* TypeScript
* CI/CD# STEP 1 : Serverless Express
1-1. 適当なディレクトリに Node.js プロジェクトを作成し、必要なパッケージをインストールします。
“`sh
$ npm init -y
$ npm i express @vendia/serverless-express
“`:::note warn
`Node.js` がインストールされている必要があります。
`n` という Node.js のバージョン管理ライブラリを使用するのがおすすめです。
Mac を使用している方で、Homebrew がインストール済みの方は、以下のコマンドで Node.js をインストールできます。“`sh
【初心者】AWS Lambda Function URLs (関数URL) を使ってみる
# 1. 目的
– たまには新機能のキャッチアップもしないといけないと思い、ちょっと便利そうなAWS Lambda Function URLs(関数URL) を使ってみることにした。# 2. やったこと
– 「[PokeAPI](https://pokeapi.co/)」(ポケモンデータの検索ができる公開API)にアクセスしてデータを取得するLambda関数を作成し、関数URLの機能を有効にして、インターネットからアクセス可能なURL(関数URL)を設定する。
– 上記のURLに対してブラウザからアクセスする。Lambda関数が実行されて、ポケモンデータの取得が行われ、結果が表示できることを確認する。# 3. AWS Lambda Functions URLs とは(自分の理解)
– インターネット上にエンドポイント(関数URL)を作成し、そこをたたくことでインターネット経由(https経由)でLambda関数の実行が可能な仕組み。
– 従来は同様のことをやりたい場合、API Gatewayが必要だったが、場合によっては省略することができる。# 4. 構成図
を呼ぶ形で実装します。以前書いた[PHPでDropbox APIを使ってアップロードする記事](https://qiita.com/tksnino/items/bcbde6eddcb553446f63)の応用となります。
### 利用するLambdaランタイム
– Python3.8## 1. csvファイルを出力する
まずはデータベースから抽出したデータを整形してcsvとして出力する部分です。
`csv`ライブラリでさくっと。
“`python
import csv
#import osfile = ‘/t
LambdaをDockerコンテナイメージで動かす場合、rootユーザで実行されないらしい
ここにも記載されているが、`sbx_user1051`というユーザで実行しているらしい。
https://dev.classmethod.jp/articles/check-os-layer-because-change-amazon-linux-2/
(しかも`$HOME`などは設定されていない)そのため、自前のDocker環境でroot権限を使用してコマンドが成功しても、Lambdaで起動時にエラーになる場合がある。
私が現在seleniumでchrome動かそうとしてこの問題にぶち当たっている。
Lambda(golang)でFargate Spotの終了通知を受けたECSのタスクをNLBから切り離す
# 初めに
生産技術部で製品の検査工程を担当しているエンジニアです。今回は、Fargate spot上のECSに中断通知が来た時のELBに対するDeregisterTargetの実行が保証されない課題に対して取り組みました。Fargate Spotを利用する目的は、以下の資料にあるように、コスト削減が可能になるからです。
また、Fargateで立ち上げたECSのCapacity ProviderにFargateとFargate Spotを併用することで、システムの安定性とコスト削減を両立した仕組みを実現します。https://d1.awsstatic.com/webinars/jp/pdf/services/202109_AWS_Black_Belt_Containers303-ECS-Spot-Fargate.pdf
# Capacity Providerの導入
参考実装:https://github.com/TomoyukiSugiyama/ElasticStack/pull/35/files#diff-e294b70d2a4a1e225aa9f6a19dc7fff8
初心者がAWS Lambdaを活用してログインが必要なGoogle Formに自動回答するプログラムを作ってみた
みなさんこんにちは。コロナが収まったかと思えばまた蔓延したりとまだまだ大変ですね。
昨今は部活や大学、高校などで毎日体温を測定しGoogle Formなどで○○時までに提出するよう求められることがあると思います。僕も毎日(決まりでは)提出しないといけないのですが、根がズボラなのでサボりがちです。
こんなだらしない人間がこの問題を解決するにはプログラミングしかない!中学生の頃にHSP(Hot Soup Processor)を少し触った程度の初心者だけどプログラミングのいい勉強にもなるだろう、ということで毎日決まった時間に自動送信するプログラムを作りたいと思いました。今回は、途中でログインが必要となるタイプのフォームに対してのプログラムです。**ただし、Google Workplace for Educationに登録されている大学のアカウントを用いたログインのため、Googleログインの途中で大学アカウントのログインページに移行しています。** そのためGoogleがHeadless操作を検知してログインできない、ということは起こりませんでした。一般のGoogleアカウントを用いた
NATインスタンス起動・停止のSlackスラッシュコマンドを作る
# はじめに
2,3年前に作成したスラッシュコマンドの詳細を、やっとこさですがまとめようと思います。
※ですので、一部情報が古い可能性があります。# できること
/xxxnat status →NATインスタンスの状態を確認
/xxxnat start →NATインスタンスを起動
/xxxnat stop →NATインスタンスを停止※実行結果が設定したSlackチャンネル全員に見える形で投稿されます
# 作ったもの(大きく分けて2つ)
1. NATインスタンスがstopped→runnninng/runnninng→stoppedに変わった時に通知するSlackbotを作る
2. 「/xxxnat start」「/xxxnat stop」と設定したチャンネルで発言すると、NATが起動/停止するWebhookを作る(「/xxxnat status」で今の状況も返してくれる)# フロー
## 1. インスタンスステータス変化時に通知するSlackbot
 AutoScalingGroupの起動テンプレートVer設定
[「アプリ用EC2の構築でやったこと(1) backup先のGolden image作成」](https://qiita.com/nsaito9628/items/bcb17830d4f547816896)の続きになります
前回同様にVPCまわり、セキュリティ、EC2、ユーザーアプリの話はありません
## 記事の内容
今回の記事では以下二つのLambda関数を説明します
* CloudformationでdeployしたAutoScalingGroupの起動テンプレートバージョンをLatestに変更する
* DLMの日次Backupで本番用AMIが更新されたら起動テンプレートのAMI Idも更新する下図の赤枠部分に相当します
前回の続きということで図中ではBackup先リージョンでの操作を説明してますが普段は東京で同じ仕組みが動いています
samでbuildとdeployをしていますが記事中では説明しません
 Backup先のGolden image作成
最近仕事でEC2を使ってユーザー部門向けWeb Serverを準備する機会がありました
直接運用に関わる立場ではないので、不具合が起きた場合にlog見てもらいつつも基本はstackのdeleteとdeploy(あとはaws lambda invoke)くらいで対応できるようにIaC化前提で構築しました
運用を考えたServer構築経験がないため調べることが多々あり印象に残った点を数回に分けて記録に残したいと思います
尚、VPCまわり、セキュリティ、EC2、ユーザーアプリの話はありません
[(お試しで初投稿した前回も本件の関連記事となります)](https://qiita.com/nsaito9628/items/62d82e534a34be2d5d37?utm_campaign=post_article&utm_medium=twitter&utm_source=twitter_share)
## 全体構成
今回詳細説明はしませんが投稿の背景となる全体構成について最初に説明します
通常は東京リージョンのEC2上でユーザー部門のアプリが動いています
EC2は開発用
CloudWatchLogsで取得したログを加工してEFSに格納するLambda作ってみた
# はじめに
日次でCloudWatchLogsからログを取得し、加工してEFSに格納する独自スクリプトを動かしてた。
だが以下の点でイケてないスクリプトでたちまち処理が失敗していた。
図1:既存構成:::note alert
こんな感じ
・サービス利用増により、ログ量が莫大し処理が追いつかずにMaintenanceWindowsの**上限値5時間**をオーバしてしまう
・古き良き(?)シェル芸でログを加工しておりコードは煩雑化・処理は非効率で処理が行われてる
:::## 実装方式
上記を解決するにはスクリプトを改修したり、そもそものサーバスペックを上げたりするといった流れになるがログ量は増える一方であったり、この処理のためにスペック上げるのは~~贅沢・贅肉すぎるし~~もったいないという形で以下で実装してみた
# 0.前提
[「AWS Cloud9でPython基礎~Amazon S3とAmazon Translateを利用する」](https://qiita.com/emiki/items/b95fad815d9f8e360dd0)で作成した s3 バケットが存在していること。
[「AWS Cloud9でPython基礎~Amazon S3とAmazon Translateを利用する」](https://qiita.com/emiki/items/
API Gateway – Lambda構成でのアクセス制御方法 メモ
* API Gateway – Lambda構成のサーバーレスアプリケーションにおけるアクセス制御方法についてメモする。
## IAMアクセス権限パターン

1. IAM Credential sigv4 を作成し、sigv4を含めてAPIリクエスト
2. sigv4の権限を検証する。
3. 問題ない場合はLambdaをコールする。## Amazon Cognito UserPoolを利用する

1. ユーザーサインアップ(トークン取得)する。
2. トークンを
Webサイトのメンテナンス情報を定期的にslack送信する
Webサイト情報を取得して「XXXX」というワードが含まれる場合は、Slackへ通知を行うという仕組みを作成しました。
Webサイトのメンテナンス情報などを取得できる他、推しの情報や新着情報の通知の自動化なども可能かと思います。:::note alert
スクレイピングは、利用方法によっては、法律で罰せられる可能性もございます。
対象のサーバへの過度なアクセスや、著作権と言った部分等には十分ご注意ください。
:::主な構成は以下です。
![]()
# ローカルでの稼働確認
Webサイトへのリクエストには`requests`、スクレイピングには`Beautiful Soup`を利用しました。
Lambdaで当該ライブラリを利用する場合は、zip化してLambda Layerに載せると言った作業も発生する
Lambdaでindex.handler is undefined or not exportedが出た時の対処法
## 問題
Lambda実行時に以下のエラーが発生した
“`bash
index.handler is undefined or not exported
“`## 対処法
以下の2つを実施した。
### ファイル名の変更
SAMでサンプルアプリケーションを作成したが、ファイル名がapp.jsとなっていたので以下を変更した。
– ファイル名変更
– app.js -> index.js
– package.jsonの変更“`
“main”: “app.js”,
“`
↓
“`
“main”: “index.js”,
“`### ランタイム設定の見直し
アップロードしたファイル構造と、ランタイム設定が一致していることを確認する。
例えば、以下の構造の場合
“`
|–src
|–index.js
“`Lambdaの以下のようにランタイム設定のハンドラ部分をsrc/index.handlerとすれば良い
![markdown-linter – Lambda 2022-04-17 08-56-00.png](https: