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

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

AWS認定データベース専門知識(DBS)を、ほぼぶっつけ本番で取得したやったことまとめ

# はじめに
AWS認定データベース専門知識(DBS)について、受験者数の絶対数が少ないのか試験対策に関する参考記事の投稿が少なく情報収集に苦労しました。

今回、ほぼぶっつけ本番で取得できた試験準備のコツなどについてまとめてみました。データベース専門知識に関わるAWS関連サービスのイメージを掴んでいただければ幸いです。

# 本記事の主な対象者
– AWS認定の他の試験区分は取得済みで、データベース専門知識の受験を検討している方
– 取得に向けて有効な学習方法などの情報収集したい方

# 筆者のAWS認定履歴

|AWS認定 |取得日 |
|—|—|—|
|ソリューションアーキテクト – アソシエイト |2018-05-13|
|デベロッパー – アソシエイト |2018-06-03|
|SysOpsアドミニストレーター – アソシエイト | 2018-06-10|
|ソリューションアーキテクト – プロフェッショナル |2018-07-29|
|DevOpsエンジニア – プロフェッショナル |2018-08-26|
|ビッグデータ専門知識 |2019-

元記事を表示

AthenaにてShow partitionsが失敗する

#現象

AWS Athenaにて特定テーブルのパーティションが多い場合、Show Partitionsにて、
パーティションの一覧を取得しようとすると、`internal error`で失敗することがあります。

`SHOW PARTITIONS {database}.{table_name}`

“`
Your query has the following error(s):

[ErrorCode: INTERNAL_ERROR_QUERY_ENGINE] Amazon Athena an experienced an internal error while executing this query. Please contact AWS support for further assistance. You will not be charged for this query. We apologize for the inconvenience.
This query ran against the “xxx” database, unless qualified by

元記事を表示

[Terraform]ステートファイルを共有管理する

# 概要
`terraform apply`を実行した際に作成されるステートファイルをクラウド上で管理する方法を記載します。
AWS上のリソースを`terraform`で管理しているケースを想定しています。

## 管理方法
`apply`を実行した際の現在の結果を記録しているファイルが`tfstate`ファイルとなります。(このファイルを見て差分を割り出してくれていますね)
デフォルトではローカルに生成されますが、チーム開発を行っていくにあたって特定の人物のローカルにしかないと困ってしまいますね。
そこで通常`tfstate`ファイルは、以下のように管理します。

– Cloud上にステートファイル管理用のバケット(`ECS`や`GCS`)を作成
– Terraform Cloudを利用

### AWS S3 Bucketの利用
管理対象となるAWS上で手軽に管理します。
なお、**ステートファイルを保管するバケット自体は`terraform`での管理するインフラストラクチャ外にあること**が理想です。([公式ドキュメント](https://www.terraform.io/doc

元記事を表示

FlutterとAWSで始めるサービス開発 (6)AWS Cognito 「パスワードを忘れた方はこちら」

# はじめに
前回の「[(5)AWS Cognitoでログイン](https://qiita.com/makotomi/items/a0b05e8819270072780b)」では、Cognitoを使ってログイン処理を作成しました。今回は、ユーザーがパスワードを忘れてしまった場合の対処法として一般的な「パスワードを忘れた方はこちら」の処理を作っていきたいと思います。ようするにユーザー自身でのパスワードをリセットする機能になります。

# 「パスワードを忘れた方はこちら」の処理の流れ
1.ユーザーIDとして登録したメールアドレスを入力してもらいます
2.入力されたメールアドレスにパスワードリセット用のコードを送信します。
3.ユーザーは受信したコードと新しいパスワードを入力します。

# 前回からの変更点
前回のコードからの変更点を順に説明します。

## MaterialAppのroutesにパスワード忘れた方こちら画面用の定義を追加

__’/ForgotPassword’__という名前で定義を追加しました。

“`dart
routes:

元記事を表示

