- 1. Inspector から Security Hub に統合した脆弱性通知について考える
- 2. [過去記事]AWS Lambda コード書き換えた時の反映とテストの流れ
- 3. Bedrockのストリーミングレスポンスをストリームのまま返却するLambdaの作り方(LangChainも対応)
- 4. [過去記事]AWS Lambdaを使ってみよう!(文字列返却編)
- 5. 【AWS】Lambdaで登録した関数をREST APIで呼び出す方法
- 6. 【AWS】EC2経由でパトライトとの連携について②
- 7. グラフ画像を含むPDFをLambdaで動的に生成する
- 8. HEIC(HEIF)画像をJPEGに一括変換する
- 9. Step Functionsを使ってみた
- 10. 【AWS】Lambdaで「StartQuery へのリクエスト中にエラーが発生しました」と表示された場合
- 11. ローカルのAWS Lambda開発環境を整える(hot reload)
- 12. S3書き込みするLambda関数のDockerイメージを作成しEventBridgeで定刻実行させる「サーバレスバッチ」をTerraformで自動構築する
- 13. localstackについて理解する(lambda版)
- 14. CloudFormationとPyplateを使ってSecurityGroupのIngressに指定したIPアドレスを登録しよう!
- 15. S3へアップロードされたことをトリガーに実行されるLambdaをCloudFormationで構築しよう!
- 16. AWS LambdaをDocker化する際の注意点と学びの備忘録
- 17. Nuxt3アプリをLambdaにデプロイする方法
- 18. 【aws】lambda layerを使ってlambdaにモジュールをインポートする
- 19. 【aws】CloudWatchを用いてlambdaのエラーを確認する
- 20. Excelのlambda使って3つ以上のセルの一致を確認するユーザ定義関数作った
Inspector から Security Hub に統合した脆弱性通知について考える
# やりたいこと
![inspector.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/89bce2f0-bc4f-391c-14a0-0f1640c75835.png)
以下のページで紹介されている改善後の構成で、
1. 脆弱性が検出されると EventBridge から Lambda1 を起動し、DynamoDB に脆弱性情報を格納する。この時 DynamoDB の パーティションキーとソートキーで重複をチェックし、既にレコードが存在する場合はスキップし、レコードが存在しない場合は DynamoDB に格納する
2. EventBridge Scheduler で 1 日に 1 回だけLambda2 を起動し、DynamoDB から、まだ通知が行われていない脆弱性を取得し Slack へ通知する。Slack への通知が完了すると DynamoDB に格納されている脆弱性のステータスを NEW ⇨ NOTIFIED に更新する
この 2 つを行う。
https://note
[過去記事]AWS Lambda コード書き換えた時の反映とテストの流れ
## 概要
今回はLambdaのコードを書き換えた時の流れをまとめます。ようはコード書き換え後のルーティン手順です。この手順を行わないとせっかく書き換えたコードが反映されないこともありますのでしっかり抑えておきましょう!
また、今回の説明には下記の記事で構築した内容を使います。詳細は下記をご確認ください。(当該の環境を構築していなくても本記事の内容はご理解いただけると思います!)
https://qiita.com/miriwo/items/7470659f070504e0fafe
## 方法
### 場所の確認
まずはコードが記載されている場所を確認しましょう。
AWSにログイン後、Lambdaにアクセスし、サイドバーの「関数」をクリックします。![Cursor_と_Lambda-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/fdffa3c0-feba-536c-9a5d-7297e2f991cb.png)
関数名をクリックします。
![Cursor_と_関数_-
Bedrockのストリーミングレスポンスをストリームのまま返却するLambdaの作り方(LangChainも対応)
Bedrockを使ったアプリをLambdaで動作させたい!
レスポンスはストリームで返したい!!と思って調べたところ、結構条件があることがわかりました。
https://aws.amazon.com/jp/blogs/news/introducing-aws-lambda-response-streaming/
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-response-streaming.html
## ストリーミングレスポンスを返却するための条件
ストリーミングレスポンスを返却するためにはいくつか条件があります。
### Lambdaの実装方法の条件
Lambdaの実装方法が、以下の方法である必要があります。
* Node.jsのマネージドランタイム
* カスタムランタイム([参考](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/runtimes-custom.html#runtimes-custom-response-s
[過去記事]AWS Lambdaを使ってみよう!(文字列返却編)
## 今回作るもの
冒頭でも触れましたが、今回は「Hello from Lambda!」という文字列をJSONで返すだけのAPIをLambdaで作って見ようと思います!
前述した目的を達成することだけを考え細かい設定は省き進めようと思います。返却文字列の変更などは別記事で紹介しようと思っています。
なお、言語はPythonを用います。
## 準備
### Lambdaの準備
AWSにログインしてLambdaのホーム画面に移動します。「関数の作成」をクリックします。
![Cursor_と_Lambda-1024×292.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/cfa38c72-033b-6347-cb18-369a80b9ee9f.png)
次の画面にて下記の様に設定・選択します。設定後、内容を確認して「関数を作成」をクリックします。
– 関数のプリセット:一から作成
– 関数名:任意の内容でOK(今回はtest_functionとする)
– ランタイム:Python
【AWS】Lambdaで登録した関数をREST APIで呼び出す方法
# Lambdaに関数を登録する
1.「関数の作成」ボタンを押下する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639599/7f573744-c384-6ad4-5b4d-a3a2ece70b0c.png)
2.関数を作成する(※本稿では、関数名とランタイム以外はデフォルトで設定する)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639599/fa2efaa8-296c-59b1-4e9c-cab9f2fa93f9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639599/44223c68-7d65-8721-9d44-5f9e24fbe0e3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.am
【AWS】EC2経由でパトライトとの連携について②
【AWS】EC2経由でパトライトとの連携について①の続きです。
###### ■Lambda関数
:::note warn
SSM RunCommand実行が必要ですので、「AmazonSSMFullAccess」ポリシーのアタッチが必要。
@aws-sdk/client-ssm、mailparserのnode.jsライブラリはLambdaレイヤーに事前導入済み。
:::
“`ruby:qiita.rb
import { SendCommandCommand } from “@aws-sdk/client-ssm”;
import { ssmClient } from “./ssmClient.mjs”;
import { simpleParser } from “mailparser”;export const handler = async (event) => {
console.log(“request:”, JSON.stringify(event, undefined, 2));
let res = “0”
l
グラフ画像を含むPDFをLambdaで動的に生成する
## はじめに
以前も[こちらの記事](https://qiita.com/taisuke-j/items/047bebb3d85b48e5fddb)でTypescript(サーバーサイド)を使ったPDFの生成に関して書いたのですが、今回はグラフ画像を埋め込んだPDFを動的に生成するエンドポイントを実装した際のメモです。「グラフ画像をサーバーサイドで動的に作りたい」、というだけの場合も役に立つかもしれません。
## PDF生成までの流れ
元々は[chartjs-node-canvas](https://www.npmjs.com/package/chartjs-node-canvas)を使ってのグラフ画像の生成を考えていたのですが、node v18で動かず、代わりに[Puppeteer](https://pptr.dev/)でheadles chromeを起動しスクリーンショットを撮る形にしました。ブラウザでのグラフ描画には[echarts](https://echarts.apache.org/en/index.html)を使用しました。以下、生成までの流れとなります。
1.
HEIC(HEIF)画像をJPEGに一括変換する
# はじめに
iOS(11以降)では写真を撮影したときに、特に設定をしていなければHEIFと呼ばれる方式で画像を保存します。拡張子はHEICです。この方式は高画質かつファイルサイズが小さいので便利そうなのですが、Apple系のOS以外ではまだサポートが充実していません。今回はHEIC画像を一括(バッチ)でJPEGに変換する方法をいくつか試してみます。# Windows版ImageMagickを使う
ImageMagickは様々なフォーマットに対応したツールで、最近HEICを読み込めるようになりました。Windowsバッチで次のように書くと、batファイルを設置した場所と同じ階層のHEICファイルを全てJEPGに変換できます。PATHを通すことができない場合はImageMagickの場所をフルパスで書くことで実行できます。“`bat
for %%f in (*.HEIC) do (
start convert.exe “%%~nf”.HEIC “%%~nf”.JPEG
)
“`
この例はマルチプロセスで、処理するファイル数と同じ数のプロセスが実行されま
Step Functionsを使ってみた
# Step Functions使ってみた
仕事でStep Functionsを利用することになり、既に別サービスが稼働しているため私用パソコン・個人AWSアカウントを用いて動作の確認をしてみました。## ソースコード一式
私のGitHubの下記リポジトリに保存しております。
設定や事前準備は`src/README.md`を確認してください。
(AWS認証情報などは消しております)
[aws-step_functions](https://github.com/k-genki0913/aws-step_functions)作成したStep Functionsのワークフローは以下になります。
### Step Functionsに関して調べたこと
※全体のソースコードはリポジトリを見て下さい。#### ▪️sam te
【AWS】Lambdaで「StartQuery へのリクエスト中にエラーが発生しました」と表示された場合
# 概要
AWS LambdaをCloudformationで作成した際、
「StartQuery へのリクエスト中にエラーが発生しました」
というエラーに遭遇しました。原因と解決法を紹介します。
# エラー概要
以下でCF実行。
“`yaml
LambdaRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: ‘2012-10-17’
Statement:
–
Effect: Allow
Principal:
Service:
– sns.amazonaws.com
– lambda.amazonaws.com
Action:
– sts:AssumeRole
Path: “/”
R
ローカルのAWS Lambda開発環境を整える(hot reload)
ローカルでLambdaの開発をやるために環境を整備したのでやったことを残しておきます。
zenn にも全く同じ内容を書いています。
https://zenn.dev/imishinist/articles/8ff24429f0eb41
今回作成したサンプルの全体コードはこちらのリポジトリです。
https://github.com/imishinist/lambda-sample
## できること
1. ローカルに立ち上げたDockerでAWS Lambdaを動かす
2. 手元からcurlでLambdaを呼び出す
3. ビルド時に自動でLambdaを更新する(hot-reload)### 動かし方
Goのコード(Lambdaのハンドラ)をビルドしたいときは以下の `make` を実行する。
“`bash
make build-lambda
“`Lambdaを立ち上げたいときは `docker-compose` で起動する。
“`bash
docker compose up -d –build
“`## 仕組み
### AWS Lambda を
S3書き込みするLambda関数のDockerイメージを作成しEventBridgeで定刻実行させる「サーバレスバッチ」をTerraformで自動構築する
忙しくてなかなか時間取れない( ; ; )
掲題のようなニーズってよくありそうなので公開しておきます。
# 概要
https://github.com/yagrush/serverless-scheduled-batch-by-terraform
terraformで以下を自動構築するための一式。
* tfstate管理をS3, tfstate_lock管理をDynamoDBに任せる(のに必要な環境を作成する)
* S3バケットを作る(こちらは業務処理用途のバケット)
* ECRにlambdaのdockerイメージを登録する
* S3にオブジェクトを書き込むlambda関数をdockerイメージから作成する
* EventBridgeで毎分lambda関数を実行するようスケジューリングするちなみにlambda関数の中身は `lambda/foo` 以下にpythonプログラム一式があります。
そちらをいじる場合は `lambda/foo` をワークディレクトリとしてVSCodeなどで開いて作業して下さい。# 自分が試した環境(&必要なソフトウェア、設定)
* M2,
localstackについて理解する(lambda版)
# ローカルスタックとは
localstcakとは、AWSのクラウドサービスをローカル環境でエミュレートするためのツールです。例えば,AWSを使用したサービスを開発している際に,AWSを使用したapiなどのテストを行いたい時があります.その時に,実際にAWSのサービスを使用するとコストがかかってしまうため,ローカル環境でAWSのサービスをエミュレートすることで,コストを抑えることができます.
:::note info
mockとやっていることは同じなので,コスト削減以外にもテストを行う際は使うと便利です!!
:::# ローカルスタックの構成
ローカルスタックは,数多くのAWSサービスをエミュレートすることができます.
今回はlambdaに関してやっていこうと思います.:::note info
s3のみを使う場合ではminioを使う方が便利かも知れません.
:::まずはこのドキュメントを参考にして,作っていきます.
環境はdockerを使って構築します.https://docs.localstack.cloud/user-guide/aws/lambda/
#
CloudFormationとPyplateを使ってSecurityGroupのIngressに指定したIPアドレスを登録しよう!
## 概要
CloudFormationマクロの一つであるPyplateを使うことでCloudFormationテンプレート(yaml)内にPythonのコードを実行することができます
今回はPyplateを使ってSecurityGroupのIngressに指定したIPアドレスを登録する方法を例に解説します## 前提
– VPCを作成済み
– 今回はPythonを使用します## Lambdaを格納するS3バケットの作成
S3内のzipファイルからLambdaを実行するためのS3バケットを作成します
S3内のファイル群は公開したくないのでPublic Accessを全てブロックします“`lambda-archive-s3.yml
AWSTemplateFormatVersion: 2010-09-09
Description: “S3 Bucket Stack For Account Setup”# ————————————-
# Metadata
# ———————————–
S3へアップロードされたことをトリガーに実行されるLambdaをCloudFormationで構築しよう!
## 概要
今回はS3へzipファイルがアップロードされたことをトリガーにzipファイルをLambdaで解凍する時に使用するS3とLambdaをCloudFormationを使って構築していきたいと思います## 前提
– VPCを作成済み
– 今回はLambda用のPrivate Subnetを使用するのでNATゲートウェイを構築済み## Lambdaを格納するS3バケットの作成
S3内のzipファイルからLambdaを実行するためのS3バケットを作成します
S3内のファイル群は公開したくないのでPublic Accessを全てブロックします“`lambda-archive-s3.yml
AWSTemplateFormatVersion: 2010-09-09
Description: “S3 Bucket Stack For Account Setup”# ————————————-
# Metadata
# ————————————-
Metadata:
AWS::
AWS LambdaをDocker化する際の注意点と学びの備忘録
## はじめに
AWS Lambdaを使ってデプロイするときに、
Dockerイメージを使って、デプロイしたいケースがありました。すでに、動いているLambdaをLambda Dockerへ変更する際に、
つまずきポイントがあったので、備忘録として、残しておきます## Lambdaでコンテナイメージを利用とは?
Lambdaには、通常のLambda(ソースコードのみを記述するタイプ)と
Dockerイメージを利用するパターンが存在する
※Dockerイメージは、ECRから参照し、Lambda上で実行が出来る![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3747609/161d2b17-1359-8461-61be-afac9ba916b7.png)
### なぜDockerイメージを使うのか?
通常のLambdaとLambda Dockerには、仕様の一部に違う部分が存在している今回、Lambda Dockerを利用したいと考えたのは、
通常のLambdaよりも、大き
Nuxt3アプリをLambdaにデプロイする方法
– nuxt v3.11
– ServerlessFramework v3.38.0## はじめに
Nuxt3で作成したアプリは比較的簡単にLambdaにデプロイすることができます。
ここではデプロイする方法の一例を紹介します。## Nuxt3 ビルド設定
`nuxt.config.ts`にAWS Lambda用のビルド設定を追加します。
“`typescript
export default defineNuxtConfig({
// …
nitro: {
preset: ‘aws-lambda’,
serveStatic: true,
}
})
“`静的ファイルをS3などに配置する場合は`serveStatic`を`false`にします。
## Serverless Framework
デプロイにはServerlessFrameworkを使用します。### インストール
“` shell
npm install -g serverless
“`### AWS IAM ユーザーを設定
serverlessがAWSにアク
【aws】lambda layerを使ってlambdaにモジュールをインポートする
## はじめに
AWS Lambdaではawsが提供しているもの以外のライブラリを使いたい場合、事前にライブラリをアップロードする必要があります。
(私はそれを知らずに`luxon is not defined`エラーを出しました😅)
今回はその方法を記録したいと思います。## 事前準備
– npmのインストール
– awsコマンドのインストール([こちらのAWS公式サイト](https://repost.aws/ja/knowledge-center/lambda-import-module-error-nodejs)が参考になりました。)## layerのアップロード
以下の手順はお使いのPCのCLIで実行してください。
#### 1.nodejsフォルダーを作成
“`shell
$ mkdir nodejs
“`#### 2.利用したいライブラリをnodejsフォルダーにインストール
“`shell
$ cd nodejs
$ npm init
$ npm install –save ライブラリ名
“`#### 3.nodejsフォルダを圧縮
“`sh
【aws】CloudWatchを用いてlambdaのエラーを確認する
## はじめに
私はaws初学者であり、現在awsのlambda, GateWay, DynamoDBを用いてAPIを開発しています。作成したAPIを叩いたとき、`{“message”: “Internal server error”} `というエラーが現れました。このメッセージだけでは、具体的なエラーの原因がわかりません。調べたところ、Lambdaで発生した実行時のエラーはCloudWatchで確認できることがわかりました。今回はその確認方法をまとめて記録します。## CloudWatchを開く
lambdaの`モニタリング`タブから`CloudWatch ログを表示`を選択し、`CloudWatch/ロググループ/Catfeeder`にアクセスすることができます(手動でCloudWatchを開いてロググループ→Catfeederでアクセスすることもできます)![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984024/c3d85fd8-1102-ea2a-8d8c-afea817c6
Excelのlambda使って3つ以上のセルの一致を確認するユーザ定義関数作った
Excel触っているとたくさん(3つ以上)のセルが一致しているかどうかを数式で書きたい場面出てこないだろうか、自分はたまにある。まあ5,6個程度ならAND関数を連結してもいいんだけど、もっと数が増えると?ググると解決策は割と簡単に出てくるんだが、どうもExcelの数式はちょっと複雑になるともう何だかよく分からなくなる。
そこでふとそう言えばlambda使ってユーザ定義関数作れないだろうかと思い作ってみた。
作り方の基本はこれもググれば出てくるので割愛。# 2024/05/23 記事更新
上手く行かないケースの指摘を受けて確かにと思い記事更新。https://qiita.com/shinmuro/items/0f40533aa87b19feb307#comment-b92f0fd6e46585597604
ついでに指摘頂いた方ほど汎用的なわけではないが、再帰使ったコードに変えてみた。
これで`{FALSE,FALSE,FALSE}`ケースでも TRUE返すようになった。名前: _countall(cells)
“`
=REDUCE(0, cells, LAMBDA(x,