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

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

「適格請求書発行事業者公表システムWeb-API機能」利用の覚書

#はじめに
令和5年10月1日からいわゆるインボイス制度と呼ばれたりもする適格請求書発行方式が始まります。内容はともかく、今まで通りに商売を続けるためには届け出をして「登録番号」をとらなければならないようです。この登録番号は今まであった13桁の「法人番号」の頭にTを付けた14桁の番号で、法人番号同様に公表されるのです。

https://www.invoice-kohyo.nta.go.jp/web-api/index.html

#環境準備
1. 上記のサイトから申請できるアプリケーションIDを準備しますが、法人番号APIで使ったアプリケーションIDがそのまま流用できるそうなので、そのまま利用しました。

https://qiita.com/talomina/items/3af845b3eec511ab55fe

1. Python環境を準備します。今回もAmazon lambdaを利用しました。

#実装
作成したコードです。登録番号を元にAPIから取得した会社名や住所を表示します。法人番号との主な違いは下記のようなところです。
* 法人番号は全て頭にTを付けて登録番号に変更する

元記事を表示

【AWS】【ハンズオン】各10分くらいで、Serverless Architecture(Lambda、API Gatway)+RDSを触ってみる

だいぶご無沙汰しています。
どーも、のぶこふです。

「あれ、タイトルがAWSだけど、Blockchain関連じゃなかったんかワレ」と思った方、鋭いですね。

今年から弊社はAWSにも注力していて、ご多分に漏れず私もAWSを触る機会がが増えてきました。
最近、社内向け勉強会(現地とZoomのハイブリット開催)にて、資料を作成したので、こちらにも投稿します。

