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

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

LambdaからTeamsへ通知するAPIを作る方法

# はじめに
今回はAWSのサービスの1つである、LambdaでAPIを作って実行したときにTeamsへ通知がくるようにします。

## 開発環境
+ OS Windows 10(NVIDIA GTX 1650Ti,16GB RAM, i5-10300H CPU)
+ Visual Studio Code 1.73.1
+ Python 3.9

## 実際にAPIを作ります!
### TeamsでWebhookを使ってURLを作成
作成したURL用いることでTeamsに情報を送信できるようになります。
[公式](https://learn.microsoft.com/ja-jp/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook)に載っているやり方でURLを作成します。

1. 通知を出すチャネルから「・・・(その他のオプション)」をクリック
1. 「コネクタ」を選択したらWebhookを検索し、**追加**をする
1. 「構成」を選択
![MicrosoftTeams-image.p

元記事を表示

AWS Lambda の 環境変数のTZ 指定してもよさそう

# 結論
環境変数TZは予約されてないらしい

# 過去記事は信用しすぎるなって話

LambdaのタイムゾーンはデフォルトではUTCになっていて、タイムゾーンをAsia/Tokyoに変えたい
というのはよくある話だと思う。

しかし、「Lambda TZ」などで検索すると
Lambdaの環境変数は予約されていて、それを上書きできるというのが今後もできる保証がないから環境変数で指定しない方がいい

という記事が結構たくさんある。

しかし、AWSのドキュメントを見ると

> 以下の追加の環境変数は予約されていないため、関数設定で拡張できます。
> 予約されていない環境変数
> …
> TZ - 環境のタイムゾーン (UTC)。実行環境は、システムクロックを同期するために NTP を使用します。

(2022/11/16時点)

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-envvars.html#configuration-envvars-runtime

予約されてないってさ

AWSサービスは

元記事を表示

vpc 内 Lambda から Lambda を呼ぶ( invoke する)場合、public subnet や private subnet などのパターン別に呼べるか検証してみた

# はじめに
LambdaからLambdaを呼ぶ時、以下のパターンでアクセス可能かどうか検証しました。
– vpc 内の public 内にいる Lambda が呼ぶ / 呼ばれる
– vpc 内の public 内にいる Lambda が呼ぶ / 呼ばれる (vpc endpointあり)
– vpc 内の private 内にいる Lambda が呼ぶ / 呼ばれる
– vpc 内の private 内にいる Lambda が呼ぶ / 呼ばれる (vpc endpointあり)
– vpc 外にいる Lambda が呼ぶ / 呼ばれる

# 構成図
以下のようにLambdaを呼ぶ側のLambdaと呼ばれる側のLambdaをそれぞれの2つずつ作成しました。
![スクリーンショット 2022-11-15 22.37.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/13fc38dd-86a6-cdaf-3100-7288cd3a089b.png)

# sg作成
まずsgを作成します

元記事を表示

ソースコード変えてないのにLambdaをデプロイしたら急にエラーになって焦った話

# 起きたこと
GitHub Actionsで毎朝自動デプロイを行っているServerless FrameworkのAPIサービス(API Gateway + Lambda)がある朝急にエラーを吐くようになった。

“`
TypeError: _convert_to_request_dict() missing 1 required positional argument: ‘endpoint_url’
“`

# 試したこと、調査したこと
## どこでエラーになっているか
[PynamoDB](https://github.com/pynamodb/PynamoDB)というライブラリを使っていて、それが吐いているエラーだということは確認できた。
ただ、掘っていくのが大変で真因を突き止めるのに難航。
ライブラリのバージョンは固定していたのでライブラリが更新されているわけではないと判断。

## エラーが起きてなかった時点の昨日のソースに戻して再デプロイして解消するか試す
もしソースの変更が原因なら解消するはずなのだが解消しなかった。

不可解なことに時間差でほぼ同様のソースがデプロ

元記事を表示

RSSとAWS-Lambdaを使って自社ホームページにQiita記事を掲載する方法メモ

# はじめに
RSSとAWSのLAMBDAを使って自社ホームページにQiita記事を掲載する方法のメモ
Qiitaに限らず、CORS制限のかかっているRSS取得全般で使えるのではないかと思う
本メモでは主に、
・QiitaのRSS取得ロジック(Lambda関数内)
・非同期でLambda関数呼び出し、XML形式からJsonへの変換(JS)
を記録している

株式会社Growfit HP

https://growfit.co.jp/
# 目次
1. [前提条件](#Chapter1)
1. [調べて分かったこと](#Chapter2)
1. [解決方法](#Chapter3)
1. [参考文献](#reference)


# 前提条件
・QiitaのRSS(記事情報)を取得してHtmlファイル(ホームページ)に追記したい
・Html,Css,Javascriptの構成で、バックエンドの言語とサーバー非使用


# 調べて分かったこと
・QiitaのRSSは、JSから非同期通信する際にCORS制限が

元記事を表示

AWS Lambdaで.NET Core 3.1から.NET 6に移行したときにやったこと

# はじめに

AWS Lambdaで.NET6がサポートされました。ですが.Net Core 3.1のMicrosoftのサポート期限が2022/12/13まで、AWS Lambdaにおける.Net Core 3.1のランタイムサポートは2023/1/20までとなっており、.NET Core 3.1から.NET 6への移行が必要になりました。
やってみると、項目によって`net6.0`だったり`dotnet6`だったりと、意外と紛らわしかったので忘れないようにメモしておきます。

# やったこと

## ターゲットフレームワークの変更

まずは言わずもがなですが、プロジェクトファイルのターゲットフレームワークを変更します。

“`diff_xml:***.csproj
netcoreapp3.1
+ net6.0
“`

## aws-lambda-tools-defaults.jsonの修正

AWS Toolkit for

元記事を表示

AWSIOT: 既存の Lambda にトリガーをかけるトピックの作成

既存の Lambda 関数を lambdatodb とします。

## ルールの作成
TESTlambda というルールを作成
トピックは、test/topica

“`bash:create_rule.sh
aws iot create-topic-rule –rule-name TESTlambda –topic-rule-payload file://new01.json
“`

“`json:new01.json
{
“sql”: “SELECT x AS vX,y AS vY,z AS vZ FROM ‘test/topica'”,
“ruleDisabled”: false,
“awsIotSqlVersion”: “2016-03-23”,
“actions”: [
{
“lambda”: {
“functionArn”: “arn:aws:lambda:ap-northeast-1:123454806

元記事を表示

chatwork-webhook→AWS Lambda →Googleスプレッドシートでメッセージを記録する

# 実現したいこと
chatworkの無料アカウントだと過去のメッセージが閲覧できなくなってしまったので、
閲覧期限が過ぎたメッセージを見返すために都度メッセージを記録する処理を作りたい。

# はじめに
復習を兼ねて記事にしました。
スプレッドシートウェブアプリとlambdaを併用する意味はあまりないと思います。
lambdaを使いたくなったというのと最初はメッセージの保存先をスプレッドシートにするつもりがなかったので、
結局この形になってしまいました。
特にこだわりがなければスプレッドシートウェブアプリをwebhook urlとして使った方が早いかもしれません。

# 環境
chatwork webhook
AWS Lambda
AWS API Gateway
python 3.9
Googleスプレッドシート
GAS
Windows 11

# 実行手順
## 1 スプレッドシートウェブアプリの作成

### [1] GASプロジェクトに以下コードを転記
“`
function doPost(e) {
const post = e.postData.contents

元記事を表示

初心者エンジニアが『Hello, World!をサーバーレスで実行する』公式チュートリアルやってみた。

# はじめに
今回はAWS公式から出ている、『「Hello, World!」をサーバーレスで実行する』というチュートリアルをやっていきます。
この記事はAWSアカウントを作り終わってることが前提条件になりますので、下記URLから作成をお願いします。

https://aws.amazon.com/jp/getting-started/hands-on/run-serverless-code/

### 自分のスペック
新卒でエンジニアになったが、Pythonに関しては簡単なものを読解、コーディングするぐらいの知識しかないです。
ほとんど初心者な人が今回はやっていきます。

### 環境
* Windows10
* Chrome

# 実行していく
### 関数作成までの手順
まず、AWSに入ってもらって左上の検索ボックスで「lambda」と検索して**Lambda**をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629918/4a9de036-5538-2b19-d56f-

元記事を表示

コンタクト追跡レコード(CTR)のFirehose~S3~経由のデータ連携 (後編)

# 前提条件
Saleforce API Version : v55.0
serverlessrepo-AmazonConnectSalesforceLambda : 5.19.0
この記事は、2022/10頃に書かれています。

AmazonConnect自体には、コンタクト追跡レコードをFirehoseに流す機能があるけど、連携用のLambdaは提供されてないけど、提供されてるLambdaを流用して、どうにかならないかな?というお試しした話の後編。

+ serverlessrepo-AmazonConnectSalesf-sfIntervalAgent-xxxxxx
+ serverlessrepo-AmazonConnectS-sfContactTraceRecord-xxxxxx

設定に迷った時に参照するのは、上記2つの『Amazon Connect Salesforce CTI Adapter』で作成されるLambdaです。

# Lambdaの作成
Lambdaの一覧画面から作成画面へ遷移する。

![Lambda_01.JPG](https://qiita-image

元記事を表示

[AWS Lambda Powertools Python]ログに実行ファイル名を含める

# 経緯

[AWS Lambda Powertools Python](https://awslabs.github.io/aws-lambda-powertools-python/latest/) [^1] のLogger機能はとても強力です。

ログを出力する目的は色々ありますが、デバッグ時のように処理を追いかける場面では「そのログがどこで出力されたのか」をまず知りたいのではないでしょうか。

デフォルト設定の出力では、 `location` 属性として出力されています。
下記の例だと、 `get_users` 関数内で、そのソースコードの40行目で出力したログであることがわかります。

“`json
{
“level”: “DEBUG”,
“location”: “get_users:40”,
“message”: “…
“`

シンプルな構造であれば「ああ、get_users()はあそこだな」とわかるでしょうが、いくつものファイルで構成されている場合は「get_users()ってどこの?」となりませんか?

# 出力内容の変更

出力内容をカ

元記事を表示

M1 MacでAWS Lambdaへ dockerイメージを cdk deploy すると exec format error になる

# 現象
M1 MacでAWS LambdaへDockerイメージをcdk deployしたところ、デプロイはうまくいきますが、Lambdaを動かすとexec format error になります。

“`
IMAGE Launch error: fork/exec /lambda-entrypoint.sh: exec format error Entrypoint: [/lambda-entrypoint.sh] Cmd: [app.handler] WorkingDir: [/var/task]
“`

# 対策
いろいろ調べるとM1 Mac上ではDockerイメージのビルドのデフォルトがArm64になっている(当たり前だが)ためでした。対処法として環境変数を設定してDockerのビルドのデフォルトを変更することもできるらしいですが、それだとコードを他の人に渡したときに同様のエラーを発生させることになるので、Dockerfileに記述するのがいいのではないかと思います。

“`Dockerfile:Dockerfile
FROM –platform=linux/amd64

元記事を表示

Lambdaコンソールに直書きしていたコードをAWS SAMに対応させる

## 概要
以前、LambdaをEventBridgeで定期実行するバッチを作ったのだが、
その際、Lambdaのコードをコンソール上に直書きしていた。

そうしたところ以下の問題が発生した
・デプロイの際、手動でコンソール上のコードを書き換える必要がある(めんどくさい&ミスする)
・テストがローカル環境でできない

この問題を解消するため、既存のLambdaのコードををAWS SAMに対応させてみる
本記事にはその際の手順を載せる

### 今回SAM対応させるアプリケーションの構成
LambdaをEventBridgeで定期実行しているだけ
![スクリーンショット 2022-11-05 17.21.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/813353/b9193cae-b949-7c2e-4ccf-02259971b50a.png)

## 対応後の感想
– メリット
– (小規模なら)対応が楽
– SAM CLIをインストールして、template.

元記事を表示

CDK で Hello Lambda

# 小話

最近見つけた grape の「[缶詰ウォーマー](https://shop.grapee.jp/products/flo-002-set)」が気になって仕方がないこの頃です。何より小鍋も嵌るサイズ感なのが良い。ミニおでんでも仕立てて 日本酒をしっぽり飲みながら夜を過ごすのもいいじゃないですか。

めっちゃ使ってみたい反面、お試しとばかりに色々な缶詰をスタックしそうで…。うーん、、気分は商品棚の前を何往復もウロウロしてるような感じです。

さて今回は缶詰をスタック、、、ではなく、AWS CDK を使って CloudFormation のスタックで管理された Lambda を作ってみるチュートリアルをしたいと思います。

# 対象者と前提条件

こんな方を対象にしています。

* AWS を触っているけど構築を自動化したい
* EC2 以外のことにチャレンジしたい
* CloudFormation のテンプレート直書きや SAM を使ってるけど限界を感じてきた
* Infra as Code (IaC) に興味がある

前提として既に AWS アカウントがあり、Node.js

元記事を表示

S3にあるファイルを公開する方法3種

# この記事の経緯

同僚にS3にあるファイルを公開したいので、方法を教えてほしいと言われました。(知識として持っておきたいので、構築作業はご本人で実施したいとのことでした)

ぱっと思いついた方法が3つあり、口頭で説明するよりかは資料として説明した方が理解しやすいだろうと思い、かつ、外部公開しても問題ない内容なので、記事にします。

同僚への説明資料のため、詳細なやり方までは記載しておりません。各やり方のメリット、デメリットを記載していますので、ご自身の要望に沿う方法の選定に役立てて頂ければと思います。

# S3にあるファイルを公開する方法3種

今回は`S3のWEBホスティング` `CloudFront + S3` `Lambda + S3` の3パターンを考えます。
それぞれの特徴を簡単に纏めると以下となります。

項目|`S3のWEBホスティング`|`CloudFront + S3`|`Lambda + S3`
—|—|—|—
SSL|x|○|○|○
独自ドメイン|○|○|x|
手間|◎|x|△|
パフォーマンス|x|○|x|
アクセス制御|△|○|△|

元記事を表示

cdkでLambda Layerを作成するときは、zip化しないでOK

# はじめに
レイヤーを使うLambdaを、cdk(python)で作成したいことってありますよね。
そのとき、ちょっとはまったので共有します。

# 内容
cdkでの文法などは
https://medium.com/geekculture/deploying-aws-lambda-layers-with-python-8b15e24bdad2
ここなど参考にどうぞ。

問題は、cdkで作成したディレクトリ直下に配置するlayerを格納するディレクトリ(ここではlambda-layersとします)についてです。
一般的にLambdaのレイヤーには、zipで固めたファイルをインポートしますが、**zip化はcdkがやってくれる**のでやる必要はありません!というよりむしろ、**やってはいけません**!!
(これをやってしまい、エラーが発生していました・・・)

lambda-layersにいる状態で
“`bash
$ mkdir python
$ pip install -t python requests
“`
これでOKです。安心して、cdk deployしましょう(裏でcdk君

元記事を表示

3分でAWS Lambda Function URLをSAM使ってデプロイする

## これは何

[SAM(Serverless Application Model)](https://aws.amazon.com/jp/serverless/sam/) を使って関数URLを設定したLambdaをデプロイします。
関数URLだけ使いたい(APIGatewayは使いたくない)というケースでテンプレの参考になればと思いました。
内容は比較的薄いです。

経緯

10000000年程前にAWS Lambda Function URLが提供されました。[記事](https://aws.amazon.com/jp/blogs/news/announcing-aws-lambda-function-urls-built-in-https-endpoints-for-single-function-microservices/)
これはLambdaをHTTPで直接起動できる機能です。

今まではAPI Gatewayを経由しないといけなかったのですがLambda単体でできるようになって便利になりました。こ

元記事を表示

[AWS.5] DynamoDB プログラミング概要

# 1. 概要
AWS SDKは、アプリケーションから DynamoDBへアクセスするためのインタフェースを三つ用意しています。
* 低レベルインタフェース
* ドキュメントインタフェース
* 高レベルインタフェース

プログラミング言語によって利用できるインタフェースは異なりますが、.NET では3種すべてを利用可能です。

:::note info
AWS DynamoDB プログラミングのオンラインマニュアルの図では「高レベルインタフェース(High-Level Interface)」と記述されていますが、解説上は「オブジェクト永続性インタフェース」とされています。
:::
:::note info
AWS DynamoDB プログラミングのオンラインマニュアルでは、「ドキュメントインタフェース」と「オブジェクト永続性

元記事を表示

AWS Lambda から自社 API サーバーへのリクエストに Amazon Cognito による認証機構を実装する

AWS Lambda (以降、Lambda) から自社 API サーバー (以降、API サーバー) へのリクエストに Amazon Cognito (以降、Cognito) による認証を実装した際の話をまとめました。
Cognito の OAuth 2.0 サービスのうち、Client Credentials Grant を使用することで Lambda を認証できるようにしています。

これは M2M (Machine to Machine) 認証と呼ばれるものを Cognito で実装した例です。
Cognito を使用する例については情報が少ない気がしたので、ワード検索時の一助になればと思い記事にしました。

## この実装に至った背景
今回の最終的な要件は、Lambda から API サーバーへのリクエストに Cognito による M2M 認証機構を実装することです。

上記要件に至った背景を記載します。
長めなので具体的な実装だけ知りたい方は [実装内容](#実装内容) までスクロールしてください。

### リリースフローの自動化を推進
現在弊社では開発及び運用で必要にな

元記事を表示

EC2, RDS, LambdaなどAWSのサービスを監視して一画面で全ステータスをチェックする

SaaSのSite24x7で実現する方法を共有します。
以下はサインアップ後の手順です。

流れ

  1. Site24x7でIDを表示(30秒)
  2. AWS IAMでロールを作成(2分)
  3. Site24x7にAWSを連携(1分~)
  4. しきい値を設定(1分~)

手順

1. Site24x7でIDを表示(30秒)

ホーム画面で「監視の追加」をクリックします。

EC2, RDS, LambdaなどAWSのサービスを監視して一画面で全ステータスをチェックする手順01

元記事を表示

OTHERカテゴリの最新記事