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

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

EventBridge の入力トランスフォーマーで AWS Chatbot の通知を少しだけリッチにする

## はじめに
例えばこんな通知を

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/b0ae44b9-0dd1-7862-ae04-0bf8dcfa5e7c.png)

こんな感じに

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/2018d8b5-7fc2-cd15-4332-09575c8b94c0.png)

クラスメソッドさんの以下の記事を参考にしています。Step Functions の実行完了について記載されていますが、他のすべてのイベントでも応用できます。

https://dev.classmethod.jp/articles/aws-step-functions-notify-slack-using-chatbot/

AWS Chatbot や EventBridge の設定方法には触れませんので、必要な場合は以下をご参照ください。

ht

元記事を表示

【ShellScript】Amazon EC2上で環境変数と秘密情報をいい感じに取得してくれるくん【SSM Parameter Store / Secrets Manager】

# 概要

久しぶりにAmazon EC2上で環境変数と秘密情報を取得する必要があったので、シェルスクリプトを書いた。あわせてCloudFormationでそれらをどう管理するか改めて整理した。

# 用語の整理
* 環境変数: パブリックに、もしくは組織内であれば公開しても良さそうな環境依存の情報
* 接続先ホスト名、機能のリリースフラグ、etc.
* 秘密情報: パブリックにはもちろん、組織内であっても公開がはばかられる情報
* ユーザー名、パスワード、etc.

「秘密情報も、サーバ側で設定するときは環境変数(という手法を使って設定するの)では?」と思わなくもないが、便宜上こう置く。

# 全体像
* EC2インスタンスにはPHPで書かれたアプリケーションをデプロイする
* PHPのアプリケーションは、ローカルに置かれたenvファイルから色々読み出す形になっており、**「いい感じに取得してくれるくん」で環境変数と秘密情報を解決する**
* **環境変数はSystems Manager Parameter Store(以下、SSM Parameter Sto

元記事を表示

QuickSightのデータセットを別アカウントへ移行する

# はじめに
QuickSightの分析やダッシュボードを別アカウントへ移行したいと思って方法を調べると、いくつか記事がヒットします。
分析のテンプレートを作ってそれを移行先から参照するというものですが、その分析に使われているデータセットを移行する方法については、
手で作るなどになっていてさらっと流されている記事が多いです。

データセットに計算フィールドを使っていたり型変換をしていたりしていると
移行先WEb画面にて手で同じように作るのは困難になりますので、
それをうまく移行する方法について記載します。

本記事ではデータセットの移行だけについて記載しており、
そのあとの分析やダッシュボードの移行については記載していませんのでご了承ください。

# 移行作業
以下の手順で移行します。
1. 移行元のデータセットIDを確認
1. 移行元にてデータセットをjson出力
1. 移行先にてデータソース作成
1. 上記で出力したjsonを元に移行先にてデータセット作成

以降、AWS CLIを使って操作するのですが、CloudShellから実行するのが手軽です。

## 移行元のデータセットI

元記事を表示

VPCとEC2で仮想ネットワーク構築(2層アプリケーションの下準備)

# 1.概要
AWSのVPCとEC2を使って仮想ネットワークを構成していきます。
これは2層アプリケーションの環境を構築する下準備です。
# 2.ツール
RLogin:EC2にssh接続する用

# 3.インフラ構築図

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/fab95ee7-bd9b-88d7-4213-de32c874f12c.png)

プライベートサブネットのEC2をRDSに変えれば2層アプリケーションのウェブアプリケーションの環境になります。今回はVPCに話を絞りたいのでEC2を使います。

## 各AWSの役割
| サービス名| 機能名 |説明 |
|— |—|—|
|VPC|VPC |仮想的なネットワーク |
|VPC|サブネット|VPC内のIPアドレスを分割できる。パブリックとプライベートで2個作成|
|VPC|インターネットゲートウェイ|VPCとインターネットを繋ぐ |
|VPC|ルートテーブル |送付元と宛先のIPアドレス

元記事を表示

AWS SAMを使って最もシンプルにLambda × S3 のS3イベント駆動プログラムを構築する

# 概要

今回は以前から紹介しているAWS LambdaのAWS サーバーレスアプリケーションモデル (Serverless Application Model)、AWS SAMの続編になります。