LambdaをCanaryリリースするSAMテンプレートに自動ロールバックを組み込む

# はじめに
LambdaのCanaryリリースは非常に便利。自動でトラフィックコントロールをして様子を見ることができる。
しかし、クラウドネイティブなリリースの完成は、万が一の状況を検知した場合は自動でロールバックすることだ。
今回は、過去に作ったSAMテンプレートに自動ロールバックを組み込んで実際の動作を確認する。

# 前提条件
– SAMテンプレートでCanaryリリースの設定を書いたことがあり、ある程度内容を理解している。特に、“`AutoPublishAlias“`と“`DeploymentPreference“`の概要と、“`LambdaPermission“`を設定しなければいけない理由が分かっているのが望ましい ⇒ [過去の記事](https://qiita.com/neruneruo/items/73906cdc3c2aa699644f)でも紹介してるよ!
– CloudWatchアラームをなんとなく分かっている

# SAMテンプレートを書く前に
ロールバックの設定は、SAMテンプレートの“`AWS::Serverless::Function“`リ

元記事を表示

AWS SAA対策メモ(データ分析サービス編)

SAA対策の自分用のメモ。
どんどん更新して加筆修正していく予定。

## Kinesis
大量の**ストリーミング**の収集処理を行う。IoTなどからのリアルタイムデータを分析。
**Kinesis Data Streams**
ストリーミングデータをリアルタイムで保存。EMRやLambdaで処理させる。
DBの負荷分散のため、大量のデータを**シャード**という単位で分割し、複数ノードで並列処理を行う。
シャードは時間あたりの処理数に制限あり。シャード数を増やすことでストリームデータの並列処理ができ、効率よくストリーミングできる。

**Kinesis Data Firehose**
データ蓄積に向けてデータ変換や別サービスへの配信を行う。ストリーミングデータをデータレイクやデータストア、分析ツールにロード。ストリーミングデータをキャプチャして変換し、Amazon S3、Amazon Redshift、Amazon Elasticsearch Service、Splunk にロードして、BIツールでほぼリアルタイムに分析可能

**Kinesis Data Analytics**

元記事を表示

AWS SAA対策メモ(構成管理 & メッセージ編)

SAA対策の自分用のメモ。
どんどん更新して加筆修正していく予定。

# 構成管理系
## CloudFormation
**インフラリソースを自動でプロビジョニング**
テンプレート:プロビジョニングしたいコードを記述(JSON or YAML)
スタック:テンプレートによってプロビジョニングされるリソース
テキストエディタで書くか、CloudFormationデザイナーを使用する

## Elastic Beanstalk
**webアプリやサービスをデプロイし、実行環境の管理**も簡単にできる。

## OpsWorks
**サーバーの構築の自動化**をする
**Chef**や**Puppet**が利用可能

# メッセージ系
## SNS
通知サービス

– **パブリッシャ**
メッセージ送信者

– **サブスクライバ**
メッセージ送信者

– **トピック**
アクセスポイント、通信チャンネル

パブリッシャが作成したトピックをサブスクライブすることで、サブスクライバはメッセージを送受信可能。サブスクライバにはHTTP(S), Email, SQS, Lambdaがあ

元記事を表示

EC2インスタンスを起動してからgithub連携できる様になるまでの手順

## はじめに
EC2インスタンスを起動してからgithubと連携できる様になるまでの手順を、自分が疑問に思ったことをQ and A形式で掲載します。
至らない点も多々あると思いますがよろしくお願いします!

## 対象者
– 初学者
– AWSを学習中の方
– シェル(ssh)でAWSのEC2インスタンスに接続できた方

## この記事で得られること
– AWSでgithubと連携するまでの手順
– パッケージマネジャ(yum)の概要

## 開発環境
– Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type
– ngnix
– ruby 2.7.1
– rails 6.3.1

## 前提
Q.なぜ連携(なぜssh認証する)必要があるのか?
A.githubでは自分のアカウントを使用してサーバーにユーザーとしての認証を行なっています。
同様に、EC2インスタンスという、githubから見て「誰なのか分からない・・・」という状態を「誰なのか分かる!」という状態にします。

また、git clone中にセキュリティ観念上、悪意あるデータを通

元記事を表示

AWS SAA対策メモ(CloudWatch, CloudTrail & Config編)

SAA対策の自分用のメモ。
どんどん更新して加筆修正していく予定。

## CloudWatch
**CloudWatch**
システムやリソース情報の収集・監視・可視化を行う
標準メトリクス CPU使用率など
カスタムメトリクス CloudWatchエージェントをサーバーにインストールして設定する

プラン

– 基本モニタリング 無料 1分間隔
– 詳細モニタリング 有料 5分間隔

**CloudWatch Events**
リソース監視を行い、あるイベントをトリガーにアクションを実行する。
例 スポットインスタンスが強制終了されたら、Lambdaを実行して新たなスポットインスタンスを起動
イベント 対象リソースの変化
ターゲット 実行する処理
ルール 定義したイベントのイベントリソースとターゲットのアクションの組み合わせ。

**CloudWatch Logs**
ログの収集と管理。
CloudWatch Logs Metric Filterでフィルタリングが可能。
Elasticsearch Serviceと連携し、Kibanaでビジュアル化可能。

## CloudTrai

元記事を表示

X-RayのSAMとLambda内への組み込みとjestでのモック化

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40049/a3cf8470-1e9b-e715-9505-7a6f5a123e3c.png)

