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

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

AWS CLIを用いてLambda関数の情報とコードの一覧を取得する。

#はじめに
AWSを使用するに当たり適宜適当にlambdaの関数を作成していたら、いつの間にか管理がおろそかになってしまいました。。。
とりあえず AWS CLI を使えば現状あるものの一覧を取得できるみたいなのでトライしてみます。
#手順
##0. 事前準備
###わたくしの環境
・ubuntu v20.04.1 LTS (Focal Fossa)
・aws-cli /2.1.3 Python/3.7.3 Linux/4.4.0-19041-Microsoft exe/x86_64.ubuntu.20

cliを使用するroleにはLambdaのListFunctionsとGetFunctionの権限を追加しておきましょう。
##1. 関数の一覧を取得する
以下関数でlambda関数の一覧をcsvで取得できます。

“`bash
aws lambda list-functions –region ap-northeast-1 | jq ‘.Functions[] | [ .FunctionName , .Runtime ]’ | jq -rs ‘ map([.[]])[]|

元記事を表示

Cognitoで色んな社会の願いを叶えられるか考えてみた(2021/3版)

昨年の[この記事](https://qiita.com/taniyuu/items/c37be3d0c275f797962f)でもCognito取り上げましたが、今年度も相変わらずCognito使うことがあったので、書きます。

# アブスト
2020年度は、(みんな忘れてるかもしれないけど)某D口座の話してた時が認証周りでは一番盛り上がってた気がします。

そんな最中にCognitoはどうなの、みたいなことを調べることが急増したので、Q&Aみたいな感じ→**社会の願い**で羅列していきます。

# 基礎知識
この記事では、断りのない限り、「Cognito」は「Amazon Cognito」のことを指します。「ユーザプール」は「Amazon Cognitoのユーザプール」(IDプールってのがありますが、今回はそれじゃない)のことを指します。
何も知らない人は、BlackBeltをさっと眺めておくのが良いと思います。というか、それで満足したらここでブラウザバックで。

https://www.slideshare.net/AmazonWebServicesJapan/20200630-a

元記事を表示

AWSから行うセキュア動画配信 ~署名付きCookieを利用したプライベートコンテンツ配信~

## はじめに

AWSから行うセキュア動画配信の後編の投稿になります。

* [前編](https://qiita.com/r-mizuno/items/79ec52ca77ac0bb1b503): 配信するための動画を、AWS Key Management System (KMS) から生成した共通鍵で暗号化し、S3へ格納する
* [中編](https://qiita.com/r-mizuno/items/b3ec1cdd4851d6b54823): AWS Elemental MediaConvert を利用して、HLS+AES暗号化の形へ動画を変換する
* 後編: **Cloudfrontの署名付きCookieを利用して、アクセス可能なユーザを制限する(今回)**

前回は、S3へ格納された動画をMediaConvertを使用して、HLS+AESの形へ動画を変換しました。
今回は、変換した動画をCloudFrontから、署名付きCookieを利用して配信する手順をご紹介します。

## 構築予定の環境

構築予定のシステム構成図は以下のようになります。
本記事では、赤字となって

元記事を表示

AWS ChaliceでEC2とRDSを自動で起動停止するLambdaを作成(祝日対応版)

https://qiita.com/danishi/items/4b5fa88458ca656ada97

こちらの記事の祝日対応版です。

Google Calendar APIを使って起動日が祝日の場合は処理を行わないように。
また、Google Calendar APIだと正月や会社の休日に対応できないので、環境変数に別途例外休日を設定できるようにしています。

記事のコードにimport文と祝日判定のためのロジックを追加。

“`python:app.py
import datetime
import urllib.request
import json
“`

“`python:app.py
def change_instances_state(event, target=’ec2′, state=’Start’, dryrun=True):

if is_holiday():
return # 休日なら処理終了

if state == ‘Stop’: # 停止させる条件
“`

“`python:app.py
def is_h

元記事を表示

Google Chatのチャットルームへメッセージを投稿するLambda関数

# 前提
* Python 3.8
* 標準ライブラリのみ
* 対象チャットルームにて着信Webhook作成済み

# コード
【】は各自環境の値で修正

