AWS関連のことを調べてみた2020年02月17日

AWS関連のことを調べてみた2020年02月17日
目次

インフラ/AWS 基礎知識①プロトコル IPアドレス サブネット Ping

#はじめに
エンジニアとしての最低限のインフラ基礎知識をわかりやすくメモ用として記録する。
自分自身苦労した部分でもありますので参考になれば…

#OSI基本参照モデル(Open System Interconnection)
ネットワークの各装置が「どの層に属するか」「何を中継するのか」、ISO(国際標準機構)が7階層(レイヤー)にまとめたもの。

| 階層 | 階層名 | 概要 |
|–:|:–|:–|
| 7 | アプリケーション層 |アプリケーション間でのやりとりするデータ形式や内容を提供する|
| 6 | プレゼンテーション層 |データの表現形式の制御や変換を行う|
| 5 | セッション層 |プログラム間の会話単位の制御を行う|
| 4 | トランスポート層 |伝送するデータの順序やデータの紛失に対する誤り検出や回復処理等を規定する|
| 3 | ネットワーク層 |ルーティングや中継機能、コネクションの確立と解放などの規定する|
| 2 | データリンク層 |隣接するノード間での伝送制御手順を提供する|
| 1 | 物理層 |コネクタの形状やケーブルの材質、データ

元記事を表示

AWS試験対策(⑥セキュリティ)

自分用メモ第6弾。
セキュリティは結構おろそかにする人が多いからここをちゃんとやれば強みになる気がする。テストでの比率も高いから蔑ろにはできない。

# AWSアカウントとIAM
AWSアカウントは、AWSとの契約の単位。他のアカウントと課金やネットワーク、セキュリティに干渉できない。家とその家主みたいなイメージ。他の人の家の家計簿は見れないし、家の中の部屋構造とかも見れない
IAMがその中のユーザーみたいなもの。家の住人って感じ。
AWSアカウントのルートユーザーには叶わない。しかしルート使いすぎるのもよくないので、このIAMをつくって権限を与えてあげる。
父「長男は一番偉いから俺と同じくらいなんでもやっていいぞ」
父「次男はほとんどやっていいけど〇〇触っちゃだめな」
んで父を殺して長男に実権を握らす的な。なぜなら父が洗脳されたら家族崩壊するからそうなるまえに殺しとけ、長男を使えって方針。現実に例えるとやべーわこれ。

## AWS Organization
複数のAWSアカウントを一元管理できるサービス。ポリシーベース。
二世帯住宅とかだとわかりやすいかも。おじいちゃんがマスターア

元記事を表示

CloudFrontにキャッシュしたS3上のWordPress記事に独自ドメインでアクセスする

# はじめに
最終的には以下のような構成を目指して構築します。
![WordPress Architecture.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582190/9e905b0f-b083-2924-9b18-8b88b49d0bb7.jpeg)

構築作業の覚書としてQiita記事を作成しておきます。
また、この記事ではRoute53経由で、CloudFrontでキャッシュしたS3上の記事にアクセスする方法を記載します。
![WordPress Architecture_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582190/01b2a391-c4aa-d285-19ba-83ed4937b64c.png)

前段のEC2とS3の部分は以下の記事で。
[WordPressで作成した記事をS3に連携しエンドポイントでホスティングする](https://qiita.com/ebipilaf/items/

元記事を表示

AWSの既存のリソースをterraformで管理する

# 1. 概要
マネジメントコンソールから作成した既存のセキュリティグループをterraformで管理するようにしたので、その手順を記載します。
今回はterraformerを使ってimportしています。
tfstateファイルはS3に置くようにしています。

# 2. 前提条件
terraform、terraformer、aws configの設定は済んでいることとします。

※ terraformerのインストール方法や使い方は下記を参照して下さい。
https://github.com/GoogleCloudPlatform/terraformer

# 3. 手順
## 3.1 terraformのmain.tfファイルを作成する
“`
$ vi main.tf
“`
設定例)

