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

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

【まもなく終了!】【合格メモ】AWS認定ソリューションアーキテクト – アソシエイト(SAA)

# はじめに
AWS認定(SAA-C01)(以下、旧試験)に無事合格したので、忘れないうちにやってきたこと投稿します。
なお、本試験は2020/3/22で終了し、新試験(SAA-C02)に移行されます。※本記事執筆時点では、残り1週間。。。
#### 想定読者
– 新試験移行前の駆け込みで試験に申し込み、3/20-22の3連休での受験予定の方
– 新試験を受験予定であるが、申し込み前で勉強法を検討中の方

似たような記事が既にたくさん存在するため、なるべくオリジナルな記事になるよう努めています。

似たようなラーニングパスの方の自信となれば幸いです。

## テスト概要(新旧比較)

項目 | 旧試験(C01) | 新試験(C02) |
|:———–:|————|:————|
|回答タイプ| 選択問題と複数選択問題| 同左|
|合格基準|720点(100〜1000)| 同左|
| 出題分野1(配分) |回復性の高いアーキテクチャを設計する(34%)|レジリエントアーキテクチャの設計(30%) |
| 出題分野2(配分) | パフォーマ

元記事を表示

【Bubble x AWS】Bubble API Connector + AWS Lambda + Amazon API Gatewayで連携

# はじめに
本記事はBubbleとAWSを連携させるために実施した作業内容を記載しています。

具体的には、Bubbleのプラグイン「API Connector」を使ってAWSのAPI Gatewayにリクエストを投げ、API Gatewayに統合されたLambda関数を実行します。

実装した処理の内容は、Bubble上に設置した入力項目の値をLambdaで受け取り、そのまま値を返してBubble上の表示項目に表示させるという簡単なものです。

# AWSの設定

まずはLambda関数の作成です。次の通りに設定して[関数の作成]ボタンをクリックします。

– オプション: 位置から作成
– 関数名: 任意の名前(今回は`test`)
– ランタイム: 使用するプログラムのランタイム(今回は`Node.js 12.x`)

![APIConnect01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128060/4305ccde-33b8-4f3a-16f1-600c923ce263.png)

元記事を表示

API Gatewayでリクエストして、Lambdaで処理させて、AppSyncで受け取る

# API Gatewayでリクエストして、Lambdaで処理させて、AppSyncで受け取る