# 概要

SAM(Serverless Application Model)を使ったnode.jsのLambdaプログラム等に対して、
パフォーマンス計測等を行いX-Ray機能の組み込みについて説明します。

また、X-Ray機能を組み込むと、aws-sdk-mockを使用したユニットテストでは
通らなくなるので、aws-xray-sdkのモック化についても説明します。

# SAMへのX-Rayの追加

API Gateway – Lambda – DynamoDBのような構成だとして、
SAM(Serverless Application Model)へのX-Rayの組み込みは、
以下のように、SAMのテンプレーレートのGlobalセクションの
`Function` に対して、`Tracing: Active`と
`Api` に対して、`T

元記事を表示

Amazon ECSで、サービスが参照するタスク定義のリビジョンのみを更新する

# What’s?

こういうことがやりたかった、と。

* Amazon ECSで、サービスが参照するタスク定義のリビジョンを更新したい
* タスク定義の中身は特に変えたくなくて、とにかくリビジョンだけ上げたい

参照するコンテナイメージが`latest`などで同じ時に新しいイメージを使いたい場合や、参照しているParameter Storeの値が変わった場合などに。

ただ、ここに載せている方法は`deploymentController`が`ECS`の場合のみです。

# 環境

実行環境は、こちら。

“`shell
$ aws –version
aws-cli/2.0.28 Python/3.7.3 Linux/4.15.0-109-generic botocore/2.0.0dev32
“`

# コマンド

`aws ecs describe-task-definition`コマンドの結果から、不要なものを削って`aws ecs register-task-definition`コマンドに流し込みます。

“`shell
$ aws ecs describe-

元記事を表示

【AWS DynamoDB】DynamoDB基本構築

##目標
AWSのDynamoDBを構築し、簡単なテーブル操作をAWSコンソール及びAWS CLI上で試す

##DynamoDBとは
AWSが提供するキーバリュー型のマネージドデータストアサービスです。
データが3つのAZに分散して格納されるため耐久性が高く、格納容量に上限がありません。
また、キーバリュー形式でレイテンシーが低いため、キャッシュやWEBセッションの格納先としても利用されます。

