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

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

フリートプロビジョニング前にフックするLambdaの作成例

https://qiita.com/takmot/items/eda7c2f519581b40ec3f
前回記事の続きとして、フリートプロビジョニング前にフックするLambdaの作成例を記載します。

## プロビジョニング許可/拒否判定方法

1. シリアルナンバーと、プロビジョニング許可/拒否を表す値を記載したCSVファイルをS3に格納
2. LambdaからこのCSVファイルを参照し、デバイスから通知されたシリアルナンバーからプロビジョニング許可/拒否判定

以下CSVファイル例

“`
SerialNumber,Effect
1,Allow
2,Deny
3,Allow
“`

## Lambda関数

### 変更前コード

“`python
import json

provision_response = {‘allowProvisioning’: False}

def isBlacklisted(serial_number):
#check serial against database of blacklisted serials

def l

元記事を表示

[Rails]本番環境EC2で”rails db:create”などの実行方法

## 投稿内容
ローカル環境で行う`rails db:create`や`rails db:migrate`などを本番環境で実行する方法について投稿します。

## 実行するディレクトリへ移動
まず本番環境で下記コマンドで`currentディレクトリ`まで移動します。

“`ターミナル.
[ec2-user@******* ~]$ cd /var/www/アプリ名/current
“`

## コマンド実行

“`ターミナル.
//データベースを削除
[ec2-user@******* current]$ RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop

//データベース作成
[ec2-user@******* current]$ rails db:create RAILS_ENV=production

//テーブル、カラムの作成
[ec2-user@******* current]$ rails db:migrate RAILS_ENV=production

元記事を表示

AWS LightsailにMineCraft(Spigot)サーバーを移行してみた

MineCraft(Spigot)サーバーをAWSに移行しました。
AWS事始めにちょっとやってみたというノリなので
– これやりゃもっと安く上がる
– これは無駄なことやってる
等のマサカリがあれば随時募集してます。

# 概要
– 自宅でHamachi使っていた身内向けSpigotサーバーをAWS Lightsailに移行した
– 移行後1日しか経過してないけど報告
– 動作は快適そのもの
– 24時間動かしてたらCPUバースト1日で溶けた
– 月10$(のはず)

# 手順概略
– AWS Lightsailでインスタンス作成
– 静的IP設定
– FW設定
– インスタンスにssh接続
– scp使って既存サーバーのワールドデータコピー
– BuildTools.jarでspigotをビルド
– サーバー起動・接続

# AWS Lightsailでインスタンス作成
## インスタンスのディストロ選択
ロケーションは住んでいるところの近くらへんで適当に
Linux選んでディストロは適当に
Ubuntu好きなのでUbuntuにしました
![image.png](https://q

元記事を表示

API実行ログをSlackに出力する

##はじめに
[前回の記事](https://qiita.com/ktsuchi/items/f99a7b5017306f4e6537)の続きです。

前回は、WebページのボタンからAPIを実行させるところまでを実装しました。
今回は実行ログの出力について記載します。

前回作成したAPIは限定された人しか実行できないようにしている訳ではなく、
Webページにアクセスできる人であれば誰でもボタンを押すことで実行できてしまいます。

そのため、どのIPから、どのような端末で、いつ実行したのかが記録として残るように、
API実行ログを出力させる方法にしました。

##構成図

赤枠で囲った部分が、今回のログをSlackに出力する構成です。

2つのLambdaを使って、API GatewayからCloudWatch Logsに出力されたログを整形してSNSに送り、
SNSに来たメッセージをSlackに送信してます。
(もっと効率的な方法があるかもしれませんが)

![ScreenShot 2020-10-08 9.06.38.png](https://qiita-image-store

元記事を表示

nginxのエラー「413 Request Entity Too Large」の解決方法

# 前提開発環境
– AWSのEC2インスタンスを使用してデプロイ済み
– Ruby on Rails6で開発

# エラー概要
Rails6で投稿アプリを作成し、本番環境で投稿すると下記画像のエラーが発生しました。

![nginx.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638561/8b853cd6-80af-69ac-4f1a-486a78523e67.png)

画面を無駄に占有して**413 Request Entity Too Large**とエラーが発生しました。
もうちょっと控えめな自己主張をして頂きたいものです((((;゚Д゚)))))))

**投稿した画像サイズが大きすぎる**と怒られています。
画像サイズの設定を変更する為にEC2へログインします。