“`python
import json
import urllib.request

def lambda_handler(event, context):
# TODO implement
message_detail = ‘from aws lambda’

message = {‘text’: message_detail}
url = ‘【作成した着信WebhookのURL】’
headers = {‘Content-Type’: ‘application/json; charset=UTF-8’}
byte_encoded = json.dumps(message).encode(‘utf-8’)

req = urllib.request.Request(
url=url
, data=byte_encoded

元記事を表示

【AWS Lambda+API Gateway】Pythonでslack通知アプリ作ってみた

#はじめに
我が社のCTOが、「エンジニアはみんな`Lambda`くらい使えるようになっていてほしいね〜」
とのありがたいお言葉から、

「自分もエンジニアになったからには、`Lambda`でAPI作ってみよう!」と、
一念発起して、挑戦してみますた(⌒▽⌒)

#LT;DR

– Lambda関数の作成
– Slack Api Incoming WebHooksの作成
– Layerの作成 & 登録
– API GatewayでAPIの作成
– 実践と結果まとめ

#Lambda関数の作成
##Lambdaとは
>AWS Lambda は、サーバーのプロビジョニングや管理の必要なしにコードを実行できるコンピューティングサービスです。
Amazon API Gateway を使用すると HTTP リクエストに応答してコードを実行できます。
参照元:[AWS Lambda とは](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html)

ほうほう、AWSに管理系は丸投げできるんですな。
今回は、`HTTP`リク

元記事を表示

AWS Lambda基本

#AWS Lambdaとは?
**「サーバーのプロビジョニングや管理の必要なしにコードを実行できるコンピューティングサービス」**

#サーバーレスの特徴
**①インフラのプロビジョニング、管理が不要**
**②自動でスケール**
 ・リクエスト数に応じて自動的に起動数がコントロールされる
**③価値に対する支払い**
 ・事前に必要なコストが存在しない
 ・リクエスト数並びに処理実行時間に対しての課金
 ・コスト効率がよく、コストゼロからのスタート可能
**④高可用かつ安全**

##**Lambda関数(ファンクション)**
・Lambaで実行するアプリケーション
・それぞれが隔離されたコンテナ内で実行される
・利用する言語の関数もしくはメソッドをハンドラーとして指定し、実際の際に呼び出す
・コードは依存関係も含めてビルド、パッケージングした上でアップロード
 **ZIP形式**
 アップロードしたものは**S3**に保存され実行時以外は暗号化される

##**Lambdaファンクション-基本設定-**
・メモリ:**128MBから3008MB**の間で設定可能
    容量に応じ

元記事を表示

Lambdaでcryptographyを使う(Python3.8 + cryptography)

# はじめに
Lambdaでcryptographyを使う際に、モジュールをレイヤーで追加しました。
その手順の記録です。

# 手順
クラウドシェルでPythonS3のライブラリをZip圧縮して、cryptographyのレイヤーを作成します。
一時的に保存するS3は事前に準備しておきます。
## ①cryptographyのファイルを取得する
### クラウドシェルを起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155165/b0bf86bc-b927-9bda-e284-f6526fb0f818.png)
### Pythonを3.8にする
バージョンを確認

“`shell
python3 -V
“`
3.8でなければ、3.8にする。3.7.9だった。

“`shell
# Pythonを3.8にする
sudo amazon-linux-extras install python3.8 -y
sudo update-alternatives –install /us

元記事を表示

コンテナLambdaをデプロイしてみた(躓いたポイントとリソース削除)

## はじめに
AWS builders-flashにコンテナLambdaの記事が出ていたので試してみました。
躓いたポイントと試した後に実行したリソース削除コマンドだけ書いておきます。

https://aws.amazon.com/jp/builders-flash/202103/new-lambda-container-development/

## 躓いたポイント

##### awscli 2.1.6 未満だとコマンド実行エラーになる

> aws lambda create-function \
–function-name func1-container \
–package-type Image \
–code ImageUri=\${ACCOUNTID}.dkr.ecr.\${REGION}.amazonaws.com/func1@\${DIGEST} \
–role ${ROLE_ARN}

コンテナLambdaは新しくサポートされた機能なので、バージョンは最新化すべきですね。

元記事を表示

RDSの自動起動と自動停止スクリプト

RDSは起動しっぱなしだとお金がかかる。

しかし、停止しても7日後に再度起動してしまう。

特に検証用とかで使用しない間が多い場合、いちいち起動したら停止するという運用はかなり面倒。

そのため、検証時以外は、起動したらすぐ停止するというスクリプトを作成して、**無駄なコスト**がかからないようにする。

そこで使用するのが、AWSのLambdaを使う。

## Lambdaとは何?

Lambdaと聞いてもわからないので調べた。

AWSの「サーバレスコンピューティングとアプリケーション」と言われる。

