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

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

Amazon EventBridgeでAWS Lambda関数を定期実行させてみた。

#はじめに
以前バッチアプリをLambdaへアップロードしたのですが、今回はAmazon EventBridgeと組み合わせて定期的に実行させてみました。

https://qiita.com/Ooooooomin_365/items/9f28e15608736e92b9ff

##EventBridge設定手順
定期実行させたいLambda関数を開き、”設定” > “トリガー”を開きます。
赤枠で囲っている”トリガーを追加”をクリックします。
![eventbridge1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538249/f84f1e16-889d-e97e-0e78-6efc7ecbea5f.png)

“トリガーを追加”画面が表示されるので「EventBridge」を選択します。
![eventbridge2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538249/56f34b03-190d-99a3

元記事を表示

以前リファクタリングしたスクレイピングバッチアプリをAWS Lambdaへアップロードしてみた。

#はじめに
以前リファクタリングしたこちらのスクレイピングバッチアプリを今回はAWS Lambdaへアップロードしてみました。
今回はその手順を備忘録として残しておこうと思います。

https://qiita.com/Ooooooomin_365/items/3520e8b58b853300a0e4

##AWS Toolkit for Visual Studioのインストール
こちらからダウンロード&インストールを行います。

https://aws.amazon.com/jp/visualstudio/

##既存のASP.NET Coreプロジェクトのフレームワークを.NET 5から.NET Core 3.1へ変更する
調べた感じですと、まだAWS Lambdaでは.NET 5がサポートされていないようだったので.NET Core3.1へフレームワークを変更しました。
![frameworkChange.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538249/40e19e31-d3db-d8

元記事を表示

slackのモーダルからlambda関数を実行できるようにする

# やりたいこと

slackのモーダルからlambda関数を実行できるようにします
![out.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176335/65e45de2-8d0b-72e1-8ca4-09a5387bbc23.gif)

# やったこと

今回のコードでは下記アプローチでモーダルを起動できるようにします。

* グローバルショートカットで起動
* 全てAPIを投げることで実行
* views.openとviews.update(とchat.postmessage)
* views.pushではなく、views.updateを使う
* pushの場合、複数のダイアログを開いたときに、閉じる操作を明示的に行う必要があり手間
* というかダイアログを閉じさせるやり方がよくわからなかった。。。

# コード

“`python
import base64
import json
import os
import urllib.parse
import boto3

元記事を表示

Terraform/TerrafomrerでAWS既存リソースをインポートする

## はじめに
Terraformを使ってみると`Terraformでコードを書く` よりも `既存リソースをTerraformにインポート`することが結構あります。
公式のドキュメントを読めばやり方はわかります。

ただ、少しわかりづらい箇所もあるので細かい部分も説明しながらインポート手順を説明していきます

## 前提
* AWSアカウント作成済
* AWSリソース作成済(今回は[こちらの記事](https://qiita.com/YK0214/items/59bc0e5ae89f68af74b3)で作成したlambda関数をリソースとして使用します。他のリソースでも構いません)
* terraform インストール済 (参考: https://dev.classmethod.jp/articles/beginner-terraform-install-mac/)
* terraformer インストール済 (参考: https://beyondjapan.com/blog/2020/05/terraformer-import-existing-infrastructur

元記事を表示

ServerlessFrameworkを触ってみた

ServerlessFrameworkのインストールから基本的な設定・操作方法を確認していきたいと思います。
今回はAWSをプロバイダとしてPython3でサービスを作成します。

# ■ インストール
### # Serverless Frameworkのインストール
node.jsのインストールはnvmで行います。

“`bash
# nvm インストール
# https://github.com/nvm-sh/nvm#installing-and-updating
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

# 最新のltsをインストールしてグローバルに設定
nvm install –lts
nvm use –lts

# インストールされているか確認
node -v
npm –version

# serverless frameworkのインストール
sudo npm install -g serverless
sls –version
“`

元記事を表示

LambdaでS3のPDFを画像化して保存(Docker,Python)

# はじめに

LambdaでPdfを画像化します。windowsであればpopplerのstatic buildがあるので比較的簡単にできますが、Lambdaの環境ではコンテナを使わないとその方法では実行できません。コンテナの勉強を兼ねて作りました。

# 前提
– Dockerの実行環境
– AWS CLIとaws configureの設定

# やること
– Dockerイメージの準備
– ECRの準備
– Lambdaの作成

**Dockerイメージの準備**

以下のようなファイル構成です。

“`
CreatePdfThumbnail
│ app.py
│ Dockerfile
│ env.txt
└─ requirements.txt
“`

Dockerfileは以下のようになっています。

“`Dockerfile
FROM public.ecr.aws/lambda/python:3.6
# ベースイメージはPython3.6環境を使いたいのでpublic.ecr.aws/lambda/python:3.6

RUN y

元記事を表示

AWS Lambda 関数を Docker コンテナを使ってビルド & デプロイ

# 概要

記事 [第一回 コンテナ Lambda の”いろは”、AWS CLI でのデプロイに挑戦 !](https://aws.amazon.com/jp/builders-flash/202103/new-lambda-container-development/?awsf.filter-name=*all) を参考に

windows10 で AWS Lambda 関数を Docker コンテナを使ってビルド & デプロイ する方法を書きました

AWS Lambda 関数を Docker コンテナを使ってビルド & デプロイ するには以下の3ステップが必要です

1.**Docker イメージ**を作成する
2.**Docker イメージ**を **Amazon ECR リポジトリ** にプッシュする
3.**Lambda関数**に **Amazon ECR リポジトリ**(の Docker イメージ) から ビルドする

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

元記事を表示

EC2の起動直後のCloudWatchアラームを抑止する

起動直後のCloudWatchアラームの通知を抑止したいという要望があったので、AWSサービスを組み合わせて実現してみました。

#構成
EventBridge + Lambdaで実現します。
EC2起動直後の一定時間を待つために、起動時にはStep FunctionsからLambdaを呼び出します。

EventBridgeやStep Functionsは応用の幅が広いので、その一例としても役立ちそうです。

# Lambdaコード
まずはLambdaコードから見ていきます。

“`python
import boto3

target = {
“test-instance” : [‘test-alarm’]
}

def lambda_handler(event, context):

client = boto3.client(‘cloudwatch’)

if event[“Action”] == ‘enable’:
response = client.enable_alarm_actions(

元記事を表示

Lambda Layersで快適に開発する方法

みなさん、Lambda Layers使ってますか?
共通で利用するロジックをライブラリにできる、ということで登場時は大変盛り上がりました。
(それまでは関数ごとにライブラリ部分にシンボリックリンク貼って利用してた)

ただ開発を重ねるにつれて、「これ、色々不便じゃ、、、?」と思うことが湧き上がってきました。

# 根本原因:ローカルで/optを参照するの辛い

Layersのデプロイ先は/optになるので、ローカルでもそれに対応する方策を色々と取る必要があります。

### docker使って/optにLayersをマウントする

可能です。可能ですが、テストやビルド時にわざわざdockerに入るのめんどくさい、、
加えて、IDEにdockerを認識させるのが環境によりますが、面倒くさかったり、有料じゃないとできなかったりします。
IDEが「/optなんてないよ」と認識してくれない状態での開発は無理ゲー

### シンボリックリンクを使う

こちらも可能です。可能ですが、プロジェクトが複数に跨がってくるとその管理がまた面倒になってきます。
ローカルのグローバル領域荒らしたくないんじゃ、

元記事を表示

AWS Lambdaで独自にログを出力したい(標準のログを出したくない)

#問題
Lambda標準のログを抑止してCloudWatchLogsのコストを節約したい。けど、特定の場合にはログを出力したいといった問題を解決します。

#Lambdaコード
早速ですが、このような関数を用意してlambda_handler内で使用します。
必要な権限(IAMポリシー)は後で解説します。標準のログを出さないようにするのも、IAMポリシーの定義で行います。

“`python
import boto3
import time
import datetime

logs_client = boto3.client(‘logs’)
lgn = ‘/aws/lambda/PutLog’

def lambda_handler(event, context):
put_log(‘test’)
put_log(‘テスト’)

def put_log(message):

# ロググループがない場合作成
res = logs_client.describe_log_groups(
logGroupNamePrefix=lgn

元記事を表示

Lambda+Rustのデプロイメントをコンテナイメージと.zipファイルアーカイブの両方で試す

##はじめに
表題の通りです。
SAM CLIからカスタムランタイムを使ってLambdaをデプロイの設定情報を作っていたのですが、ImageとZipどちらがいいのかわからずどちらも試しました。
今後どちらも選択的に使えるようにまとめておきます。

##Zip
####構成

“`bash
lambda_rust
├──.aws-sam
├──samconfig.yaml
├──stock_data
| ├──Cargo.lock
| ├──Cargo.toml
| ├──Makefile
| └──src/main.rs
└──template.yaml
“`
####設定
“`toml:template.toml
AWSTemplateFormatVersion: ‘2010-09-09’
Transform: AWS::Serverless-2016-10-31
Description: >
Sample rust application for Lambda

Resources:
HelloRustFunction:

元記事を表示

【webhook】Slackの高度なワークフローが便利なことに気づいた

Slackワークフローの「高度な設定」として、webhookがあります。
![コメント.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666457/10c9bc56-b9b8-a308-af2d-283b97f9d7d3.png)

ワークフロー自体はけっこう組織内でもみんな気軽に使ってたのですが、
webhookのボタンは押したことがありませんでした。ワークフロー登場時には記事もなかった気がするし。

https://qiita.com/yuji_saito/items/5dc2b079d4e43bd381d8

ですが、↑こちらの記事を拝見して、「エッ、もしかしてすごい便利…!?」と思ったので、使ってみることにしました。

# 実際に使ってみた
今回は、自組織で使っているClickUpというタスク管理ツールでタスクを作成すると、Slackに通知がされるという仕組みを構築します。
ClickUpのAutomationという機能と、Slackワークフローを組み合わせて作ります。

ClickUpには

元記事を表示

AWS LambdaでサクッとAPIを叩きたい

#AWS マネジメントコンソール上でLambdaを実装して、APIを叩きたい
サクッとWEBAPIをLambdaで叩きたい人向けです。
AWSのコンソール上のコードエディターのみで作業を完結させたいときに。

##こんな人向け
・WEBAPIを実行したい
・AWSマネジメントコンソールのみで作業を完結させたい
・headerに認証キーを付けたい
・認証キーは環境変数に入れておきたい
・返り値はステータスコードだけ取れればよい

##環境情報
AWS Lambda

– ランタイム:Python3.9

##ソースコード(PUT API)
Lambda 標準の同包モジュールのみでの実装するため、
AWS Lambda コードエディター上に下記を張り付けるだけです。

“`python
import os
import json
import urllib.request

def lambda_handler(event, context):

#PUT API
url_str = “https://APIURL/”
headers = {“

元記事を表示

S3操作をするLambda関数(Python-image)をSAM CLIを使ってデプロイする手順をまとめてみる

##はじめに
Lambda関数を作成するにあたり、必要な手順をざっくりまとめました。
以下も試しました。

– 1つのアプリケーションで複数の関数の定義
– S3の操作周りをLambdaで行う
– SAM CLIのローカルテストを試す

##開発者のIAMユーザ作成
開発とデプロイで使用します。
![スクリーンショット 2021-09-04 3.33.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/35a521dc-8ae5-66ad-5764-947364e38860.png)
![スクリーンショット 2021-09-04 3.38.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/399a653b-7a69-e8ea-447f-0ce564bf8239.png)
あとは、デフォルトのまま作成し、アクセスキー、シークレットアクセスキーを保存

#####必要な場合アクセス権を追加
ユー

元記事を表示

AWS Lambda + API Gateway でサーバサイドレンダリング

# AWS Lambda でサーバサイドレンダリング 基礎編

パラメータ無しで `GET リクエスト`されたときに、動的に生成されたHTMLを返す仕組みを `AWS Lambda` + `API Gateway` で実装します。

`GET`の`クエリパラメータ`や`パスパラメータ`、`POST` などのパラメータ付きリクエストは、応用編で紹介します。

# Lambda レイヤー準備
AWS Lambda の Node.js ランタイムで npm モジュールを利用するため、レイヤーを作成します。

[ドキュメント-Lambda レイヤーの作成と共有](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html)

**※以下は AWS CloudShell で作業します。**

[ドキュメント-CLI aws lambda publish-layer-version](https://docs.aws.amazon.com/cli/latest/reference/lambda/publ

元記事を表示

Lambda

import boto3
import os
import datetime

“””
This portion will obtain the Environment variables from AWS Lambda.
“””

GROUP_NAME = os.environ[‘GROUP_NAME’]
DESTINATION_BUCKET = os.environ[‘DESTINATION_BUCKET’]
PREFIX = os.environ[‘PREFIX’]
NDAYS = os.environ[‘NDAYS’]
nDays = int(NDAYS)

“””
This portion will receive the nDays value (the date/day of the log you want
want to export) and calculate the start and end date of logs you want to
export to S3. Today = 0; yesterday = 1; so on and so forth

元記事を表示

【個人開発】CtoCのコードレビューサービス Kanon Code

# CtoCのコードレビューサービス Kanon Codeをリリースしました
![note_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302326/44fad773-3b61-2504-24a4-362593d3a472.png)

本サイト
[Kanon Code](https://kanon-code.com)

## どんなサービス?
レビューして欲しい人がコードを投稿し、自由にレビューしてもらえるサービスです。
ユーザー登録でレビュイーにもレビュワーにもなれます。

また、レビューは販売することも可能で、販売システムは[note](https://note.com)を参考にしています。
もちろん無料でのレビューも可能です。

## 技術スタック
– Next.js
– Lambda(node.js)
– DynamoDB
– vercel
– SAM
– Material UI
– styled-component

## 実際の画面
![スクリーンショット 2021-09-05 10

元記事を表示

AWS Lambda関数のローカル動作確認をDocker内Dockerで実行する

##はじめに
やりたいことはタイトルの通りですが、以下の通りです。

– ローカルでLambda関数の動作確認ができる
– VS Code Remote Containerで開発環境の構築を完結させる(ローカル環境を汚さない)
– もし可能ならデプロイも簡単に

この要件マッチするツールとして、AWS Cloud9が一番手軽だと思われます。
VS Codeにこだわりがなく、Cloud9の料金に問題がなければCloud 9をお勧めします。

##環境
– 開発端末:macOS
– 開発IDE:VS CodeのRemote Containers

##前提
– AWS IAMアカウント作成済み
– Docker, Git, VS Code (Remote Container)は開発端末にインストール済み

##補足
Lambdaのローカル実行には、AWS SAM CLIが提供されていますが、こちらのローカル実行にはコンテナ環境が使われます。
つまりコンテナからコンテナを呼べないといけません。以下の構成を目指します。

| コンテナ | 概要 | インストール |
| —-

元記事を表示

【AWS】MediaConvertを用いてHLS VOD配信

# はじめに
今回はWEBアプリ作成にあたり動画をアップロードし、閲覧できる機能を実装したいため
**MediaConvert**を使用して**HLS(HTTP Live Streaming)**で配信する環境をAWSで構築しました!

[HLS VOD配信](https://aws-mediaservices-jp.workshop.aws/handson5.html)
AWSのハンズオンをほとんどを採用しているんですが笑
今回実装にあたりつまずいた点(ハンズオンで指示してるのに・・・)
や、少しカスタマイズした点があるのでその手順をアウトプットします。

カスタマイズしたのは処理した動画の出力先をバケットのトップではなく
動画がアップロードされた階層に出力するという点です。
**Lambda**へアップロードするファイルの記述を変更してます^^

またハンズオンの画面は古いものがあり迷った点がありました(^ー^;
今回は最新の画面で対応してます!!

# なぜHLSなのか
私も最初は大きすぎる動画ファイルを一定のサイズにするものかという認識でしたが、
それでは充分ではありませんでし

元記事を表示

S3内のZIPファイルをAPI経由でダウンロードする方法

## はじめに
ZIPファイルをAPI経由でダウンロードする方法について、意外とやり方が分からず手こずったため、メモとして残しておく。

## 事前準備
・S3にバケットを作成し、直下に任意のZIPファイルを格納しておく。
・ローカルPCにPython3系のインストール(ダウンロードファイルをデコードするために使用)

## 流れ

**1.ダウンロード用のAPIの準備**
  1-1).Lambdaの作成
  1-2).API Gatewayの作成

**2.ダウンロード後の変換**

## 1.ダウンロード用のAPIの準備

### 1-1).Lambdaの作成(Node.js 14.x)

“`js:index.js
var AWS = require(‘aws-sdk’)
var s3 = new AWS.S3()

exports.handler = async (event) => {

var params = {
Bucket: “バケット名”,
Key: “ZIPファイル名”
};

c

元記事を表示

OTHERカテゴリの最新記事