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

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

AWS Security Token Service (AWS STS)

#AWS Security Token Service (AWS STS) とは
#参考文献
* AWS Identity and Access Management
* https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_temp.html

元記事を表示

AWSの請求情報を毎日Slackに投稿してコスト意識を高めることにした

# コードの置き場所

以下に置いているので好きに使ってください。Serverless FrameworkとPythonコード合わせて150行も無いので読めば分かると思います。

[https://github.com/shogomuranushi/aws-billing-police](https://github.com/shogomuranushi/aws-billing-police)

# 何ができるのか

こんな風に費用が発生しているAWSサービスが列挙されて毎日通知されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75573/f68ec7cc-edc9-ddda-4b0e-c4c6d02f2ef1.png)

# なぜ作ったのか

コロナの影響もあって今後どうなるか分からないですよね。コスト意識は少しでも改善したいいところ。
で、予実管理はしてるけど月単位なのでスパンが長いので、毎日なら検知もしやすく何にいくらかかってるかもすぐにわかるようになるので、毎日通知す

元記事を表示

AWS CDKでCognitoユーザープールを作るとメールアドレスが変更できない問題とその解決策

## はじめに

[AWS CDK](https://github.com/aws/aws-cdk) は TypeScript や Python などのプログラミング言語を使って AWS CloudFormation のテンプレートを定義できるツールです。 YAML や JSON で定義するのに比べると可読性が高く、 TypeScript を使って定義がすることで**補完が強力に効いたり、間違った値を入れるとエディタ上でエラーが確認できる**というメリットがあります。

AWS CDK で Cognito ユーザープールを作成するための `@aws-cdk/aws-cognito` は現時点では EXPERIMENTAL となっており注意が必要ですが、実際に使用してみたところ**初めは問題なさそうに見えたのですがメールアドレスが変更できないという問題が後から発覚しました。**

## 前提

以下がメールアドレスによるログインが可能な Cognito ユーザープールを AWS CDK で作成する際の基本的なコードになります。

“`typescript
import * as

元記事を表示

AWSのELB(Elastic Load Balancing) 構成時に Auth0 認証の例外 (Invalid state) に対処する

## 経緯

1. ローカル環境 (ロードバランサー無し) ではうまく認証できる。
1. AWS上 (ロードバランサーあり) だと `Invalid state` でエラーになる。

“`/Auth0.php
throw new CoreException(‘Invalid state’);
“`

https://github.com/auth0/auth0-PHP/blob/660163b31beae4c550db68022c568b41df75d8e9/src/Auth0.php#L518

1. エラーの原因を調べる。どうやら xxx.auth0.com 側の認証処理後に `callback url` に乗せて Get パラメータで戻される `state` の値とサーバの `state` の値に相違がある…。

## 結論

EC2 > ロードバランシング > ターゲットグループ > 属性の編集 > 「維持設定 有効化: `on`」 にする。

![image.png](https://qiita-image-store.s3.ap-no

元記事を表示

EC2のスナップショットを手軽に自動取得する方法

# はじめに

EC2のスナップショットを定期的に取得する簡単な方法がないかと探してみたところ、EC2ダッシュボード上にある「データライフサイクルマネージャー」という機能を使うと簡単に実現できることが分かりました。

今回はこのデータライフサイクルマネージャーを使った、スナップショットの作成手順(※GUIベース)を備忘録として記事にしてみました。

# 手順

## 1. EC2インスタンスのタグ付け

* まず最初に、スナップショットを取るEC2インスタンスを識別するためのタグを付与します。
* 今回はキー「Name」に対する値として、「nkojima-test」を設定しました。

![10_EBSスナップショット_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/1e6b1c22-c0c4-49d5-cacb-d4e90bc5b9d3.png)

## 2. データライフサイクルマネージャの設定

* EC2ダッシュボードの左側のメニューにある、「ライフサイクルマネージャー」をクリッ

元記事を表示

AWSアーキテクチャー(疎結合化編)

AWSアーキテクチャーの5つの設計原則と11のベストプラクティス
具体的な説明は以下のリンクをご参考ください。
https://qiita.com/Jenny1025/items/ce55c8724daeef626201

スクリーンショット 2020-05-16 14.14.34.png

##コンポーネントの疎結合化
コンポーネントの疎結合化というのは、コンポーネント間の依存関係を減らし、コンポーネントの変更や障害が発生する際に、影響を減少できるようなアーキテクチャーを作り上げることです。

| 関連するサビース        | 説明 |
|:——————|:——————|
| Lamba |サーバーインスタンス

元記事を表示

AWS完全攻略

#はじめに
おこている。僕はおこている。
以下の表はAWSに支払った受験料である。
現在までの総利用量は200円程度なのになんだこの金額

| 試験名 | トライ回数 | 結果| 合計 |
|:—————–:|:——————:|:——————:|:——————:|
| SAP | 2 | 挑戦中| 48600 |
| DVA | 1 | O | 16200 |
| SOA | 1 | O | 16200 |
| practice | 1 | O | 10800 |
| security | 1 | X| 324

元記事を表示

CodePipelineで承認ステージ付きのパイプラインを作成する(CloudFormationテンプレート付)

# はじめに
CodePipelineは便利。これをCloudFormationで自動構築して、フットワークの軽いデプロイを実現するぜ!
と言っても、商用リソースまで全自動でデプロイするようなクラウドネイティブに振り切ったシステムばかりではないよね。といった望みに、AWSはしっかり答えてくれている。

今回は、リリース直前に「ちょっと待った」をしてくれる承認ステージについての理解を深めてみる。

# 前提条件
– さすがにCodePipelineの概要くらいは抑えている

ハードル低め。最低限、以下の記事くらいのことができるのが望ましい。
Windowsのあたりは蛇足なので飛ばしても問題ない。
[WindowsのEclipseからCodePipelineを起動してEC2にデプロイ&ECS on Fargateにアプリをデプロイする](https://qiita.com/neruneruo/items/454feea586febabfe13d)

ただし、↑の記事で扱っているECS on FargateのパイプラインはCloudFormationで書くと少し面倒なので、今回ベースにするの

元記事を表示

AWS CLIでのDynamoDBの項目の操作がreadコマンドで捗った話

# はじめに
この記事は[AWS Advent Calendar 2019](https://qiita.com/advent-calendar/2019/aws) 24日目の記事です。

AWS CLIでDynamoDBの項目をサクッと操作したいと思った時、コマンドのオプションや引数の書き方など覚える項目が多く、さらにテーブルの属性なども正確に覚えておく必要があり、そらでポチポチ入力していくのにはかなり無理があると思いませんか?
いざという時に素早く項目を更新したいのに、オプションも引数も属性名も覚えておらず更新に時間が掛かったり、誤った名称の属性を増やしてしまった……!!なんてことが起こります。

というわけで、よく更新するDynamoDBのテーブルの項目をAWS CLIで自由に操作するために、スクリプトを書いて素早く更新ができるようになったというお話です。

## TL;DR
– AWS CLIで `aws dynamodb update-item` する時は更新するためのスクリプトを準備しておくと楽
– 既存の項目が多数あり、更新したい属性が毎回違う場合はreadコマンドを使っ

元記事を表示

AWS SysOps Administrator Associate 出題分野と関連サービス概要

# 目的
試験の出題範囲と関わるサービス概要をふんわり把握する
そもそも触ったことのないサービスや自身の理解が薄いサービスを発見する
それらを試験対策の目安にする
# 出題範囲

## 分野と出題比率
|分野 | 出題の比率|
|:—————–|——————:|
|モニタリングとレポート | 22%|
| 高可用性 | 8%|
| デプロイとプロビジョニング | 14% |
| ストレージとデータ管理 | 12% |
| セキュリティとコンプライアンス | 18% |
| ネットワーク | 14% |
|オートメーションと最適化 |  12% |

システム運用に関する分野が出題される
SAAと被っている分野に関しては少しだけ出題比率が減少してい

元記事を表示

EC2にデプロイ時、php artisan migrateができないエラーの対処法

LaravelをEC2にデプロイ作業の中で“`php artisan migrate“`を実行しようとするとエラーが出てしまってめっちゃハマってしまったのでメモ兼共有。

## php artisan migrateが実行できない

“`:エラー内容
[ec2-user@ip-172-31-36-11 laravel]$ php artisan migrate

Illuminate\Database\QueryException

could not find driver (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations and table_type = ‘BASE TABLE’)

at vendor/laravel/framework/src/Illuminate/Database/Connection.php:671
667| // If an exception occurs

元記事を表示

【AWS】Lambda+Amazon SNSでSMSを送信する

#やりたいこと
AWS LambdakからAmazon SNSを利用して、任意の電話番号あてにSMSを送信します。

#Amazon SNSって?
Amazon Simple Notification Service
任意の通知をいろんなプロトコルで送信できるよ。
事前にトピックっていう通知カテゴリみたいなの作って、そいつに紐づくサブスクリプションを作成しておくと、
トピックが叩かれたときに紐づいているサブスクリプションにメッセージが送信されるよ。
で認識合ってる?

| プロトコル/トランスポート |
|:-:|
| HTTP/HTTPS |
| Email |
| Email-JSON |
| Amazon SQS |
| AWS Lambda |
| Platform application endpoint |
| SMS |

[公式の概要](https://aws.amazon.com/jp/sns/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort

元記事を表示

【初心者】LaravelファイルをEC2にデプロイの際Composer installができない際の対処法 simplexml

まずLaravelプロジェクトのcomposer installまでの手順はQiitaなどの技術系ブログ記事に多くの手順ブログがありますのでこちらをご覧ください。
私が参考にしたデプロイ記事はこちらになります。
https://qiita.com/nakm/items/0bcc6564538a0604b2ce

PHPのバージョンについては適宜対応してください。

EC2インスタンス内でcomposer installをしようとすると。。。下記のようなエラー

“`
[ec2-user@ip-172-31-36-11 laravel]$ composer install

>
Problem 1
– Installation request for aws/aws-sdk-php 3.135.2 -> satisfiable by aws/aws-sdk-php[3.135.2].
– aws/aws-sdk-php 3.135.2 requires ext-simplexml * -> the requested PHP extension simplexml

元記事を表示

AWSでDNSを設定する

[前回](https://qiita.com/r_saiki/items/cc1d7ed9864ce07501f2)はWebサーバーを構築したので、次はドメインを購入して、名前解決できるようにする。

#ElasticIPの設定
EC2を起動して、ElasticIPを関連付ける。
[EC2に固定IPを付与する](https://qiita.com/r_saiki/items/6e8aefead1e2adebc43c)を参照。

#ドメイン購入
[お名前.com](https://www.onamae.com/)で購入する。.workだと一年間は1円で使える。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/0c9d2fa8-7537-fa80-6dce-8d64e5c761f2.png)
料金確認へ進むを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/91c

元記事を表示

Lambda+boto3でパラメーターストアにアクセスしたらCloudWatchにエラーも吐かれず異常終了した

# まえがき
LambdaからSSMパラメーターストアにアクセスし、鍵情報を取得しようとした際にハマったので共有
※ 今回のケースはパラメーターストアで現象が発生。だけども、KMSとか他機能でも同じことになるかも

# 結論
### boto3のセッションは多重起動してはならない [^1]

# 実行環境
– AWS Lambda + Python 3.8
– [aws-paramstore-py](https://github.com/akirakoyasu/aws-paramstore-py)

# やりたいこと
まえがきにも書いているよう、単純にLambdaからパラメーターストアにアクセスし、鍵情報を取得したい
鍵情報はSSMにいくつか格納している

具体的には

Name|Value
—|—
/Project/secrets/hoge1|huga1
/Project/secrets/hoge2|huga2

と言う感じ

これを踏まえて、サクッと以下のように実装した

~~~handler.py

from boto3.session import Session

元記事を表示

Cognitoを使ってみたい初心者、案件で検討している人向け(大体1.5年くらい使っての所感@2020/5時点

## 概要

2020/05/16 時点の話。

感想
安易に採用すると後で大変なことに。。。って思うけどやらないとノウハウも溜まらないよねっていう。

## 案件の条件

### 推奨する案件の条件

* 別システムの認証まで含めた統合的な認証システムを作りたい場合
* 正し、この場合、認証システムを作るっていう別案件を立てるのを激しく推奨。。
* 別プロバイダでの認証(Googleとか)も許容したい場合
* MFAで電話番号、メールアドレスを使いたい場合
* とにかく認証機能を作りたくない場合

### 推奨しない案件の条件

* 認証の要件が不確定 or ぐるぐる変わりそうな場合
* Cognitoにできないことは地力でカバーする必要が出てきて、Cognitoが足かせになる
* 本当にごく簡単なユーザ登録、認証さえできれば良い場合
* 例えば、ID/PWで認証できて、登録時にメール飛べばそれだけで良いみたいな軽いヤツ
後からCognitoの仕様に振り回されるくらいなら自分達作った方が楽
* まー、簡単だからとりあえず使ってみてノウハ

元記事を表示

AWS IoT ルール作成

AWS IoTのルールについて作り方のハマりどころ(主に任意のトピックの作成)があったので、手順ごとここにまとめておきます。任意のトピックの有効化については「補足」の項目にまとめてあります。

# AWS IoT ルール作成手順

以下のような手順で作成します
(作成方法は2019年12月のものです。アップデートにより作成方法が変わっている場合があることをご了承ください)

## 1, AWS IoT Coreのページへ移動する

AWSの左上部の「サービス」をクリックし、サービス一覧から「IoT Core」をクリックします。

スクリーンショット 2020-05-16 14.53.43.png

## 2, 「ACT」をクリックし、その中の「ルール」をクリック

スク</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>AWS</div>
<div class='tag-cloud-link'>IoT</div>
<div class='tag-cloud-link'>awsIoT</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/tom_S/items/fe2cdce8e9acfa37b8df'>元記事を表示</a></div>
<h3 id=クラウド初心者のAWS入門

## 第4回 ネットワーク構築(2/2)
前回の続きです。作成したパブリックサブネットに、
インターネットへ接続するための設定を行っていきたいと思います。

今回構築する箇所は下図の通りとなります。
![システム構成図_第4回目-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/dccaf650-48f1-b6a4-ebc0-b1ab632307f2.png)
項目も多いため、図中の番号順に進めていきたいと思います。
### 1a. インターネットゲートウェイの作成
まずは、インターネットゲートウェイの作成を行っていきます。

AWSマネジメントコンソールより、「VPC」のサービスを開きます。
その後、「インターネットゲートウェイの作成」を選択します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/078f5b62-b8d2-4e70-bdd2-9ed8784b249a.png)
必須

元記事を表示

EBSスナップショットの作成時間の統計方法

AMIの作成時間を測定したいので、色々調べて見た。

1. AWSにはAMI作成に関してイベントが提供なし
2. スナップショットを作成イベント (createSnapshots)より時間を測定できれば、それでもOK、SnapshotからAMIを作成の時間を短いですから

## アーキテクチャ
![file](https://cloud5.jp/wp-content/uploads/2020/05/image-1589532818904.png)

下記はcreateSnapshotsイベントから着手、1から説明する

## SNSトピックとサブスクリプション作成

snapshot-topic トピック作成
![file](https://cloud5.jp/wp-content/uploads/2020/05/image-1589520133496.png)
ARNをメモしておく(arn:aws:sns:ap-northeast-1:123456789012:snapshot-topic)

受信メールアドレスを記入して、サブスクリプション作成
![file](https://cl

元記事を表示

health checkを除外してCloudWatchのログを眺めたい。

## やりたいこと

表題の通りです。

### なぜ?

小さなシステムの動作チェックを担当した際に、ログ周りはCloudWatchに書き出されているので、手っ取り早くそちらを眺めました。
でも、health checkのログが多すぎて本来見たいログが埋もれてしまって悲しかった、というのが背景です…。

### 前提条件

– AWSの管理コンソールから見るのではなく、[awslogs](https://github.com/jorgebastida/awslogs)コマンドで手元のターミナルで見たい
– health checkっぽいのは除外したい
– health checkを叩いてくるのはロードバランサ (ELB)
– ヘルスチェックのログ出力自体は、まだ調整中なので抑止せずに書き出しておきたい(わがままで申し訳ないです…)
– **Filter options** (“–filter-pattern“) を使って絞り込む
– https://github.com/jorgebastida/awslogs#filter-options
– ただし、この場合

元記事を表示

OTHERカテゴリの最新記事