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

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

【Lambda】list_objectsでひっかかったこと

# やりたいこと
* list_objectsで指定S3バケット上のキー一覧を取得
* あるキーが存在するならファイルにデータを追記
* あるキーが存在しない場合ファイルを新規作成
* ランタイムはPython3.9

# ①LambdaからS3バケットにアクセスできない
“`Python:Error
[ERROR] ClientError: An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied
Traceback (most recent call last):
“`
**解決策:LambdaにS3のアクセス権限を付与**
1.Lambda関数を管理しているIAMロールの概要ページにアクセス
![01_アクセス権限.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728375/cb40ccb5-e8e1-4144-0a47-b72e257f4c22.png)
2.

元記事を表示

LineMessageAPI+ngrok+Lambdaで送られてきたメッセージをそのまま返すBotを作ってみました

[前回](https://qiita.com/uekichi3/items/bb9cb7d35653ee873982)は、AWSで公開されているgolangのLambdaコンテナイメージの事を書きましたが、
今回はこれを拡張してLineBotを作ってみました。

## 前提条件
[ngrok](https://ngrok.com/)に登録済みで且つ、インストール済み
[LINE Developers](https://developers.line.biz/ja/)に登録済みでチャネルも登録済み

## パッケージの構成
前回の構成で、コードを拡張しようと思ったのですが、
初回main.goをbuildしようとしたらgopkg.in/yaml.v3に関するエラーが出たので今回はPythonで試す事にしました。
“`
├── docker
│   └── lambda-python-test
│   └── Dockerfile
├── docker-compose.yml
├── lambda
│   ├── app.py
│   └── .env
└── requireme

元記事を表示

webhookを叩くだけのシンプルなLambdaを5つの言語で作ってみて実行速度を測る

我が社にて、cloud watchのalertを拾って、LambdaからIFTTTのwebhookに繋げてパトライトを光らせよう、っていうプチプロジェクトが走ろうとしております。

![スクリーンショット 2022-08-13 13.20.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308709/96ae713e-868f-6a59-91ff-2bfbd6bbf46c.png)

だいたいこちらの記事のような内容です。
https://kimama.cloud/2020/01/06/alarm2patlite/

ただ、今回はこのへんの事情は関係なく・・・

![スクリーンショット 2022-08-13 13.22.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308709/33dc51b1-853e-9f45-be5d-ef884f48dadc.png)

↑ここだけの記事です。Lambdaのみ。

##

元記事を表示

AWS Lambda+seleniumでLineにpush通知やってみた

# この記事で言いたいこと
– web 画面のpull型確認がめんどいのでLine通知にした
– ハマったポイント

# きっかけ
– 子供が習い事をしていて、土日に練習会がある。

– 練習場所が、毎週可変
– 場所は昔ながらの掲示版でのみ知らされる。
– あれ、今週末はどこだっけ? →わざわざ掲示版を見に行く
 ↑これが面倒 →プッシュ型の通知にしたかった。
– 掲示版(sample)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445755/f4b694f4-c56b-eadb-7f3d-99df54830ebd.png)

# ひらめき
seleniumで掲示版での投稿内容を読み取って、
lamdaからプッシュ通知すればできるのでは?

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445755/122e37a1-08ad-3db0-a0b8-83c0b93ad0be.png)

元記事を表示

[AWS.4] Lambda関数のテスト

# 1. 概要
API Gateway に対応した Lambda関数をテストするには、API Gateway の管理画面から対象APIを選んで「テスト」画面を開き、テスト用の入力パラメータを指定して当該関数を呼び出す必要があります。
また、VisualStudio のテストプロジェクトから Lambda関数を呼び出して動作をテストすることも可能です。

本記事では、次の二つのテスト方法について記述します。
1. API Gateway の API 呼び出しテスト
1. VisualStudio テストプロジェクトからの呼び出しテスト

# 2. API Gateway の API 呼び出しテスト
API Gateway管理画面から、作成した API(EchoSample-API)を選択します。
その後、ツリー項目の「ANY」をクリックすると、リクエスト〜レスポンス の流れを示すフロー図が表示されます。
![スクリーンショット 2022-08-03 22.08.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co

元記事を表示

【lambda】他の配列を参考にリストを並べ替える

## はじめに

**Pythonで他の配列を参考にリストを並べ替える**方法について解説します。

※プログラミング関係の内容を他にも投稿していますので、よろしければ[こちら](https://qiita.com/oki_kosuke/items/34b1071224953776c211#%E6%8A%95%E7%A8%BF%E4%B8%80%E8%A6%A7)の一覧から他の投稿も見て頂けますと幸いです。

## 実現したいこと
input_list = [‘ten’, ‘nine’, ‘three’]
このようなリストが与えられた際に数として並べ替えたい。つまり、数字の3,9,10の順に従って、[‘three’, ‘nine’, ‘ten’]と出力したい。

## listの並び替えの復習
リストは以下のように並べ替え可能です。

“`python
name_list = [“Charle”, “Mike”, “Bob”, “Alice”]
sorted(name_list)
“`

“`:出力
[‘Alice’, ‘Bob’, ‘Charle’, ‘Mike’]
“`

元記事を表示

【AWS】SQSからLambdaに送られるJSONのフォーマット

## 起こった問題
RustでLambdaを書いていて、SQSの`MessageAttributes`を含むイベントのjsonをうまくデシリアライズできなかったのでメモ。
>Error: Error(“invalid type: map, expected a string”, line: 1, column: 710)

AWSのドキュメントにもjsonのサンプルはあるのですが、肝心の`MessageAttributes`の部分が空オブジェクトになっていて中の形式がわかりません。

[チュートリアル: Amazon SQS での Lambda の使用 – AWS Lambda](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-sqs-example.html)
“`json
{
“Records”: [
{
“messageId”: “059f36b4-87a3-44ab-83d2-661975830a7d”,
“receiptHandle”: “

元記事を表示

Lambdaのpython Layer(simple_salesforce)作成

0. 目次

  1. 概要
  2. 環境情報
  3. 作成方法

1. 概要

Lambdaのpythonを使用してSalesforceへの処理を実装したいので、pythonのSalesforceモジュールである『simple_salesforce』をimportするためにLayerを作成します。

2. 環境情報

pythonは、バージョン3.8を使用します。
Lambdaのpythonバージョン3.8はAmazon Linux2上で動作しているので、Amazon Linux2のEC2インスタンス上でLayerを作成します。

詳細に関しては、Lambda ランタイムを参照してください。

3. 作成方法

1. EC2インスタンス作成

Amazon

元記事を表示

AWS サポートケースの履歴を自動で Wiki にナレッジ化する

## モチベーション
AWS Support のケース履歴は最大 12 ヶ月保存されます。

https://aws.amazon.com/jp/premiumsupport/faqs/

> **Q: ケース履歴の保存期間はどくらいですか?**
> ケース履歴情報は、作成後 12 か月間ご利用いただけます。

そのため、サポートケースの内容を社内 Wiki のようなところでナレッジとして長期的に蓄積したいというケースを想定しています。

## 構成
* EventBridge のイベントルールでサポートケースのクローズを検知
* AWS Lambda で AWS Support API を使用してケースの詳細を取得
* Markdown 形式に整形して Wiki に投稿

:::note info
AWS Support API はビジネスサポート以上で利用できます。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/acadaece-2321-160c-8b5

元記事を表示

aws-cliとjupyterでAWSサービスのセットアップ

システムセットアップを簡単にするための全ての設定

# 環境
・MacBook Pro
・macOS Mnterey 12.5
・Apple M1 Max

## 1.AWS/IAM
AWSのIAMから、今回のjupyterでアクセスできる権限を持ったIAMユーザーを作成し、アクセスキーとシークレットアクセスキーを入手する。
そのキーの取り扱いには十分に注意する。

## 2.local/仮想環境の作成
仮想環境で実行するのがおすすめ。
Miniforge3+condaで作成しているので、 `conda acrivate hoge` という形で環境に入る。

### モジュールのインストール
`pip install awscli`

## 3.cliの設定
`aws configure –profile hoge`
AWS Access Key ID [None]: `{アクセスキー(各自)}`
AWS Secret Access Key [None]: `{シークレットアクセスキー(各自)}`
Default region name [None]: `{us-west-2(←オレ

元記事を表示

知っていて当たり前-16 ラムダ関数

# 知っていて当たり前-16 ラムダ関数

匿名関数,無名関数,λ関数,ラムダ関数などと言語ごとにいろいろな名前で呼ばれている。

“`julia
x -> x * 1.08
“`

#1 (generic function with 1 method)

これだけだと,実行できない。引数を与えるには以下のようにするが,メリットが見えない。

“`julia
(x -> x * 1.08)(100)
“`

108.0

“`julia
(x -> x * 1.08).([100, 200, 300])
“`

3-element Vector{Float64}:
108.0
216.0
324.0

ラムダ関数を変数に代入すると,その変数は関数名になる。

“`julia
price = x -> x * 1.08
“`

#7 (generic function with 1 method)

“`julia
price(100), price(200)

元記事を表示

cdkv2を使って別Stackで作ったlambda layerをlambdaに適用したメモ

## 概要
[前回](https://qiita.com/hibohiboo/items/960f713897cfc3b41501)のLambda群はlayerを使用しておらず、無駄なbundleが発生している。
また、同一stackでlambda layer を作成すると、毎回作り直しになるのも無駄である。
今回は、別StackでLambdaLayerを作成し、SSMにarnを保存して使用する方法をとる。

[ソースコード](https://github.com/hibohiboo/aws-cdk-v2/tree/id/7)

## 環境

+ Windows10
+ gitbash
+ aws-cli/2.7.21 Python/3.9.11 Windows/10 exe/AMD64 prompt/off
* cdk v2.35
* node v16.16.0

## ディレクトリ構成

“`yaml
– package.json # lambdaで使用するライブラリを定義
– cdk
– .env # 環境変数定義
– package.json # スク

元記事を表示

cdkv2を使ってLambdaオーソライザ―を作ってHTTPAPIでcognitoのグループを使った認可を試したメモ

## 概要
[前回](https://qiita.com/hibohiboo/items/5d20423ec6ba96e0f521)は、CognitoのJWTトークンによる認証を使い、ログインができるようになった。
今回は、Cognitoのグループ機能を使い、取得できるAPIの認可を与えることを試す。

![](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/images/custom-auth-workflow.png)

[ソースコード](https://github.com/hibohiboo/aws-cdk-v2/tree/id/6)

## 環境

+ Windows10
+ gitbash
+ aws-cli/2.7.21 Python/3.9.11 Windows/10 exe/AMD64 prompt/off
* cdk v2.35
* node v16.16.0

## 準備
cognitoのグループを作成し、グループに前回作成したユーザを追加する。
今回は`group_1`を作成し

元記事を表示

AWSで自分用のLINE Botを作った①

# はじめに
傘を持たずに出掛けて、午後から雨が降ってしまって困ることありますよね。
天気予報を朝見れば良いのでしょうが、少し面倒です。

というわけで、AWSの無料枠を使って自分への通知用のLINE Botを作ろうと思いました。
朝、天気予報サイトのデータを自動でスクレイピングして、予報が雨なら「今日は傘が必要です」というようなメッセージが配信されるようなイメージです。他にも電車の遅延状況の通知もできたら便利そうです。(既にこのようなサービスはありそうですが。。)

## 今回の内容
AWSもLine APIもそこまで触ったことがないので、まずは簡単な部分から実装を目指します。
今回の記事では図のようなAWS環境を構築しました。
2つあるLambdaの機能はそれぞれ以下のとおりです。使用言語はPythonです。
– 返信用(reply_message関数):単純なオウム返しの機能
– 配信用(push_message関数):定型文の配信

![system_conf-aws.drawio.png](https://qiita-image-store.s3.ap-northeast-1

元記事を表示

CloudWatchで通知抑制は出来るのか?

# やりたいこと
CloudWatchAlarmで監視しているインスタンスAがCPU高騰した際に、
CloudWatchAlarmのSNS(Eメール)にて、
初回のみ指定のメールアドレスに通知し、2回目以降は通知さない。

# 結論、できない!
##### サポート回答
>CloudWatchAlarmには上記要件を実現する機能は存在しておらず、
初回のみアラームのアクションを実行するといった対応は出来かねます。

# 対応策
##### サポート回答
CloudWatchAlarmのDisableAlarmAction API(AWS CLIのdisable-alarm-actionコマンド)にて、
アクションの実行を無効化をする。

## 具体的には?
##### サポート回答
CloudWatchAlarmの通知先をSNSではなくLambdaを選択し、
DisableAlarmActionを実行したうえで、次回以降のアクションを無効化する方法。
**CloudWatchAlarm –> SNS –> Lambda –> SNS –> Eメール**

1つ目と2つ目のSNS

元記事を表示

AWS Synthetics Canaryで実際に動くlambdaのArnを調べる

コンソールからだと見つけられないのでAWS CLIから`jq`で調べる。
フィルターは(それほど長いわけではないが) 別ファイルにして実行

“`bash
$ aws synthetics describe-canaries | jq -f canary-lambda.txt`
[
{
“Name”: “example-canary”,
“Function”: “arn:aws:lambda:ap-northeast-1:xxxx:function:example-canary-xxxxx:1”,
“Role”: “arn:aws:iam::xxxx:role/example-canary-ExecutionRole”,
“Code”: {
“SourceLocationArn”: “arn:aws:lambda:ap-northeast-1:xxxx:layer:example-canary-xxxx:1”,
“Handler”: “index.handler”
},
“RuntimeVersion”:

元記事を表示

TensorFlow を低コストのサーバレス(AWS SAM)で実行する

## はじめに

以前、 SAM を使って TensorFlow をサーバレスで実行する方法について記事を書きました

ざっくり言うと、超低コストで AI を動かそう、と言うことです

https://qiita.com/RyoWakabayashi/items/0734f7f0a76a5dad3770

しかし、その時から SAM がバージョンアップして、 `sam init` のときの質問などが変わってしまいました

また、最終的に出来上がったコードを GitHub に上げていなかったため、今どうすればいいのか少し迷子になりました

というわけで、改めて TensorFlow を SAM でビルド、デプロイする方法とコードをまとめておきます

実装コードはこちら

https://github.com/RyoWakabayashi/tensorflow-lambda

今回は `sam init` ではなく、このリポジトリーのコードを使ってデプロイする手順を紹介します

Lambda と SAM の解説は過去の自分に任せます

– [Lambda とは](https://qiita

元記事を表示

Lambda+API Gateway+SlackでNotionにタスクを追加

# 今回やったこと
・SlackのスラッシュコマンドでDMからNotionにタスクを追加できる機能を作成した
・ワークスペースにいるほかの人が勝手にタスクを登録できないようにユーザーIDで制限を付けた

# Notionとは
Notionとはメモやプロジェクト管理,タスク管理のためのオールインワンワークスペースのこと。
個人利用であれば無料で利用することができる。

今回は下の画像のような形式のタスクを追加するものを作成する ~~(プリパラはいいぞ)~~
![task.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269896/e0b90495-6f9a-b04b-41dd-ce6461b086c6.png)

# Notion側の設定
[[Notion] いま人気の Notion の API を試してみる](https://zenn.dev/utah/articles/da8239aca15335)
↑このページの流れで設定を行って、シークレットとデータベースIDをメモしておいてください。
データベー

元記事を表示

AWS AmplifyでTypeScriptとExpressを使ったLambda関数のRESTful APIを作る方法

はいさい!ちゅらデータぬオースティンやいびーん!

# 概要
AWS AmplifyのCLIを通して、API GatewayとLambdaを用いたRESTful APIを作る際に、サーバーレスのExpressと、TypeScriptを使う方法を紹介します。

## 背景
まず、サーバーレスのExpressをなぜLambdaで使うのかですが、単純に筆者は、Expressに慣れており、Expressならさっさと書けるからです。筆者と同様な作者はいるかと思いますが、いかがでしょうか?

その他に、Expressで書くと、Lambdaを脱出する必要があったら、コードを再利用することもできるので、おすすめです。

実際、Expressをサーバーレスで実行するために、オープンソースのプロジェクトがあり、現役で開発が進んでいます。それほど人気な書き方・実装方法だと筆者は捉えています。

https://github.com/vendia/serverless-express

そして、なぜTypeScriptをLambdaに導入するかですが、こちらは、コードの品質を上げるためです。型がないバックエン

元記事を表示

AWS日記45(AWS Lambda – Layer)

# はじめに
今回はAWS Lambdaの[レイヤー](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/gettingstarted-concepts.html#gettingstarted-concepts-layer)を試します。
[Lambda レイヤーの作成と共有](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html)を参考に、Lambda関数で使用するライブラリを作成します。

# 動機
Lambda関数実行時に以下のエラーが発生し、エラー解決のため レイヤーにライブラリを設定しました。
“`bash
/var/task/bootstrap: error while loading shared libraries: libXXXXX.so.1: cannot open shared object file: No such file or directory
“`

# ライブラリのzipファイルを作成
“`bas

元記事を表示

OTHERカテゴリの最新記事