“`
恒例のコマンドです。
以下を順にローカルのターミナルに入力していく。

①mkdir ~/.ssh

②cd .ssh/

③lsコマンドで、EC2で作成済みの<鍵名>.pemが表示される。

④chmod 600

元記事を表示

AWS香港リージョンをつかってEC2からS3にファイルを送信時にエラーが発生して解消した話

タイトルの通りです。

#実行コマンド
“`
aws s3 cp /home/ubuntu/gomi.txt s3://bucket-name/gomi.txt
“`
#エラー

“`
The ap-east-1 location constraint is incompatible for the region specific endpoint this request was sent to
“`

#修正内容
sourceとtargetを明示する必要があるようです。

“`
aws s3 cp /home/ubuntu/gomi.txt s3://bucket-name/gomi.txt –region ap-east-1 –source-region ap-east-1
“`
#参考資料
https://github.com/aws/aws-cli/issues/4174

元記事を表示

AWS AppSyncについてまとめてみた

# AWS AppSyncとは

– マネージド型のGraphQLサービス
– リアルタイム機能、オフライン機能が簡単に実装可能
– NoSQLデータストア、RDB、HTTP API、AWS Lambdaを使用したアプリケーションの構築

**特徴**

– GraphQLを使用して情報を取得できる。
– Amazon Cognitoと連携することで認可制御が容易に実現できる。
– パイプラインリゾルバーを利用することで、複数のオペレーションを組み合わせて実行できる。
– マッピングテンプレートに処理を記載することで、リソースへアクセスする前後に処理を挟むことができる。

## リゾルバー
AWS AppSyncは、クライアントからGraphQLリクエストを受け取ると、リゾルバーと呼ばれる関数にGraphQLリクエストをマッピングする。

ここでいう関数とは、

– リクエストマッピングテンプレート
– レスポンスマッピングテンプレート
– データソース名
– バージョン

で構成されており、 データソースへの1つのオペレーションを定義している。

開発者はそれぞれリクエスト・レスポ

元記事を表示

AWS CodePipelineでパイプラインとブランチを紐づけるときの権限回り

1. pipelineと新しく作ったブランチを紐づける
2. 権限の境界を削除する
3. templateで定義しているロールの名前を変更する
4. パイプラインでcloudformationスタックの名前を変更する
5. Worker-RoleのpassroleにExecution-Roleを追加する

元記事を表示

CloudFront Lambda@Edge with Python 3.8 で Basic 認証を実現する

# はじめに

Lambda@Edge を使って Basic 認証をサイトにかけようと思ったのだが、日本語で検索すると普通に Node 6 とか 8 とかでの記事が多く引っかかる。 ただ、この制限は Lambda@Edge が一般リリースされた直後の話であり、流石に情報が古すぎる気がしたので、改めて現状の Lambda@Edge の対応状況を調べてみた。
すると 現時点 (2020/10/08) では Lambda@Edge に Python 3.8 まで使えるようになってたので、これを使って今回の目的である Basic 認証をかけてみることにした。

## 補足: 実行可能なLambda環境

記事執筆時点(2020/10/08)時点で実行可能な環境は以下の通り。

– Python 3.8
– Python 3.7
– Node.js 12
– Node.js 10
– Node.js 8 and Node.js 6

引用元: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-req

元記事を表示

AWS 認定ソリューションアーキテクト – プロフェッショナル 合格への道#27

#はじめに
前回から半年ほど間が空きました。SAPは二回落ちましたが、スコアは徐々に上がってました。ですが、自分の中でAWSがまだ体系的に理解できていなかったのと、教科書としているものが翻訳の追いついていないホワイトペーパーという現実、また勉強のしかたなど色々迷っていました。
今回記事を更新することができた要因としては、書籍の発売によるものです。私の中で合格実績のあるシリーズのSAPが登場したので試験申し込みに踏み切ることができました。長々と学習から逸れましたので本編に戻ります。
#SAP試験を受けるにあたってのサービスの全体像
##コンピュート
* EC2
* ECS
* マネージド型コンテナ オーケストレーションサービス。コンテナ の停止・起動・アクセス制御・信頼性やスケーラビリティの担保等を一元的に管理する。
* ELB
* ALB・CLB・NLBの使い分けに注意
* EKS
* ECSと同様のコンテナオーケストレーションサービスだが、使用しているエンジンがK8Sを利用している。
* Fargte
* Fargateはコンテナ用のクラスタを構築しコ

元記事を表示

AzureやAWSなどの仮想マシン上にFlaskサーバーをデプロイする

# こんなあなたに
– PythonでWebサーバーを構築して公開したい
– 深層学習を使用したAPIサーバーを作りたい

ハッカソンでFlaskを使ってAPIサーバーを構築するために色々調べてやったので,イチからまとめました.

## 前提
– Azure, AWS, GCPなどで,仮想マシンを作成済み
– ssh接続ができている
– 80番ポートが開放されている
– OSはLinux(Ubuntu)

## 環境
– AWS EC2インスタンス
– Ubuntu18.04

## 本編
### 1. 必要なパッケージのインストール
“`console
# apache2のインストール #
$ sudo apt install apache2 apache2-dev

