- 1. ServerlessFrameworkでサービス名を長くしすぎるとデプロイできない
- 2. docker/ecr/lambda(python3.9)を使って、chromeとseleniumでスクレイピングする
- 3. CodePipelineからLambdaを使ってECSタスク定義を更新する
- 4. AWS Cognito上のログイン履歴をLambdaでS3に定期出力
- 5. AWS LambdaのLayerを利用する3つの種類
- 6. AWSのアカウント間で定期的にS3オブジェクトをコピー
- 7. Inspector v2の脆弱性診断内容を「Slackベース」で管理する
- 8. 「AWS Lambda実践ガイド 第2版」をレビューしてみる
- 9. AWS SAMを使って最もシンプルにLambda × APIGatewayのWebAPIを構築する
- 10. AWS提供でないベースイメージからLambdaを作る
- 11. Microsoft SQL ServerにODBCで接続するためのLambda Layerを作成する方法
- 12. OpenCV で (-212:Parsing error) Failed to open NetParameter file: xxx.cfg in function ‘readNetFromDarknet’ が発生したときに確認すること
- 13. 簡単にAWS Lambdaでrubyコードを実行できます
- 14. 【AWS CDK v2】VPC LambdaからAWS Batchにジョブを投入する構成を作ってみた
- 15. 「OCI Functions」と「 AWS Lambda」の比較
- 16. M5StackとSORACOM Arcを使って「消耗品の減少をお知らせするボタン」を作ろう
- 17. Rustのlambda_http辛すぎなのでaxumしてみた
- 18. [AWS] Step FunctionsのoutputPath、resultPath、resultSelectorを使いこなす
- 19. DockerのLambdaコンテナイメージをgolangで動かしてみた
- 20. [Lambda]s3.putObjectが初回実行時に完了しない時の対処法
ServerlessFrameworkでサービス名を長くしすぎるとデプロイできない
# はじめに
ServerlessFrameworkでAPIGateway, Lambdaへのデプロイした際に発生したエラーについて記録に残したいと思います。# 原因
デプロイの際、作成されるIamRoleの文字数制限を超えてしまい、エラーが発生する。### エラー内容
“`bash
Error:
CREATE_FAILED: IamRoleLambdaExecution (AWS::IAM::Role)
1 validation error detected: Value ‘XXXXXXX-XXXX-XXXXXXXXXXXXXX-XXXX-XXX-dev-ap-northeast-1-lambdaRole’ at ‘roleName’ failed to satisfy constraint: Member must have length less than or equal to 64 (Service: AmazonIdentityManagement; Status Code: 400; Error Code: ValidationError; Request ID
docker/ecr/lambda(python3.9)を使って、chromeとseleniumでスクレイピングする
serverless-chromeを使った記事は割とあるが、chromeのバージョンやらpythonのバージョンやらをいい感じにできない。
ecrを使うとlambdaにデプロイできるサイズ上限が一気にあがるので、普通に自前でchromeビルドして全部dockerimageに突っ込んじゃえばよくね?というもの。https://github.com/adieuadieu/serverless-chrome
ローカルでdockerを使います。
python3.9のlambdaで動かします。# ファイル
“`
.
├── test.py
└── Dockerfile
“`# コード
この例ではchrome103とlambda(python3.9)
“`Dockerfile:Dockerfile
# chromeのセットアップ用
FROM public.ecr.aws/lambda/python:3.9 as build
RUN yum install -y unzip && \
curl -Lo “/tmp/chromedriver.zip” “https://
CodePipelineからLambdaを使ってECSタスク定義を更新する
# 概要
AWS CodePipelineを使うとECSに自動デプロイができるが、対応しているのはECSサービスに紐づいたタスク定義だけとなっている。
そこで、EventBridgeを使った定時バッチ用に都度コンテナを起動するタスク定義の更新をCodePipelineから行う方法を試した。# CodePipelineの流れ
今回作成するパイプラインは以下の通り。1. Sourceステージ:GitHubから指定したブランチのコードをpullする
1. Buildステージ:buildspec.ymlの手順でビルド、イメージをECR登録
1. Deployステージ:ビルドしたイメージを設定したタスク定義をECSにデプロイDeployステージのアクションプロバイダーをAmazon ECSにすると、Buildステージのアクションでアーティファクトに出力したイメージ定義ファイルを元に、ビルドしたイメージを使ってデプロイできる。
この方法はサービスに紐づいていないタスク定義ではできないので、今回はタスク定義の更新にLambda関数を使う。# Lambda関数でタスク定義を更新する流れ
AWS Cognito上のログイン履歴をLambdaでS3に定期出力
初めまして、フルカイテンでフロントエンドを担当しておりますヒロシと申します。
テックブログを始めて2つ目の記事を書かせていただくことになりました。フロントと言いつつ、今回はAWSの記事になります…!
思いのほかCognitoのログイン履歴をLambdaでCSV出力する情報が多くなかった?ので、今回記事にしてみようと思いました!# 背景・動機
弊社ではサービス導入後、一部お客様で日常業務への利用定着や効果的な活用が進まない問題が発生しました。しかし、当初は定量的な指標がなかったため、各お客様がどの程度利用しているかはカスタマーサクセスチームの感覚ベースとなっていました。
利用定着が進まないまま放置しているとチャーンリスクが増加します。
そこでユーザーの活用状況を知る方法の一つとして[Cognito](https://aws.amazon.com/jp/cognito/)で保有しているユーザーのログイン履歴を参照することにしました。# 本記事の主な対象
Cognitoを業務利用している人# やること
お客様の多くは主に1
AWS LambdaのLayerを利用する3つの種類
AWS LambdaのLayerの作り方、使い方をよく忘れるので、備忘録として残しておきます。
以下の3つのことができるLayerを作ります。3つを選択的またはすべて含めたLayerにもできますので、必要なものをLayerに選択して含めてください。
対象言語はNode.jsの場合です。① 自作のクラスを含める
② Npmモジュールを含める
③ 実行ファイルを含める# 準備
まず適当なフォルダを作成します。例えば、layer_testというフォルダを作ります。以降、ここをルートフォルダとみなします。
“`
> mkdir layer_test
> cd layer_test
“`作業環境に、Node.jsがセットアップされている前提です。
バージョンは、Lambdaで指定予定のバージョンに合わせます。今回は、v14系にしました。# ①自作のクラスを含める
こんな感じの自作のクラスを含めます。
先ほど作成したルートフォルダに作成します。“`
> vi hello.js
“`中身はこんな感じです。
“`js:hello.js
class Hello{
AWSのアカウント間で定期的にS3オブジェクトをコピー
# はじめに
今回やりたいことは、
「**あるAWSアカウントのS3バケットにあるオブジェクトを、異なるAWSアカウントのS3バケットに、毎日特定の時刻にコピーする**」
内容はすごく単純だけど、実際の中身はS3だけでなくIAM周りやEventBridgeなど複数要素が必要になり勉強になったのでまとめます。ポイントは、
– コピー処理:コピーするプログラムをどう書く?
– 権限周り:異なるアカウントのS3オブジェクトにどうやってアクセスする?
– 定期実行:どうやって定期実行させる?なおこの記事は、作業手順をまとめたものであり各要素技術について詳細に説明するものではありません(AssumeRoleは[この記事](https://dev.classmethod.jp/articles/iam-role-passrole-assumerole/)が個人的に面白かったです)。とはいえ、ここに記述する手順を踏んで実際に手を動化してみると色々勉強になりますのでトライしてみてください。
# 実現方法
今回はLambda関数を用いた方法について言及する。コピー先にLambda関数を作成し
Inspector v2の脆弱性診断内容を「Slackベース」で管理する
# はじめに
ご覧いただきありがとうございます。
以前[Amazon Inspector Classic](https://qiita.com/gahirosan/items/7a95ccc86e1cec205859)について記事を書きました。
最近 現行バージョンであるInspector v2で検知を行ったところ、検知精度に差があることがわかり、「Classic⇒v2」への移行を行っているところです。
今回はSlack画面で、Inspector v2の脆弱性検知結果を管理できるようにしたいと思います。
# 概要
1. 事前準備
2. Slack ~ Lambda間の連携
3. Lambda ~ Slack間の連携
4. Lambda関数の作成
5. 動作確認![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697264/95a99621-0a5e-55c7-ffd3-3703d08dbdbe.png)
Slackのプライベートチャンネルでコマンドを実行すると、La
「AWS Lambda実践ガイド 第2版」をレビューしてみる
# AWS Lambda実践ガイド 第2版
久しぶりの3連休を生かして、少し前に購入し放置していた本書を取り組んでみた。
自分自身Lambdaは業務内で「アカウントがログインした時に通知がなる仕組み」を導入した時に使用した程度なので、Lambdaの理解をより深めたいなと思っていました。
# A. ずばり買いですか?
Q. 目的によります。■本書で学べること
・Lambdaを業務で使用するにあたり必要な仕様や構成の知識
・現場にてよく使われるLambdaの利用方法
・サーバーレスな構成と関連サービス(DynamoDB、SQS、SNS、SAMなど)の知見
・上記を生かした3~4つのハンズオン上記を目的にするならば十分買いだと思います。
※レベル感としてはサーバーレス初級者~中級者レベル自分自身は非常に満足しており、Lambdaの基礎知識はもちろんDynamoDBやSQSといった個人では勉強し辛い箇所もまとめ
AWS SAMを使って最もシンプルにLambda × APIGatewayのWebAPIを構築する
# 概要
今回は前回紹介したAWS LambdaのAWS サーバーレスアプリケーションモデル (Serverless Application Model)、AWS SAMの続編になります。
【前回の記事】
[AWS Lambda SAMとは?~AWS SAMを使ってPythonのLambdaプログラムを簡単に作成する~](https://qiita.com/fkooo/items/2dc5ded5149379d7305a “AWS Lambda SAMとは?~AWS SAMを使ってPythonのLambdaプログラムを簡単に作成する~”)SAMの便利さは前回の記事でなんとなくわかったと思うので今回からはより実践編です。
実際にSAMを使ってAWSのサービスを連携させてみようという内容です。第一回は、Lambda × APIGateway 編にしました。
この投稿を最後まで実行すると以下の図のようなAWSサービスで構築したWebAPI環境が、なんと**2ファイル30ライン**ほどで完成します。
理解しやすいように**最もシンプルな記載例**としてファイルサンプルを作成したので
AWS提供でないベースイメージからLambdaを作る
# はじめに
以前、コンテナイメージからLambdaを作りました。https://qiita.com/a_b_/items/d9398fd6efe0f66b6c6f
ところが諸事情(Amazon Linuxでは、PowerShellが十全に動かせず、MS365の監査ログが取得できない)のため、Ubuntuをベースとしたコンテナを作ろうとした際に、わかったことややったことを記事にします。
# 参考
コンテナイメージを使ったLambdaの仕組みについての解説は以下になります。
https://aws.amazon.com/jp/builders-flash/202104/new-lambda-container-development-2/?awsf.filter-name=*all
Dockerfileの作り方の参考にしたのは以下です。
https://github.com/nickadam/powershell-lambda
# Lambda動作の仕組み
公式の解説に書いてある内容の自分なりの解釈です。
– Lambda関数を実行するには、Lambdaサービスとラ
Microsoft SQL ServerにODBCで接続するためのLambda Layerを作成する方法
AWS Lambda から pyodbc を使って SQL Server に接続する案件があり、若干つまづいたので備忘録的なメモを残すことにしました。
# 環境
## Lambda
– ランタイムは Python 3.9
– アーキテクチャは x86_64## pyodbc
– unixODBC-2.3.11 (投稿時の最新)# TL;TR
– ほぼこれ(ありがたや。。。)
https://gist.github.com/diriver63/b72a954fa0da4851d89e5086aa13c6e8?permalink_comment_id=4199559#gistcomment-4199559– lambdaの環境変数にiniファイルまでのパスを設定する
– soファイルのバージョンに注意
# 手順(ざっくりと)
適当なディレクトリを作成
“`
$ mkdir pyodbc-layer
$ cd pyodbc-layer
“`Dockerfileを作成
“`
$ vi Dockerfile
“`https://gist.github.
OpenCV で (-212:Parsing error) Failed to open NetParameter file: xxx.cfg in function ‘readNetFromDarknet’ が発生したときに確認すること
## はじめに
OpenCV は画像処理ライブラリです
簡単に画像加工が行え、画像データを行列(numpy array)として扱えるため、機械学習でもよく使います
https://opencv.org/
バージョン 3.3 からは DNN (Deep Neural Network) モジュールが追加され、
OpenCV で機械学習モデルを使った推論が実行できるようになりましたreadNetFromDarknet や readNetFromTensorflow などによって、
他の機械学習ライブラリで学習したモデルを読み込んで使うことがきます## エラー内容
先日、以下の記事でやったのと同じように、Docker コンテナで AWS の Lambda 関数を作っていた時のこと
https://qiita.com/RyoWakabayashi/items/0734f7f0a76a5dad3770
今回は Darknet で学習したモデルを OpenCV で動かそうとしていました
https://pjreddie.com/darknet/
以下のようなコードでロードす
簡単にAWS Lambdaでrubyコードを実行できます
# 簡単にAWS Lambdaでrubyコードを実行できます
– ruby初心者
– AWS CLI使いたくない方 (AWS Consoleでやりたい)—
# Aws Lambdaとは
– AWSサーバーレス(サーバーなしでコード実行できるもの) → プログラム集中できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318767/43cd8d52-f791-342e-8833-9c1eca7f3258.png)—
# Aws Lambdaでできること
– バックエンドの処理
– マイクロサービス
– …—
# コードをAWS Lambdaにデプロイする方法
– AWS CLIでデプロイする(コマンドで実行する方法)
– https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html
– AWS Consoleでデプ
【AWS CDK v2】VPC LambdaからAWS Batchにジョブを投入する構成を作ってみた
# はじめに
AWS Batchにジョブを投入する方法はいくつかありますが、今回はVPC LambdaからAWS Batchにジョブを投入する構成をAWS CDKで作ってみました。# 構成図
VPC LambdaからAWS Batchにジョブ投入のリクエストを送る流れを示した図です。
VPC Lambdaは実際にはVPCの外にあり、ENI、VPC Endpointを経由してAWS Batchにジョブ投入のリクエストを送信することになります。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123126/be54a91f-2075-3b60-c02d-6de27c089d47.png)
# 動作環境
“`bash
$ cdk –version
2.30.0 (build 1529743)
$ node –version
v14.19.3
“`# やってみた
前提として、VPC、サブネットはすでに作成済であるとします。## AWS Batchを作る
まず、次のような
「OCI Functions」と「 AWS Lambda」の比較
__索引__
[1. 全体な比較](#1-全体な比較)
[2. 価格比較](#2-価格比較)
[3. 関連ドキュメント](#3-関連ドキュメント)# 1. 全体な比較
||OCI Functions|AWS Lambda|
|–|–|–|
|リリース|2019年7月|2014年11月|
|ベース|[Fn Project](https://fnproject.io/)|N/A|
|サポート言語|✔ Java
✔ Python
✔ Ruby
✔ Go
✔ Node.js
✔ C# (.NET)
[ドキュメント](https://docs.oracle.com/ja-jp/iaas/Content/Functions/Tasks/languagessupportedbyfunctions.htm)をご参照ください。|✔ [Java](http://docs.aws.amazon.com/lambda/latest/dg/java-lambda.html)
✔ [Python](http://docs.aws.amazon.com/lamb
M5StackとSORACOM Arcを使って「消耗品の減少をお知らせするボタン」を作ろう
みなさんはAmazonダッシュボタンのことを覚えていますか?ボタンを押すだけで商品をAmazonに発注できるというもので、今思えばIoTの先駆けとも言えるサービスでした。
残念ながら現在はこのサービス自体が終了しています。ですが、今も消耗品の棚卸しに苦慮している会社・オフィスは多いのではないでしょうか?
そこで今回、M5StackとSORACOM Arcを使って「オフィスの消耗品の減少をお知らせするボタン」を作ってみました。
消耗品をストックしている棚にこういったデバイスを設置しておき、
![iOS の画像.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60996/3893817a-8128-1277-6a75-1642fca1b26e.jpeg)
上下ボタンで
Rustのlambda_http辛すぎなのでaxumしてみた
# 目的
AWS LambdaでAPIっぽいことをするには[lambda_http](https://crates.io/crates/lambda_http)を使うことになるんですが、HTTPの低レイヤーを相手にすることが多くて辛いです。
何かいいものが無いかと調べていたら、数日前に[axum-aws-lambda](https://crates.io/crates/axum-aws-lambda)というものが出来ていたのでこれを使ってみました(この記事を書いた日からだと27日前でした)。# コード
## lambda_httpだけでやってみる。
“`rust:Cargo.toml
[package]
name = “web”
version = “0.1.0”
edition = “2021”[dependencies]
lambda_http = “0.5.2”
serde_json = “1”
tokio = { version = “1”, features = [“full”] }“`
“`rust:main.rs
use lambda_http::{
[AWS] Step FunctionsのoutputPath、resultPath、resultSelectorを使いこなす
# はじめに
AWS Step Functions の各タスクへの入力は、inputPathでJSON pathを指定することで、雑多な入力から必要な項目だけを拾うことができます。
出力側にはoutputPath、resultPath、resultSelectorというものがありますが、どうにも動作がわからなかったので調べてみようと思い立ちました。
と、勢い込んでみたものの、AWS Console に[Data flow simulator](https://console.aws.amazon.com/states/home?#/simulator) というよいものがありました。この記事読むより、シミュレーターで試してみたほうがよいです。
でも、めげずに書いてみます。
# 動作を確認した環境
## Lambda
入力と出力を確かめたいだけなので、値を返すだけのLambdaを作りました。これをStep Functionsの中で呼び出してみます。
“`ts:
export const sampleLambdaHandler = async (event: unknown
DockerのLambdaコンテナイメージをgolangで動かしてみた
AWSで公開されているgolangのLambdaコンテナイメージを動かしてみました。
## パッケージの構成
“`
├── docker
│ └── lambda-go-test
│ └── Dockerfile
├── docker-compose.yml
└── lambda
├── go.mod
├── go.sum
├── main
├── main.go
└── pkg
“`## Dockerファイル作成
[こちら](https://gallery.ecr.aws/lambda/go)を参考にDockerファイル等を作成。
“`dockerfile
FROM public.ecr.aws/lambda/go:1# Copy function code
COPY ../../lambda ${LAMBDA_TASK_ROOT}WORKDIR ${LAMBDA_TASK_ROOT}
# golangをinstall
RUN yum install -y golang# Set the CMD to y
[Lambda]s3.putObjectが初回実行時に完了しない時の対処法
AWS SDK for JavaScriptのs3.putObjectが、1回目は通らないのに2回目は通るという事態が起きました。
結論から言うと、promiseを返していなかったことが原因でした。だめだったコード
“`
s3.putobject({
Body: {body},
}, function(err, data) {“`