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

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

[Go言語] Golang + AWS Lambdaを実行するとfork/exec /var/task/main: exec format error: PathError

## 概要
Serverless FrameworkやSAMやbuildしたものをそのまま上げてみるなどして、AWS LambdaにGoをデプロイするとどのケースでも以下のエラーがCloudWatchに出力されていた。筆者はM1 Macを使っていることで詰まった。

“`
fork/exec /var/task/main: exec format error: PathError
null
“`

## 解決策

### 一般的な解決法
go buildがなんかしらおかしいはずです。以下のようにgo buildはしましたか?
生成したバイナリのディレクトリ位置も確認してみたください。

“`
$ GOOS=linux go build .
“`

### M1 Macユーザー
go build時にLambdaで指定しているアーキテクチャに合わせていますか?
デフォルトはx86_64のため設定を変更をしていなければ以下のようにamd64でbuildするようにする

“`
$ GOARCH=amd64 GOOS=linux go build .
“`

元記事を表示

AWS PrivateLink 経由で ALB 配下 の Lambda 関数を起動する

## はじめに
2021/9/28 のアップデートで NLB のターゲットグループに ALB を指定できるようになりました :tada:

https://aws.amazon.com/jp/about-aws/whats-new/2021/09/application-load-balancer-aws-privatelink-static-ip-addresses-network-load-balancer/

これにより AWS が提供する機能だけを使用して、ALB 配下にある Lambda 関数を PrivateLink 経由で呼び出すこともできるはずです。ALB ターゲットタイプの使い方や注意点等は他の記事に譲るとして、本記事では以下の構成を試してみます。

![image.png](https://qiita-i

元記事を表示

Lambda, Amazon Textractを利用してS3に保存した画像からテキストを抽出する(Golang)

# はじめに

S3に画像を追加すると、自動的にその画像内のテキストを抽出し、テキストファイルとして保存する、というシステムを[Lambda](https://aws.amazon.com/jp/lambda/)・[Amazon Textract](https://aws.amazon.com/jp/textract/)・Golangを利用して作りました。

作成手順を共有します。

### 完成イメージ

![ocr.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455240/80ef8a6e-a645-99ad-8d4e-ab1f62fb8046.png)

### Textractとは

[Amazon Textract](https://aws.amazon.com/jp/textract/)はAWSが提供するクラウドOCRサービスです。詳しくは以下の記事を参照してください。

https://qiita.com/windows222/items/07c3683c052d6e2b

元記事を表示

AWS Systems ManagerのParameter StoreからLambdaでパラメータ取得

#パラメータの作成
パラメータの作成ボタンからパラメータを2つ作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630191/e0952c93-d95a-2fcf-0e27-29c49235b86a.png)


今回サンプルとして作ったパラメータの値は、テキスト型の架空のURLです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630191/7195f374-0777-6d22-7080-ee26d10364ab.png)

#Lambdaの作成
①関数名とランタイムだけ変更し関数を作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630191/ce775a2c-51e1-39ee-912c-45b7a3c3b57c.png)


②設定タブ→アクセス権限

元記事を表示

AWS Lambda プロビジョニング済み同時実行を設定する

# プロビジョニング済み同時実行とは
コールドスタートを防ぐ機能です。コールドスタートとは Lambda 関数の呼び出し時にインスタンスを初期化してから関数を実行することです。プロビジョニング済み同時実行数に 0 より大きな値を設定することで追加料金が発生します。

# 設定手順

「新しいバージョンを発行」をクリックします。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/1ea6eb7a-33a1-d93e-f774-d6ba8ae349e4.png)

「発行」をクリックします。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/fec4f794-71ac-537d-ffe0-6e6a56ace2be.png)

「設定タブ」$\to$「プロビジョニングされた同時実行」$\to$ 「編集」の順にクリックします。