より詳しくは以下記事が参考になります。
[【AWS】今更ながらDynamoDB入門](https://qiita.com/maaaato/items/4a0f5c1dcc78677973c9)

##参考AWSドキュメント
[NoSQL テーブルを作成してクエリを実行する](https://aws.amazon.com/jp/getting-started/hands-on/create-nosql-table/)

##作業の流れ
| 項番 | タイトル |
|:—-:|:————-|
| 1 | [DynamoDBを構築する](#1dynamodbを構築する) |
|

元記事を表示

データ分析の基礎とデータ分析で使うAWSサービス

# データ分析基礎
## データレイク
AWSでは、規模にかかわらず、すべての構造化データと非構造データを保存できる一元化されたリボジトリと定義している。
### 特徴
– 格納できるデータ容量に制限がない
– 格納できるデータの形式に制限がない
– どこにどのようなデータが入っているか管理されているので、必要なデータを探し、取り出すことができる

## データウェアハウス
AWSでは、十分な情報に基づく優れた意思決定を行うための、分析可能な情報のセントラルリポジトリと定義している

集約されたリレーションデータとしてデータを保持。

## ETL(Extract-Transform-Load)
ETL:データウェアハウスを構築するために必要な前処理。

### Extract(抽出)
データベースやデータレイクから、分析に必要なデータを抽出する処理。
分析に使わないデータは抽出しないことが大事。

#### 分析に使わないデータを抽出する
– 変換処理やロード処理に不要な性能的、時間的コストがかかる
– データ分析者がデータの要・不要を選択する負担が発生

### Transfor

元記事を表示

AWS SDK for JavaScriptでS3 のプライベートバケットから画像を取得する

## 前提
– [AWS SDK for JavaScript]([S3](https://www.notion.so/S3-9de887e1a20b444a9801046836683eac))がインストールされていること。

## 処理
`aws-sdk`を読み込む

“`
const AWS = require(‘aws-sdk’)
“`

インスタンス化

“`
const s3 = new AWS.S3({
accessKeyId: ‘xxxxxxxxxxxxxxxxx’, //アクセスキー
secretAccessKey: ‘xxxxxxxxxxxxxxxxx’, //シークレットアクセスキー
region: ” //リージョン
})
“`
[getObject](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getObject-property)のパラメーターを用意

“`
const params = {
Bucket: “buket”, //バケット名
Ke

元記事を表示

SSM Session Manager で ログ取得ができない時に確認すること

# はじめに
AWS Systems Manager のSession Managerを利用してLinuxの操作ログを取得しようと思います。
うまくログが取れない場合に確認するべき点をメモしておきます。

## 利用サービス
以下のサービスを利用します

– AWS Systems Manager(以下SSMと表記)
– Session Manager(以下セッションマネージャーと表記)
– EC2(Linux)
– Windowsは検証していませんが、セッションマネージャーから利用できるPowerShellの結果も同様になることが想定されます
– S3
– ログの保存先に利用します
# 本題
ログを保存するにはEC2側でS3にログを書き込むための権限が必要です。

## EC2に割り当てる権限
EC2には以下の権限を持つIAMロールを割り当てます

– セッションマネージャーを利用するための権限
– AmazonSSMManagedInstanceCore(AWS 管理ポリシー)
– 権限過剰ですがEC2の管理に必須の権限と認識している

元記事を表示

EC2にデプロイするも、エラーログに何も表示されない時の可能性

#環境
Ruby 2.5.1
Rails 5.2.4.3

[こちら](https://qiita.com/Yuki_Nagaoka/items/dbb185feb6d4f051c2f2)の記事を参考にAWSにデプロイする過程を終えたのですが、ブラウザからアクセスすると「このサイトに接続できません」となり失敗してしまう…

(注)参考にさせて頂いた記事は大変分かりやすく、記事のせいではありません。

何がダメなのか、記事を参考にログを確認してみます。

“`:サーバー環境(/var/www/rails/アプリ名/)
cd log
tail -n 30 production.log
“`

スクリーンショット 2020-06-26 16.18.13.png

何故かログを見てもエラーのようなものが見当たりません

元記事を表示

AWS Directory Service について

# AWS Directory Service について
今回はAWSがフルマネージドで提供するActiveDirectory(以下AD)について、まとめます。
ユーザの操作制御、データへのアクセス制御などの他にAWSサービスでもAD連携必須というものもあるので、AWSでシステム構築する上で避けては通れないジャンルだと思われます。
私自身AD構築を進める際に色々と調べましたが「初心者向けの情報って全然ないじゃん!」(~~設定方法をPowershellのコマンドレットで書くんじゃない!~~)ってどこに向けたらいいか分からない怒りを覚えた記憶があります(笑)。

# AWS Directory Service とは
[AWS公式ページ](https://docs.aws.amazon.com/ja_jp/directoryservice/latest/admin-guide/what_is.html)
公式には以下のように説明されております。
>AWS Directory Service は、既存の Microsoft AD やライトウェイトディレクトリアクセスプロトコル (LDAP)

元記事を表示

AWS LambdaからRDSへの接続はアンチパターン?Lambdaのコールドスタートとは?対策とは?

# VPC LambdaからRDSの呼び出しはアンチパターンだったらしい
Lambdaを起動すると、VPCLambdaで起動する。
VPCLambdaは以下の点で、アンチパターンと言われていた
– 特定の状態において、遅延が発生(ENI作成に伴うコールドスタート)
– Lambdaの同時実行によりVPC内のプライベートIPを消費するため、アドレス管理が必要。
– RDSの最大同時接続数以上に、Lambdaが起動した場合は、接続エラー。

だが最近
[Hyperplane ENI](https://aws.amazon.com/jp/blogs/news/announcing-improved-vpc-networking-for-aws-lambda-functions/)
[RDS Proxy](https://aws.amazon.com/jp/rds/proxy/)
のアップデートがあり、解消されつつある。

# Lambdaコールドスタートとは?
Lambdaには、コールドスタートという概念が存在する。
コールドスタートとは、Lambdaの初回実行次に内部的に以下の処理が行

元記事を表示

AWS上でPHP7.4が動くEC2を作った

# 概要
AWS上でPHP7.1が動いているEC2を保有しています。
先日、PHP7.1のサポートがとっくに切れていることを知りまして、バージョンを上げなきゃなと思った次第です。
https://www.php.net/supported-versions.php

# 現在の管理
AWSはterraformで管理されていて、EC2内部はansibleで管理しています。

“`yaml:main.yml
– name: Install PHP
yum: name={{ item }} state=present enablerepo=epel
with_items:
– php71
– php71-fpm
– php71-mysqlnd
– php71-mbstring
– php71-gd
– php71-bcmath
– php71-devel
“`

# 当初の発想
適当にphp71のところをphp74にすれば行けるかなと思ったのですが、そもそもepelにはPHP7.3までしか用意がないようでした。

“`
$ yum list | gr

元記事を表示

AzureのAWSとの違い(リージョン,NW編)

## はじめに

AWSエンジニアですが、諸事情によりAzureも勉強しています。
細かい所を見ると結構違って、理解するのに苦労したのでまとめてみました。

私もまだ知識が浅いので、間違いや分りづらい点、また書いて欲しい点などありましたらコメント等頂けると幸いです。

## 前提知識

– [Microsoft Learn – Azureの基礎](https://docs.microsoft.com/ja-jp/learn/paths/azure-fundamentals/)
– [AWS サービスと Azure サービスの比較](https://docs.microsoft.com/ja-jp/azure/architecture/aws-professional/services)

## リージョンペア

AWSと違い、ペアとして定義されているリージョンが存在します。
[ビジネス継続性とディザスター リカバリー (BCDR):Azure のペアになっているリージョン](https://docs.microsoft.com/ja-jp/azure/best-practices-av

元記事を表示

OTHERカテゴリの最新記事