“`
terraform {
required_version = “0.12.20”
}

provider “aws” {
region = “ap-northeast-1”
version = “2.49.0”
}

terraform {
backend “s3” {

元記事を表示

AWSの10分間チュートリアルをやってみる 10.Deploy and host a ReactJS app

こんにちは。トリドリといいます。
新卒で入社した会社でJavaを数年やった後、1年ほど前に転職してからはRailsを中心に使用してアプリケーションの開発をしているしがないエンジニアです。

今回、AWSの勉強をするために公式の10分間チュートリアルをやってみることにしたので、備忘のために記事に残していこうと思います。
AWSに関しては、1年ほど前転職活動をしていた時期にEC2とRDSを少し触っていた以外ほとんど触ったことが無い初心者です。
(ただし、このときにアカウントを作ったので、12ヶ月の無料枠は切れていました)

前回は、「[Docker コンテナのデプロイ](https://qiita.com/toridori111/items/29226fe2e77c925d618b)」をやりました。
今までにない数のいいねをいただいて、トレンドにも載ってびっくりしています。

今回は「Deploy and host a ReactJS app」をやっていきます。

# Deploy and host a ReactJS app
(https://aws.amazon.com/jp/gett

元記事を表示

LambdaでEKS Worker Nodeの夜間・休日停止を行う

# はじめに
検証環境やステージング環境でEKSを使用するときには夜間・休日には停止させて料金を抑えたいことがあると思います。
しかしながらEKSのWorker Nodeの数は宣言的であるがために停止させても新たに立ち上がります。
Masterを消すにしても元の状態に戻すためのアプリケーションのバックアップ・リストア作業を全て自動化しておかないと相当面倒です。

今回はAutoscaling Groupのパラメータを変更することでWorker Nodeをシャットダウンさせ擬似的な夜間・休日停止をLambda関数で実行させます。

前半ではLambdaの設定内容を説明し、後半では実際にPulumiで構築していきます。

# 環境情報
macOS Mojave 10.14.1
Pulumi: 1.10.1
EKS: 1.14

# Lambda設定内容
Lambdaで設定する関数、IAM Policy、トリガーについて説明します。

## 関数
ランタイムは`Python 3.7`を使用します。

“`python:lambda_function.py
import boto3

aut

元記事を表示

【AWS認定試験対策】VPC、Route53のポイントまとめ

# はじめに

AWSの認定試験を受験するにあたって、各AWSのサービスを幅広く理解する必要があったためサービスごとに抑えるべきポイント等をまとめてみました。
今回はVPC、Route53についてです。

※情報は2019年12月31日時点のものになります。ご了承ください。

ちなみにAWS認定試験での勉強方法についてはこちらの記事で紹介しています。