これまではPHPやPythonをうごかすためのwebサーバーが必要だったが、Lambdaならサーバーレスのため、サーバーを準備しなくても環境が揃っていると言うことである。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255267/1235389f-8f51-f11f-ea6b-dc23ef67432e.png)

**LambdaはJava、Node.js、C#、Pythonの

元記事を表示

SAMでSlack通知Lambdaをデプロイ

## はじめに
[AWS Lambda Container Image Support](https://aws.amazon.com/jp/blogs/news/new-for-aws-lambda-container-image-support/) や EventBridgeのcron設定、Secrets Managerからシークレット情報の取得を試してみたかったので、以下のような構成図で一気に試してみます。

## 構成図

– SAMでSlackにメッセージを通知するLambdaをデプロイする
– Lambdaはイメージ化してECRで管理する
– LambdaはEventBridgeで定期実行する
– SlackのWebhook URLをSecrets Managerで管理する

![sam.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/917499/eed96002-2bda-33c2-64bf-cfdac785faed.png)

## 手順
1. ECRにリポジトリを作成しておく
2. S

元記事を表示

lambda + typescript + s3のリファクタリングをしてテストケースを書いたメモ

## 概要
[前回はS3をローカルで立ち上げた。](https://qiita.com/hibohiboo/items/e81573744466343aec2c)
今回は、[ローカル環境でLambda+S3のテストをする](https://qiita.com/billthelizard/items/22d2457f3d6386d21796)を参考に、リファクタリングをしてテストを行う。

[ソースコード](https://github.com/hibohiboo/develop/tree/481815420c60a0933e51483ded6ed53d1da64c03/tutorial/lesson/aws/typescript/projects/cdk_sample)

## 構造

“`
src
– lambda
– handlers
– s3-sample.ts
– service
– s3-sample.ts
test
– fixture
– s3
– message.txt
– lambda

元記事を表示

Slackへ勤怠連絡を入力するAlexaスキルを作ってみた

# 概要
弊社は出勤や休憩などの勤怠連絡をSlackのチャンネルへのメッセージ送信で行っています
毎日何度も行うことなので手入力は結構面倒です
そこで、最近我が家にやってきたAmazon Echo Showに話しかけて勤怠連絡を行えるAlexaスキルを作りました!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413932/9ec76584-08da-ed4f-8139-d3a2a473f531.png)

ちなみに、Echo Showが無くてもスマホのAlexaアプリでAlexaスキルを実行することはできます
音声入力で色々なものを操作するのは魔法感があって楽しいのでAlexaスキル開発はおすすめです!

# システム構成
![勤怠入力スキル構成図 (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413932/0b8214ed-9921-5472-d822-715873c51e29.jpeg)

元記事を表示

Lambda@Edge とは

## 勉強前イメージ

lambda関係してそうだけど、Edgeがわからん

## 調査

### Lambda@Edge とは

cloudfrontのエッジロケーションからコードを実行するLambda関数のことで、
ユーザに近い場所でコードが実行されるので高速なコンテンツ配信が可能になる仕組みです。
コードをLambdaにアップロードするだけで自動的にコードの実行やスケーリングが行われます。
ですので、Lambda@Edgeは Lambdaとcloudfrontから成り立ちます

### メリット

– 低レイテンシーのコンテンツを配信

ユーザに近いロケーションからコードを実行するので
低レイテンシーの配信が出来ます

– サーバ管理が不要

オリジンサーバを複数のロケーションでプロビジョニング・拡張・管理することもなく、自動的にスケールします。
オリジンで実行しているアプリケーションに何も変更を加えることなく追加できます。

### 指定できるcloufrontイベント

cloudfrontには4つの流れがあり、
それぞれ1つのリクエストに対して一意のlambdaのコードを割

元記事を表示

AWS SAM を用いて Hello World アプリケーションをデプロイしてみる

AWS SAM を使ってみたいので、API Gateway 経由で Hello World メッセージを表示する Lambda を呼び出すアプリケーションを SAM でデプロイしてみます。

# 前提条件

– AWS アカウントの作成
– Docker のインストール
– AWS SAM CLI のインストール
– “sam –version” と叩いてバージョンが表示されれば OK

# サンプルアプリケーションのダウンロード

sam コマンド経由でサンプルとしてダウンロードできるアプリケーションがあるので、ダウンロードしていきます。
まずは下記のコマンドを入力します。

“`
$ sam init
“`

途中でテンプレートソース、パッケージタイム、ランタイムを選択していきます。
プロジェクト名は任意の名前で問題ありません。
ここでは「hello-sam」としています。

“`
$ sam init
Which template source would you like to use?
1 – AWS Quick Start Te

元記事を表示

Chalice で Lambda Layer を利用する

# 問題点

Chalice で1つの `app.py` 内に以下のようなコードを書いた場合、API Gateway用の Lambda関数 と 定期実行用の2つの Lambda 関数が作成される。 デフォルトの設定だと `requirements.txt` で指定するすべてのライブラリを各 Lambda 関数内に展開してアップロードするので、2つの Lambda のコードサイズが大きくなる。

“`python:app.py
@app.route(‘/’)
def index():
pass

@app.schedule(‘rate(5 minutes)’)
def cron(event):
pass
“`

こういった場合には共通ライブラリの配置場所として Lambda Layer を利用できるのだが、昔ドキュメントを読んだときに読み落としていたのか chalice ではまだサポートされていないと思い込んでいた。 改めて調べると、ちゃんと Layer を使うことができたので、そのやり方を示す。

# 対象コードとバージョン

今回は以下のような cryptog

元記事を表示

AWS Lambdaで関数作ってAPIGatewayで公開するまでの学習

# 本記事でやること

![スクリーンショット_2021-03-28_17_22_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113504/ea799a62-b7d4-6169-cea7-f51db4cba365.png)

適当なJSONを返す

# 前提
[AWSのアカウント作成後のAdminのIAMユーザー作成](https://qiita.com/Teach/items/8212c06dc9f4a2546800)

# Lambdaのスタート
## Lambdaとは?
サーバー管理せずにコードが実行できるサービス

## コスト
コード実行していない間は無料
https://aws.amazon.com/jp/lambda/pricing/

永久無料枠アリ

## イベント
S3、DynamoDBの変更をトリガーにして発火できる

## 学び方
https://docs.aws.amazon.com/lambda/latest/dg/welcome.html#welcome-first

元記事を表示

EC2のプロセス監視と自動再起動

EC2で稼働しているプロセスがダウンした時に、自動起動する仕組みを作っていきたいと思います
今回は、dockerプロセスがダウンした場合を例とします

# 前提条件
* Amazon Linux2
* amazon-ssm-agentインストール済み
* cloudwatch-agentインストール済み
* dockerインストール済み
* EC2のIAMロールにAmazonSSMFullAccessのポリシーがアタッチ済み

# プロセスの監視を設定します

## Systems Manager パラメータストアの設定
CloudWatchのメトリクスに入れるための定義を作成します
AWSマネジメントコンソールからSystem Manager、パラメータストアをたどり、「パラメータを作成」を実行します
タイプはString、データ型はtextで、以下を値に設定します

“`json:値
{
“metrics”: {
“append_dimensions”: {
“ImageId”: “${aws:ImageId}”,

元記事を表示

localstack + aws cdk でAWS S3をローカル環境に立ち上げてLambdaでアクセスするメモ

## 概要
[前回はローカルでデバッグ実行をできるようにした。](https://qiita.com/hibohiboo/items/fa76084a207e5a3d5955)
今回はS3をローカルで実行する。
リファクタリングは[次回](https://qiita.com/hibohiboo/items/4e5fd8c723e0f70c12b1)。

[ソースコード](https://github.com/hibohiboo/develop/tree/2dca5633f60621882e853598463da20d547e07e8/tutorial/lesson/aws/typescript/projects/cdk_sample)

## 環境
* windows 10
* Docker version 20.10.5, build 55c4c88
* aws-cdk 1.95.1
* aws-cdk-local 1.65.4
* aws-cli/2.1.29 Python/3.8.8 Windows/10 exe/AMD64 prompt/off
* node v14.16.0

元記事を表示

AWS CDKでAPIGateway+Lambdaを作る

cdkの入門として、シンプルにAPIGateway+Lambdaを作っていく流れを書きます

## はじめに
* Ubuntu 18.04.4 LTS (WSL利用)
* VSCode
* aws-cdk 1.94.1
* typescript

## AWS CDKをインストール
“`bash
$ npm install -g aws-cdk
$ cdk –version
“`

## AWS CDKのプロジェクト作成
“`bash
# プロジェクトディレクトリを作成
$ mkdir cdk-api-lambda

# 移動
$ cd cdk-api-lambda/

# プロジェクト作成
$ cdk init app –language=typescript
“`

## パッケージインストール
“`bash
$ npm install @aws-cdk/aws-lambda @aws-cdk/aws-apigateway
“`

## lambdaコードを格納するフォルダを作成
“`bash
$ mkdir lib/lambda/
“`
## lambdaコー

元記事を表示

OTHERカテゴリの最新記事