![3.png](https://qiita-image-s

元記事を表示

AWS API Gateway バージョンやエイリアスを指定して Lambda 関数を呼び出す

# 設定の概要

やることは以下の通りです。

– Lamdbda
– バージョンやエイリアスを作成する
– API Gateway の呼び出し許可のためにリソースベースのポリシーを作成する
– API Gateway
– Lambda 関数名に `{stageVariables.version}` や `{stageVariables.alias}` を含める
– ステージ変数を追加する

# 手順

## Lambda

– バージョンやエイリアスを作成する

ここではバージョンを作成します。

「新しいバージョンを発行」をクリックします。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/a1b3ee28-7343-9884-2122-71b70761f039.png)

「発行」をクリックします。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/efbfa

元記事を表示

LINEbotに画像を送信すると、その画像をS3に保存

# 前提
・Lineデベロッパーアカウント開設済み
・LinebotのwebhookにApiGatewayのpostエンドポイント設定済み
・LambdaとApiGatewayの紐づけ
・その他LINE発行のトークンを環境変数に設定やS3へのアクセス権限付与などLambda周り
詳しくは下記記事が参考になります。
https://qiita.com/w2or3w/items/1b80bfbae59fe19e2015

# コード
Lambdaに下記コード記述・デプロイ
あなたのバケット名はS3のバケット名に変えてください

“`lambda_function.py
import os
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.models import (
MessageEvent, Te

元記事を表示

LambdaEdgeを利用したcognitoのトークン検証

通常、認証確認処理はwebサーバーでやることが多いと思いますが、
グローバルサイトでかつ同時に多量のアクセスが考えられる場合、lambdaEdgeで認証チェックを実装すると
静的なサイト全体に認証がかけられ、かつWEBサーバーにアクセス負荷をかけずに認証確認処理を実装できます。

今回は、cognitoから発行されたid_tokenをでコードして検証するコードをご紹介します。

#Lambda関数でのnpm moduleの利用法
今回、実装するにあたって

– jsonwebtoken
– jwk-to-pem

これら2つのモジュールを利用しています。これらはnpmでinstallを行うのですが、Lambdaコンソール上ではもちろんnpmは実行できません。
このため、まずはlambdaのコンソールからアクション>関数のエクスポートでデプロイパッケージをDLしてください。
DLできたら解凍し、そこにpackage.jsonを追加するなどしてnpm installで上記の2つのモジュールをinstallしてください。

開発についてもローカル環境でエディタを使って行う方が圧倒的に効率的だ

元記事を表示

React応用 – PartX – React > Netlify > Lambda > Python > MySQLどこまでいけるんだろう

# タイトルの件

妄想してみました。
どこまで出来るか試してみたいと思います。

# React ⇒ Netlify

いつものように`create-react-app`

“`
npx create-react-app プロジェクト名 –template typescript
“`

いつものように`yarn start`でReact初期画面を`localhost:3000`で表示されることを確認します。

“`
cd プロジェクト名
yarn start
“`

gitにコミット&プッシュ
※git@github.comXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXは、後述のGitHubで新しいリポジトリ作成の際に表示されるものを入力します。

“`
git init
git remote add origin git@github.comXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
git push -u origin master
“`

Githubで新しいリポジトリを作成した際に表示されるURLみたいなやつ。

![im

元記事を表示

AWS Lambdaで使いたい環境変数をAWS SAM CLIでどうするか

##はじめに
環境変数の扱いについて、戸惑いがありましたのでまとめます。
用途や仕様の背景が理解し切れて一ませんが、少なくとも現状はベストエフォートとは思えず、改善が進むと嬉しいです。

##やっていたことの概要
– 言語:Rust(記事としては、Rustに依存する内容ではないです)
– 作っていたもの:AWS Lambda関数
– 動作確認の方法:後述(※)
– デプロイの方法:AWS SAM CLI(`sam deploy`)
– その他:AWSの設定はCloudDormation(`template.yaml`)に集約

#####※動作確認の方法
AWS SAMを使うとローカルでLambda関数の動作確認が可能ですが、私の環境ではビルドが遅くデプロイ直前までは、`cargo run`で動作確認を行っていました。

| 動作確認タイミング | 動作確認の例 | 動作確認環境 |
| —- | —- | —- |
| 開発時 | `cargo run`, `cargo test` | MacOS |
| デプロイ前検証 | `sam loc