– [AWS 認定Developer Associateに合格するまで](https://qiita.com/yoshiyama_hana/items/8ea41e756036ca098c4b)

# VPC

Amazon VPC(Virtual Private Cloud)とは、AWS上での仮想ネットワーク環境になります。

以下が簡単な特徴になります。

– 料金は発生しない
– リージョンごとに作成可能
– 以下の制限がある
– リージョンあたりのVPCは5まで(制限緩和で100まで引き上げ可能)
– VPCあたりのサブネットの数は200まで
– VPC 当たりの IPv4 CIDR ブロックは5まで(最大50まで引

元記事を表示

AWS CloudWatch メモリ使用率を出す際でのエラー Can’t locate Sys/Syslog.pm in

CloudWatchはデフォルトではメモリ、ディスク使用率が監視できない。

その方法は、AWSの公式ページがよくまとまっている。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/mon-scripts.html#mon-scripts-perl_prereq

## 注意が必要な点

– モニタリングスクリプトのインストール後、 `cp awscreds.template awscreds.conf`してから `vi awscreds.conf`で、キーを入力する。

## エラー

CloudWatchのテストの際(`./mon-put-instance-data.pl –mem-util –verify –verbose`)、以下のエラーが発生。

>Can’t locate Sys/Syslog.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl

元記事を表示

EC2にSSH接続できる環境を、CloudFormationを利用して作ってみた

# はじめに
今回の目標は、以下のとおりです。

“`
パブリックサブネットに配置されたEC2にSSH接続できる環境を、CloudFormationで作成する。
また、そのテンプレートをローカルからAWSCLIを利用してデプロイする。
“`
以降では、本記事で利用したテンプレートを記載し、またそれらのパラメータについて説明しようと思います。
最後に、実際にテンプレートをCLIを利用してローカルからデプロイし、実際にSSHしてみます。

# 構成内容
– VPC
– InternetGateway
– EC2(Public)

![最低限なインフラ構成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586524/b8b5bf5a-293e-b95d-b5b6-0bac1bae44f1.png)

# やったこと
1. `CloudFormation`で利用するテンプレートの作成
1. テンプレートのデプロイ
1. 作成したインスタンスへの、SSH接続

※事前にデプロイ用のIAMユーザ、SSH接続

元記事を表示

Embulkでローカルディスクを使わずにクラウドストレージにアップロードする

embulk-output-commandからgsutilコマンドにデータを渡してストリーミングアップロードしてディスクレスにしてみた話。

embulkってなにって方はこちらから。

* https://github.com/embulk/embulk
* [Embulk(エンバルク)プラグインのまとめ](https://qiita.com/hiroysato/items/da45e52fb79c39547f69)

## なんでやったの

EmbulkでMySQLやOracleからデータをBigQueryにデータ連携する際、データレイクとしてひとまずGoogle Cloud Storage(GCS)にファイルをアップロードしています。

![mysql-to-bq-embulk.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29276/88289ec9-aa88-7663-cec5-6b68870d0d07.png)

最初は[embulk-output-gcs](https://github.c

元記事を表示

AWS技術簿 その2 – EBS –

#EBSとは
AWSで提供されているサービスの一つ、正式名称は`Elastic Block Store`
EC2と共に使用するために設計されている。
簡単に言ったらオンプレミスで言う所のHDDやSSDのようなもの。

#どのような利点があるか
・簡単に容量の拡張/縮小や、ストレージタイプをデータを保持したまま変更することが可能。
・AZ内で自動的に複製がされているため、もしもの際にすぐ復元できるという信頼性が高い。
・手動で定期的なバックアップを取ることも可能(S3を利用してスナップショットと呼ばれるバックアップを作成する)

#どのような種類があるのか
EBSボリュームを作成する際に、ボリュームタイプと容量を指定することができる。
ボリュームタイプは以下4種類から選択を行うことが可能なため、必要に応じて使い分ける。

###SSDタイプ
`プロビジョンドIOPS SSD`
4種類の中で一番最高速度とパフォーマンスを発揮するEBSストレージ。
1秒間の読み込み・書き込みををどれほど行えるかを示すIOPSが最大64000もあるため、
低レイテンシーを必要とする場面や読み書きを多用する場面

元記事を表示

分散した EC2 インスタンスのログの集約 – Nextcloud 環境の構築を通じて AWS での環境構築を体験する⑤

「Nextcloud 環境の構築を通じて AWS での環境構築を体験する」 の第 5 回となります。
これまでの記事は下記からどうぞ。

* 【第 1 回】[EC2 と RDS を利用した Nextcloud 環境の構築](https://qiita.com/S_Katz/items/756ca04ecece844ce503)
* 【第 2 回】[ElastiCache サービスの導入](https://qiita.com/S_Katz/items/280642e437c709052781)
* 【第 3 回】[EFS ファイルサーバーへの移行](https://qiita.com/S_Katz/items/5b5f37db29c3f800e610)
* 【第 4 回】[ALB を利用したサーバー負荷分散、可用性向上に向けた取り組み](https://qiita.com/S_Katz/items/edadf33755c0d834eb46)

# はじめに
[前回記事](https://qiita.com/S_Katz/items/edadf33755c0d834eb46) で EC2

元記事を表示

AWS CI/CDハンズオン

# AWS CI/CDハンズオン
今回は細かな用語の説明などは飛ばして、基本的にCI/CDを体感するためのとりあえず手を動かすという内容となっておりますので、15分程度で実践することができると思います。

## 用語説明
### 継続的インテグレーション(CI)とは
開発者が自分のコード変更を定期的にセントラルリポジトリにマージし、その後に自動化されたビルドとテストを実行するDevOpsソフトウェア開発の手法のことです。
メリットとして、テストが頻繁に行われる。それによって、バグの発見にかかる時間が削減されます。また、機械的なチェックなどを自動化することができるので、開発者はアプリケーションの本質的なことに集中できるのです。

### 継続的デリバリ(CD)とは
ソフトウェア開発手法の一つで、コード変更が発生すると、自動的に実稼働環境へのリリース準備が実行されるというものです。継続的デリバリーは継続的インテグレーションを拡張したものです。
メリットとして、デプロイまでのリリースが自動化されることです。それによって、コードの変更を素早くリリース可能となります。

### 登場人物
###

元記事を表示

Pythonでゼロからでもサービス開発・公開できる学習ロードマップ

## 初めに
この記事は**『プログラミング未経験からPythonでサービス開発できる』**ことを目標に、
習得すべきスキルを学習ロードマップとして整理しました。

**毎日2~3時間(土日は+2時間)**続ければ最短3ヵ月で完了できる内容に絞りました。
すでに習得済みのスキルは飛ばしつつ進めて大丈夫です。

**Ruby**など他の言語でも大筋は同じ流れなので、
Pythonと書いてある部分を、そのままRubyと読み替えれば大丈夫です。

※なお、Twitter でもプログラミングに関する情報を発信しています。
もし良ければ [Twitterアカウント「Saku731」](https://twitter.com/Koji21825331) もフォロー頂けると嬉しいです。

## 学習ロードマップの全体像
まず、サービス開発に必要なスキルは大きく分けて10種類あります。

各章で、それぞれのスキルが何の役に立つのか説明しつつ、
十分なスキルが習得できる参考記事・書籍を紹介して行きます。

![image.png](https://qiita-image-store.s3.ap-n

元記事を表示

Forbidden You don’t have permission to access this resource出た時の解決策

#結論
公開ディレクトリ先のvar/www/htmlのhtmlディレクトリの所有者をapacheに変更した

#まずは現在の所有者を確認してみる。

“`
[root@ip-172-31-28-29 html]# cd ..

[root@ip-172-31-28-29 www]# pwd
/var/www

[root@ip-172-31-28-29 www]# ls -l
total 0
drwxr-xr-x 2 root root 6 Oct 22 22:59 cgi-bin
drwxrw-rwx 3 ec2-user apache 51 Feb 15 09:43 html
“`
所有者がec2-userになっていたので今回のエラーが出ていました。

![エラー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543413/f30bcf9f-0d4f-950e-becd-394f56cbb5c3.png)

#所有者をapacheに変更する
chown -R apache:ap

元記事を表示

VPC設定ついでにまとめてみた

# 概要
コンソールからVPC設定しているのでついでにVPC周辺の詳細を記述していきます。

# VPC(Virtual Private Cloud)とは
– AWSアカウント専用の仮想ネットワーク空間のこと
– 社内ユーザのみアクセスが可能な仮想ネットワークの構築が可能(インターネットからはアクセスできない)
– アカウント作成時はデフォルトでVPC(Default VPC)が1つ作成されているが、ユーザ毎に個別で作成可能

![スクリーンショット 2020-02-16 19.03.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379873/4d6ff301-3d69-2679-1278-32b3a07e7fc2.png)

## リージョン
世界22ヶ所の分散されたデータセンター群で構成されている。
日本のリージョンは現在(2020年2月時点)は東京リージョン(ap-northeast-1)のみ

**※ 大阪ローカルリージョンが2021年初頭までに3つのアベイラビリティーゾーンを持つ完全なA

元記事を表示

EC2(AmazonLinux2)のログをKinesisFireHoseに流してS3へ蓄積する

まずはEC2からKinesisへのfullアクセスロールを用意。

ついでS3バケットとFireHoseのストリーム作成。FireHoseのIAMロールはここで作成できる。

以下、EC2の設定。
ここではApacheへのアクセスログを題材としている。

“`
$ sudo yum -y install httpd
$ sudo systemctl enable httpd
$ sudo systemctl start httpd

$ sudo vi /etc/httpd/conf/httpd.conf
“`

`:set number`とすることで行数を表示できる。`:197`で197行目に飛べる。

“`:197行目に追記
LogFormat “time:%t\tforwardedfor:%{X-Forwarded-For}i\thost:%h\treq:%r\tstatus:%>s\tsize:%b\treferer:%{Referer}i\tua:%{User-Agent}i\treqtime_microsec:%D\tcache:%{X-Cache}o\truntim

元記事を表示

EC2(AmazonLinux2)のログをCoudWatch Logsに流す

公式ドキュメント
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html

(1) IAMロールの準備→CloudWatchFullアクセスでおk。
(2) Agentのインストール

“`
$ sudo yum update -y
$ sudo yum install -y awslogs
$ sudo vi /etc/awslogs/awscli.conf
# ここでregionをap-northeast-1に指定。
$ sudo vi /etc/awslogs/awslogs.conf
# ここでCloudWatchに流したい対象のファイルを指定。
$ sudo systemctl start awslogsd
$ sudo systemctl enable awslogsd.service
“`

awslogs.confの書き方
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/la

元記事を表示

S3を操作するLambda関数をローカルで開発するための環境構築

Serverless Frameworkを使って構築したLambda関数のローカル開発環境で、LambdaからS3を操作する関数を開発したい。AWS上のS3を直接操作してもいいが、せっかくなのでローカルで完結する環境を構築する。

#ローカルでS3をエミュレートするためのツール
ローカルでS3をエミュレートするためのツールとしては、
– [LocalStack](https://github.com/localstack/localstack)
– [MinIO](https://min.io/)
– [S3rver](https://www.npmjs.com/package/s3rver)
あたりがあるようだが、今回はLocalStackを使用する。

# 事前準備
Dockerが必要なので事前に使えるようにしておく。
自宅で使っているPCはWindows 10 Homeのため、Docker Desktop for Windowsが使えない。調べてみたらDocker Tookboxというツールを使えばいいようなので、インストールする。(参考:@idani氏の[windows 10

元記事を表示

Terraformでゾーン毎にsubnetを作成する(AWS, Alicloud)。

#高可用性なサーバー配置
可用性が高いサーバーの配置として、ゾーン毎に立てるのは常套手段と思う。クラウドベンダーの1つのゾーンに障害が発生しても、別のゾーンが生きていればサービスの継続性が保たれる。
その前準備として、ゾーン毎にsubnetを作成する手順をterraformで自動化する。
terraformへは、regionとVPCのCIDRのみを指定し後はよしなにやってくれること、AWSとAlicloudで同じような自動化ができることを確認する。

#input/output
**input**
– region
– VPCのCIDR

**output**
– VPC
– ゾーン毎のsubnet

つまり、入力のregionにVPCを作成して、そのregionが持つゾーン毎にsubnetを作成する。

#クラウド・プロバイダの設定
“`tf:main_alicloud.tf
# Alicloud Providerの設定
provider “alicloud” {
access_key = var.alicloud_access_key
secret_key = var.a

元記事を表示

OTHERカテゴリの最新記事