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

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

AWS Step Functions 調査メモ

## はじめに

AWS Step Functions の調査メモ。深堀りはせず概要を把握することが目標です。

## Step Functions で Lambda 実行

Step FunctionsでCloudWatch logsにログを書き込むLambdaを実行します。

以下はログを書き込むLambda(Python3.8)です。
Lambda実行時に受け取ったJSONデータをログに記録します。
また、return で受け取ったJSONデータを返しています。

“`python:test001
import json

def lambda_handler(event, context):
print(“test desu {0}”.format(event) )
return (event)
“`

– 必要なIAMロールは、CluodWatch Logs の以下3つ
– CreateLogGroup
– CreateLogStream
– PutLogEvents

作成したStepFunctionsのjsonコードです。

元記事を表示

AWSのLambdaを使ってS3間のファイルコピーを試してみた。

## はじめに
普段何かお試しで作りたい時は、主にGCPにVMインスタンスを立てて、そこで色々といじってみる事が多かったため、本格的に色々なクラウドサービスを試したことはなく、AWSもほとんど使ったことがなかった。
周りではクラウドと言えば **”AWS”** の選択肢が多い気がするので、基本的なサービスくらいは多少はいじれた方が良いかと思い、今回は触りながら、調べながら学んだことをメモとして残しておく。

