- 1. Layer付きのAWS Lambda functionをServerlessFrameworkでローカル実行するとLayerが参照できない
- 2. AWS StepFunctionsで、クロスアカウント でAWS Lambdaを呼び出す
- 3. AWS、EC2でrailsアプリをssl化する!【2021最新版】
- 4. AWS メモリ不足時のEBSボリュームのファイルシステムを拡張
- 5. 【Rails】100均商品レビューアプリの製作者解説
- 6. Amazon EC2 スポットインスタンスを使う
- 7. Google Apps Script(GAS)から S3 にあるファイルを取得する
- 8. AWS環境にNFSサーバーを構築する
- 9. aws-sdk を使わずにS3からデータを取得する
- 10. pre-commitのcfn-lintで特定のエラーを無視する方法
- 11. AWSのバージニア北部リージョン(us-east-1)の料金が一番低いとは限らない説
- 12. AWS SAM触ってみた
- 13. Aurora Serverlessとは?
- 14. twitch使ったWebAppのアーキテクチャ草案
- 15. AWS TimestreamというDBのざっくりまとめ
- 16. RspecでAWS SDKでS3の署名付きURL発行のテストをする (Ruby on Rails)
- 17. AWSにNext.jsを簡単にデプロイする方法2選
- 18. AWS SAMを使ったLambda(GO)のCICDをGitHub Actionsで構築
- 19. 【備忘】EC2のタイムゾーンをJSTに変更する
- 20. 複数アカウントのAWS CodeCommitを管理する時のgit clone時tips
Layer付きのAWS Lambda functionをServerlessFrameworkでローカル実行するとLayerが参照できない
# 概要
タイトルの通り、Layerを用いて一部ライブラリを共通化しているAWS Lambda functionを、serverlessでローカル実行しようとした時につまずいたので備忘録として残しておく。
# 経緯
最近、趣味でAWS Lambda上で動かすpythonプログラムを作成していて、デプロイが楽になるとのことなのでserverlessを導入していた。
その際、functionを複数作成しており、一部ライブラリはLayerを用いて共通化していた。作成したプログラムの構成は以下。
“`
プロジェクトルートディレクトリ
├─function1
│ └─src
│ └─handler.py
├─function2
│ └─src
│ └─handler.py
├─layer
│ ├─layer1
│ │ └─layer1のpythonライブラリ・ソース群
│ └─layer2
│ └─layer2のpythonライブラリ・ソース群
└─serverless.yml
“`また、serverless.ymlの記述内容は以下。
(本
AWS StepFunctionsで、クロスアカウント でAWS Lambdaを呼び出す
### TL;DR
– Resourceキーの値をLambdaのARNから、`arn:aws:states::: Lambda:invoke` に変更する
– Parametersキーを追加して、呼び出したいクロスアカウント 先のLambdaのARNを指定する
– クロスアカウント先のLambdaには、呼び出し元のAWSアカウントからの呼び出しを許可する必要がある### 事前準備
1. AWSアカウントを2つ用意する(アカウントA, アカウントB)
2. アカウントBに対して、以下のようなLambdaを用意する“`js
exports.handler = async (event, context) => {const response = {
body: JSON.stringify({
foo: ‘Hello, world’,
bar: ‘Goodbye, world’,
})
};return response;
};
“`## 手順
### ス
AWS、EC2でrailsアプリをssl化する!【2021最新版】
まずは参考URLを先に貼り付けておきます。これらを参考にすればうまいことssl化が出来ます!
https://qiita.com/Yuki_Nagaoka/items/1f0b814e52e603613556
https://qiita.com/Yuki_Nagaoka/items/55ed1610cfc1f59398b1
https://dev.classmethod.jp/articles/alb-redirects/
はっきり申し上げます。僕ssl化するだけなのに6時間以上悪戦苦闘しました。
と言うのも、AWSのロードバランサー、ターゲットグループの設定が既存の記事とやることは一緒でも、異なる仕様に変わってしまっているからでした。
なので複数の記事を参考にしてまとめたものをアウトプットしていきます!# 前提条件
すでに(http://ドメイン名)でデプロイ済み# ssl化の手順の確認
* ACMの設定
* TGの設定
* ELBの設定
* セキュリティグループの設定
* Route53の設定
* リダイレクト処理# ACMの設定
AWSではELB(後で設定しま
AWS メモリ不足時のEBSボリュームのファイルシステムを拡張
# はじめに
Capistorano を使った自動デプロイの実装中、
”bundle exec cap production deploy”を実行すると悲惨なエラーが起こりました。
一瞬、「不能」が「無能」に見えて心が折れそうでした。“`:
(中略)
ar: vendor: mkdir 不能: No space left on device
DEBUG [7d5bfec5] tar: vendor/bundle/ruby/2.6.0/gems/websocket-extensions-0.1.5/README.md: open 不能: No such file or directory
tar: vendor: mkdir 不能: No space left on device
tar: vendor/bundle/ruby/2.6.0/gems/websocket-extensions-0.1.5/lib: mkdir 不能: No such file or directory
tar: vendor: mkdir 不能: No space left on device
t
【Rails】100均商品レビューアプリの製作者解説
##アプリ概要
![hundredapp2_top.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599449/1c02ec4f-d840-8c36-4c68-de75420c8f17.gif)
100円ショップ(通称100均)の商品情報を投稿し、共有出来るサイトです。– 商品画像、星評価による5段階評価、購入ショップなどの情報が投稿出来ます。
– ユーザー登録はもちろん、ユーザー登録をせず、ゲストログインで使用することも出来ます。
– マイページでは自分の投稿、コメントした投稿、今後購入したい商品の買い物リストが見れます。
– その他ランキング機能、Google Mapを利用したショップ検索などが利用出来ます。下記ページで公開中です。
https://hundred-100.net
##制作背景
今回このアプリを作るに至った理由は主に
**1、個人的に100円ショップをよく利用する。****2、100円ショップに焦点を当てたサイトがあれば買い物するときに楽だと思った。****3、100円シ
Amazon EC2 スポットインスタンスを使う
# 目的
開発やステージング環境の Web や API 用途(*1)の EC2 の オンデマンドインスタンス を スポットインスタンス へ変更して、EC2 のコストを減らしたい。(*1)不確定な日時にある程度の時間の中断(ダウンタイム)が許容でき、ステートレスなサーバ
# オンデマンドインスタンスと比較したスポットインスタンスの特徴
* 作成方法
* EC2作成前にスポットインスタンスリクエストを発行する* 中断が発生する可能性がある
* そんなに頻繁に中断はされない。年に1回あるかないか程度 (AWSサポート回答)らしい。* 費用
* EC2コストが最大90%オフ
* オンデマンドと同様、スポット価格で従量課金(単位時間)
* スポット価格は緩やかに変動する
* [Amazon EC2 スポットインスタンスの料金](https://aws.amazon.com/jp/ec2/spot/pricing/)上記以外は、ほぼほぼオンデマンドインスタンスと同じような感じで扱うことができる。
中断の動作を「停止」に設定することで、中断が発生してもスポットイ
Google Apps Script(GAS)から S3 にあるファイルを取得する
# はじめに
業務で s3 からデータを取得してスプレッドシート に吐き出すというタスクを行なっていた際、Google Apps Script(gas) で aws sdk for js v3(aws-sdk) が使えず s3 からのデータ取得するコードをスクラッチで実装する必要があったのでやり方をまとめます。
コードだけ知りたい方は[こちら](#コード)をどうぞ。
# 試したこと
## aws-sdk
下記の aws-sdk を試しました。
[https://docs.aws.amazon.com/ja_jp/AWSJavaScriptSDK/v3/latest/index.html](https://docs.aws.amazon.com/ja_jp/AWSJavaScriptSDK/v3/latest/index.html)
具体的には、以下の手順を踏みました
– node_modules として、aws-sdk をインストール
– webpack を使ってビルド
– ビルドしたコードを gas にアップロードgas のエディターから関数を実行すると、以下のよ
AWS環境にNFSサーバーを構築する
NFSとは
**ネットワークを介して別のコンピュータの外部記憶装置(ストレージ)をマウントすることができ、そこに保存されているディレクトリやファイルをあたかも手元にあるかのように扱うことができる。ストレージを他のコンピュータに提供するコンピュータをNFSサーバ、サーバの持つストレージにアクセスして利用するコンピュータをNFSクライアントという。**
https://e-words.jp/w/NFS.html
まずはEC2を2台用意。
“`:NFSserver
[root@nfs-server ec2-user]# ifconfig | grep inet
inet 10.10.21.87 netmask 255.255.224.0 broadcast 10.10.31.255
inet6 fe80::4b0:32ff:fe9e:700b prefixlen 64 scopeid 0x20 inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixl
aws-sdk を使わずにS3からデータを取得する
# はじめに
タイトルの通り、 aws-sdk を使わずに s3 からのデータ取得するやり方をまとめます。具体的には、AWS Signature Version 4 による署名を含む authorization ヘッダーの作成手順を示したものになります。
本記事で紹介しているコードは node.jsで実装しています。できるだけ、ビルドインモジュールのみを使って実装しましたが、http リクエストだけめんどくさかったので axios を使っています。
コードだけ知りたい方は[こちら](#完成コード)をどうぞ。
# 準備
## iam ユーザの作成
`AmazonS3ReadOnlyAccess` ポリシーのアタッチされたユーザーを作成してください。この時に発行される、`access_key_id`と `secret_access_key` をメモしておいてください。後で使います。
## バケットを作成
東京リージョン(ap-northeast-1)にバケットを作成してください。この時のバケット名をメモしておいて下さい。後で使います。
## バケットにファイルを保存
先
pre-commitのcfn-lintで特定のエラーを無視する方法
argsで指定する。cfn-lintのオプションは[こちら](https://github.com/aws-cloudformation/cfn-lint#parameters)。
“`yaml:.pre-commit-config.yaml
repos:
– repo: https://github.com/awslabs/cfn-python-lint
rev: v0.54.2
hooks:
– id: cfn-python-lint
files: \.(json|yml|yaml)$
args: [–ignore-checks=E3030]
“`
AWSのバージニア北部リージョン(us-east-1)の料金が一番低いとは限らない説
## はじめに
AWS を利用していると料金のことを気にするタイミングがあります。
最初の設計、利用を初めてから、請求がきたとき、ふと気がついたとき、料金アラートがきたとき、などなど。
世の中の通説やエンジニアとの会話で出てきたものとして、料金だけで見たらバージニア北部リージョンが最低料金だから、特に制約がなければ、バージニア北部リージョン含む3リージョン(オレゴン、オハイオ)を選択しておけばよいと。ただ、果たしてそれは本当なのか、疑問に思ったので**AWSのバージニア北部リージョン(us-east-1)の料金が一番低いとは限らない説**を検証してみました。
## 結論
AWSのバージニア北リージョン(us-east-1)の料金が一番低くならないサービスがいくつかありました。
ただ、その場合でも料金が一番低いリージョンとの差は非常に少なく、一部の料金カテゴリにおいてのみ別のリージョンが最低価格となっていました。結論としてバージニア北リージョンはほぼ一番低料金といってよいと思います。(検証したサービス内での結論)## 検証方法
AWS の料金表はリージョン間の比較にはあまり特化
AWS SAM触ってみた
2021/9/30(木) JAWS-UG CLI専門支部 #229R CloudWatch Logs入門で「AWS SAM触ってみた奮闘記」というタイトルでLTの時間をいただきました。「AWS SAMって何?」の状態から、なんとなく概要がつかめるようになるまでの奮闘記です。
https://speakerdeck.com/emiki/aws-samhong-tutemitafen-dou-ji
本記事ではSAMの概要と、チュートリアルの簡単な手順を記載します。
#1.AWS SAMとは -AWS Serverless Application Model
https://aws.amazon.com/jp/serverless/sam/
公式のドキュメントに説明があるが、個人的に要点をギュッとまとめると以下の通り。
– AWSのサーバレスサービスを使ったアプリケーションの構築を自動化する便利ツール
– 内部的にはCloudFormation
– SAM専用CLIで使えるもの#2.準備
Cloud9環境にはSAM CLIがインストール済みなのでそのまま使える。
今回は「H
Aurora Serverlessとは?
Amazon Auroraには、キャパシティタイプに
– プロビジョニングタイプ
– サーバーレスタイプがある。
サーバーレスタイプのことをAurora Serverlessと呼ばれる。
特徴は、
アプリケーションニーズに応じて、自動的に起動、シャットダウン、および容量を拡大または縮小される。## 料金
データベースの容量、ストレージ、および I/O 分に対してのみ料金が発生する。
料金表
https://aws.amazon.com/jp/rds/aurora/pricing/## 参考
https://aws.amazon.com/jp/rds/aurora/serverless/
twitch使ったWebAppのアーキテクチャ草案
勉強したいものを詰め込んだ
バッチ処理はそんな重くないからもしかしたらlambdaに移すかも
APIはGoで書くかPythonで書くか悩み中![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278872/a5018f1a-6b8e-d7ea-8abd-86c4ec8bd22f.png)
AWS TimestreamというDBのざっくりまとめ
## どういうDB?
高速かつスケーラブルなサーバーレス時系列データベースサービス。
完全マネージド型であるためサーバーの管理は不要。
リレーショナルデータベースの最大 1,000 倍の速度と 10 分の 1 のコストで簡単に保存し、分析できる。## どう使われる?
IoT および運用アプリケーションに適したDB
時系列データを溜めて、可視化・分析したいとき## 特徴は?
– 低コストで高パフォーマンス
– 自動スケーリングによるサーバーレス
– データのライフサイクル管理
– 簡素化されたデータアクセス
– 時系列専用
– 常時暗号化## 参考
https://aws.amazon.com/jp/timestream/
https://dev.classmethod.jp/articles/amazon-timestream-ga/
RspecでAWS SDKでS3の署名付きURL発行のテストをする (Ruby on Rails)
# はじめに
仕事で、Ruby on Railsを用いてS3から署名付きURLを発行する処理を実装しました。こちらの記事を参考にして行いました。
https://qiita.com/takeyuweb/items/b32dd7487d724faac1f
そしてRspecのテストを行おうとしたのですが、以下の記事を参考にして詰まってしまったためまとめたいと思います。
[Ruby AWS SDK v2 でS3の署名付きURLを発行する](https://qiita.com/takeyuweb/items/b32dd7487d724faac1fe)
# 問題
以下のコードを実装して、テストを行おうとしました。
“`s3_download.rb
s3 = Aws::S3::Client.new
signer = Aws::S3::Presigner.new(client: s3)
signer.presigned_url(:get_object,
bucket: ‘your-bucket’,
AWSにNext.jsを簡単にデプロイする方法2選
# はじめに
awsには多様なサービスが存在し、Next.jsをデプロイするだけでも無数の方法があるので個人的に良さそうと思った2つを紹介します。
どちらもawsが触ったことがないひとでも使うことができ、安価に始められ、本番投入できるということを基準にしています。—
# 動作させるソースコードについてデプロイするソースコードは2パターンどちらも以下になります。
https://github.com/hal256/next-hosting-test/tree/main以下コマンドでプロジェクトを作成し、ssr用のページを作成しただけのプロジェクトです。
“`
yarn create next-app –typescript
“`—
# パターン1 AppRunner
ECS(Fargate)を少ない設定で動かせるようにしたサービス
Github等と連携してpush to deploy or ECRから自動pullしてデプロイが可能で使い心地としてはherokuに近い
FargateはVPCやELB作成したりとやることがかなり多い。参考→(ht
AWS SAMを使ったLambda(GO)のCICDをGitHub Actionsで構築
## 以下の記事を参照して頂ければと思います
https://note.com/shift_tech/n/n62f3b10cd3fa## 補足
ソースコード全体は以下です。https://github.com/yuta-katayama-23/Go/tree/sam
【備忘】EC2のタイムゾーンをJSTに変更する
### EC2はJSTじゃないんですね
さすがグローバル企業– EC2のrootユーザで作業
`localtime`の編集
“`console
$ sudo su –
# cp -p /usr/share/zoneinfo/Japan /etc/localtime
# cat /etc/localtime
TZipYp;~~JDTJSTTZif2
e¤ppYp;ۭLMTJDTJST
JST-9
“``clock`の編集
“`console
# vim /etc/sysconfig/clock
ZONE=”Asia/Tokyo”
UTC=False
# date
Tue Oct 5 20:07:47 JST 2021
“`
複数アカウントのAWS CodeCommitを管理する時のgit clone時tips
自分で3回調べ直したので手順メモ。
# 背景
– AWS CodeCommitにあるリポジトリをcloneしたい
– 利用するAWSアカウントが複数あるため、 `git config –global` したくない
– (もっとスマートな方法もありそうだが)都合よく切り替えるため初回git clone時に追加の操作を足す。## 参考
大枠はこちらの方法です。https://qiita.com/nekonoprotocol/items/b4bc9565f2babaf3e781
# todo
### 1. AWS Credencial設定
“`bash
aws configure –profile wasshoi
“`「wasshoi」部分は案件に応じてお好みで。
### 2. gitに対してまずは素直にglobal設定
“`bash
git config –global credential.helper “!aws codecommit –profile wasshoi credential-helper $@”
git confi