- 1. ServerlessFrameworkを利用したLambdaでデバッグを実施する。
- 2. プライベートサブネットのEC2インスタンスにSSHする
- 3. Lamda上のmatplotlibで日本語対応する
- 4. Webアプリケーション構築の反省点
- 5. TerraformのためにAWSのアクセスキーID、シークレットアクセスキーをわざわざダウンロードしたくない問題
- 6. teratermでSSMセッションマネジャーを使いたい
- 7. Serverless Frameworkを使ったLambda開発
- 8. RDSのスナップショットからDBを復元する
- 9. 【AWS】EC2内のDockerを、EFSとマウントしてみました
- 10. Java Codeシリーズを使ったCI/CD
- 11. EC2でプロキシサーバーを利用する場合のプロキシ設定
- 12. 【ざっくり解説】Rails×Vueでエラー記録アプリ作ってみた
- 13. AWS EC2を使ったインスタンスログインまでの流れ(.cer)
- 14. EC2-Classic とは
- 15. 本番環境でよく使うコマンドまとめ
- 16. 【15日目】AWS認定ソリューションアーキテクト合格までの道
- 17. API Gatewayに独自ドメインを適用
- 18. AWS ESC Fargate & ECR で Golang の Webアプリをデプロイする
- 19. AWS環境のEC-CUBE4にてgmailでメール送受信を行う方法
- 20. Cloudformationを用いて、Crawler完了時にJobを実行させるAWS::Glue::Triggerを作成する際の注意点
ServerlessFrameworkを利用したLambdaでデバッグを実施する。
###記事作成に当たって
最近、Serverless Frameworkを利用してLambdaにNode.jsをデプロイしている。Serverless Frameworkはテンプレートも充実してるし、CI/CDの面でも優れているのでなかなか便利。だけど、デバッグのやり方がわからなくて困っていた。どうにか、簡単にデバッグをできないかなぁと思って、試行錯誤する中でデバッグ環境ができあがったので、記事にして共有します。###構築時の環境情報
端末:Mac
エディタ:VsCode
node:v14.17.4(versionが古いと)
npm:7.20.5###パッケージの環境構築
“`:packageのインストール
~/develop/study/serverless $ serverless create -t aws-nodejs-typescript -n debug_lambda -p debug_lambda
Serverless: Generating boilerplate…
Serverless: Generating boilerplate in “/User
プライベートサブネットのEC2インスタンスにSSHする
## 前提
マルチAZ構成ですでにEC2インスタンスは2つ起動済み。## 流れ
1. キーペアをパブリックサブネット内のEC2インスタンスに保存
2. パブリックサブネットのインスタンスへSSH
3. パブリックサブネットを踏み台に、保存したキーペアを用いてプライベートサブネットへSSH## SCPコマンド
キーペアをパブリックサブネットに保存するには、scpコマンドを使う。“`
// scpコマンドで秘密鍵(送りたいもの)を送信する
scp -i 秘密鍵 送りたいもの ユーザ名@パブリックIP:/送信先
scp -i sample.pem sample.pem ec2-user@パブリックIPアドレス:/任意のディレクトリ
“`パブリックサブネットからプライベートサブネットへSSH
“`
ssh -i sample.pem ec2-user@プライベートIPアドレス
“`
Lamda上のmatplotlibで日本語対応する
Lambda上でmatplotlibを使ってグラフを作成したいとき、Lambdaには日本語フォントが含まれていないため日本語が豆腐になってしまいます。この記事では、日本語対応するための方法について説明します。
## 前提
matplotlibは別途利用できるようにレイヤーなどで用意する必要があります。## やり方
1. Lambdaレイヤーに日本語フォント用のレイヤーを登録
2. Lambda関数に日本語フォント用のレイヤーを追加
3. matplotlibでフォント読み込み## 1.Lambdaレイヤーに日本語フォント用のレイヤーを作成
日本語フォントなら基本的に何でもOKと思いますが、今回は[IPAexゴシック](https://moji.or.jp/ipafont/ipaex00401/)(ipaexg.ttf)をダウンロードして使いました。
ダウンロードしたttfファイルを適宜ディレクトリ(例えばfontsなど)に入れてzip圧縮します。
Lambdaのレイヤーページから「レイヤーの作成」にて作成画面に移動し、アップロードにて先程圧縮したzipファイ
Webアプリケーション構築の反省点
Windows10
MySQL 8.0.20
Amazon AWS勉強のために、WebアプリケーションをAWSに構築しています。
AWSを使い、RDSを作成するが
サブネットグループの作成、
パラメータグループ作成
名前など間違えないように注意しないといけない。RDSなら
DB インスタンス識別子AWS Systems Manager
パラメータ名
/プロジェクト名/dev/app/MYSQL_DATABASE
/プロジェクト名/dev/app/MYSQL_HOST
/プロジェクト名/dev/app/MYSQL_PASSWORD(値でのパスワード入力も注意)
/プロジェクト名/dev/app/MYSQL_PORT (値でのポート番号)
/プロジェクト名/dev/app/MYSQL_USERNAMEここの設定はよく丁寧に確認した方が良いと思います。
設計したパラメータ名が正しく入力されていないとAPサーバー構築してからデーターベースに接続できないなどの
エラーが発生します。その他
データーベースのセキュリティグループ名
IAMロールのチェックも念入りにチェックを推
TerraformのためにAWSのアクセスキーID、シークレットアクセスキーをわざわざダウンロードしたくない問題
##結論
Terraform用にEC2インスタンスを立てて、そこからterraformを実行しましょう。
※2021/08/07追記
この方法は悪手であるとのご指摘をいただきました。詳細はコメント欄に記載されていますが、使用しているチームやアカウントの状況によっては不向きとのことでした。
その他ご意見のある方もご意見があればご指摘お願いします。##Terraformを学ぶ際に私が行っていたこと
1.Terrafrom用のユーザを作成
2.Terraform用のユーザのクレデンシャル情報(アクセスキーID、シークレットアクセスキー)をダウンロード
3.アクセスキー、シークレットアクセスキーをtfvarsに記載##アクセスキーID、シークレットアクセスキーをダウンロードすることの問題性
何かしらのアクシデントでアクセスキーIDやシークレットアクセスキー漏洩した場合、不正利用される可能性がある。例)
・githubに誤pushしてしまう。※git-secretの利用で防ぐことはできます。
・ダウンロードしたマシンがウィルスに感染して情報漏えいしてしまう。
etc.##具体的
teratermでSSMセッションマネジャーを使いたい
# はじめに
AWSって何とSSMセッションマネジャーって何と言った話はここでは書きません。(自分より上手く説明してくれる人がいっぱいいるはずですので、ググってそちらを参照してください。)
SSMセッションマネジャーの初期設定についても書きません。
設定できている前提で記事を書かせていただきます。(こちらも同じく、別でググてみてください。)
AWS CLI、セッションマネジャー用プラグインは事前にインストールしておいてください。https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-windows.html
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html
# 読んで欲しい人
* 最近AWSを使い始めた人
* SSMセッションマネジャーを使いたい人
* teratermを使っている人# 背景
EC2でサービス運用し
Serverless Frameworkを使ったLambda開発
以前に[AWS SAMを使ったLambda開発](https://qiita.com/nakahara-d/items/1b861ea61dbbffaf90b8)をしてみましたが、今回はAWS SAMと比較しつつ、Serverless Frameworkを使ったLambda開発を試してみます!
# Serverless Frameworkとは
[Serverless Framework](https://www.serverless.com/)はAWS、Azure、GCPなどマルチクラウドに対応したサーバーレスアプリケーション開発フレームワークです。
オープンソース版とPro版があり、Pro版ではCI/CDやモニタリングの機能が使えますが、今回はオープンソース版を試してみます。
# 準備
## Serverless Frameworkのインストール
Serverless Frameworkをインストールします。
スタンドアロンバイナリとnpmでインストールできるようですが、今回はnpmでインストール。
後述するプラグインでもnpmを使ったりするので、Node.jsの環境は用
RDSのスナップショットからDBを復元する
#はじめに
RDSのスナップショットからDBを復元する際に、少し手間取ったため、記録します。##1.DB識別子を確認
現在使用しているDBの識別子を確認します。( RDS>データベース にて確認可能 )##2.現在のDB識別子を変更
はじめに確認したDB識別子を適当なものに変更します。##3.スナップショットから復元
①対象のスナップショットを選択し、アクションから「スナップショットを復元」を選択(RDS>スナップショット)
②インスタンス識別子は”元のインスタンス識別子”を指定する
③DBインスタンスクラスは無料枠の場合、以下を選択。
![スクリーンショット 2021-07-10 8.32.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1273104/62fe8c69-165b-90fd-fb4d-22a65497ef4d.png)
④「DBインスタンスを復元」をクリック##4.復元したDBインスタンスのセキュリティグループを変更
スナップショットからの復元の場合、セキュリティグ
【AWS】EC2内のDockerを、EFSとマウントしてみました
#はじめに
EC2内にインストールしてあるDockerを、AWS EFSとマウントすることをやってみました。
手順を公開したいと思います。
・EC2のOS:Ubuntu 20.04.2 LTS
・Dockerバージョン:Docker version 20.10.8, build 3967b7d#構成図
簡単に説明すると、
1.EC2内にDockerをインストールしておリます。
2.EFSがEC2とマウントしておリます。
3.DockerがEFSとのマウントを実現できております。
![docker-efs.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/865613/2df3e752-2ecd-a9b2-2592-2dbfd49a24bb.jpeg)#1.EC2内にDockerをインストール
UbuntuにDockerをインストールにあたって、下記の記事が大変参考になりました。https://qiita.com/tkyonezu/items/0f6da57eb2d823d2611d
記事に従っ
Java Codeシリーズを使ったCI/CD
#はじめに
転職活動の際にポートフォリオとして、Javaを使用したアプリケーションを作成しました。
GitHubへソースコードをプッシュすると、AWS上のEC2へデプロイされるように環境を作成した際のメモを残そうと思います。Codeシリーズの作成方法などは他の記事を参照して頂き、本記事では
・デプロイされるときに、自動的に本番環境の設定ファイルでデプロイされるようにしたい!!
となったときに、各種設定ファイル(Mavenのpom.xmlや、CodeBuildのbuildspec.yml、CodeDeployのappspec.yml)の書き方についてざっくり触れていきたいと思います。
どなたかの参考になれば幸いです。
※環境作成から本記事の執筆に時間が空いてしまったため、思い出しながら記載しています。誤りがあってもあしからず・・・
#処理の流れ
GitHubへコードをプッシュ→CodePipelineが起動→CodeBuildでソースコードのビルド(&テスト)→CodeDeployでEC2へデプロイ#イメージ図
![図1.png](https://qiita-image
EC2でプロキシサーバーを利用する場合のプロキシ設定
# 目的
AWS EC2から特定のプロキシサーバーをを経由してインターネット接続する場合のproxy設定を行う# 背景
可用性が求められる環境においては、NATゲートウェイやVPCエンドポイントにインターネット接続を行うのが一般的であるが、開発環境等の可用性が求められない環境においては、コスト最適化のために低スペックのEC2によるプロキシサーバを立てて、インターネット接続させる場合がある。その際に、設定が必要となった箇所と設定方法についてメモする。
# EC2のproxy設定対象箇所
・OS(Linux)のシステム設定
・アプリのサービス
・CloudWatchAgent
・SSMAgent
・CodeDeployAgent## OSのシステム設定
“`
sudo vi /etc/environment
http_proxy=”http://{ProxyServerHost}:{Port}/”
HTTP_PROXY=”http://{ProxyServerHost}:{Port}/”
https_proxy=”http://{ProxyServerHost}:{Port
【ざっくり解説】Rails×Vueでエラー記録アプリ作ってみた
## はじめに
エンジニアになって半年が経ちました。
膨大なエラーと向き合う中で、**「あれ?前もこのエラー見たよな…」**という機会が多くなり、
**「いちいちググるのめんどくさい」**と感じた刹那、私は`rails new`していたのでした。## 目次
1. [アプリケーションの概要](#アプリケーションの概要)
1. [ざっくり機能紹介](#ざっくり機能紹介)
1. [苦労したポイント](#苦労したポイント)
1. [まとめ](#まとめ)## アプリケーションの概要
![logo (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/751808/575b805f-fbef-2843-a6ea-67098d88d96b.png)
https://www.error-note.com
エラー記録用アプリケーション「**Error Note(エラーノート)**」
エラーを記録しておくだけの超シンプルなアプリケーションです。### システム要件
| item
AWS EC2を使ったインスタンスログインまでの流れ(.cer)
##AWS EC2の初期設定までの流れを備忘録として残しておく。
その中で躓いた部分として、キーペアの保存形式が**.pemではなく.cerで保存される**、ということがあった。
###結論から言うと.pemでも.cerでも関係なくインスタンスログインできる。左上のアカウントのプルダウンからから「AWSマネジメントコンソール」をクリックしてログイン画面へ遷移。
###ルートユーザーとしてログイン
![スクリーンショット 2021-08-06 5.15.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218992/57b9e2e8-5dba-d7c5-9081-a2957f28eb9b.png)###ログイン後の画面でEC2を選択
![スクリーンショット 2021-08-06 5.17.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218992/880b71ab-964a-3902-dc56-de57
EC2-Classic とは
## 勉強前イメージ
終了するって言ってたけど・・・・
そもそもEC2のoldバージョン?
インスタンスタイプ的な話?## 調査
### EC2-Classic とは
1つのIPのみでアサインされた単一のネットワーク内で稼働するインスタンス環境で、
EC2が出来た2006年から存在する環境です。
2013年12月4日以降はリクエストしない限り利用できない様になっており、廃止予定になっております。### 廃止について
2021年10月30日にアクティブなEC2-Classic環境がないAWSアカウントに関しては
EC2-Classicを無効化、リザーブドインスタンスの販売の停止。
2022年8月15日には、全移行措置を完了予定になっております。## 勉強後イメージ
今のEC2はVPCの中にあるって感じだけど
EC2-Classicは一つIPを持って一つの空間って感じする。。。
もう廃止らしいし、みたことないけど。。## 参考
– [AWS、「EC2-Classic」を終了へ](https://japan.zdnet.com/article/35174657/)
本番環境でよく使うコマンドまとめ
RailsアプリケーションをAWSでデプロイした際、コマンドを何度も調べていたのでまとめました。(自分用メモです)
随時更新していく予定です!## 前提条件
– OS:Linux(CentOS)
– 言語:HTML,CSS,JavaScript,Ruby,SQL
– フレームワーク:Ruby on Rails
– IDE:Cloud9
– Webサーバー:Nginx
– アプリケーションサーバー:Puma
– データベース:MySQL## コマンドまとめ
#### cloud9のターミナルからEC2へSSHでログイン“`
$ ssh -i ~/.ssh/キー名.pem ec2-user@IPアドレス
“`
#### Pumaの起動“`
# EC2のアプリケーション上で実行
$ rails s -e production
“`#### Pumaの停止
“`
# EC2のアプリケーション上で実行
$ kill $(cat tmp/pids/puma.pid)# 自動起動設定をしている場合はsudoをつける
$ sudo kill $(cat tmp/pi
【15日目】AWS認定ソリューションアーキテクト合格までの道
# AWSにおける高可用性の定義
## AWSにおける可用性向上策
– **Design for Failure**(障害発生を前提としたシステム構築)
– 障害を回避する設計を行うのではなく、**障害が発生してもシステムが継続できるように設計すること**### ◉可用性向上のポイント
#### ◎リソースを冗長化する
– **単一障害点(SPOF:Single Point of Failure)**をなくすことが重要
– **内部的に冗長化**しているAWSサービスと**ユーザー側で冗長構成を設計**しなければいけないAWSサービスがある:::note info
単一障害点
障害が発生するとシステム全体が使用不能になる/システムの動作結果の正しさを保証できなくなる箇所のこと
:::[![Image from Gyazo](https://i.gyazo.com/dfe62f05d281322014e4e80f70d58507.png)](https://gyazo.com/dfe62f05d281322014e4e80f70d58507)
#### ◎地理的に冗長化
API Gatewayに独自ドメインを適用
## はじめに
備忘録的なメモです。大まかな手順のみ記載します。
作成済みのAPI Gatewayに独自ドメインを適応する方法です。## 手順
#### サブドメインの登録
Route53でサブドメインのホストゾーンを追加します。現在所有しているドメインが、example.comであればapi.example.comみたいな。
ホストゾーンを追加するとNSレコードが作成されるのでこれをコピーします。
次に親となるホストゾーンを開きNSレコードを追加し、先ほどコピーしたネームサーバーたちを追加します。
稼働中のサーバーなどがあればAレコードを追加するなどして動作確認。#### 証明書の取得
Certificate Managerを開き証明書のリクエストを行います。
ドメイン名を入力する欄に先ほど設定したサブドメインを入力します。api.example.comみたいな。検証保留中の表示とともにRoute53でのレコード作成ボタンが表示されるので押します。まもなくステータスが発行済みに変わります。ホストゾーンの設定がおかしいと検証保留中のまま変わらないので設定を見直します
AWS ESC Fargate & ECR で Golang の Webアプリをデプロイする
# はじめに
現職の現場ではプライベートクラウドを使用していて、本番環境の運用をAWSのようなパブリッククラウドを使用して、さらにECSのようなコンテナ基盤での運用ができていない。
docker imageを使用してコンテナ基盤で運用をすると本番環境の運用及び、本番環境へのデプロイ作業がものすごく楽になりそうなので、学習してみた。
この記事では、ローカル環境でdocker imageをビルドして、AWSのECRにプッシュ、その後ECSでデプロイを完了させるところまでを解説してみる。# ローカルにて
ビルドしたいDockerfileがおいてあるディレクトリと同じ階層でビルドする“`
docker build -t image_name .
“`ビルドしたimageにタグ付けをする。
この辺りのコマンドは、ECRにてリポジトリを作成したのち、AWSのコンソール上でもわかりやすくpushコマンドが説明されているので迷うことがあんまりなさそう。“`
docker tag image_name aws_account_id.dkr.ecr.region.amazonaws
AWS環境のEC-CUBE4にてgmailでメール送受信を行う方法
ECサイト必須機能のメール送受信を**gmail**で設定する方法です。
gmailの場合、**AWS側の設定が不要**なため容易に利用することができます。###1.安全性の低いアプリの許可
①google→画面右上のgoogleアプリ→アカウント
②左ペイン→セキュリティ→**安全性の低いアプリのアクセス**→アクセスを有効にする###2.2段階認証→Appパスワード作成
①安全性の低いアプリの許可と同様のセキュリティ画面へ
②Googleへのログイン→**2段階認証プロセス**→オン
※ここで**Appパスワードが**発行されるのでコピーしておく###3..envファイルの編集
EC-CUBEインストールディレクトリ直下にある.envファイルを以下の内容で編集する
MAILER_URL=gmail://**メールアドレスを入力**:**Appパスワードを入力**@localhost?encryption=tls&auth_mode=oauth
Cloudformationを用いて、Crawler完了時にJobを実行させるAWS::Glue::Triggerを作成する際の注意点
##環境
2021/08/05時点での情報です。##問題
[公式マニュアル](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-glue-trigger.html#cfn-glue-trigger-startoncreation)に則り以下のようにTriggerを記述したが、
スタック生成時に”state cannot be null or empty, choose from one of the following crawler state: [succeeded, failed, cancelled]”とエラーが生じる。“`yaml
AWSTemplateFormatVersion: 2010-09-09
Resources:
GlueJobTrigger:
Type: AWS::Glue::Trigger
Properties:
Type: CONDITIONAL
Actions:
– JobN