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

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

AWSを始めよ-勉強のガイド

1. [AWS 認定試験に備える](https://aws.amazon.com/jp/certification/certification-prep/)

元記事を表示

AWS EC2のDedicated Hostsとハードウェア専有インスタンスの違い

## 概要

EC2における以下2つの違い。ソリューションアーキテクトの模擬試験などで頻繁に出るが毎回忘れるため自分用メモ。

– Dedicated Hosts
– ハードウェア専有インスタンス(Dedicated Instances)

## 要点

– Dedicated Hosts、ハードウェア専有インスタンスともに__ハードウェアを専有できる__オプション。
– Dedicated Hostsは__どのハードウェアで起動するかを固定すること__ができる。
– 一方、ハードウェア専有インスタンスは__ハードウェアの固定はできない。__

## 用途
– Dedicated Hostsは、__ソフトウェアライセンスがハードウェアに依存する__場合や__BYOL(Bring Your Own License)__で利用。
– ハードウェア専有インスタンスは、__コンプライアンス要件などで他人と異なるサーバで起動する必要がある__場合などに利用。

## 補足

公式ドキュメントにより詳細な違いがある。今回はわかりやすい部分を記載した。
[Dedicated Hosts

元記事を表示

OAuth認証アプリのCloudFront設定でハマった話

# はじめに
独自ドメインの小さなWebアプリを、AWSで以下のお安い構成でセットアップしてみました。

– Route53 (独自ドメインを管理)
– AWS Certificate Manager (ACM。SSL証明書を管理)
– CloudFront
– EC2

CloudFrontはキャッシュ用のエッジサーバとしてではなく、ACMと紐付けてSSLを利用したいため配置しています。
しかし、この構成にしたところアプリに実装していたOAuth認証が急に動かなくなりました。。。

最終的にCloudFrontの設定を見直して解決できたので、忘れないようにメモとして残しておきます。
同じように悩んだ人の参考になれば幸いです。

最終的な設定だけ見たい方は、[まとめをどうぞ](#まとめ)。

# GoogleのOAuth認証が通らなくなった
もともと、静的なWebコンテンツを `CloudFront+S3` の構成でSSLでホストしていたため、それに倣って` CloudFront+EC2` もセットアップしてみました。
**CloudFrontのキャッシュ設定はほぼデフォルトのまま**

元記事を表示

ec2にdocker環境を構築してみた

railsアプリをec2を利用して本番環境でデプロイした際に、dockerを導入してみました。
ec2にdocker及びdocker-composeをインストールするには以下を参考にしました。
https://qiita.com/y-do/items/e127211b32296d65803a

ec2にsshログインし、mysqlにマイグレーションするまでは以下が詳しく書いてあります。
https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce

## MySQLの設定以降
amazon linuxではデフォルトがmariadbのため以下のエラーが出ます。

“`
$ sudo service mysqld start
Redirecting to /bin/systemctl start mysqld.service
Failed to start mysqld.service: Unit not found.
“`
該当する方は以下を参考にmysqlをインストールしてください。
https://qiita.com/h

元記事を表示

AWS LambdaからAWS AppConfigを呼び出してみた

## 1. 初めに
皆さん、AWS AppConfigを利用されていますか? AWS AppConfig は 2019年12月にリリースされた機能で、[こちらのブログ](https://aws.amazon.com/jp/blogs/news/safe-deployment-of-application-configuration-settings-with-aws-appconfig/)が出た際には私は記事を何度も読み直し、一番の売りは何だろう?他のデータストア(例えば、DynamoDBやParameter Store)に設定情報を格納するのと何が違うのだろう?と考えたものです。

その AWS App Configについて簡単にご紹介したいと思います。

## 2. 要約
– より安全なデプロイをしたい場合に活用すると効果的
– 設定はアプリ側でキャッシュすることでレイテンシーやAWS サービス利用料の削減につながる
– 設定のリリースにカナリア・リニアデプロイを実現

## 3. AWS App Configとは
冒頭にもリンクを付けましたが、AWS AppConfigは、

元記事を表示

TwitterAPIをServerlessを使ってLambda + Nodejsで動作させてみた

# 概要
TwitterApiを使ってあれこれしたいと思ったので動かすまでの手順をまとめてみた
Nodejsで作成した理由はなんとなくフロントエンドと同じjavascriptでやれたら楽かなーと思ったぐらいです。

# 基本セットアップ
ServerlessやNodejsなどのインストールは以前私が書いた記事ですが、こちらが参考になるかと思います。
https://qiita.com/tama0571046/items/cfe262b002f6434b915e

TwitterAPIを使用するまでの流れは記事がたくさんありますので、調べるとすぐに出てくるかと思います。

私が参考にしたサイト

2020年度版 Twitter API利用申請の例文からAPIキーの取得まで詳しく解説

# Serverless
### ServerlessをAWSの連携
まずはAWSにログインして[IAM]の[ユーザー]からアクセスキーとシークレットキーを取得してきてserverlessに教えます

“`zsh
sls config credentials –p

元記事を表示

クラウドインフラ(AWS)を使う上で重要だと思ったこと

AWSなどのクラウドインフラを初めて使う人に向けて、個人的に重要そうだなと思うコンセプトとかを紹介する。

一般的なアーキテクチャをクラウドインフラで構築すること自体はそんなに難しくない(極論、webコンソールからポチポチすれば作れる)が、思想や背景などを理解していないと運用で困る羽目になるので、その辺りを理解することが重要だと考えていて、その手助けになれば幸いである。

## 1. マネージド・サービス
クラウドインフラでは基本的に、そのサービス自体の管理は全てクラウドベンダーがやってくれる。

クラウドインフラの利用者は面倒なミドルウェア/セキュリティのアップデートやログの出力やデータのバックアップなどをほとんど気にする必要がない。基本的にはクラウドベンダーが勝手にやってくれるor更新用のボタンをwebコンソールから押せば対応が完了する。

クラウドインフラ利用者にとっての利点としてはざっくり以下

– 煩雑なインフラ管理を任せられる
– インフラ管理の歴史はまた別の機会に紹介…
– 基本的にデフォルトで最適化されたサービスを利用できる
– 自分たちは貴重な時間をアプリケー

元記事を表示

CodeBuildのテストレポート機能でコードカバレッジレポートがサポートされたから、また使ってケチつけてみた

# TL; DR

結論から言えば、オススメです。
下記のような画面を見て、問題なさそうだと思った方は、是非とも使ってみてください。

レポートグループの画面

現在では、未実行ラインを表示/確認ができません。
しかし、実装される未来は近い気がします。

AWS様ありがとうございます、一生ついていきます!
ですが、あともう一声、お願いします!!!

# はじめに

2020年5月22日になり、テストレポート機能が一般公開されました。

[AWS CodeBuild テストレポートの一般公開が開始](https://aws.amazon.com/jp/about-aws/whats-new/2020/05/aws-codebuild-test-reporting-is-now-generally-availab

元記事を表示

VPC内でLambda to Athenaを実現する

# はじめに
VPC内で全体的に終わらせる方法がまとまってなくてめちゃくちゃハマったので、ここでまとめておきます。

# 今回のゴール
VPC内にあるAthenaに対してLabmda上からクエリを正常に投げて結果を取得する。
Security面の細かい話はここでは触れないので、ご了承ください。

# Athenaを使えるようにする

## Ahtenaの前にS3の準備
AthenaはS3上のファイルに対してSQLを投げれる仕組みみたいな感じのサービスになっています。
なので、まずはS3の準備を行います。

と言っても普通にバケットを作成するだけです。
ただし、今回はVPC内で全てを完結させたいので、「パブリックアクセスをすべてブロック」で作成するものとします。

## S3のVPCエンドポイントを作成する
S3にVPCから繋ぐにはエンドポイントが必要なので、VPCサービスからVPCエンドポイントを作成します。
この際のVPCには今回閉じ込めておきたいVPCを指定しておいてください(この後特に言及しませんが、VPC指定する際は全てこのVPCを設定してください)。

サブネットは分かるまで

元記事を表示

[感想]AmazonWebServicesエンタープライズ基盤設計の基本

## 予備知識レベル

私の知識レベルとしては、このような感じです。

– 2019年よりサーバサイド開発
– 下記のAWS関連の書籍を読んだ
– Amazon Web Services 基礎からのネットワーク&サーバー構築
– AWSをはじめよう
– 業務ではほぼAWSは触らない
– プライベートで開発したシステムをAWSでデプロイしたことはある

上に挙げた2冊のAWS書籍は、いろいろな方がおすすめしているのを見て、amazonでも評価が高かったので購入しました。どちらも予備知識がなくても読み進められるように丁寧に解説されていて、最初の1冊としては大正解だったと思っています。

今度はブログシステムをAWS上で動かすだけでなく、ストレージの使い分け、負荷分散の方法、オートスケーリングの構築方法などを学びたいと思い、掲題の書籍を購入しました。

## 感想

基板設計のベストプラクティスだけでなく、なぜそれがベストプラクティスなのかが丁寧に解説されていて、理屈がないと覚えられない自分にとっては大変ありがたかったです。

それまでAWSの認定資格には興味をもったことがなかったの

元記事を表示

【初学者向け】AWSでSSL化する方法

# はじめに
ポートフォリオをAWSを使いSSL化を目的にやっています。既にEC2を用いてデプロイが済んでいてRoute53でドメインを取得している前提で勧めさせていただきますのでご了承下さい。

まだAWSを用いてデプロイをされていない方は[世界一丁寧なAWS解説。](https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce)の下準備からデプロイ2までを済ませて下さい。
ドメインの取得が済んでいない方は[こちら](https://qiita.com/monsieur39/items/d2eaedfe217420435a4f)の記事を参照下さい。私が書いたものですが、結構手抜きで申し訳ございません、、、

# SSLサーバー証明書とは
この辺は知らなくても真似して行けば問題なく出来ますが、知らずにやるのと知った上でやるのでは違うと思うので書いておきます。

SSLとは、簡単に言うとWebサイトとそのサイトを閲覧しているユーザとのやり取り(通信)を暗号化するための仕組みです。
スクリ</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>AWS</div>
<div class='tag-cloud-link'>SSL</div>
<div class='tag-cloud-link'>SSL証明書</div>
<div class='tag-cloud-link'>初学者向け</div>
<div class='tag-cloud-link'>ALB</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/monsieur39/items/272be992f87ff2f81e7e'>元記事を表示</a></div>
<h3 id=AWS CLIでポリシーのjsonファイルを指定するとMalformedPolicyエラー

常識の範疇かもしれないけど、数時間悩んだ挙句に解決した時には「これ半年ぐらい前にもやった気がする」と思ったので、僕が3回目に悩んだときのためにメモしておく。

# AWS CLIでポリシーのjsonファイルを指定するとMalformedPolicyエラー

AWS CLIでS3バケットにポリシーを設定する `put-bucket-policy` では、ポリシードキュメントをJSONファイルとしてあらかじめ用意しており、 `–policy` オプションで指定する。[公式ドキュメントのExample](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-policy.html#examples)は以下のようになっている。

“`
aws s3api put-bucket-policy –bucket MyBucket –policy file://policy.json
“`

きっとフルパスで指定するのが無難だろう、でもWindowsの場合区切り文字やドライブはどう描くのが正解かなと思いながらいくつ

元記事を表示

【AWS・Python】Slash Commandsを拡張性高くより楽に実装する

# 1. はじめに

本記事は、拙作[【AWS・Python】Slash Commandsを拡張性高くより楽に実装する](https://qiita.com/gsy0911/items/1d95f2ab81f8ae228510)の実装をより楽に修正した物です。

できる物などは変わらずに、よりコード的にすっきりしたのと、実装の際のコストが減ったような気がするので記事にしました。

# 2. 実装

## 2.1 以前の方法(Chain Of Responsibility)

以前、SlashCommandを実装したときは、GoFのデザインパターンの1つである`Chain Of Responsibility`を利用しました。
詳細は、[前記事](https://qiita.com/gsy0911/items/1d95f2ab81f8ae228510)に譲りますが、実装する際は以下の4つの手順を踏む必要がありました。

1. `CommandExecutor`クラスを継承するクラスを新規作成する
2. `__init__(self)`にて、自身が受け付ける`slash_command`文字

元記事を表示

[AWS] Lambda 関数を AWS CLI を使ってデプロイする

# はじめに

[AWS Lambda](https://aws.amazon.com/jp/lambda/) を使ってサーバレスな環境での処理を実施出来るのは良いが、毎回 [AWS マネジメントコンソール](https://aws.amazon.com/jp/console/) からメンテナンスするのも億劫だし、できれば Lambda 関数のコードは Git 等で管理したい。

というわけで、Lambda 関数のコードはローカルでメンテナンスを行い、[AWS CLI](https://aws.amazon.com/jp/cli/) を使ってデプロイする方法について見ていく。

# 前提条件

本記事における前提条件は以下の 4 点。

1. デプロイ対象の Lambda 関数がすでに存在していること
– つまり
– `aws iam create-role` でロール作成を事前に行うのではなく
– `aws lambda create-function` で Lambda 関数を作成するのでもない
2. 既存の Lambda 関数に対する **_更新

元記事を表示

AWS Cloud Mapを使って内部通信で扱うEC2の名前解決をする

# はじめに
2020/7/29に、AWS Cloud Mapがアップデートされ、EC2のインスタンスをインスタンスIDで登録できるようになったようだ。
え、これってもしかして、これまではEC2単独で済むような低SLAの内部通信のサーバでも、わざわざ前段にNLB立ててRoute53のプライベートホストゾーンを設定しなければいけなかったのが不要になるということ?神アップデートじゃん!

ということで、さっそく試してみた。

# 前提条件
– AWS Cloud Mapって何?が分かっていること

まあ、概要は[クラスメソッド先生の記事](https://dev.classmethod.jp/articles/cloud-map-perfect/)がたいへん分かりやすいので、これを見ておけば充分かと思う。

# API取得編
基本は通常のサービスディスカバリの登録手順と同じである。
まずは名前空間を作成する。

![キャプチャ1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111314/6e4fddc0-

元記事を表示

EC2のデプロイに関わるエラーを確認するコマンド一覧

#この記事の使い方
EC2、RDS(MySQL)、Rails、nginx、pumaを使用してデプロイする際のお供に。

何を隠そうこれは筆者のためのメモでもあります。笑
Amazon linuxとAmazon linux2でコマンドが違っていたりして混乱するので。

#使用するAMI
**Amazon linux2**

#Nginx関連
“`
$ sudo systemctl start nginx.service #起動
$ sudo systemctl status nginx.service #ステータス確認
$ tail -f log/nginx.error.log #エラーログ確認
$ sudo nginx -t #設定ファイル内の間違いを教えてくれる
“`

#puma関連
“`
$ bundle exec pumactl start #起動
“`

#MySQL関連
“`
$ sudo systemctl start mysqld.service #起動
$ su

元記事を表示

【AppSync・Amplify】データのIDや作成時刻を自動で設定するリゾルバ

# はじめに

AWSのAppSyncやAmplifyを使用することで、GraphQLのAPIを容易に構築することができます。

`mutation`でデータを作成するときに、`ID`や`createdAt`の値をAWS側で自動で割り振ることができます。

そのためには、リクエストマッピングテンプレートに以下を設定します。

# `ID`や`createdAt`を自動で設定する例

“`q
{
“version”: “2017-02-28”,
“operation”: “PutItem”,
“key”: {
“ID”: { “S”: “$util.autoId()” },
“createdAt”: { “S”: “$util.time.nowFormatted(“yyyy-MM-dd HH:mm:ssZ”, “+09:00″) ” }
},
“attributeValues”: $util.dynamodb.toMapValuesJson($ctx.args.input),
}
“`

# まとめ

`$util.autoId()`や`$ut

元記事を表示

【AppSync・Amplify】ページングを実現する[ nextToken ]のリゾルバ設定

# はじめに

AWSのAppSyncやAmplifyを使用することで、GraphQLのAPIを容易に構築することができます。

返却されるデータをページ分割し、リクエストに応じて追加のデータを取り出すことができます。
そのためには、nextTokenをAPIから返却させ、次のリクエストに含める必要があります。

# レスポンスにnextTokenを含める方法

レスポンスにnextTokenを含めるには、以下の項目を設定します。

“`q
// 1回のリクエストで帰ってくるデータは最大20件に設定
“limit”: $util.defaultIfNull($ctx.args.first, 20),

“nextToken”: $util.toJson($util.defaultIfNullOrEmpty($ctx.args.nextToken, null)),
“`

“`q
:リクエストマッピングテンプレートの例
{
“version”: “2017-02-28”,
“operation”: “Query”,
“query”: {

},

元記事を表示

【AppSync・Amplify】GraphQLで新しい順にデータを取得する時のリゾルバ

# はじめに

AWSのAppSyncやAmplifyを使用することで、GraphQLのAPIを容易に構築することができます。

返却されるデータの調整はフロント側でも可能ですが、
エンドポイント側で DynamoDB のリゾルバーのマッピングテンプレートを適切に設定しておくことが重要です。

# 新しい順にデータを取得する方法

データを追加された新しい順に取り出すには、以下の項目を設定します。

“`
“scanIndexForward”: false,
“`

“`:リクエストマッピングテンプレートの例
{
“version”: “2017-02-28”,
“operation”: “Query”,
“query”: {

},

“scanIndexForward”: false,
“select”: “ALL_ATTRIBUTES”,
}
“`

# まとめ

`scanIndexForward`を`false`に設定することで、新しいデータから順に返却されます。

元記事を表示

yps並走記録 Task3  SQL:テーブル作成(復習)バッチ作成(復習)~php.ini設定~GitHubにファイルをアップロード~WordPress5.4.2セットアップ

早くも3週目になりました、yps
今回はなるべくリアルタイムで課題をやりながらログを取っていきたいと思います。

##まずはSQL周りの復習

###MySQLのエンコード設定を直します

エンコード設定をutf8mb4に戻す(mysql cliから日本語扱えるようにutf8にしてた)
`sudo vi /etc/my.cnf`

最終行に以下を追記

“`
[client]
default-character-set=utf8mb4
“`

編集を保存し、mysqlを再起動
`sudo systemctl restart mysql`

###練習で使うデータをダウンロード
`cd /tmp`
`sudo yum install wget`
`wget http://tech.pjin.jp/wp-content/uploads/2016/04/worldcup2014.zip`
`unzip http://worldcup2014.zip`

データの確認
`ls -la worldcup2014.sql`

###データベース作成
MySQLにログインして…
`mysql –

元記事を表示

OTHERカテゴリの最新記事