この記事は[サーバーレスWebアプリ Mosaic](https://mosaic.w2or3w.com “Mosaic”)を開発して得た知見を振り返り定着させるための[ハンズオン記事](https://qiita.com/w2or3w/items/87b57dfdbcf218de91e2)の1つです。

以下を見てからこの記事をみるといい感じです。

* [AppSyncをフロントエンドとバックエンドで利用する](https://qiita.com/w2or3w/items/70f6b6d8d13b60afaee5)
* [Lambda(Python) + Rekognition で顔検出](https://qiita.com/w2or3w/items/48bc05684c6dafbf5253)

## はじめに
検出した顔を並べて表示しました。次はいよいよ顔にモザイクをかけてゆきます。
処理をキックするためにAPI GatewayとLambdaを利用します。また、実行結果はAppSyn

元記事を表示

AWS FireLensでfluentbitコンテナをカスタマイズする具体的な方法

## ECSのログ事情について

AWSのECSによるコンテナ運用では、ログの出力がデフォルトで`CloudWatch`に限定されています。
これはECSのログドライバが`awslogs`になっているということになりますが、実用面では力不足であることが否めません。
S3やElasticsearchにログを流すには?Datadogなどのサードパーティツールにログを流すには?
解決方法として、AWSの公式で`FireLens`という方法が紹介されています。

– [Firelens の発表 – コンテナログの新たな管理方法](https://aws.amazon.com/jp/blogs/news/announcing-firelens-a-new-way-to-manage-container-logs/)

FireLensは`fluentbit`のコンテナをサイドカーとして起動し、ログの収集を`fluentbit`の機能で実行するというものです。
(`fluentd`も選択できます)

例)今回目指すWebアプリケーションの構成
![firelens.png](https://qii

元記事を表示

CloudflareをALBの前に配置してAzureAD認証してみた

CloudflareをALB(AWS)の前に配置して、CloudflareのAccessでAzureAD認証してみました。
どのクラウドでも実装できるはずなので、ちょっと認証かけたい時などなかなか便利です。

# 構成

![cloudflare.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192584/b7052257-98e6-cf69-a7ad-ffdce3ba33f2.png)

– Cloudflare以外からのアクセスは、ALBのセキュリティーグループでブロックします。
– 自分のCloudflare以外のCloudflareからのアクセスは、Lambdaでjwtを検証してブロックします。

# 必要なもの
– Cloudflareアカウント
– AWSアカウント
– ドメイン2個
– ドメインA
– ドメインB
– ドメインBに対しAWS ACMで取得したワイルドカード証明書1個

# 設定
1. Azure AD認証の対象リソースを作成する
2. Cloudflare

元記事を表示

EC2で稼働するAPIサーバのログをCloudWatchに連携してSlackに通知する | Send logs of EC2 based API server to Slack via CloudWatch


      ₍₍⁽⁽?₎₎⁾⁾

見て!APIサーバーが動いているよ
かわいいね

       ?

お前らがログを取らないので、エラーでAPIサーバーは死んでしまいました
お前らのせいです
あ〜あ

# 現状
2台のEC2(Amazon Linux (2ではない))の上で踊るAPIサーバー (Node製)

# やりたいことざっくり
これまでログ全然取ってなかった()ので、とりあえずサーバサイドのログを良い感じに残すようにしたい。
かつ、緊急度の高いログはすぐに気づけるようにしておきたい。

# 考えたこと
– ログはどこかにためておきたい
– DBにはためたくない
– 常に使うデータでもないし、無駄にたくさんデータを突っ込みたくない
– まずはEC2にためるか
– しかしEC2上にため続けるのは微妙
– 分析しづらい。いざというときにいちいちSSHログインするの?
– 無計画に貯めるとEC2の容量限界に達して死亡する (してたのを前々職で見た気がする)
– そもそもEC2はログを

元記事を表示

EC2にapache + rails環境を構築する

#参考サイト
es2の設定
・[(デプロイ編①)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで](https://qiita.com/naoki_mochizuki/items/814e0979217b1a25aa3e)
・[Linuxグループ作成方法!groupaddで意外とすぐできる](https://eng-entrance.com/linux-user-create-group)
・[usermodコマンドについて詳しくまとめました 【Linuxコマンド集】](https://eng-entrance.com/linux-command-usermod)

apacheインストール
・[Red Hat](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-services)

passengerインストール
・[phu

元記事を表示

AWS認定資格_ソリューションアーキテクト-アソシエイト取得への道のり①

# はじめに
AWS認定資格_ソリューションアーキテクト-アソシエイト取得を目指すためにQiitaを使って勉強内容を記載していこうと思います。

# きっかけ
PLとしてあるシステムの開発に携わる際に、AWSのサービスである下記を用いました。
– EC2
– RDS
– S3
– elasticache
– amazon elasticsearch service
– DMS

当初、AWSに触ったことがなかった私としては??が飛び交っており、正直よくわからないまま「よくわからないな~。。」と思いながら使っていました。
しかし、AWSのサービスを利用していくうちに慣れていき、次第にもっと知りたい、様々なサービスを知り顧客に提案できるエンジニアになりたい。という意識を持つようになりました。
上司と面談した際に、「AWSの資格の勉強してみたら?インセンティブももらえるし」という言葉で資格勉強をすることを決意しました(取得できればお金ももらえるし!)

# 資格本
さっそく本屋にいき「ソリューションアーキテクト[アソシエイト]」の本を買いにいきました。
そこで私は「AWS認定資格試験テキスト

元記事を表示

運用監視の可観測性

AWS Innovate Online Conferenceのセッションより、柳 嘉起氏の「AWS運用監視の実践 システムに問題が発生した時、迅速に対処する方法」のメモ。

##監視の目的
「ユーザー体験を損なわないため」です。

・ユーザーが問題なくサービスを使える
・障害が発生したら迅速に復旧する
これを実現するために、システムの監視を行います。

##可観測性(オブザーバビリティ)
「システムの動作状況を把握できている状態」
「システム運用において、判断に必要な情報がきちんと取得できている状態」
このような状態を可観測性と言います。

クラウド環境は変化が激しく情報が多いため、適切な情報を収集し適切な対応を迅速に行うには、運用監視における可観測性が重要となってきます。

##可観測性の構成要素
以下の3つの要素が可観測性を実現させます。

・ログ(稼働状況などの記録)
・メトリクス(パフォーマンスデータなどの時系列的に管理される定量的な指標)
・トレース(ある特定の処理の流れ、あるいはその流れをとらえる仕組み)

##運用監視の課題
以下の2つは運用監視においてよくあることかもし

元記事を表示

ALBはなぜ3AZにするべきなのか

# はじめに
2019年8月に発生したAWSの東京リージョンでの障害は記憶に新しいことかと思います。
[東京リージョン (AP-NORTHEAST-1) で発生した Amazon EC2 と Amazon EBS の事象概要]
(https://aws.amazon.com/jp/message/56489/)
マルチAZで構築していても影響があった方も多かったと思います。
その中でALBにおいて、継続してサービスを提供するには`2AZより3AZにすべき`という意見が見られたので、なぜ3AZにしなければならないのかを調べてみました。

なおAWSについて勉強し始めたばかりなので、間違い等あればご指摘ください。

# ALBは2AZを指定する必要がある
![スクリーンショット 2020-03-14 17.03.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402550/94ff3790-1af1-c22d-d54f-5232cd51892e.png)
ALBでは2つ以上のAZのサブネットを設定する必

元記事を表示

CloudWatch ダッシュボードを定期的にSlack通知する(ソース付き)

# はじめに

最近TypeScriptが楽しいので、実益兼ねて作ったものをご紹介します

# どんなものを作るか

AWS上で[サーバレスに構築したLP](https://qiita.com/yktakaha4/items/bc26c38baea56f244c19)を個人で開発・保守・運用しています?‍♂️

今まで、メトリクスの異常値(CloudFrontのリクエスト数増加、Lambdaでのエラー発生、請求金額など)については、`CloudWatchアラーム -> SNS -> Chatbot -> Slack` という経路で適宜通知を行っていたのですが、
平常時の値についてはダッシュボードを作成したもののあまり見れておらず、Slack上でもう少し手軽&こまめに確認したい…と考えていました

AWS SDKには[GetMetricWidgetImage](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricWidgetImage.html)という、メトリクスを画像出力できると

元記事を表示

Amazon Kinesis Video Streams を使ってみた

[Amazon Kinesis Video Streams](https://aws.amazon.com/jp/kinesis/video-streams/) は、AWS のビデオ配信サービスです。

## 料金

参考) [料金](https://aws.amazon.com/jp/kinesis/video-streams/pricing/)

東京リージョンの場合は以下のような感じです。1GB は 2Mbps の動画で 1 時間ぶんくらいです。意外と安い。

|項目|単価|
|:–|:–|:–|
|配信 (→Kinesis)|0.01097 USD/GB|
|閲覧 (Kinesis→)|0.01536 USD/GB × セッション数|
|データ保存|0.02500 USD/GB•月|

このほかにインターネットへのデータ転送料金(0.084~0.114 USD/GB)がかかります。インターネットからの受信、及び同一リージョン内のデータ転送料金はかかりません。データの保存期間は 0 から設定可能なので、ライブ配信なら不要。

小規模な配信なら十分安いのではないかと。

#

元記事を表示

AWS Cloud9上でPostgreSQLをソースからインストール

### 概要
 AWS Cloud9 上でpostgreqlとdeviseを使ってRailsアプリを開発をしようとした際に、
postgresqlのバージョンが古いと怒られたのでやってみたことをメモ。

– 環境
– AWS Cloud9
– Amazon Linux AMI release 2018.03
– postgre
– postgres (PostgreSQL) __9.2__.24

### ソースからコンパイル
下記を順に実行
一応コンパイラからインストール

“`
$ sudo yum install -y gcc readline-devel zlib-devel
$ wget https://ftp.postgresql.org/pub/source/v10.4/postgresql-10.4.tar.gz
$ tar -xf postgresql-10.4.tar.gz
$ cd postgresql-10.4
$ ./configure
$ make -C src/bin
“`
ここでエラーが出るの

元記事を表示

Lambdaのデフォルトログを出力させずに意図したログのみを出力する

Lambda実行時にデフォルトで表示されるログを非表示にしつつ、アプリケーションで意図したログだけをCloudWatch Logsに出力する方法です。

CloudWatch Logsの料金は高いので、なるべく保存するログを減らしたいという目的で対応しました。

## 通常のログ出力(何もしない場合)
まずは何もしない場合です。

今回のテストで利用するLambdaです。
Node.js 12.X です。

“`javascript:Lambda
exports.handler = async (event) => {
console.log(‘log test’);
const response = {
statusCode: 200,
body: JSON.stringify(‘Hello from Lambda!’),
};
return response;
};
“`

出力されるログは以下のようになります。

“`console:
START RequestId: XXXXXX Version: $LAT

元記事を表示

kubernetesとEKS早わかりまとめ

## 概要
– 自分のkubernetesの理解促進のために、kubernetes(とAWS EKS)に関することをざっとまとめています

## kubernetesとは
– ものすごく雑にいうと、複数コンテナのオーケストレーションを管理するためのシステムであり、リモート環境上で複数コンテナに対してdocker-composeみたいに管理できる代物
– wiki曰く、
– コンテナ化したアプリケーションのデプロイ、スケーリング、および管理を行うための、オープンソースのコンテナオーケストレーションシステム
– Kubernetesの目的は、「ホストのクラスターを横断してアプリケーションコンテナを自動デプロイ、スケーリング、操作するためのプラットフォーム」を提供することとされている
– Docker単体では、複数のDockerコンテナ群(マイクロサービスの集まり)を管理するのが難しいという欠点があるので、個々のDockerコンテナをオーケストレーションするために使われてる
– 元々はGoogleが作ってたけど、今ではCNCF(Cloud Native Computing Found

元記事を表示

AWS DynamoDB(NoSQL)のテーブル定義書について

アトリビュートがアイテムごとに違うので自由度が高い。
その分、テーブル定義書が書きにくいなーと思いました。

サンプルのテーブル定義書をみても、
内容が全然頭に入ってこないし(笑)

自分で考えてみました。

##記入する項目は以下
テーブル名
モード(オンデマンド or ・・・)
ポイントインタイムリカバリの有無
暗号化
アトリビュート(日本語)
アトリビュート
アトリビュートを登録するプログラム一覧

プライマリキーの印(パーティションキー、ソートキー)
グローバルインデックスの印(パーティションキー、ソートキー)
ローカルインデックスの印(パーティションキー、ソートキー)
登録値サンプル
備考
TTLの項目に印
インデックスの射影項目の記載

さ、これでファイル作ってみろって話ですが、一旦ここまでです。

元記事を表示

EC2インスタンスを立ち上げた時に真っ先にやること + nginxのインストール

railsアプリをEC2を使って立てていて、その途中のメモ書きです。
インスタンス立ち上げ後に実行するコマンドを書きなぐりました。

# アップデート
とりあえずアップデート

“`
$ sudo yum -y update
“`

# 作業用ユーザーの作成
railsアプリ用のユーザーを作成します。

“`
$ sudo useradd -m hoge_user
$ sudo passwd hoge_user
“`

# パッケージのインストール
使いそうなやつを適当にインストールします。

“`
$ sudo yum install -y git gcc-c++ glibc-headers openssl openssl-devel readline readline-devel zlib zlib-devel bzip2 tar make wget
“`

# タイムゾーン設定

“`
$ sudo vi /etc/sysconfig/clock
“`

タイムゾーンを”UTC”から”Japan”に変更します。

“`sh:clock
# ZONE=”UTC”

元記事を表示

AWS EC2 にローカルのキーペアを登録する

マネジメントコンソールや CLI でキーペアが作成できますが、初回のみとはいえ秘密鍵を転送するのはあまり気持ちが良くないので、ローカルで作成した SSH 鍵を登録する。

“`shell
KEY_NAME=$(whoami)@$(hostname -s)
aws ec2 import-key-pair –key-name ${KEY_NAME} –public-key-material file://~/.ssh/id_rsa.pub
“`

元記事を表示

Rails アプリで S3 の権限制御を外さずに署名付きURLの署名を省いてファイルアクセスする方法を調べた

## はじめに

Rails アプリを用いて、S3 の権限制御を外さずに署名付きURLを省いてアクセスする方法について調べたので、その方法をまとめておきます。

## 背景

S3 バケット内のファイルに権限制御を入れ、そのファイルに対してアクセスするとき、署名付きURLを用いることがあると思います。こんなURLですね。(クレデンシャルはマスクしています)

`https://example.s3-ap-northeast-1.amazonaws.com/foo/bar/piyo.txt/?X-Amz-Expires=-0000000000&X-Amz-Date=0000000000000000&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AAAAAAAAAAAAAAAAAAAA/00000000/ap-northeast-1/s3/aws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000

元記事を表示

【EC2】本番環境で反映されない!?本番環境エラー時log確認系コマンド【リリース前】

こんばんみ

おささです

さ、前置きはダラダラ書かず

log確認行きまっしょい!

##EC2関係のエラーで役立つlog確認コマンド

まずはEC2サーバーにログインしてね!

その後

[ec2-user@ip-アドレス〜]$ **cd /var/www/確認したいリポジトリ名/current/log**

[ec2-user@ip-アドレス log]$ **ls**

[ec2-user@ip-アドレス log]$ ls
**production.log unicorn.stderr.log unicorn.stdout.log**
   ↑        ↑         ↑

上記、3つのlogが出てきたら準備OK!
(これらがなければ、本番環境構築時のミスがあるかも?)

あとは、確認したいlogの前に **less** をつけて、これらを確認!

【例】→ [ec2-user@ip-アドレス log]$ **less production.log**

ちなみに***production.log***を見れば、
 ・syntax errorなのか
 ・method

元記事を表示

OTHERカテゴリの最新記事