- 1. selenium + AWS lambda開発環境の構築
- 2. SQLサーバーに接続してSQLを実行するlambdaをTerraformで作成してみる
- 3. CloudWatch のエラーログを Slack 通知
- 4. 公式LINEアカウントへのログイン処理をAWS Lambda経由で実装してみた
- 5. CloudFront + Cognito認証(cognito-at-edge)で、index.htmlを追加したい
- 6. AWS Lambdaで手軽にNode.jsコンテナ稼働
- 7. 【AWS】署名付きURLの生成&アップロード処理
- 8. pgauditを設定して特定カラムアクセス時にemail通知を投げるシステムの構築
- 9. EC2を自動起動停止させるLambdaをNode.js18に移植した
- 10. GitHub Actions、キャッシュで時間短縮(とLambda更新で少し苦労)した話
- 11. AWS Lambda関数作成の流れ
- 12. はじめてのCustom Action作成
- 13. はじめてのRubyバージョンアップ対応とCould not find net-pop-0.1.2, net-smtp-0.3.3, rake-13.0.6 in locally installed gems
- 14. API Gateway+LambdaからECS Fargateへの移行
- 15. Agents for Amazon BedrockでWeb上のブログやニュースを要約する
- 16. Amazon Bedrock(Claude2.1) Excelの設計書をDocumentLoaderで読み込みAWSでAPIを作成
- 17. Agents for Amazon Bedrock から複数のLambda関数を呼び分ける
- 18. 【AWS】Boto3のよく使うメソッドのチートシート(S3編)【覚え書き】
- 19. CloudFormationを使わないLambdaのCICDについて
- 20. 特級呪物と化したAWS IoT Enterprise Buttonを勤怠ボタンとして活用する
selenium + AWS lambda開発環境の構築
## はじめに
AWSの開発環境の構築の備忘録です💁
初心者です😅
間違えてる部分多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇
環境構築はかなり苦労しました。
なので図にしてみました。
わかりづらい部分もあるかと思います。
ただ、図にするのは時間がかかってしまうのがデメリットですが、理解の落とし込みはかなりしやすいなと感じました。## 🦁**結論**🦁
## 手順
1. Cloud Shellを開く
2. Pythonのバージョン確認
3. Seleniumのインストール(バージョン3.141.0)
4. CloudShell上で保存用ディレクトリを作成
5. chromedriverをダウンロードして展開
6. headless-chromiumをダウンロードして展開
7. いらなくなったzipファイルの削除
8. headlessディレクトリをzip化
9. S3のバケット作成
10. zipファイルをS3にコピーする
11. Seleniumレイヤーの作成
12. headlessレイヤーの作成
13. 関数の
SQLサーバーに接続してSQLを実行するlambdaをTerraformで作成してみる
## はじめに
こんにちは![Fusic Advent Calendar 2023](https://qiita.com/advent-calendar/2023/fusic)の12日目を担当します@pensuke628です。
最近AWSのお仕事でLambdaを使い始めましたが、Lambdaって便利だな〜と感じる日々です(感想が薄い)
今回は、SQLサーバーに対してSQLを実行するlambdaをTerraformを作ってみたので、記事にしたいと思います。使用したterraformのバージョンは以下になります。“`
$ terraform -v
Terraform v1.5.4
“`また、最終的なフォルダの構造は以下のようになっています。
“`
.
├── lambda_function.py
├── lambda_function.zip
├── pyodbc.zip
└── terraform
├── backend.tf
├── main.tf
├── provider.tf
├── terraform.tfstate
├──
CloudWatch のエラーログを Slack 通知
# はじめに
CloudWatch に出力されたエラーログを Slack 通知したいと思います。
CloudWatch の通知と言えば、以下の様なアラームの状態変更を通知するパターンもあるかと思います。![2023-12-06_8.20.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125540/20e33385-5a10-9bf8-66a3-938217d4338e.png)
この場合、パッと見、エラーの内容が分からず、コンソールなどで詳細を確認しに行く必要があるため少し面倒です。
今回は、エラーの内容を Slack に通知できる様にします。
# 完成イメージ
![2023-12-05_20.47.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125540/9edea962-7ccd-405c-1c1e-c3ae1c37d24e.png)
エラーログやステータス、発生日時や該当
公式LINEアカウントへのログイン処理をAWS Lambda経由で実装してみた
## はじめに
本記事は[PERSOL PROCESS & TECHNOLOGY Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ppt)の記事です。
業務でLINEとAWS実装を経験することがあり、独学ながら実装したお話を書いてみようと思います。といってもLINEの公式ドキュメントがすごく丁寧に教えてくれているので、こんなふうに実装できるんだ〜便利〜とか思ってくれれば良きです。では## 背景
今回日本で利用者数が多いSNSであるLINEと、サーバーレスであるAWS Lambdaを利用しています。
>LINEは、月間ユーザー数9,500万人(2023年6月末時点)と多くのユーザー数を抱えています。
参照:[LINEユーザー層](https://campus.line.biz/line-ads/courses/user/lessons/oada-1-2-2)ともあり、年齢層に関係なく利用ユーザーも多いです。(個人的には思ったより高齢層というのも関係なく高いのに驚き)使いやすくて便利。ですね。
Lambda
CloudFront + Cognito認証(cognito-at-edge)で、index.htmlを追加したい
## 概要
– CloudFrontでCognito認証したい場合は、Lambda@Edgeを使って[cognito-at-edge](https://github.com/awslabs/cognito-at-edge)を扱った記事は多い。
– 一方、CloudFrontでファイル名を含まないURLをリクエストした際にindex.htmlを追加する方法としてはCloudFront Functionsを使ったサンプルの記事が多い。([公式でも記載](https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/example-function-add-index.html)されている)
– 問題点はcognito-at-edgeと同時に使いたい場合にビューワーリクエストで指定することになるため、どちらか片方しか設定できないこと。
– オリジンリクエストでCloudFront Functionsは指定できない。
– オリジンリクエストでLambda@Edgeは可能だが、認証系がキャッシュされてし
AWS Lambdaで手軽にNode.jsコンテナ稼働
Node.jsなLambdaを、お手軽にコンテナ化して運用したい。
分かりやすいメリットとしては、以下のようなものがある。
* [Lambda Layers](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/chapter-layers.html)等で頑張って導入していた外部ライブラリを全てイメージ内に同梱できるため、取り回し易い
* [Lambda Runtime同梱のAWS-SDK](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.html)と異なるバージョンのAWS-SDKを使いたい場合も、これに該当する
* [コードパッケージサイズ上限が10GiB](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/gettingstarted-limits.html#function-configuration-deployment-and-execution)であるため、コードサイズに関して普
【AWS】署名付きURLの生成&アップロード処理
## はじめに
AWS S3の署名付きURLを使用してファイルアップロード処理をする方法について紹介します。
背景としてはAPI Gateway→Lambdaを介してS3にファイルをアップロードする機能を作成していたのですが、API Gatewayでは10MBまでのファイルしか受け付けない仕様となっており10MB以上のファイルをアップロードするケースがでてきたためこの問題を解消する必要がありました。そこで、画面から直接S3にファイルをアップロードするよう、S3の署名付きURLを使うアップロード処理に変更しました。## 処理の流れ
1.画面からAPI Gateway→Lambdaを経由して、S3から署名付きURLを取得する。
2.取得したURLを使用していアップロードを実施。## ソースコード
### 署名付きURL取得処理
API Gatewayの設定は割愛して、Lambdaに設定するソースコードのみ紹介します:point_up_tone1:言語にはNode.jsを採用しています。“`javascript
// 必要なnodeモジュールを読み込む
const { S3Cl
pgauditを設定して特定カラムアクセス時にemail通知を投げるシステムの構築
# 要点
– テーブル中に記録された個人情報アクセスの監視。
– 開発者並びに特定ユーザが、テーブル中の特定カラムを参照した場合にemail通知を送信する。
AWSを用いて構成した。システム構成図は以下。![pgaudit_infra_page-0001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367227/42df63a3-85d4-5b54-0fdb-37fc4b0efbaf.jpeg)
# 構築手順
[準備.pgAuditについて](#1-pgAuditについて)
[1.PostgreSQLの設定](#1-PostgreSQLの設定)
[2.CloudWatch Logsのサブスクリプションフィルター設定](#2-CloudWatchLogsのサブスクリプションフィルター設定)
[3.SNSトピック作成](#3-SNSトピック作成)
[4.Lambda関数でメッセージ構築](#4-Lambda関数でメッセージ構築)
[ex.TerraformによるIaC化](#5-Terraform
EC2を自動起動停止させるLambdaをNode.js18に移植した
## はじめに
EC2を自動起動停止させるLambdaをたぶんNode.js v6かv8のころから使ってきました。
Node.js v14まではコードを修正せずに動いたのですが、v18に上げたらそのままでは動かなかったので、やったことを残しておきます。## Node.js v14まで
### ソースコード
元々使っていたコードは下記です。
“`typescript:index.js
var aws = require(‘aws-sdk’);
var ec2 = new aws.EC2();exports.handler = (event, context, callback) => {
‘use strict’;let filter_status;
switch (event.type) {
case ‘start’:
filter_status = ‘stopped’;
break;
case ‘stop’:
filter_status
GitHub Actions、キャッシュで時間短縮(とLambda更新で少し苦労)した話
# 取り組んだこと
以前投稿した[こちらの記事]()で、workflowを作成しました。
このときは、workflowはとりあえず動くものから、といった形で作業していました。**作業前のworkflow**
https://github.com/eno-conan/githubaction-python-docker-cache/blob/main/.github/old-workflows/old.yaml
今回は、**キャッシュを利用して、実行時間短縮を図ろう**!
ということで作業を行っていました。キャッシュは以下の2カ所に設定していきます。
– python関係のライブラリをインストール
– DockerイメージのPushまでの過程## python関係のライブラリをインストール
`github actions pip cache`と検索すると、以下リポジトリが見つかりました。https://github.com/actions/cache
関連する実装を色々確認して、以下の実装を使わせていただきました。
Pythonとpipのそれぞれのレイヤーでキャッシ
AWS Lambda関数作成の流れ
AWS Lambda関数作成の流れ
## はじめに
自身で作成したAWS Lambda関数作成の流れの備忘録です💁
初心者です😅
間違えてる部分多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇始めてAWS Lambdaに携わる方などの少しでも参考になればいいなと思います😆
また各詳細はこれから、作成していく予定です。
## 作成したもの
「janコード」をリクエストしたら商品名と価格をレスポンスしてくれるAWS Lambda関数を作成![unknown.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3522630/95930371-9435-b41c-1552-6e715f21c1a0.png)

## 開発においての一連のプロセス
1. Pythonファイルで実行
2. CSVを読み込むデータを取得
3. API Gatewayを通してLambda関数へリクエスト
4. Lambda関数からリクエストあったものを処理
5. Lambda関数で処理した内容をPy
はじめてのCustom Action作成
# 取り組んだきっかけ
先月末から今月の上旬にかけて、Github Actionsに浸かっています。
色々触っている中で、**Custom Action**が気になり始めました。あるworkflowを作成時、AWS Lambda更新のため、以下を利用しました。
https://github.com/int128/deploy-lambda-action
どんなことをしているか、大雑把にはわかりましたが、
まずは、**一通りリリースまでやってみよう!**
ということで、より初歩的なCustom Actionを探しました。### Custom Actionとは?
`Custom Action`は、workflow内の`uses:`で記述したアクションのことです。https://docs.github.com/ja/actions/creating-actions/about-custom-actions
`actions/checkout`がその一例です。
“`yaml
steps:
– uses: actions/checkout@v4
“`
https://g
はじめてのRubyバージョンアップ対応とCould not find net-pop-0.1.2, net-smtp-0.3.3, rake-13.0.6 in locally installed gems
# はじめに
今年のカレンダーはとある会社のとあるチームで活動した1年間を振り返っていきます## 登場人物
### アーキテクチャ先生:
AWSが好きな新上司。Docker on Lambdaを利用したサーバーレスアプリケーションのアーキテクチャなどが得意。いつも忙しい。### ちいかわトミカさん:
先輩で頼りになる方。疲れたらちいかわトミカで遊んでいる?よくダジャレを言う。得意なダジャレは「今日言う共有事項はないです」# はじめてのバージョンアップ対応
私「そろそろRails6のサポートとlambdaランタイムRuby2.7のサポート期限が近いので対応しないといけないですね」
ちいかわトミカさん「調べたことなどはまとめておいてもらえると助かります」
アーキテクチャ先生「社内でも対応できているところは少ないと思うのでお願いします」
# はじめてのバージョンアップ対応
Railsの対応で遭遇したエラーは以下の2種類“`
Failure/Error: require_relative ‘../config/environment’NoMethodError:
API Gateway+LambdaからECS Fargateへの移行
# はじめに
[Globee Advent Calendar](https://qiita.com/advent-calendar/2023/globee)11日目の記事です。
abceedのサーバーサイドの開発及びインフラを担当している清水が、abceedが現在抱えている課題とその改善案についてご紹介します。# abceedインフラの現状
abceedのバックエンドには、APIサーバーが稼働しており、abceedの大半の機能が実装されています。
このAPIサーバーのインフラは、下図の通り、AWS API GatewayからLambdaを実行するシンプルな構成となっています。現在のインフラ構成(一部抜粋)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165221/90423fa4-2170-2c5b-4b9a-4398d65a907b.png)# 解決したい問題
API GatewayとLambdaを組み合わせた構成は、フルマネージドのサーバーレス環境のため、コストを抑え
Agents for Amazon BedrockでWeb上のブログやニュースを要約する
# はじめに
生成系AIを活用して長い文章を要約したり、Web上の記事 (ブログやニュース等) に対する見解を得る方法として、これまではOpenAIのFunction Callingを使用する方法がメジャーでしたが、AWS re:Invent 2023で **「Agents for Amazon Bedrock」** がリリースされたことで、ほぼ同じ機能をAmazon Bedrockで完結して実現できるようになりました。今回は、タイトルの通り「Agents for Amazon Bedrock」を活用してWeb上のブログやニュースを要約する仕組みを作る方法を解説します。
:::note warn
Web上の記事やファイルを取得 (スクレイピング) する際は、引用元の著作者の権利を侵害したり、規約に抵触しないようにご注意ください。<参考> https://pig-data.jp/blog_news/blog/scraping-crawling/scrapinglaw/
:::# Agents for Amazon Bedrockとは?
「Agents for Amazon
Amazon Bedrock(Claude2.1) Excelの設計書をDocumentLoaderで読み込みAWSでAPIを作成
前回、Amazon Bedrockを試した流れで、Excelの設計書からAWSのAPIを作成する検証をしてみました。
以下の記事の続きになっているので、詳細は以下を参照してください。https://qiita.com/dorcus-rectus/items/6e32cd15719790c9a13a
Cloud9を前提としています。
今回の内容を試すには、以下のパッケージをインストールする必要があります。“`bash
$ pip install boto3
$ pip install langchain
$ pip install unstructured
$ pip install networkx
$ pip install pandas
$ pip install openpyxl
“`Excelの設計書を読み込んでコードを作成するPythonスクリプトです。
“`python:test-document-loader
from langchain.document_loaders import UnstructuredExcelLoader
from lan
Agents for Amazon Bedrock から複数のLambda関数を呼び分ける
Agents for Amazon BedrockからLambda関数を呼び出します。
自然言語の問い合わせを元に、複数のLambda関数の中から適したものを選択し引数を考えて実行、実行結果をLLMで整形して応答します。# そもそもAgents for Amazon Bedrockとは何なのか
– 自然言語で呼び出せるAPI(Lambda)のオーケストレーターです
– API(Lambda)の呼び分けルール、順序性や関連性も自然言語(とOpenAPIスキーマ)で定義できます
– ベクトルデータストアとしてKnowledge baseもオーケストレーションできます
– オーケストレーターなので、Agentだけで何か処理が出来るわけではありません(これ重要)# 今回作ったもの
今回作ったものは、以下の3サイトに対応したLambda関数を作成しておき、それをAgentから呼び出しています。
– Yahoo天気(手抜きで東京限定)
– Yahoo乗換案内(手抜きで今すぐ出発)
– Wikipedia![image.png](https://qiita-image-store.s3.
【AWS】Boto3のよく使うメソッドのチートシート(S3編)【覚え書き】
## はじめに
AWSのLambdaやGlueでコードを書くときによくBoto3というライブラリを使用します。
Boto3には多くのメソッドがありますがその中で個人的に比較的使用頻度の高いメソッドとその利用例のコードをこの記事でまとめました。
※今後必要に応じてアップデート予定です
※ここではS3の”オブジェクト”を”ファイル”と表現しています
この記事で紹介しているメソッド一覧
|*メソッド名* |*利用シーン* |
|———-|————————–|
|head_bucket |バケットの存在確認 |
|head_object |ファイルの存在確認、アップロード日時などの情報の取得 |
|list_objects_v2 |フォルダ内のファイル一覧取得 |
|get_object |ファイルの取得 |
|put_object |ファイルのアップロード |
|delete_object |ファイルの削除 |## S3のバケットやファイルの存在確認
### バケットの存在確認
####
CloudFormationを使わないLambdaのCICDについて
## はじめに
この記事は[ディップ Advent Calendar 2023](https://qiita.com/advent-calendar/2023/dip-dev)の10日目の投稿です。この記事では、あるシステムで導入したLambdaのCICDについて紹介をしたいと思います。
## LambdaのCICDについて
LambdaのCICDは現在(2023/12時点)でCloudFormationを使用したものがメジャーかと思いますが、
今回はそちらを使わず、以下の内容で構成しました。
CloudFormationを使用しなかった背景などは後ほど説明させていただきます。### 使用したもの
– GithubEnterprise(GHE)
– AWS CodePipeline
– AWS CodeBuild
– AWS CodeDeploy
– AWS S3
– AWS Lambda
– AWS SQS(テスト実行用)![lambda_ci_cd_v1.png](https://qiita-image-store.s3.ap-northeast-1.amaz
特級呪物と化したAWS IoT Enterprise Buttonを勤怠ボタンとして活用する
この記事はHRBrain Advent Calendar 2023 9日目の記事です。
https://qiita.com/advent-calendar/2023/hrbrain
## [はじめに](#header1)
初めまして。11月からHRBrainで業務委託として関わっている [yakiniku0220](https://twitter.com/yakiniku040220)です。
12月になり、いよいよ年末感が少しずつ出てきましたね。
年末といえば大掃除ですが、一気にやるのは億劫なので私は週末に細かくやっています。
そこで久々にあるものを発見しました。![IMG_0369.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271450/145e701b-867a-81e7-4b9d-a31c9581d60f.jpeg)
そうですAWS IoT Enterprise Buttonです。
HRBrainでは各々がtimesのチャンネルを作っており、そこで作業の開始と終了を投稿してい