# Pythonのインストール #
$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
# 最後に表示される設定を~/.bashrcに記述

# インストール可能なanacondaのバージョン

元記事を表示

クラウド・インフラストラクチャの監視の実際【DynatraceによるDynatraceの監視!?】

######本記事は、[Dynatraceブログ](https://www.dynatrace.com/news/blog) にポストされた [” Cloud infrastructure monitoring in action: Dynatrace on Dynatrace / Andreas Grabner ”](https://www.dynatrace.com/news/blog/cloud-infrastructure-monitoring-in-action-dynatrace-on-dynatrace) を日本語で再編集したものになります。

Dynatraceは、Dynatrace SaaS のクラスタの殆どを、Amazon Web Servicesで稼働させています。2020年9月の段階で、51のクラスタが、AWS 6リージョンの1100台のEC2インスタンス上で稼働しています。

2014年にAWSに移行して以来、***99.95%の稼働率を保つ理由の1つは***
###Dy

【Ruby on Rails】ActiveStrageでs3の画像も合わせて削除

# 目標
ローカルだけでなく、s3上の画像も削除する

# 前提
ActiveStrageでの画像削除について
詰まってしまったので、備忘録として残します。
(手探りでの記述のため、無駄があるかと思いますがご了承ください)

また、s3上の不必要な画像を削除していきます。

postモデル
カラム name:string
アクション new index show edit update create destroy
ルート resouses :posts

# 開発環境
ruby 2.5.7
Rails 5.2.4.3
OS: macOS Catalina
heroku

