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

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

AWS Lambda を使ってFizzBuzzしたった

# Backgroud
AWS Lambdaを使ったサーバレスアプリケーションについての話を聞く機会が増えたので試しに作ってみた。

# Preparetion





# Development (l

元記事を表示

AWS運用日記 初心者が『AWS』触ってみた

AWSを登録して初期設定をするところまで。

以下の3つを設定し終えたら記事書きますmm
❶CloudWatchで料金アラートを設定:使いすぎを防止
❷IAMで作業ユーザーを作成:セキュリティ対策
❸CloudTrailで操作ログを記録:ユーザーの行動ログを収集

では、また後程。この記事に追加していきます(*´ω`*

元記事を表示

【AWS】Rails6で作られたWebアプリをCircleCIを使いECR・ECSへ自動デプロイする方法①下準備編【コンテナデプロイ】

今回個人開発で制作したRailsアプリをCircleCIを使いコンテナデプロイさせることに成功したので、備忘録としてこちらに記載させていただきます。(またReadmeなど整い次第、実際のアプリも別記事で紹介させていただきます。)

また、現在私はwindows10を利用しており、macの方は適時置き換えて進めていってください。
といってもaws-ecs-cliのインストール方法が異なるぐらいで他は同じだと思います。(windowsだとインストールするのに少し手間がかかりました。)

それと、筆者はAWSのコンソールの言語はあえて英語で設定しているので、英語で設定していただいた方が本記事は進めやすいと思います。
(AWS CLIのコマンドの名前とコンソールの英語表記が一致するので、お勧めです。)

# 対象となる人
– AWSのアカウントを持っている人
– すでにDocker化されたRailsアプリがあり、インフラにAWSや、CI/CDツールを取り入れることにチャレンジしたい人
– 就活のポートフォリオとして上記の技術を取り入れたい人
– AWSに興味がある人
– macばっかでwind

元記事を表示

【AWS】Basic認証付き静的ページをS3でホスティングするまで(CodeBuildによるデプロイも含む)

# 概要
タイトルの通りです。
ソースコードはCodeCommitで管理をしている前提です。

# 大まかな流れ
* リポジトリ作成
* S3バケット作成
* CodeBuildでビルドプロジェクトを作成
* CodePipelineの作成
* Lambda関数の作成
* CloudFront Distributionの作成

あまり躓く箇所がない場合、注意点のみ記述し、詳細な手順は割愛させて頂きます。

# リポジトリ、S3バケットの作成
リポジトリの構成は以下の形として解説していきます。

“`
.
├── buildspec.yml
└── public # このディレクトリ内をS3へ展開します。
└── index.html
“`

* 複数のAWSアカウントでCodeCommitを使用しており、コードをプッシュする際に「Please make sure you have the correct access rights and the repository exists.」と表示されてしまう場合。
* sshコンフィグファイルにそれぞれの接続情報を

元記事を表示

AWS EC2でAmazon Linuxを作成、ログイン

AWS EC2でAmazon Linuxを作成、ログインする。

AWSにログイン、サービス>EC2>インスタンスを起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625472/7be441dc-3107-fbea-cc85-72eb1fab2eee.png)

Amazon Linux 2 を、64bit(x86)のまま「選択」をクリック

デフォルトのまま、「確認と作成」をクリック

インスタンスが作成されるので、「パブリック IPv4 アドレス」のIPを確認。

Macのターミナル、WindowsならTeraTerm等のソフトでssh接続。

ssh -i testkey.pem ec2-user@[IPアドレス]

でログイン。

元記事を表示

AWSのコスト管理 ~DBRとCURの違い~

## 比較表

|| DBR | CUR |
| —- | —- | —- |
| Name | Detailed Billing Report | AWS Cost and Usage Reports |
| 名前 | 詳細請求レポート | AWSコストおよび使用状況レポート |
| 固定列 | ある | ない |
| ファイル構成| 単一 | 統合されたファイルのセット |

## CURのメリット
– 個々のコストを詳細に確認できる
– 統合されたファイルのセット
– すべての使用状況の広告申込情報を含むデータファイルのセット
– すべての割引を含む個別のデータファイル(該当する場合)
– 単一のレポートに属するすべてのデータファイルを一覧表示するマニフェストファイル

## 参考

– [詳細な請求レポートからコストおよび使用状況レポートへの移行](https://docs.aws.amazon.com/cur/latest/userguide/detailed-billing-migrate.html)
– [コストレポートと使用状

元記事を表示

SquidでAWS EC2をフォワードプロキシにする

# はじめに
AWS EC2にSquidをインストールして、フォーワードプロキシとして利用する手順です。
EC2のOSのバージョンは、Amazon Linux 2です。

# 手順
**1. EC2にSquidをインストールする**

“`sh:スクリプト
sudo yum update -y

# Squidをインストールする
sudo yum install squid -y

# Squidを起動する
sudo systemctl start squid

# Squidの起動とサーバーの起動を連携する
sudo systemctl enable squid
“`
**2. Squidの設定をする**

“`sh:スクリプト
export VPC_IP=[Squidを利用するVPCのCidrBlock]
# Squidで利用するポート番号
# 今回は8080とする
export SQUID_PORT=8080

sudo sed -i “s#10.0.0.0\/8#${VPC_IP}#g” /etc/squid/squid.conf
sudo sed -i “s/acl l

元記事を表示

AWS Chatbotを使ってヘルスチェックアラートをSlackに送る

## AWS Chatbot
AWS Chatbotを使うことで、これまでSlackへの通知をLambdaで実装する必要があったのですが、簡単にAWSコンソールを触ることで連携が可能となります。
今回はRoute 53のヘルスチェックエラーをChatbotを使ってSlackに通知を送るよう実装しました。

参考:[AWS Chatbot](https://aws.amazon.com/jp/chatbot/)
>AWS Chatbot は、Slack チャンネルや Amazon Chime チャットルームで AWS のリソースを簡単にモニタリングおよび操作できるようにしてくれるインタラクティブエージェントです。

## 手順
1. SNS(Amazon Simple Notification Service)でトピックの作成
2. AWS Chatbotでクライアントの設定
3. AWS ChatbotでSlackチャンネルを設定
4. Route53でヘルスチェックの作成

## SNS(Amazon Simple Notification Service)でトピックの作成
トピック

元記事を表示

DynamoDBのDocumentClient使用時にValidationExceptionでハマった

JavaScriptに慣れていない私が、AWS Lambdaでイベントから年(year)を受け取り、Dynamo DBに問い合わせるコードを書いていたところ、Lambda側のテストでValidationExceptionが発生しました。

“`javascript

const AWS = require(“aws-sdk”);
AWS.config.update({region: “ap-northeast-1”});
let docClient = new AWS.DynamoDB.DocumentClient();

exports.handler = function(event, context){
// イベントから渡された年を変数に設定(設定されていない場合は2020年に設定)
let input_year = 0;
if (event.year == “”){
input_year = 2020;
}else{
input_year = event.year;
}

// DynamoDBクエ

元記事を表示

EC2に自動デプロイ後、変更が反映されていないときの対処法

内容としてはタイトルにある通りですが、EC2に自動デプロイを行った際に変更が反映されておらず、めちゃめちゃ焦りました。
今後同じことがあったときに焦ることがないよう、備忘録として残しておきます。

## 環境
AWS EC2
Ruby 2.6.5
Rails 6.0.3.3
capistrano

## 結論
EC2インスタンスを再起動する。
自動デプロイを複数回行うと変更が反映されないことがあるためその際はインスタンスの再起動を行います。
再起動手順については[こちらの記事](https://qiita.com/qolayumusou/items/a34cccbb07802c94eeef)にわかりやすく解説されています。

## 最後に
インスタンスの再起動を行った際はデータベースとNginxの再起動も忘れずに行うこと!

1.EC2インスタンスにログイン

“`:ターミナル
hoge@MacBook ~ % cd .ssh
hoge@MacBook .ssh % ssh -i ダウンロードした鍵の名前.pem ec2-user@該当EC2インスタンスと紐付けたElasti

元記事を表示

Auroraのカスタムエンドポイントからインスタンスを減らすとアクセス不能になる

※本件、カスタムエンドポイントで確認。
(Reader Endpointで同様に起こるかは未確認)

Auroraにはオートスケーリング機能があり、一定時間高い負荷がかかると自動的にインスタンスが増える仕組みになっています。

しかしながら、この設定を戻す時(インスタンスが減る時)にアクセス不能になる不具合があります。

Auroraを減らす前は以下のように正常にANSER SECTIONが返ってきますが、

“`
$ dig xxxxx-ro-service.cluster-custom-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.58.amzn1 <<>> xxxxx-ro-service.cluster-custom-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY,

元記事を表示

[AWS] Ubuntu EC2インスタンスに意図的に負荷をかけ、CloudWatchでメトリクスを確認する

検証などのため、意図的にEC2インスタンスに負荷をかけたい場合があります。今回は、Ubuntuインスタンスで試す機会がありましたので、手順をまとめておきます。[前回の記事(メモリ使用率をCloudWatchに連携)](https://qiita.com/VA_nakatsu/items/2012bb3038d468005fe2) はこれをまとめるための長い前振りでした...

# CPU

stress-ngコマンド、あるいはopensslコマンドで負荷をかけることが可能です。

インストール手順:

“`
$ sudo apt-get update
$ sudo apt install stress-ng
$ sudo apt install openssl
“`

stress-ngコマンドの実行オプション:

“`
$ stress-ng –cpu -l -t <実行時間>

CPU負荷をかける場合
・-cpu: CPUの負荷試験を行う場合に指定する。CPUのコア数を指定する。
・-l: CPUの使用率を指定する。指定した数字(%)の負荷

元記事を表示

AWS EC2 第2回EC2 Instance(Amazon Linux2)へのSSH接続

#はじめに
前回EC2 Instanceの起動を行いました。
EC2 Instanceを起動後、そのサーバーに対して何を実行させるか?によって実施する内容は色々とありますが、まずはEC2 Instanceへ接続しないことには話は始まりません。
従いまして、今回はそのEc2 InstanceへSSH接続します。

#今回実施する内容
EC2 InstanceへSSH接続します。
![SSH接続図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405480/8e8a9e4e-554a-470f-859d-de8ef0bb5da8.jpeg)

#環境
AMI: Amazon Linux 2 AMI (HVM), SSD Volume Type – ami-05f4d5a411fcc68e0 (64 ビット Arm)

#参考
[Tutorial: Getting started with Amazon EC2 Linux instances](https://docs.aws.amazon.com/AWSE

元記事を表示

Glue Studio【AWS】

# はじめに

この記事では、2020年9月23日にリリースされた Glue Studio を利用して GUI ベースで Glue ジョブの作成と実行そしてモニタリングを行います。

# AWS Glue
> AWS Glue は、Apache Spark のパワーを使用して分析用のデータセットを準備および処理するサーバーレス環境を提供します。

>       [AWS Glue Documentation](https://docs.aws.amazon.com/glue/index.html)
      [Optimize memory management in AWS Glue](

元記事を表示

VPC内のLambdaからはSES向けのVPCエンドポイントを使用してもBoto3ではメールを送信できない

# 初めに

本記事はタイトルについて検証を行った詳細を記載します

書くきっかけですが、最近久しぶりにVPCと戯れることになりました。
VPCを使った構成ですんなり行った思い出はなく、実際に沼にハマりました。

ポイントをまとめましたので、どなたかのお役にたてば嬉しいです

結論だけ知りたい方は最後まで飛ばしてください

# 検証を行うことになった背景

**VPC内のLambdaからメールを送る**
ただこちらを行いたいだけでした

アーキテクチャとしては以下となります
RDS→Lambda(VPC内)→SES→ユーザー

あまり見ないアーキテクチャですね
RDS Proxyがリリースされてから、LambdaとRDSの組み合わせは使用する頻度が多くなりました
DynamoDBだけでは辛い部分もあるので、今後こちらのアーキテクチャは増えるようになるのではないでしょうか

実装するに当たって、どのようにVPCから外へ出るか調べていました
すると、2020年5月に[SES向けのVPCエンドポイント](https://aws.amazon.com/jp/blogs/news/new-ama

元記事を表示

AWS Lambdaでpythonプログラムの定期実行

#はじめに
AWSのlambdaを使用して、スケジュール実行のプログラムを設置しました。
lambdaの基本的なことで意外とつまったので残しておきます。
AWSのアカウントは作成しているものとしています。

MAC OS X
python 3.6

# 対象
・lambdaを触ったことのない方
・とりあえず何か動かして見たい方

#lambdaとは
スクリプトを実行することが出来るサーバーレスのサービスです。
サーバレスと言ってもスクリプトの実行時にのみサーバを起動するイメージです。

呼び出しはAWSの空いているサーバから行われるため、実行するサーバーは都度違います。
(固定IPを割り当てたサブネットにlambdaを設置して実行することでIPを固定にすることは出来ます)

無料使用枠が月ごとに100万件の無料リクエストと1秒あたり40万GBのコンピューティング時間あるので、たいてい無料枠で動かせます。WebやIOTのバックエンドのAPIとしても使えるのでめちゃくちゃ便利なサービスですね。

#簡易的なスクリプト作成
pythonでLambdaのスクリプトを作成する場合、 **lamb

元記事を表示

IAM Roleがなぜ安全にアクセス権限を委任できるかを理解する

AWSのAPIにアクセスするには、APIへのリクエストに署名する必要があり、署名するための秘密鍵が必要である。IAM Userのアクセス・キーを割り当てることもできるが、AWSのサービス、例えばEC2インスタンスからAPIにアクセスする場合は、IAM Roleを使用すると、秘密情報をホスト内に保存することなく、安全にAPIへのリクエストを行うことができる。

この記事では、AWSの、あるアカウントのEC2インスタンスから、別のアカウントのAWSサービスのAPIをコールする場合を例として、どのようにアクセス権限を委任しているかを順に説明する。

この記事では、以下のリソースを作成するとする。

* アカウント__A__
* アカウントA内のEC2インスタンス__C__
* アカウントA内のIAM Role __Role_D__
* アカウントA内のIAM Policy __Policy_E__
* アカウント__B__
* アカウントB内のIAM Role __Role_F__

## EC2インスタンスAにIAM Roleをアタッチする

EC2インスタンスには、一つだけ I

元記事を表示

AWSを使ってデプロイ

#はじめに
 AWSを初めて使ってみたが、難しすぎる…
 完全に自分用メモ

##EC2のサーバーにログイン

“`
ssh ~ user@ ~ #ユーザー名とElastic IP アドレスの入ったコード
“`

以下、ログイン状態で実行

##デプロイ方法

“`
# 開発中のアプリケーションに移動
cd /var/www/アプリケーション名
“`

“`
# GitHubの内容をEC2に反映させる
git pull origin master
“`

##Unicornの再起動方法
1. プロセスを確認

“`
ps aux | grep unicorn
“`
2. プロセスをkill

“`
kill プロセス番号
“`
3. unicorn_railsコマンドを実行

“`
RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
“`

##エラーログの確認

“`
sudo less /var/log/n

元記事を表示

【個人メモ】RailsアプリをAWSへデプロイする際につまづいたことまとめ

## index
下記の記事の通りにRailsアプリをAWSへデプロイする際につまづいたことを個人的な備忘としてまとめました。

(下準備編)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで
https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce
https://qiita.com/naoki_mochizuki/items/22cfbf4bf7ec95f6ac1c
https://qiita.com/naoki_mochizuki/items/814e0979217b1a25aa3e
https://qiita.com/naoki_mochizuki/items/5a1757d222806cbe0cd1

## RDSインスタンスが生成できない
RDSの設定をして、「データベースの作成」をクリックすると、こんなエラーが発生。

“`
DB Subnet Group doesn’t meet availability zone coverage requirement. Please ad

元記事を表示

AWS Lambdaを使ってサーバレスアプリを作成(CRUDのR)

記事を閲覧いただき、ありがとうございます。[中村](https://twitter.com/AaTeltel)です!!
2020年10月にAWSエンジニアとして転職したので、AWSの予習も兼ねてLambdaを使ったアプリ作成について書いきます。

### AWS Lambdaとは?
ここでつらつら説明するより[公式動画](https://youtu.be/Hr6ZIvXSZpw)の方がわかりやすいという結論に至りました。まずはご覧ください。