- 1. 【Rails/AWS】RDSのMySQLに繋がらないエラーの考えられる原因(database.yml)
- 2. AWSWAFのAWSManagedRulesCommonRuleSet の動作確認方法
- 3. ECS ServiceのCD PipelineをGitHub Actionsで構築
- 4. AWSWAFでAWS-AWSManagedRulesLinuxRuleSetをセットしたときの動作確認方法
- 5. AWS Elastic BeanstalkにLaravelをデプロイしてからAPIを動かすまでの全て
- 6. プライベートなインスタンスだけSSMのVPCエンドポイントを利用したかった話
- 7. AWS上でMoodleの環境を構築する方法
- 8. 【初級編】AWSってどんなサービスなの??
- 9. AWS〜VPCのパブリックサブネットにEC2を設置する〜
- 10. Centos7でGrowi構築
- 11. RailsアプリケーションをAWSにデプロイする方法(記事まとめ)
- 12. Hubsの拡張 別WEBサイトとのログイン連携
- 13. AWSのEC2インスタンスにWebサーバーを作成する方法
- 14. 実運用して気づいた Aurora Serverless の注意点
- 15. AWSのEC2インスタンスにアプリケーションサーバーを作成する方法
- 16. EC2/Amazon Linux2: pip installで”unable to execute ‘gcc’: No such file or directory”エラーが起きた時の対処
- 17. ECS+FargateのAutoScaling設定をTerraformで定義する
- 18. AWS CDKでCognitoのIdentityPoolを作る
- 19. AWSについていろいろ
- 20. AWS Aurora Serverless の DataAPI を使ってアクセスしてみる
【Rails/AWS】RDSのMySQLに繋がらないエラーの考えられる原因(database.yml)
# はじめに
本記事は、RailsアプリをAWSにデプロイした際に発生する可能性のある
MySQLに繋がらないという事象に対する原因例を紹介します。
原因はかなり初歩的な原因でしたが、筆者はこのエラー原因が特定できずとても苦労したため、
今後同じエラーに遭遇した方の助けになれば幸いです。# 開発環境
+ Ruby 2.5.1
+ Rails 5.2.4.4
+ AWS(EC2, RDS)
+ MySQL(RDS) 5.6.48# 前提条件
+ RailsアプリをEC2のWebサーバー上にgitクローン済み。
+ 基本的な設定は完了済みで、rake db:create RAILS_ENV=productionのコマンドを実行する手前の状態。
+ RDSのDBインスタンスを作成済み。
+ Railsのdatabase.ymlは下記の内容です。“`database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREA
AWSWAFのAWSManagedRulesCommonRuleSet の動作確認方法
## RestrictedExtensions_URIPATH
>リクエストの URI パスに、クライアントが読み取りや実行を禁止されているシステムファイルの拡張子が含まれていないかを検査します。パターンの例には、.log や .ini などの拡張子があります。
– URL内に、`ini`,`log`などのアプリケーションの重要なファイルへのアクセスを防ぐ
“`
curl -i https://dev.vamdemic.jp/aaa.ini
“`## NoUserAgent_HEADER
>HTTP User-Agent ヘッダーのないリクエストをブロックします。
– ツールなどによる総当たり攻撃を防ぐ
“`
curl https://dev.vamdemic.jp -H “User-Agent:”
“`# 参考
https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/aws-managed-rule-groups-list.html
ECS ServiceのCD PipelineをGitHub Actionsで構築
DockerイメージのビルドからECS Serviceの更新までのCD PipelineをGitHub Actionsで構築したいと思います。
※ イメージタグの管理方法、それからECS Task DefinitionとServiceの更新はIaCのツールによって変わるので具体的なコマンドは省略します。
# フロー
PlantUMLでCD Pipelineのフローを可視化したのが以下です。
![plantuml (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173064/6239c602-2402-29a2-5e60-69c303da7954.png)
BuildとDeploy Stageに分けている理由はいくつかあります。
GitHub Actionsではneedsに含まれているジョブがスキップされたら、そのジョブもスキップされてしまいます。
なのでECS更新ジョブでDockerイメージのビルド・プッシュジョブがneedsに含めてしまうと、ECRにイメージが存在していたらECS更新
AWSWAFでAWS-AWSManagedRulesLinuxRuleSetをセットしたときの動作確認方法
## AWS-AWSManagedRulesLinuxRuleSet
>Linux オペレーティングシステムルールグループには、Linux 固有のローカルファイルインクルージョン (LFI) 攻撃など、Linux 固有の脆弱性の悪用に関連するリクエストパターンをブロックするルールが含まれています。これは、攻撃者がアクセスすべきでないファイルの内容を公開したり、コードを実行したりする攻撃を防ぐのに役立ちます。アプリケーションの一部が Linux で実行されている場合は、このルールグループを評価する必要があります。このルールグループは、POSIX operating system ルールグループと組み合わせて使用する必要があります。
– LinuxOSの重要なファイルを指定するとWAFで予め弾いてくれる
– クラスメソッドさんのサイトでは、`/etc/passwd`でやってた。ここらへんのあたりのファイルが対象のもよう“`bash
curl -i https://dev.vamdemic.jp/proc/version
“`### 動作確認
#### `/p
AWS Elastic BeanstalkにLaravelをデプロイしてからAPIを動かすまでの全て
## なぜ書くのか
AWS Elastic Beanstalk(以下、EB)にLaravelをデプロイするまでは、公式ドキュメントなど豊富に存在するが
それだけだととんでもなく不十分なので備忘もかねてかきます。## この記事の趣向
初めて作る人にもわかるように段階を細かく分て書こうと思います。
「そこは知ってるー」という人は当たり前ですが、ガンガン飛ばして読んでください。## 前提
– AWSアカウントがあり、自分でEBを作成できる権限がある人
– local環境でLaravelが構築できる、もしくはその準備が整っている人
– 僕がMacしか持っていないのでMac視点のみのお届けでも良い人## 1. EBでアプリケーション作成
まずはEBでアプリケーションをつくります。最初は画像のような設定で良いと思います。
(もしかしたら次の「環境の作成」で一緒につくれちゃうかもw)
プライベートなインスタンスだけSSMのVPCエンドポイントを利用したかった話#実現したかったこと
プライベートサブネットにあるEC2にSSMを利用してログインしたい。
※以降プライベートインスタンスと記載プライベートインスタンスは、VPCエンドポイントを利用すればインターネットアクセスすることなくSSMが使えるらしい。
以下を参考に設定した。
https://dev.classmethod.jp/articles/tsnote-private-ec2-ssm-vpc-endpoint/#パブリックインスタンスにログイン出来なくなった
プライベートインスタンスにログイン出来るようになったが、パブリックインスタンスにSSMを利用してログイン出来なくなってしまった。#原因
VPCエンドポイントを作成する際、*「プライベートDNS名を有効にする」*という設定を有効にしていた。
これを有効にすると、インターネット経由でサービスのエンドポイントにアクセス出来ていたパブリックインスタンスもVPCエンドポイント経由でアクセスしようとする。しかし、VPCエンドポイントのセキュリティグループのインバウンドルールでパブリックサブネットの通信が許可されていない為SSM
AWS上でMoodleの環境を構築する方法
## Moodleとは?
Moodle(ムードル)は無料のオープンソースソフトウェアで、学習管理システム(LMS=Learning Management System)としての機能を備えています。Moodleを利用することで、インターネット上で講義コースを作成・運用することができます。また、資料配布・動画配信・フォーラム・小テスト・課題提出・フィードバックなど様々な機能があり、学習者の学習履歴を閲覧することも可能です。![スクリーンショット 2020-10-17 21.05.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/623708/a9578a88-8430-c2fc-1cd5-14104f6fa1cd.png)## AWSを使ってMoodleの環境を構築する方法
### EC2でMOODLE入りのイメージを使うのが手っ取り早い
AWSのEC2(クラウド上の仮想マシン)を起動する時に、既にソフトウェアがインストールされているイメージを使うことができます。今回はAWS Marketplace
【初級編】AWSってどんなサービスなの??
# AWSってどんなサービスなの??
「AWSってよく聞くけど、ぶっちゃけどんなサービスなの?」という方、結構いるのではないでしょうか。
難しい技術的なことは省いて、サービス全体像を簡単に説明してみようと思います。## AWS とは
AWSとはアマゾンが提供している:cloud:クラウドサービス:cloud:のことです。AWSの正式名称は「Amazon Web Services」と言います。クラウドサービスとは、インターネットを通してデータやアプリなどを提供できるサービスのことです。
そのためクラウドサービスは自分のPCにインストールされるものではありません。アカウントを持っていれば、どの端末からでもサービスを利用できるのがクラウドサービスということです。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/623708/fe1482fa-31cf-19b9-7c41-a4e653e384ae.png)
画像参照:[クラウドサービスとは?簡単にわかる基礎知識をわかりやすく解説!](htt
AWS〜VPCのパブリックサブネットにEC2を設置する〜
# この記事を読んでできるようになること
VPCのパブリックサブネットに、**EC2(Webサーバー)を設置**することができる。
# 記事を読むにあたってのお願い
私は**AWSの初学者**で、アウトプットをすることで知識を定着させるためにこの記事を書いています。内容に誤りがある場合は、コメントをいただけますと幸いです。
`学習に使用した教材`
AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得
https://www.udemy.com/course/aws-and-infra/
# EC2とは
Amazon Elastic Compute Cloudの略で、**仮想サーバー**のこと。この仮想サーバーに、**Webサーバーやアプリケーションサーバー**を設置する。
# AMIとは
Amazon Machine Imageの略で、**サーバーに必要なオペレーティングシステムなど**をパッケージ化したもののこと。Webサーバーソフトウェアを動かすのに必要。
# EC2インスタンスの作成手順
①左上のサービスから`EC2`を選択
②EC
Centos7でGrowi構築
### 別サイト
に書いていたのだけどサ終してしまったので移行した記事その1
2019/03/03のもの### 経緯
昔から持ってたドメインをAWSに移管してみたのでついでになにかやろうと思った### 作業ログ
t2.smallでEC2にインスタンスを作成(t2.microだとelasticsearchがエラーになっていたので)
ElasticIPでパブリックIPを固定
~/.sshに移動して“`
ssh -i ~/.ssh/[鍵ファイル].pem centos@[設定したIP]
“`最初は
https://github.com/weseek/growi
から起動しようと思ったが途中でうまく動かなかったので(あとから思えばポート開放忘れてただけなのだが・・・)
https://github.com/weseek/growi-docker-compose
にて構築
なので手順がぶれてたりする新規のインスタンスからなので今回のインストールに関係ないものも入れているところはある
wgetとか“`
## wget, yarn, node, npm
curl –s
RailsアプリケーションをAWSにデプロイする方法(記事まとめ)
# はじめに
AWSはAmazon Web Servisesの略で、Amazonが提供しているクラウドサーバーのサービスです。
AWSへの理解度を高めるために、学んだことをアウトプットします。# 使用するもの
* Ruby on Rails
* MariaDB
* Unicorn
* Nginx
* GitHub# 流れ
GitHubにデプロイしたい自身のアプリケーションのリポジトリが存在することを前提に以下の手順でデプロイします。
* AWSにEC2インスタンスの作成を行う
参考)https://qiita.com/daisuke30x/items/91307c94e8f5a702a42f
* EC2インスタンスにRubyをインストールする
参考)https://qiita.com/daisuke30x/items/09d24ceb167d3fcaff5e
* EC2インスタンスにDBサーバーを作成する
参考)https://qiita.com/daisuke30x/items/7501d724a0727ad9f2e4
* EC2インスタンスとGitHubの
Hubsの拡張 別WEBサイトとのログイン連携
# hubsの別WEBサイトとのログイン連携
### やりたいこと
Hubs(主にReticulum)側を改造して、
既存の自社サイトとログイン連携させたい。そして出来れば既存サイト側はあまり触らないこと。
# 実際の動きと、実装方針
登壇したときに使った資料があるので、下記にまとめてます
https://docs.google.com/presentation/d/1_v3fJRdMhr35paaPXGfI1xcSbkQj-NDA45Qdf-M3EOw/edit#slide=id.gc6f80d1ff_0_5#実装
### DB拡張する
接続方法はいろいろあるが
AWSのWebコンソールのQuery EditorからSQLを叩くのが手っ取り早い。#### まずは接続する為の必要情報を探す。
DB名とシークレットのARNが必要。
DB名はAWSのRDS > データベース > 該当のDB > 設定から拾う↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504562/26a
AWSのEC2インスタンスにWebサーバーを作成する方法
# はじめに
AWSはAmazon Web Servisesの略で、Amazonが提供しているクラウドサーバーのサービスです。
AWSへの理解度を高めるために、学んだことをアウトプットします。# 今回の流れ
* アプリケーションにNginxをインストール
* Nginxの設定「AWSのEC2インスタンスにアプリケーションサーバーを作成する方法」(https://qiita.com/daisuke30x/items/4292f96d817805f93d62)
の続きからの説明となります。
つまり、インスタンスにアプリケーションがインストールされていることが前提です。# EC2インスタンスにNginxをインストール
### Nginxとは
代表的なWebサーバーです。①自身のアプリケーションにNginxのインストール
“`:ターミナル
インスタンスにログイン
% ssh -i キーペア名.pem ec2-user@<パブリックIP>Nginxのインストール
[インスタンス]$ sudo amazon-linux-extras install nginx1
=
実運用して気づいた Aurora Serverless の注意点
Aurora Serverless を使用する機会がありましたので、調べたことをまとめてみました。
## 1. 自動スケーリングのしきい値
>設定に応じて、Aurora Serverless は、CPU 使用率、接続、および使用可能メモリの各しきい値に関するスケーリングルールを自動的に作成します。https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html
スケールアップ&ダウンの条件はCPU、メモリ、同時接続数のAWS側の閾値をもとにスケールアップ&ダウンされる。 現時点はこちらで閾値を設定することはできなそうでした。
## 2. 自動スケーリングアップ
>スケーリングポイントは、データベースが安全にスケーリングオペレーションを開始できる時点です。以下の条件では Aurora Serverless がスケーリングポイントを見つけられない場合があります。
>長期実行クエリまたはトランザクションが進行中である
>一時テーブルまたはテーブ
AWSのEC2インスタンスにアプリケーションサーバーを作成する方法
# はじめに
AWSはAmazon Web Servisesの略で、Amazonが提供しているクラウドサーバーのサービスです。
AWSへの理解度を高めるために、学んだことをアウトプットします。# 今回の流れ
* アプリケーションにUnicornをインストール
* AWSのEC2で作成したインスタンスにアプリケーションサーバーを作成
* 本番環境の設定
* アプリケーションの起動インスタンスは作成していることを前提とします。
※インスタンスの作り方が分からない方はこちらを参照ください。
「AWSに仮想サーバーを構築する方法」https://qiita.com/daisuke30x/items/91307c94e8f5a702a42f# アプリケーションにUnicornをインストール
①自身のアプリケーションにUnicornのインストール
アプリケーション内のGemfileに以下の記述を加える。
“`:Gemfile
group :production do
gem ‘unicorn’, ‘5.4.1’
end
“`
※もし、Herokuでデプロイ済みの場合
EC2/Amazon Linux2: pip installで”unable to execute ‘gcc’: No such file or directory”エラーが起きた時の対処
## 概要
EC2/Amazon Linux2で`pip install -r requirements.txt`を実行したところ、以下の30行ぐらいのエラー文が出力されインストールが失敗する。“`
ERROR: Command errored out with exit status 1:
command: /home/my-user/.venvs/my_app/bin/python3 -u -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘/tmp/pip-install-ok4gp9ve/scikit-surprise/setup.py'”‘”‘; __file__='”‘”‘/tmp/pip-install-ok4gp9ve/scikit-surprise/setup.py'”‘”‘;f=getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__);code=f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.clo
ECS+FargateのAutoScaling設定をTerraformで定義する
# はじめに
ECS+Fargateでサーバレス&運用省エネにシステムを構築しているのだから、やはりここは負荷量に応じた運用負荷も軽減したい。TerraformでサクッとAutoScaling設定をしてみよう。
なお、本記事ではキャパシティプロバイダは使用しないケースで対応している。
また、マルチAZ構成を前提としてTerraformを書いている。# ECS+FargateのTerraform設定
今回はこの部分は本筋ではないので割愛する。
自分の過去記事では、↓このあたりが参考になると思う。[Terraformの初心者がAmazon EC2に実行環境を作ってECS Fargateなアプリの自動構築をしてみる](https://qiita.com/neruneruo/items/d5e58b4013debdf9ebbe)
上記の通り、マルチAZ前提であるため、タスクの “`desired_count“` は2にしておく。
# AutoScaling Policyの設定
以下のように、“`aws_appautoscaling_target“` と “`aws_
AWS CDKでCognitoのIdentityPoolを作る
## 概要
AWS CDKでCognitoのIdentity Poolを作成する方法をまとめる。CDK v1.72.0現在では、IdentityPoolにはL1 Constructしかないため使いづらい。
今回は、独自のL2 Constructを定義し、AWSマネジメントコンソール相当の設定を自動でしてくれる状態を目指す。## Constructの定義
まず、作成したL2 Constructのコードを示す。“`identity_pool.ts
import * as cdk from ‘@aws-cdk/core’;
import * as iam from ‘@aws-cdk/aws-iam’;
import * as cognito from ‘@aws-cdk/aws-cognito’;export interface IdentityPoolProps extends cognito.CfnIdentityPoolProps {
authenticatedPolicyDocument?: iam.PolicyDocument,
unauthe
AWSについていろいろ
#はじめに
こちらではAWS機能について書いていきたいと思います。
公式ドキュメントやAWS認定試験(ソリューションアーキテクトやDevOpsなど)の勉強教材など細かい内容をかかず、ざっくりとした内容で。
試験などに興味はないし!公式ドキュメントなど長ったらしくて読めん!
という方に向けに作っていきたいと思います。
(私の備忘録も兼ねて)写真はつけられればつけます。(Qiitaの制限の範囲内で)
こんかいは環境やサービスというより語録的な内容になります
#環境
AWS#グローバルインフラストラクチャ
世界中にデータセンターがあり、それを利用することになる
大きな区分から
・リージョン
・AZ
・エッジロケーションhttps://aws.amazon.com/jp/about-aws/global-infrastructure/regions_az/?p=ngi&loc=2
#リージョン
国や地域単位であるAWS拠点お国の法律に基づく内容になるのでどこのリージョンを使うかは調べなければならない
日本には東京リージョンと大阪ローカルリージョンがある。
https://aw
AWS Aurora Serverless の DataAPI を使ってアクセスしてみる
– [はじめに](#はじめに)
– [今回の環境](#今回の環境)
– [環境構築編(仮想ハード)](#環境構築編仮想ハード)
– [VPCとセキュリティグループ作成](#vpcとセキュリティグループ作成)
– [VPCの設定とタグ](#vpcの設定とタグ)
– [セキュリティグループの作成](#セキュリティグループの作成)
– [作業EC2用セキュリティグループ作成](#作業ec2用セキュリティグループ作成)
– [RDB用セキュリティグループ作成](#rdb用セキュリティグループ作成)
– [EC2作成](#ec2作成)
– [ステップ1:Amazon マシンイメージ (AMI)](#ステップ1amazon-マシンイメージ-ami)
– [ステップ2:インスタンスタイプの選択](#ステップ2インスタンスタイプの選択)
– [ステップ3:インスタンスの詳細の設定](#ステップ3インスタンスの詳細の設定)