【以前の記事】
導入編:[AWS Lambda SAMとは?~AWS SAMを使ってPythonのLambdaプログラムを簡単に作成する~](https://qiita.com/fkooo/items/2dc5ded5149379d7305a “AWS Lambda SAMとは?~AWS SAMを使ってPythonのLambdaプログラムを簡単に作成する~”)
第1回:[AWS SAMを使って最もシンプルにLambda × APIGatewayのWebAPIを構築する](https://qiita.com/fkooo/items/e08cdea0f73f60dabd3d “AWS SAMを使って最もシンプルにLambda × APIGatewayのWebAPIを構築する”)
第2回:AWS SAMを使って最もシンプルにLambda × S3 のS3イベント駆動プログラムを構築する

第1

元記事を表示

50代・ほぼ独学・文系・未経験で2ヶ月半でWebアプリを開発するまで!【Rails+Nginx+Docker+AWS】

はじめに

コロナ禍の中で会社経営をあきらめ、50代目前にして「Webアプリの開発者に、オレはなる!」と決意し、2ヶ月半でアプリを作成した経緯をご紹介させていただきます。

アプリを実装するまで

今回のアプリを作成する「前」のおもな自分のスペックです。

+ アプリ開発前の年齢は限りなく50歳
+ 大学は思いっきり文系の大学。
+ 元WEBデザイナーなのでHTML,CSSなどの知識はある(JavaScriptはコピペ)。
+ 独学でProgateやRails Tutorialをやったことがある。
+ アメリカの大学卒なので英語の公式ドキュメントや記事は読める(ただしプログラミング関係は日本語でも理解がむずかしかったりするのでそこまで有利に感じなかった)。
+ 今回採用したDocker, AWS, Nginxの知識は「どこかでそんな単語を見たことあるような」のレベル

3年間ほど、書籍などを通して自分なりにアレンジをしたアプリを作成したことがあり、自社で

元記事を表示

CloudWatch AlarmをSlackに通知する

# まえがき

https://qiita.com/afukuma/items/865623e768e5a4db4d7d

?このやり方でノンコーディングでSlackにメッセージ投稿できることがわかった
とりあえず”動けばよかった”ので、1分に一回起動するようにしていた。

EventBridgeでは、AWSリソースの状態変更を取得してイベント発生できるので、いろんなことができそうです。
ここでは、
**CloudWatch Alarmの状態変更があったらSlackに通知する**
をします

# 概要

1、イベントを捕捉する:EventPattern
2、イベントメッセージの項目を拾う:InputPathsMap
3、メッセージを出力する:InputTemplate

—————————————-
   全体を表示(折りたたみ)
 ——————————————
元記事を表示

AWS主サービスまとめ

# はじめに
AWSの基本から、AWSの主サービスの概要をまとめました。
備忘録的な扱いで、今後業務で新しく触ったサービスがあれば随時更新していこうと思います。


# アジェンダ

* AWSとは
* AWSでできること
* AWSを利用するメリット
* AWS主サービス各種の概要


# AWSとは

* Amazon Web Serviceの略、Amazonが提供するクラウドコンピューティングサービスの総称
* Amazonが自社のインターネットショップを運用するために構築したインフラやアプリケーションをベースに、個人や他社でも利用できるようしたサービス
* 現在、200以上のサービスから構成され、必要な機能だけを利用できる

クラウドコンピューディングサービス・・インターネット経由でコンピューティング、データベース、ストレージ、アプリケーションをはじめとした様々なITリソースを提供するサービス。AWS以外にはマイクロソフトのAzure、GoogleのGCP、IBMのIBM Cloudなどあります。


# AWSでできること

【2022年版ベストプラクティス】AWS IAMまとめ

# はじめに
**AWSのアクセス制御サービス**である**IAM**について、2022年7月時点での機能および使用法を、初学者でも理解しやすいことを心掛けてまとめました。

IAMをよく分からないまま**適当に設定するとセキュリティ的にまずい**ので、これを機に設定を見直して頂き、セキュリティレベル向上に貢献できれば幸いです。

特に、後述する[**IAM設定手順**](https://qiita.com/c60evaporator/items/0121399880625cc1de51#iam設定手順)は、**AWSに登録して最初に実施すべき設定**に相当するため、セキュリティに興味がなくとも一度は実施することをお勧めします。

また[**公式のベストプラクティス**](https://qiita.com/c60evapora

AWS「ポリシーの評価論理フローチャート」(日本語版)

AWSの「[アカウント内でのリクエストの許可または拒否の決定 – ポリシーの評価論理](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow)」のフローチャートを日本語版を作成してみた。S3のようにリソースベースのポリシーがあったり、権限の境界が出てきたりすると、このフローチャートがないと勝てない。

![2022.07.12 AWS「ポリシーの評価論理フローチャート」(日本語版).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55718/298b473a-23b2-be1d-d9d7-461cad1d363b.png)

編集可能なPowerPointファイルは以下。

https://www.dropbox.com/scl/fi/z0ijlbjvn9zjfdntsjfm2/2022.07.12-AWS.pptx?dl=0

AuroraとRDSのメンテナンスと再起動の挙動の違い

# はじめに
最近、Auroraのメンテナンスや再起動の挙動を意識することがあったので違いをまとめていきます。

# 1.MultiAZ構成の基本(おさらい)
まずは、MultiAZ構成をとった場合の障害時の挙動をおさらいとして記載します。
## RDSの場合
これは、言わずもがなですが、Primary、Secondaryの2台構成で通常時は同期処理が行われており、障害が発生した場合は、Secondaryへの切り替えが発生します。DNSのエンドポイントの切り替えが発生するため、30秒程度のダウンタイムがあります。
![スクリーンショット 2022-07-24 13.50.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/4315d267-d540-d8b8-cac2-763987592a16.png)

## Auroraの場合
こちらもほぼ同様ですね。
Auroraの場合、ストレージがAZをまたいだクラスタ構成になっており、書き込みが可能なライターインスタンスと、読み込み専用のリーダー

CognitoのTooManyRequestsException対策

## 概要
Cognitoのlist_userには時間当たりの実行回数に制限があり、超えると
TooManyRequestsExceptionが発生する。

https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html

## 対策

configでretry処理を追加する。
modeはstandardを指定する必要がある。
legacyではTooManyRequestsExceptionには対応していない。

“`python:cognito_config.py
import boto3
from botocore.config import Config

config = Config(
retries = {
‘max_attempts’: 10,
‘mode’: ‘standard’
}
)

cognito_client = boto3.client(‘cognito-idp’, config=config)

セキュリティグループからの通信許可はAWS::EC2::SecurityGroupIngressに書く

AWS CloudFormationでセキュリティグループを作成する場合、通信許可の設定は、以下のどちらでも書ける。

* [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html) リソースの `SecurityGroupIngress` または `SecurityGroupEgress` プロパティ
* [AWS::EC2::SecurityGroupIngress](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html) リソースまたは [AWS::EC2::SecurityGroupEgress](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide

Cloud9でRubyの開発環境構築を行う

## 前提
– AWSアカウントを作成済みであること
– IAMユーザを作成済みであること

### はじめに
– 7月に転職しwebエンジニアとしてRuby on Rails環境のシステム開発を行なっています
– 今までRubyはUdemyによる自己学習レベルでしか触れたことがなかったため、基礎中の基礎から勉強始めています
– 今回はその環境構築を行なった際の備忘記事です
– 当記事はqiita登録して5分後に書き始めたものなので、ご指摘あればぜひよろしくお願いします

## Cloud9の準備
– AWSの上部検索バーに「cloud9」を入力して「Cloud9」サービスを選択

– 「Create environment」を押下
– この時、リージョンは「アジアパシフィック(東京)」にしています

【AWS API Gateway】WebSocket を使用した双方向通信

# WebSocket とは

Webサーバとクライアントの間で双方向通信できるようにする技術です。通常はクライアントがリクエストをWebサーバに送り、それに応じてWebサーバがレスポンスを返しますが、WebSocketではサーバ側が任意のタイミングでクライアントにメッセージを送ることができます。

# WebSocket API を作成する

バックエンドを Lambda 関数とする WebSocket API を作成します。先に [Lambda 関数を作成する](#Lambda関数を作成する) をやってもやらなくてもどちらでも構いません。

「WebSocket API」の「構築」をクリックします。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/563db56f-4af7-71c8-cd44-739ca480c3fc.png)

API 名、ルート選択式を入力します。ルート選択式とはルートキーを指定するための JSON パスです。ルートキーとは、ルートの名前です。ルートとは、

ECSタスク起動時のstandard_init_linux.go:228: exec user process caused: exec format errorへの対処法

# はじめに
コンテナ初心者の自分がM1 Macを使ってDockerイメージ作成からECSデプロイまで行なった際に発生したエラーとその対処法についてまとめます

# 結論
“`
standard_init_linux.go:228: exec user process caused: exec format error
“`
ECSのタスク起動時に上のエラーが出て、かつDockerイメージ作成の際にM1 Macを使っているなら`docker build`コマンドにオプションとして`–platform amd64`を追加してあげると解決します。
“`
docker build ./ –platform amd64
“`

# 経緯

Next.jsをECS Fargateにデプロイしようと思い以下のような手順を取りました
– ローカルでDockerfileからイメージビルド
– ECRのリポジトリにイメージをpush
– pushしたイメージをもとにECS Fargateでタスク起動

### 使用したDockerfile
“`Dockerfile:Dockerfile
F

RIEを使ってLambdaコンテナイメージをローカルでエミュレートする

# はじめに
前回Lambdaコンテナイメージを、AWS以外のベースイメージから作る方法を記事にしました。

https://qiita.com/a_b_/items/337c4afee2e330efefe1

作成する際AWS Lambda Runtime Interface Emulator (RIE) を使って、ローカルでLambdaをエミュレートする方法を試しましたので記事にしました。

# 参考

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images-test.html

https://aws.amazon.com/jp/blogs/news/new-for-aws-lambda-container-image-support/

# やったこと
前回同様に、プロジェクトのディレクトリを作成し、Pythonのファイルを作成します。
Dockerfileは、エミュレータを含めるかどうかで記述が変わりますので、ここではファイルを作成するだけです。
“`bash
# プロジェクトディレクトリ作成
mkdir sam

AWS 認定ソリューションアーキテクト プロフェッショナルに合格した

# 受験動機
* アソシエイト三冠は達成したので次のステップとして
* 今の職場(所属)だとAWS触る機会がないので、やっぱり転職するしかないかな…となんとなく考えていた
* クラウド業務を志望するならSAPぐらい持ってないとアピールにならない気がした

# 使用した機材について
* AWS WEB問題集で学習しよう
* おなじみkoiwaclubのオンライン問題集
* 本試験よりもやや長文問題が多いので、これで長文問題に慣れておくのがよい
* 全体的な難易度は本試験とほぼ同じか、少し易しいぐらい
* ところどころ日本語が分かりづらいところも本試験と同じ、AWS用語でコスト/性能/耐障害のどれを問われているか?を判別できる事が重要
* 新しく「学習記録」機能が追加されていて、後から間違ったところを再確認できるようになり、苦手な分野を把握するためにはとても役にたった
* 質問フォーラムが閉鎖されたりして若干運営方針に疑問は感じるが、そもそも「AWS試験対策」としてならこれも納得できなくもない
* 本試験も日本語の怪しさは似たり寄った

【第1回】AWS上に仮想ネットワークを構築する【VPC/サブネット編】

## 【はじめに】

– 自分のブログをAWS上で構築して運営してみたい
– AWS上にネットワーク環境を構築したいけど、構築方法がわからない

AWSのサービスに対する理解度を加速度的に上げるには実際にAWSのサービスを利用してみることが重要です。

AWS初学者の方に向けて「仮想ネットワークの構築方法」を4回に分けて解説していきます。

第1回目の今回は、**VPCとサブネットを作成する**方法です。

### 本記事の内容

– 構築するネットワーク構成図
– 実際にVPCとサブネットを作成してみる

## 【構築するネットワーク構成図】

第1回から第4回にかけて構築するネットワーク構成図は以下となります。

– リージョン:東京リージョン
– VPC:リージョン内に1つ
– アベイラビリティゾーン:東京リージョンに2つ
– プライベートサブネット:各アベイラビリティゾーンに1つずつ
– パブリックサブネット:各アベイラビリティゾーンに1つずつ
– Internet Gateway:VPCにアタッチ
– NAT Gateway:各プライベートサブネットにアタッチ
– ルートテ

AWSクラウドプラクティショナー合格体験記

## はじめに

2022年7月にAWS CLFに合格しました。CLFの合格を目指されてる方の参考になれば幸いです。

## CLFの概要

以下の範囲と割合で出題されます。
出題範囲の高いテクノロジーのところを中心に勉強しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2608548/a12c5cdb-cb1c-b645-5e12-28992635b0bf.png)

## 学習教材

[AWS認定クラウドプラクティショナー緑本](https://www.amazon.co.jp/AWS%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-AWS%E8%AA%8D%E5%AE%9A-%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82