# ActiveStrageでの画像投稿導入
[【Rails 5.2】 Active Storageの使い方](https://qiita.com/hmmrjn/items/7cc5e5348755c517458a)
こちらが大変わかりやすく、導入もしやすかったので、
こちらを参考に導入してください。

[【Rails】Herokuで画像を投稿できるようにする方法(ActiveStorage + Amazon S3)

aws EC2にてApache+PHP5.6+Mysql+phpMyAdmin+PostgreSQL

PostgreSQLインストール
sudo yum -y install postgresql postgresql-server postgresql-libs
sudo vi /var/lib/pgsql9/data/postgresql.conf
sudo vi /var/lib/pgsql9/data/pg_hba.conf
sudo /etc/rc.d/init.d/postgresql start

phpMyAdminの設定は下記手順が必要の様。
インストールは下記の様に。
sudo yum –enablerepo=epel install phpMyAdmin php56-mcrypt php56-mysql

install後
vi /etc/httpd/conf.d/phpMyAdmin.conf
にて下記


AddDefaultCharset UTF-8
 下記2行追加
AllowOverride all
Require all granted

AWSでRoundCubeによる独自WEBメールクライアントを作ってみた

クラウドが当たり前になった昨今、メールクライアントをネイティブアプリにしている人ってどのくらいいるんでしょうか?Thunderbird、Becky・・・。古くはEudoraとかAlmail皆懐かしいです。かくいう私も20年前はOutlookExpressでした。

WebメールといえばYahoo!やHotmail、Gmailの台頭が大きかったと思います。無料で使えるから複数のアカウントを使い回すこともできます。また、Gsuiteのようなビジネスユースにも対応できる機能が出たことで自社のメールをGmailインターフェースでしか使ったことがない人もいるでしょう。
そうです、WebメールのインターフェースはPCへのインストールが不要でブラウザさえ使えればどのPCからでもメールにアクセスできるので非常に便利です。

今回は当社がお名前で作成したメールアカウントに対してWebメールクライアントをRoundCube使って構築したやり方を紹介します。
お名前ドットコムではお名前メールというドメインさえ取得すればオプションとして提供されるメールアカウントがあります。もちろんお名前メールの機能でもWeb

AWS初心者がCloudWatch Logs Insightsを使ってみた

AWS初心者ですが、最近担当した業務で、APIが出力しているログを
さくっと分析・調査したい場面があったのでCloudWatch Logs Insightsを使ってみました。
実際に調査で使ったクエリの例なども含めて、備忘録も兼ねてまとめます。

これからCloudWatch Logs Insightsを使う方にとって、少しでもお役に立てれば幸いです。

# CloudWatch Logs Insightsとは?

CloudWatch Logsのログデータに対し、独自の構文を使って
クエリのようにデータを検索したり分析したりすることができる機能です。
従量課金制で、スキャンしたデータに応じて料金がかかります。
>スキャンしたデータ 1 GB あたり 0.0076USD

# 使い方

## 準備

AWSマネジメントコンソール>CloudWatchを開き、サイドバーから「インサイト」を開きます。
![スクリーンショット 2020-10-05 12.45.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c

AWS自動化の心得(IaC編)

インフラ、基盤の自動化が徐々に必須レベルに近い感じになってきていますので、下記の様な方に向けてAWS自動化の心得を書きます。

 ①AWS利用しているが、自動化やIaCの知識はない
 ②システムの自動化を頼まれたがちゃんと運用できるのか不安
 ③AWS運用を効率化したい
 ※①、②は2年前の私の心境。今はAWSを効率よく運用できていると感じてます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311339/8fc93585-2efc-d1be-16fe-7564f0189a8a.png)

まず言っておきたいですが、自動化(IaC)は便利です。
AWSで初めて自動化担当となった方の不安を低減できれば良いなと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311339/25d7ed75-bacb-25c5-7247-0843386997ed.png)

なぜ自動化するのかと

AWS Aurora Serverlessを使ってみた感想

# Aurora Serverlessの説明
一言でいうと自動でスケールして、アクセスがなければ勝手に停止するAWSのMySQL/PostgreSQLインフラです
2018年に一般公開された比較的新しいサービスで2020年になってもアップデートが続いています

## Aurora Serverlessの利用用途
こちらの記事をご覧になると概要がわかると思います
https://dev.classmethod.jp/articles/lessons-learned-from-up-and-running-aurora-serverless/

通常のAuroraとのコスト比較はこちらの記事にあります
https://dev.classmethod.jp/articles/calculate-amazon-aurora-serverless-costs/

たまにしか接続しない開発環境のDBや、アクセス傾向が不規則なワークロードに適しています
ただ、常時稼働させてしまうと同スペックのDBインスタンスに対して60%割高になるため、安定したアクセスが常時続くのであれば通常のAuroraのほうが

AppSyncでネストされたクエリを発行できるようにする。

やりたいこと
=====

“`graphql
query {
user(id: “Makutamoto”) {
id
posts {
userID
id
}
}
}
“`

このような、ネストされたクエリを実行したいとします。
言い換えると、userフィールドの引数であるidをpostsのresolverでも受け取とりたいということです。

解決策
=====
Response Mapping Templateの$context.sourceに親フィールドのレスポンスが格納されているので、それを使います。

実行結果
—–
“`json
{
“data”: {
“user”: {
“id”: “Makutamoto”,
“posts”: [
{
“userID”: “Makutamoto”,
“id”: “id-1”
},
{
“userID”: “Makutamoto”,

【AWS SOA】EC2上でのCloudWatchメトリクス

#はじめに
AWS SOAではEC2上でのCloudWatchメトリクスの内容が出題されるので、本稿で取り上げたい。

#EC2上でのCloudWatchメトリクス
EC2上でのCloudWatchメトリクスには以下の内容が含まれる。
##CPU
CPU使用率
クレジット使用状況・バランス
##ネットワーク
ネットワーク出力・入力
ネットワークバケットイン・アウト
##ステータスチェック
インスタンスステータス EC2 VMをチェック
システムステータス 基盤となるハードウェアをチェック
##ディスク
バイトと操作におけるディスク読み取り・書き込み

※RAMはEC2上のメトリクスで扱われない

![スクリーンショット 2020-10-07 22.47.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/5c808390-63a9-f01e-a153-4a4ca2175403.png)
![スクリーンショット 2020-10-07 22.48.31.png](https://qiita-i