各詳細は、[Github](https://github.com/nobkovskii/aws_handson/tree/main/01_serverless-architecture)を参照していただくとして、Qiitaでは寄り道に逸れた内容とか勉強会の振り返りを書いていこうと思います。

あ、Blockchain(Cordaとか)はBlockchainで、EKS上にNode立てたりしてますので、遠からず。

“`
                      (゚∀゚)アヒャ
“`

### 全体像
構成図としては、下記の通りです。
Serverlessな構成としては、RDSを使っていることを除けば、ごくごく一般的な内容です

元記事を表示

AWS APIGatewayからLambdaへリクエストヘッダー情報を受け渡す

#はじめに
APIGatewayからLambdaへリクエストヘッダー情報を受け渡す必要があり、
その際に行った実装方法とテスト方法について、備忘録として記載します。

前提
 ・本記事では、下記の赤矢印①〜②の実装方法について記載する。
![API_lambda_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1255237/6b5f27ad-2d81-d9fb-a9c0-7a637487486b.png)

#目次
[1. Lambda関数の作成](https://qiita.com/drafts/19dba5d3ef8955f3b2d1/edit#1-lambda%E9%96%A2%E6%95%B0%E3%81%AE%E4%BD%9C%E6%88%90)
[2. APIGatewayの作成](https://qiita.com/drafts/19dba5d3ef8955f3b2d1/edit#2-apigateway%E3%81%AE%E4%BD%9C%E6%88%90)
[(おまけ1)Lambd

元記事を表示

AWS 同一VPN内のLambdaからRDSへ接続を行う

#はじめに
Lambda関数からRDSデータベースへ接続を行う機会があり、
その際に実装を行った方法について、備忘録として記載します。

前提
 ・RDSデータベースの作成・設定済みとする。
 ・本記事では、下記の赤矢印①〜②の実装方法について記載する。
![lambda_rds_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1255237/a9374b91-aae1-77fd-6445-06bd8dffc75f.png)

#目次
[1. Lambda関数の作成](https://qiita.com/drafts/d8bb6608d1343770b099/edit#1-lambda%E9%96%A2%E6%95%B0%E3%81%AE%E4%BD%9C%E6%88%90)
[2. Lambda関数のソースコード実装](https://qiita.com/drafts/d8bb6608d1343770b099/edit#2-lambda%E9%96%A2%E6%95%B0%E3%81%AE%E3%8

元記事を表示

AWS Lambda S3 の画像ファイルをブラウザに表示する

# 初めに

Lambda と API Gateway を使用して、ブラウザでクリックボタンを押すと S3 にある画像ファイルをブラウザに表示する方法を実装する手順を説明します。

# S3 に画像ファイルを保存する

表示したい画像ファイルを保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/139ef17c-8483-eea0-48c9-ae28cd5f8ebb.png)

# Lambda 関数を作成する

以下の Lambda 関数を作成し、Lambda関数のロールに S3 のアクセス権限を付与します。検証だけでしたら Lambda 関数作成時のロールのインラインポリシーに S3 のフルアクセス権限を付与するのが簡単です。

“`python
import base64
import boto3
import json

s3 = boto3.client(‘s3’)

def lambda_handler(event, context):
pr

元記事を表示

Shopify WebhookをAPI GatewayからLambdaで処理する

#概要
備忘録、ハマったポイントを重点的に書く。
ShopifyのWebHookを利用して、注文があった際に注文内容を受信する。
この記事では、Shopifyへ即レスポンス返す方法や、webhookの認証についてまとめる。

# 前提
Shopifyの**プライベートアプリ**として運用します。
公式にアプリとして使用する場合は、Shopify-> APIgateway->Lambdaではなく、Shopify-> EventBridge -> Lambdaという形を使用した方が良い為、下記の公式ブログ記事を見て下さい。

[ShopifyアプリMechanicの開発者はEventBridgeでどのようにスケーリングしたのか](“https://www.shopify.jp/blog/partner-event-bridge-scaling”)

# 1. Lambdaでの処理
webHookを受信した時の処理されるLambda関数を作成します。
### Shopify WebHookを3秒以内に返す
Shopify WebHookを**3秒以内にレスポンスを返す必要があります。**レス

元記事を表示

AWSアカウントを跨いで利用料金を取得する

`Assume Role` を使ってAWSの別アカウントから利用料金を取得します。

仕組みは次のようなイメージになります。
① で `STS` の `AssumeRole` を叩くと、一時的な**アクセスキー、シークレット、セッショントークン**が払い出されます。あとはこれを使うだけです。

# AWSアカウントBにロールを作成

## ポリシー作成

今回はコスト参照するだけなので、以下のようなポリシーを作ります。

“`json:GetCostAndUsagePolicy
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “VisualEditor0”,
“Effect”: “Allo

元記事を表示

AWS Lambdaを利用したS3連携ハンズオン

## はじめに
今回はAmazon S3にオブジェクトを保存した際にAWS Lambdaが起動する仕組みを作成します。

動きとしてはS3に手動でオブジェクト(sample.jpg)を保存した際に、Lambdaが起動して”オブジェクトが保存されました”というログを表示する処理を行います。

## 構成図
![スクリーンショット 2021-11-13 8.42.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694365/e8a18378-b0af-082b-1254-293e4bc54dd8.png)

## 実装
#### 1.Lambdaを設定する
##### 1.1 AWSマネジメントコンソールからLambdaを検索する
1.検索ウィンドウよりLambdaと打ち込む
![スクリーンショット 2021-11-13 8.52.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694365/25daf44c-393

元記事を表示

【AWS】オプトインリージョンへのS3アクセス時の注意

# これは何?

とある事情でLambdaからS3へファイルを転送する構成で、中東(バーレーン)リージョンに導入する必要がありました。
が少し上手くいかなかったのでメモです。

## 状況
いつも通りTerraformにて同じリソースをデプロイした。
しかしながら、S3へログを転送するLambdaでエラーが発生。

## エラー内容
・エラー内容は以下、調べてみるとリージョン系のエラーっぽい。

“`
2021-09-02T10:58:14.881Z fe9ac618-e5a7-46ad-b53e-4e35607db33a ERROR Cannot put object!.
2021-09-02T10:58:14.821Z fe9ac618-e5a7-46ad-b53e-4e35607db33a ERROR IllegalLocationConstraintException: The ap-northeast-1 location constraint is incompatible for the region specific endpoint this request w

元記事を表示

Serverless Frameworkで画像(バイナリ)をダウンロードするAPI

# まえがき

Serverless FrameworkとAPI Gatewayで画像をダウンロードするAPIを作ってみました。
ネット上の情報だとうまくいかなかったので、試行錯誤を繰り返すことになり大変でした。

# ソース

https://github.com/t-mine/qiita/tree/master/serverless-image-dl-api

# 手順
## Serverless Frameworkインストール
“`
npm install -g serverless
“`

## プロジェクト作成
“`
serverless create –template aws-nodejs –name serverless-image-dl-api –path serverless-image-dl-api
“`

## Serverless FrameworkにAWSの認証情報を設定
AdministratorAccessポリシーを付与したIAMユーザーを用意して、設定します。

“`
serverless config credentials –pr

元記事を表示

AWS(api gateway, lambda, SES, S3)を用いてお問い合わせフォーム付きウェブサイトを作成する

# AWS(api gateway, lambda, SES, S3)を用いてお問い合わせフォーム付きウェブサイトを作成する

こんな感じでシンプルに件名とメッセージだけ入れてメールで送信します。
![rapture_20211110233814.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356208/bfde2080-2972-f579-4fd0-a459887546f9.jpeg)
AWSのapi gateway, lambda, SES, S3を用いて、S3上にアップロードした静的ウェブサイト上からメールを送信したので、その手順を記録しておきます。

大まかに以下のような手順となります。

* SESへのメールアドレスへの登録
* lambdaを用いてメールの送信用の関数を作成(今回はPythonで行った)
* api gatewayへのlambda関数の登録
* apiを叩くためのwebサイトの作成
* 作成したwebサイトをS3上にアップロードし、公開する。

## SESへのメールアドレ

元記事を表示

Cloud Formationを使ってGolang製LambdaのCICDをGitHub Actionsで構築

## 以下の記事を参照して頂ければと思います

https://note.com/shift_tech/n/n28a0b7e56680

**※※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です**

## 補足
ソースコード全体は以下です。

https://github.com/yuta-katayama-23/Go/tree/cloudformation

元記事を表示

「法人番号システム Web-API」を利用するための覚書

#はじめに
法人番号のAPIを利用するための覚書です。

https://www.houjin-bangou.nta.go.jp/webapi/

#環境準備
1. 上記のサイトから利用規約を読んでアプリケーションIDの申し込みを行います。

1. 数日で英数字13桁のアプリケーションIDが、いかつい封筒で送られてきました。
![DSC_0238.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/445683fa-addd-c9a7-36d4-4aef07ba8d1e.jpeg)

1. Python環境を準備します。今回はAmazon lambdaを利用しました。

#実装
作成したコードです。法人番号を元にAPIから取得した会社名や県名を表示します。

“`python:get_houjin_info.py
import json
import requests
import xml.etree.ElementTree as ET

def lambda_handler(event, c

元記事を表示

AWS上でデータの収集、加工、分析を行う

#はじめに
kaggleなどでデータ分析の勉強を行う際は、既に加工されて分析しやすい形になったデータに対して分析を行うことが多いと思います。しかし実務ではデータの収集から行う必要性があったり、分析に適さない生データを扱うことになると思います。

そこで一からデータの入手・加工・分析までの流れをやってみようということと、AWSの経験値を積むために、AWS上で一連の流れを処理するためのアーキテクチャを作成しました。

#学習方法
AWSについてはネットで調べつつ繋げていくのがメインでした。
個々の実装やサービス同士の繋げ方については、別で記事をあげていきたいなぁと思ってます。

スクレイピングについては、udemyの「【4つの実案件で学ぶ】Python Webスクレイピング完全パック」で学びました。実案件を交えつつ、非常に分かりやすい内容となっています。

#作ったもの

一週間に一回、バイク王さんの中古バイクのデータを取得し、データ分析を行える状態まで持っていくアーキテクチャです。
下図が今回作成したものになります。

![image.png](https://qiita-image-s

元記事を表示

lambdaでquerystringが取得されていない場合の解決方法 by cloudfront

# 状況
– AWSのcloudfrontを利用している。
– API GatewayとLambdaを利用してweb APIサービスを構築している。
– postメソッドをクエリパラメータで利用している。

# 発生したトラブル
– クエリパラメータ(URLの後ろに?で繋げる文字列)を利用してPOSTメソッドでLambda関数を実行したときに、querystringにクエリパラメータの値が入るはずなのに入っていない。
– 代替ドメイン名、ディストリビューションドメイン名のurlでpostするときのみ、querystringにクエリパラメータの値が入らないという状況。

# 原因
– cloudfrontの`ビヘイビア`の設定の`キャッシュキーとオリジンリクエスト`の設定がされていなかったので、クエリパラメータが取得されなかった。

# 解決方法
`キャッシュキーとオリジンリクエスト`で、`Legacy cache settings`を選択して、クエリ文字列を`すべて`に変更して、保存すると解決します。
– 少し待ってから、再度swaggerやcurlでpostメソッドを実行後、

元記事を表示

Serverless入門で作りたいと思っている簡単なサービス

# 書き始め
まず最初に記事にしてしまえば、やるであろうという願望のもと、書き始めています。

# 目標
AWSの以下のブログから、1日に1度、スクレイピングしてきて、新しいブログが発見できたら、そのブログのタイトルとURLを一緒に自分のアカウントにツイートさせる。

以下のアーキテクチャを目指します。
![Architecture.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593337/1c2a8e88-1972-39e8-3bdd-8593148acfa5.png)

# 環境
– MacOS 11.6
– VisualStudio Code
– Python3.9
– Serverless Framework 2.65.0
– エンジニア二年目

# 参考にするサイト
– Tweeter APIの使い方:

https://qiita.com/bakira/items/00743d10ec42993f85eb

– Scrapy(スクレイピング)の使い方:

https://ai-inter

元記事を表示

Serverless Framework スケジュール実行で Lambda に引数を渡す方法

`serverless.yml` で `input` を定義することで、スケジュール実行に任意の引数を渡すことができます

“`yml
# serverless.yml
events:
– schedule:
rate: rate(10 minutes)
enabled: false
input:
sampleKey: sampleValue # Lambda に渡したい値
“`

JavaScript の場合、handler からは以下のように値を取得することができます

“`typescript
// handler.ts
module.exports.hello = async event => {
const { sampleKey } = event; // serverless.yml に定義した値を取得
};
“`

:bulb: `input` 指定の詳細は [Serverless Framework | Schedule](https://www.serverless.com/framework/do

元記事を表示

Amazon Redshift Data APIを使ったETL

# はじめに
始めまして、株式会社ジールの@KimiyukiMuramatsuです。
AWSを使ったデータ分析基盤の構築を業務としております。
その中で得たノウハウをQiitaを通して発信していきたいと思います。

Lambdaを使って、S3上のファイルに対してETL処理を行い、Redshiftにロードする方法を検討しておりました。

Redshift Data APIを使って実現できると考え、検証してみました。

Redshift Data APIを使うことで、LambdaからRedshiftのSQLを呼び出すことができます。
SQLを使えれば、Redshift Spectrumにより、S3上のファイルをETL処理してからRedshiftのテーブルにロードできます。
(Insert Into Select From ~ )
# 検証したいこと
* Redshift Data APIを使って、LambdaからRedshif

元記事を表示

【超初心者向け】5分でAWS Lambda + API Gateway でRest APIを作る

# 作ったもの

![](https://github.com/nmasashi/qiita/blob/main/lambda/apigateway_lambada/images/lambda.png?raw=true)

ただ、以下の json を返すだけの RestAPI です。
AWSを最近勉強し始めたよちよち歩きのエンジニアの第一歩です:v:

“`json
{
“statusCode”: 200,
“body”: “\”Hello from Lambda!\””
}
“`

# 手順

用意するもの

– AWS アカウント

## lambda 関数作成

1. 任意のアカウントでログイン
1. [Lambda 関数一覧](https://ap-northeast-1.console.aws.amazon.com/lambda/home?region=ap-northeast-1#/functions)にアクセス
1. 「関数の作成」をクリック
![](https://github.com/nmasashi/qiita/blob/main/lambda/api

元記事を表示

ポートスキャンサンプル(python 3.8 on aws-λ )

メモリは1GB推奨。がっつりスキャンするので、要チューニングして利用のこと。

“`python
import json
import socket
import random
from multiprocessing import Process, Pipe
import urllib.request

#向き先
TARGET_HOST=’hogehoge.com’

#通知先WEBHOOK
webhook = “https://discord.com/api/webhooks/9999999999999999/hogehoge”

#生成するスレッド数:CONNECTION多重度と同義。400辺りでファイルディスクリプタ関連エラー
THREAD_MAX=300
#検査レート:何%のポートを検査対象とするか。0.3の場合、検査ポートの30%をScan対象とする
#TODO:アホほど回るのでチューニングすること
SCAN_RATE=0.3
#タイムアウト:socketのタイムアウト時間(秒)。0.3くらいで検査できそう
SOCK_TIMEOUT=0.3

def portscan(

元記事を表示

OTHERカテゴリの最新記事