## 前提
そもそもから勘違いをしていた部分なのだが、まずAWSアカウントを作成した場合、各リージョンにそれぞれデフォルトでVPCができるのだが、このVPCの中に色々なサービスを作成(追加)していく様なものかと想像していた。
しかし、実際には以下の様なイメージで、VPCに属させるサービスの方が少ないのではないかと思っている。
![Qiita-no049_img01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654767/220242cc-125f-8858-b642-b27434439f0b.

元記事を表示

AWS Toolkitの使用例(AWS Lambdaのリモート実行)

# AWS が提供するAWS Toolkitを使い AWS Lambda Python を実行してみる
– この記事でやることは、
– VSCodeを使いAWS Lambda の hello-lamdaをローカルから実行する(ローカルからリモート実行)
– VSCode上でソース編集してAWSクラウドにアップロードする(Lambda関数をデプロイする)
– `sam local invoke` 等の sam コマンドは利用しない
– 簡単なLambda作って、EC2インスタンス再起動する、CloudWatchLogsからlambda実行、みたいなインフラスクリプト相当を手軽に実行するくらいの用途です
– API Gateway等で実行するLambdaは`serverless framework`や`sam`や`cdk`を使う方が良いです
– JetBrainsのPyCharmやWebSotrmでLamdba関数作成で利用したことはあったけど、VSCodeで使うのは始めて

## 前提
– VSCodeはローカルにインストールしていること
– Dockerコンテナ

元記事を表示

Golang + Lambdaでサーバレス開発時にWarning「Support for “package.include” and “package.exclude” will be removed with next major release.」が出た時の対応

# 背景

Golang + Lambdaでサーバレス開発中に`sls invoke -f 関数名`を実行すると、以下のWarningが発生しました。

“`
Serverless: Deprecation warnings:

Support for “package.include” and “package.exclude” will be removed with next major release. Please use “package.patterns” instead
More Info: https://www.serverless.com/framework/docs/deprecations/#NEW_PACKAGE_PATTERNS
“`

# 対処法
`serverless.yml`を以下のように書き直せばOKです。

“`serverless.yml
package:
exclude:
– ./**
include:
– ./bin/**
“`

“`serverless.yml
package:
patterns:

元記事を表示

TerraformでRDSのパスワードローテーションのコードを作成する

# はじめに
検索してもあまり良い記事を見つけることができなかったため、自分で色々試して成功したことを記載します。

## VPC、サブネット、RDS
VPC、サブネット、RDSは検索すればたくさん出てくるので、既に作成済みを前提として記載します。
VPCのCIDRは**”10.0.0.0/16″**としております。
今回RDSは**Aurora PostgreSQL**を使用し、**プライベートサブネット**に配置します。
RDSのセキュリティグループは**PostgreSQLのポート(5432)に同VPC内(10.0.0.0/16)からのアクセスのみ許可**しております。

## パスワードローテーションの仕組み
AWS Secrets Managerに認証情報を保持し、Lambdaを使って定期的にパスワードを更新します。
https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/enable-rotation-rds.html

コンソールだと上記ドキュメント記載通りにすれば簡単に設定可能なのですが、これを

元記事を表示

徹底解説!Java8特性

皆さん、こんにちは!

最近、仕事を探しています。java エンジンニアとして面接をうける際に、よくjava8の特性の問題を質問されました。
だから、本記事はjava8の特性を中心としてまとめてご解説いたします。

### 一、ラムダ式
この前のjavaバージョンでリストをソートするために、下記のように実装すべきである。

“`java
List myList= Arrays.asList(“tom”, “jack”, “smith”, “allen”);
Collections.sort(myList, new Comparator() {
@Override
public int compare(String a, String b) {
return b.compareTo(a);
}
});
“`
だが、java8の特性(lambda式)を用いたら、下記のlambda式で簡単に実装できる。

“`java
Collections.sort(names, (a, b) -> b.compareTo(a));
“`

上記のlam

元記事を表示

ServerlessFrameworkを利用したLambdaでデバッグを実施する。

###記事作成に当たって
最近、Serverless Frameworkを利用してLambdaにNode.jsをデプロイしている。Serverless Frameworkはテンプレートも充実してるし、CI/CDの面でも優れているのでなかなか便利。だけど、デバッグのやり方がわからなくて困っていた。どうにか、簡単にデバッグをできないかなぁと思って、試行錯誤する中でデバッグ環境ができあがったので、記事にして共有します。

###構築時の環境情報
端末:Mac
エディタ:VsCode
node:v14.17.4(versionが古いと)
npm:7.20.5

###パッケージの環境構築

“`:packageのインストール
~/develop/study/serverless $ serverless create -t aws-nodejs-typescript -n debug_lambda -p debug_lambda
Serverless: Generating boilerplate…
Serverless: Generating boilerplate in “/User

元記事を表示

Lamda上のmatplotlibで日本語対応する

  Lambda上でmatplotlibを使ってグラフを作成したいとき、Lambdaには日本語フォントが含まれていないため日本語が豆腐になってしまいます。この記事では、日本語対応するための方法について説明します。

## 前提
matplotlibは別途利用できるようにレイヤーなどで用意する必要があります。

## やり方

1. Lambdaレイヤーに日本語フォント用のレイヤーを登録
2. Lambda関数に日本語フォント用のレイヤーを追加
3. matplotlibでフォント読み込み

## 1.Lambdaレイヤーに日本語フォント用のレイヤーを作成

 日本語フォントなら基本的に何でもOKと思いますが、今回は[IPAexゴシック](https://moji.or.jp/ipafont/ipaex00401/)(ipaexg.ttf)をダウンロードして使いました。
 ダウンロードしたttfファイルを適宜ディレクトリ(例えばfontsなど)に入れてzip圧縮します。
 Lambdaのレイヤーページから「レイヤーの作成」にて作成画面に移動し、アップロードにて先程圧縮したzipファイ

元記事を表示

Serverless Frameworkを使ったLambda開発

以前に[AWS SAMを使ったLambda開発](https://qiita.com/nakahara-d/items/1b861ea61dbbffaf90b8)をしてみましたが、今回はAWS SAMと比較しつつ、Serverless Frameworkを使ったLambda開発を試してみます!

# Serverless Frameworkとは

[Serverless Framework](https://www.serverless.com/)はAWS、Azure、GCPなどマルチクラウドに対応したサーバーレスアプリケーション開発フレームワークです。

オープンソース版とPro版があり、Pro版ではCI/CDやモニタリングの機能が使えますが、今回はオープンソース版を試してみます。

# 準備

## Serverless Frameworkのインストール

Serverless Frameworkをインストールします。
スタンドアロンバイナリとnpmでインストールできるようですが、今回はnpmでインストール。
後述するプラグインでもnpmを使ったりするので、Node.jsの環境は用

元記事を表示

SAMの”実行”ロールに必要なIAMポリシー

# 背景
Github ActionsからSAMを実行するためにIAMを作成しようと思ったが、
最小限のポリシーにするうえで、情報がググってもなかなか出てこなかったので記事化。
(LambdaへのIAMロール付与の記事ばかりが出てくる。。。。)

# 最小限ポリシー

公式の記事があった。
(”Permission” でググるのが正解だったかも。)
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/sam-permissions.html

そちらに運用上+αして以下に。

* `AutoPublishAlias` に必要だったもの
* “lambda:ListVersionsByFunction”
* “lambda:PublishVersion”
* “lambda:UpdateAlias”
* Layerの更新に必要だったもの
* “lambda:PublishLayerVersion”

“`
{
“Version”:

元記事を表示

GitLFS用のLambdaの.NETCoreをアップデートする

# S3 の GitLFS サーバ の Lambda関数 の .NETcore をアップデートする

## 経緯

AWS の Lambda にて .NETcore2.1 のサポートが 2021/09/20 で終了するとの通知が来たので、
[以前構築したGitLFSサーバのLambda関数](https://qiita.com/c0ba1t_coke/items/94ed3a62ab34078a1f92)をアップデートすることに

– CloudFormationの変更セットを使って、Lambda関数だけアップデートできるか検証する

## 手順

### ファイル準備

新しいyamlファイルと鍵Zipファイルをアップする

“`yaml
SigningLambda:
Type: AWS::Lambda::Function
Properties:
Code:
S3Bucket: !Sub ‘gitlfs-test’
S3Key: Estranged.Lfs.Hosting.Lambda.zip

元記事を表示

直近7日間のAWS利用料金をグラフ化してS3に保存する

# アーキテクチャ
以下のアーキテクチャでAWS利用料金をグラフ化してSlack通知させてみます。

![arch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59081/91a0fb55-56a5-397c-129e-5436f4712364.png)

# Lambdaを使ってAWSの料金を取得する
AWSの利用料金はCostExplorerの [get_cost_and_usage()](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ce.html#CostExplorer.Client.get_cost_and_usage) を叩くことで取得することができます。グラフ化するにはpandasとmatplotlibを使います。このときにpandasとmatplotlibはLambdaのレイヤーとして追加します。
ソースコード内の**ファイルアップロード先であるS3バケット名は適宜変更してください

元記事を表示

【AWS】Lambda+SQSでサイロ + プールモデルを実現するためのディスパッチャ構成検討

## きっかけ
– 弊社が過去に開発し、現在も引き続き運用、追加開発をしているクライアントのSaaSがあり、:man_tone1: “特定のユーザが大量にリクエストしたときに他ユーザのリクエスト実行まで時間がかかるので、解消したい”とのリクエストをもらったから。

## 現状分析
– リクエスト受信部分はREST APIで構成、他ユーザのリクエストに処理時間は依存しない
– 実処理部分はリクエスト受信部分と非同期で処理を行っており、実処理が順次実行のため、この部分がボトルネック
– 以下サイトで分類されている分離パターンでは現状は、1. サイロモデル

https://aws.amazon.com/jp/builders-flash/202105/tenant-isolation/

– 特定処理、特定ユーザだけ分離できればいいので、3.サイロ + プールモデルを目指したい

## 検証で目指す構成
– リクエストを受けるSQS→各リクエストを割り当てるDispatcher用Lambda→特定ユーザ用SQS,汎用ユーザ用SQSとそれぞれ実処理Lambdaをつなげる(本記事では実処理L

元記事を表示

Lambda + DenoでClean Architectureを使ってみる〜構成編〜

前回、LambdaでDenoを動かしてみたところ、思ったよりも悪くなく、正式導入を検討する余地があったため、巷で人気(?)のクリーンアーキテクチャで構成してみました。

独自アーキテクチャでの導入も検討しましたが、せっかくなので…

## 成果物

https://github.com/yamachita0109/lambda_deno_clean_architecture

## クリーンアーキテクチャ

![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3239333336382f66396633646565302d386561382d386363392d326639622d

元記事を表示

【AWS】S3を利用した Git LFS サーバを作成する【cli版】

# S3をLFSサーバにしてCodeCommitでGitLFSを使えるようにする

## 目標

– gitlfsの基本を学ぶ

– [Amazon S3 に Git LFS サーバを超簡単に立てる](https://qiita.com/kanemu/items/d66bfd174a011d8dffdf)のcli版を作る

## 環境

– AWSアカウント所有済み
– IAMを自由に操れる権限を持っている

## 手順

### AWS-CLI の設定

– codecommit の権限があるIAMユーザのクレデンシャルを登録する

“`
$ aws configure
“`

– 認証情報ヘルパーを設定する

“`
$ git config –global credential.helper ‘!aws codecommit credential-helper $@’
$ git config –global credential.UseHttpPath true

$ cat .gitconfig

[credential]
helper = !

元記事を表示

Laravelでもサーバーレス!brefを使ってLaravelアプリケーションを作成してみた

## はじめに
**Laravel初学者の皆さんは、ポートフォリオを作成した時どこにデプロイしていますか?**
AWSまで勉強して`EC2`にデプロイしている方、`Heroku`にデプロイしている方いろいろいるかと思います。

しかし、それぞれ問題点があると思います。

### EC2の問題点
EC2は、インスタンスベースの仮想サーバーなので、常に稼働させなければならないため課金が発生する。(無料利用枠が、1年間毎月750時間分与えられるので十分かもしれませんが)
設定がめんどい。
下記の記事がWordPressを構築する記事ですがやることがとても多いです。
`CloudFormation`ができるようになればもっと短縮できますがハードルが高いですよね・・

https://qiita.com/Ryo9597/items/6d96ab9fdc1f1dca8838

### Herokuの問題点
無料枠のDBの選択肢が`PostgreSQL`になる。
30分何もアクセスがないとサーバーがスリープモードに入ってしまう。

ということで今回お勧めするのがサーバーレスです。

AWSにおけるサ

元記事を表示

Lambda の同時実行数を awscliで確認

AWSよりLambdaの同時実行数を0に設定していると動作化が変わるので確認するよう通知がきた。
そのため、Lambdaのに設定されている同時実行数を確認するコマンド。

“` bash
for func_name in `aws lambda list-functions | jq -r “.Functions[] | .FunctionName”`; do
echo “${func_name}”;
aws lambda get-function-concurrency –function-name ${func_name};
done;
“`

元記事を表示

Twitterのフリートが廃止されたので普通のツイートをそれっぽくする

#フリートとは?
>Fleetは、Twitterの活用や、Twitterでのコミュニケーションをこれまでにない方法ですぐに行える機能を提供します。Fleetで共有した内容は、24時間が経過すると表示されなくなるため、ふとした思いつきやうつろう気持ちを共有できます。一時的な個人的考えをフォロワーと共有でき、他の一般ユーザーからの反応が伝わることもありません。Fleetの作成者は、自分のFleetをクリックし、下部に表示される既読テキストをタップすると、ツイートを非公開にしているアカウントを含め、誰が自分のFleetを閲覧したかがわかります。

– 24時間が経過すると表示されなくなる
– つまり、24時間に1回まとめて削除すればいい

##フリートの欠点
– コメント機能が無く、DMで通知される
– 絵文字を送っても、DMで通知される
– 普通のツイートと同じく、FavとRTとリプライ機能はやはり欲しい

##ツイートをフリート化するには?
– 「残すツイート」と「消えるツイート」を明確化する
– 残すツイートの条件
– Favがある
– RTがある
– リプライ

元記事を表示

CDKでThe expected type comes from property ‘timeout’ which is declared here on type ‘FunctionProps’が出た

## 問題

CDKでAPIを作成しておりLambdaにtimeoutの設定をしたら下記のようなエラーが表示されビルドできない

“`

The expected type comes from property ‘timeout’ which is declared here on type ‘FunctionProps’

“`

またリファレンスを幾ら見ても使い方に誤りは見受けられなかった。

https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.FunctionOptions.html

## 解決策

どうやらライブラリごとのバージョンが微妙に異なっていた模様。
package.jsonのライブラリの @aws-cdk/〇〇 で定義されているもののバージョンをちゃんとstableでリリースされているものに整理して、下記コマンドを実行したところ解決した。

“`sh

//古い node modules を削除
rm -rf node_modules

//新しい node modules

元記事を表示

【AWS】Dockerイメージを使用したLambda + APIGatewayでREST APIを構築

2020年12月から、LambdaはDcokerイメージを使用して作成できるようになりました。
そこで、DcokerイメージからLambdaを作成します。
また、作成したLambdaをもとにAPIGatewayをトリガーとしたREST APIの構築方法を説明します。

![docker_lambda_apigateway_qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1166959/312689bb-ed6a-6934-bfcb-f93ccc01ad50.png)

# ターゲット

– AWSのコンテナ関連サービスについて学びたい
– サーバーレスでAPIを構築したい
– Docker,Lambda,APIGatewayについて学びたい

# 前提条件

– Dcokerを利用する環境がある(Docker Desktopがインストールされている)
– AWSマネジメントコンソール、AWS CLIの両方が利用できる環境がある

# ECRリポジトリの作成

Lambdaを作成するコンテナイメ

元記事を表示

OTHERカテゴリの最新記事