元記事を表示

爆速でモックAPIを構築する

AWS Chalice を使って爆速でモックAPIを作ってみました。

AWS Chalice は Python 製のフレームワークで API Gateway と Lambda をサクッと構築できます。(詳細は[公式](https://aws.github.io/chalice/index)を参照ください。)

### 構成

構築する環境はAPI Gateway + Lambdaとなります。

![composition.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1167819/7fb64117-dfd2-937f-800d-f705428feb73.png)

今回は以下前提にて構築します。

– pythonインストール済み
– Lambdaに付与するロールは事前作成済み(ロールの自動生成は使わない)
– AWS CLIの設定済み

### 構築
何はともあれ作っていきます。

1. chalice インストール

“`
pip install chalice

元記事を表示

AWS CLIのインストールからLambda作成までの流れ

# はじめに
GCP好きですが、わけあってAWSを使う必要がでてきました。
そんなAWS初心者のメモです。

# AWS CLIインストール
macOSの手順は以下にまとめられています。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-mac.html

色々書いていますがユーザーインターフェースを使用したインストールが楽そうだったので、最新バージョンのAWS CLIをダウンロードしてインストールしました。

## インストールの検証
以下のコマンドで確かめます。

“`shell
$ which aws
/usr/local/bin/aws
$ aws –version
aws-cli/2.1.29 Python/3.7.4 Darwin/18.7.0 botocore/2.0.0
“`

# AWS CLIのセットアップ
手順は以下にまとめられています。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configu

元記事を表示

CloudWatch LogsInsightsでLambdaの速度を計測してみよう

隙あらばCloudWatch LogsInsightsで速度集計したりしています。(自己紹介)

本記事はCloudWatch LogsInsightsでやってみよう記事第2弾です。前回の記事はこちら。

https://qiita.com/zom/items/310b7995135b3edcc093

第2弾としてLambdaの速度計測をします。

## Lambdaのログの基本(デフォルトの設定の場合)と余談

私自身、Lambdaに出力されるログをいじったことがないので、そもそもデフォルト以外のログが存在するのか把握しておりません。
Lambda関数内でログを仕込んでおけば話は別ですが。

CloudWatch Logs上には `/aws/lambda/$Lambda関数名` といったロググループで出力されます。
そしてログの中身としてはこのようになります。 `$` の部分は適宜置き換えて読んでください。

“`
START RequestId: $request_id Version: $$version
END RequestId: $request_id
REPORT R

元記事を表示

CloudFormationの更新なしでLambdaをデプロイする

特にCIでのテストをスムーズにするのに使いたいですね。

# Serverless Flamework
`serverless deploy function -f Lambda名`
https://dev.classmethod.jp/articles/serverless-deploy-aws-whats-going-on/`
https://www.serverless.com/framework/docs/providers/aws/cli-reference/deploy
# CDK
`cdk deploy –hotswap`
https://github.com/aws/aws-cdk/blob/master/packages/aws-cdk/README.md

ほかは見つけたら随時更新

元記事を表示

AWS初学者がちょっとした分析基盤作ってみたのでメモ

# はじめに
AWSをほとんど使ったことがなかった私がAWS上でちょっとしたものを作る際に、
`考えていたこと`や`調べたサイト`などをメモ書きとして残します。⚠︎自分用のため読みづらかったらすみません。。

# 作りたいもの
定期的に特定のアプリのAppStoreレビューをスクレイピング => 整形 => データ格納 => 集計 => 可視化をAWS上でできるように構築したい

# 作る前注意点
`AWS 高額請求`や`GCP 高額請求`で検索するとやらかした話が思った以上に出てくる。。

– [10日間 で AWS Lambda 関数を 28億回 実行した話](https://blog.mmmcorp.co.jp/blog/2019/12/25/lambda-cloud-bankruptcy/)
– [BigQueryで150万円溶かした人の顔](https://qiita.com/itkr/items/745d54c781badc148bb9)
– [AWS 高額請求 |クラウド利用の注意点!高額請求事例と対策方法](https://www.3sss.co.jp/tis/medi

元記事を表示

LambdaでS3の.glbファイルのオフスクリーンレンダリング【Python,Docker,OSmesa】

# はじめに

LambdaでPyrenderを使ってオフスクリーンレンダリングをしたいのですが、レイヤを作るだけではOpenGLが使えないので使えません。OpenGLの機能をGPUの無いLambdaで実行するためにOSmesaというライブラリを使ってCPUでレンダリングします。自分用メモです。

# 前提

– AWSアカウントを持っている
– Dockerの実行環境

# やったこと

レイヤだけでは対応できないのでDockerイメージを作ってコンテナでデプロイします。Lambdaのベースイメージでは(自分がやった限りでは)うまくいかなかったので、Ubuntuのベースイメージを使います。フォルダ構成は以下の通りです。

“`
.
│ app.py
│ Dockerfile
│ env.txt
| entry.sh
└─ requirements.txt
“`

Dockerfileは以下の通りです。

“`Dockerfile:Dockerfile
FROM ubuntu:18.04

ARG FUNCTION_DIR=”/function”
RUN mkdir -p

元記事を表示

ECRへのレプリケーションをトリガーにECSのサービス更新を実行

## 以下の記事を参照して頂ければと思います
https://note.com/shift_tech/n/n24e42bcce1f6

**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です**

## 補足
ソースコード全体は以下です。

https://github.com/yuta-katayama-23/ecs-update-service

元記事を表示

AWSリソースの削除漏れを日次通知するSAMテンプレートを作成した

# 構成図

![config-notify.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/564924a7-f39b-f81e-40c4-96222a1b7c10.png)

# 概要

Configでサポートされているリソースに限り、削除漏れのリソースを通知します。
リソースが作成されたらDynamoDBにアイテムが保存され、削除したらアイテムも削除されます。
指定された通知日時までに削除されなかったリソースのみ、Slackに通知される仕組みです。
通知間隔は1日で設定していますが、EventBridgeのスケジュールルールで起動しているので変更可能。

# 事前準備

## SlackのWebhook URLの取得

こちらの記事が分かりやすかったです。

https://qiita.com/suo-takefumi/items/738793e2e426f52d7d42

## SlackのWebhook URLをSSM Parameter Storeに格納

コンソールからでいい

元記事を表示

AWS LambdaをRubyのコンテナで動かしてみる

AWS Lambdaをコンテナで動かしてみました。言語は特に理由はないのですがRubyで試しました。

手順

1. ソースコード
2. Lambda作成
3. Lambda実行
4. ソースコード更新

# ソースコード準備

ファイルは以下の3つを用意します。

`app.rb`

“`app.rb
module LambdaFunction
class Handler
def self.process(event:,context:)
p “Hello from Ruby 2.7 container image!”
p event
end
end
end
“`

`Dockerfile`

“`Dockerfile
FROM public.ecr.aws/lambda/ruby:2.7

# Copy function code
COPY app.rb ${LAMBDA_TASK_ROOT}

# Copy dependency management file
COPY Gemfile ${LAMBDA_TASK_ROOT}

元記事を表示

API Geteway と Lambda の使い方

こちらのプログラムを改造してみました。
[Web ページから、AWS Lambda の関数に引数付きでアクセスする](https://qiita.com/ekzemplaro/items/62dd9c17255c6145fe63)
html と js のみを変更しました。

実行例
![cors_aa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/43f81b27-de30-7c98-c137-2a0865e8c01a.png)

“`html:index.html






<

元記事を表示

OTHERカテゴリの最新記事