- 0.0.1. ELBのスティッキーセッションについて
- 0.0.2. StepFunctionsだけで無駄に壮大な4bit加算器を作ったよ
- 0.0.3. 【合格体験記】AWS未経験の大学生が1ヶ月半くらいでAWS SAA-C02に合格した話
- 0.0.4. 【AWS/EC2/Amazon Linux2】curl: (60) SSL certificate problem: certificate has expired
- 0.0.5. eksctlコマンドでEKSのクラスターを作成する
- 0.0.6. AWS MQTT永続的セッションのタイムアウト
- 0.0.7. 【AWS】EC2のログをOpsworksを用いてCloudWatchへ転送する。
- 0.0.8. cloudwatch logs の サブスクリプションフィルタ とは
- 0.0.9. An error occurred (NoSuchKey) when calling the GetObject operation: The specified key does not exist.
- 0.0.10. 未経験からRails,AWS,Docker,CircleCI,GitHubでポートフォリオ作成しました
- 1. はじめに
- 2. アプリの概要
- 2.0.1. AWSを用いてシステムを作る際に開発用アカウントに付与するIAM権限
- 2.0.2. RDSメンテナンス、PHDやメールで通知されないものも取得&通知するLambda
- 2.0.3. AWSパブリックIPにドメインを関連させてかつhttpsにする方法
- 2.0.4. Amazon Step FunctionsのWorkflow StudioでParallel, Map, Choise状態の入出力を見る
- 2.0.5. ec2初心者がssh接続するまで
- 2.0.6. CloudFront+S3構成にLambda@Edgeを挟み込む
- 2.0.7. CloudFrontのキャッシュを削除するコンソール画面の作成
- 2.0.8. AWS:便利なAutoScalingを設定してみた。
- 3. AWS:AutoScaling オートスケーリングについて
ELBのスティッキーセッションについて
## 勉強前イメージ
スティッキーがわからない・・・
## 調査
### ELBのスティッキーセッションについて
ELBがサーバにアクセスを振り分けるとき、
デフォルトであればELB配下のインスタンスに均一に分散させるため、一つのインスタンスにずっとつなぐということはできません。
しかし、cookieの情報を元に一定のインスタンスで処理させることができます。### cookieの有効期限の設定の種類
以下の2つあります。
– ロードバランサーが生成したCookie
– アプリケーションベースのCookieデフォルトでは均等に負荷分散させるようにスティッキーセッションはオフになっているので、
設定を変更しないといけません。### そもそもの背景
なぜスティッキーセッションを必要とするのかですが、
普通のwebサーバだと特に気にせず負荷分散を點せればよいですが
セッション管理をしているシステム等はセッションの途中でサーバが変わってしまうとややこしくなってしまいます。
そこでスティッキーセッションを行い、同一セッションについては同じサーバで処理するようにすると
簡単
StepFunctionsだけで無駄に壮大な4bit加算器を作ったよ
StepFunctionsはお好きですか?はい、私は好きです。
先日Workflow Studioもできて、複雑なフローも簡単に作れるようになりました。
それを駆使して4bit加算器(4bitの数値2つを足し合わせる回路)を作ってみたのでご報告です。## StepFunctionsで論理回路
先日、なんだか眠れないなーと布団の中でゴロゴロしてたらふと天啓を得ました。
「StepFunctionsで論理回路が作れるぞ」という天啓を。ということで、そこから起きてNOT, AND, OR回路を作ってみました。ノッてしまって午前3時まで眠れませんでした…。
### NOT回路
![step_functions_4bit_adder_not.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39565/d8b240fe-c489-f04b-15bb-ae4618575ced.jpeg)
これがNOT回路です。
![step_functions_4bit_adder_or_flow.jpg](htt
【合格体験記】AWS未経験の大学生が1ヶ月半くらいでAWS SAA-C02に合格した話
## はじめに
現在大学3年でAWSに関して未経験の僕が1ヶ月半くらい勉強して取得したAWS 認定ソリューションアーキテクト – アソシエイト(AWS SAA-C02)の合格体験記です。
勉強法や使用した教材などを紹介するのでお役に立てたら幸いです。## なぜ受験したのか
受験した背景としては、現在開発中である**AWS有資格者限定プラットフォーム[engineed](https://info.engineed.io/engineer/)**に自分自身も登録したいと思ったからです。
engineedに登録するためならSAAより一段階易しいCloud Practitionerでもよかったのですが、AWSの各種サービスに関して網羅的に理解したかったのでSAAを受験することにしました。## 試験概要
### 問題数
65問。
65問のうち15問が採点対象外で、採点対象外の問題は今後の試験の問題の参考にされるとのこと。
そのため、50問の正答率で合否が決まるが、採点対象外の問題との区別は受験者からはできないようになっています。### 回答形式
– 多肢選択式:正しい選択肢が
【AWS/EC2/Amazon Linux2】curl: (60) SSL certificate problem: certificate has expired
## 背景
AWS EC2(Amazon Linux2)上で、最新のGoogle Chromeをダウンロードしようと
下記Curlコマンドを実行しました。“`terminal
sudo curl https://intoli.com/install-google-chrome.sh | bash
“`すると、タイトルにも記載したエラーが出ました。
“`terminal
curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/docs/sslcerts.htmlcurl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the we
eksctlコマンドでEKSのクラスターを作成する
eksctlコマンドを使ってEKSのクラスターを作成した際のメモ。
クラスター作成時に自動生成されたAWSリソースについてもまとめる。## 準備
#### 前提* awscliがインストール&設定済みであること
* AWSのリージョンは`ap-northeast-1`
* kubectlがインストール済みであること
* 実行環境
* macOS Big Sur バージョン11.5.1#### eksctlのインストール
インストールbrew install eksctl
バージョンが`0.67.0`以上であることを確認
eksctl version
## クラスターの作成
[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/create-cluster.html)に習い、以下のコマンドを実行eksctl create cluster –name
–version 1.21 –with-oidc –without-nodegro
AWS MQTT永続的セッションのタイムアウト
AWS IoT と AWS IoT Device SDK は、MQTT サービス品質 (QoS) の
レベル 0 と 1 をサポートしています。QoS1は最低1回以上の送信を保証するものですが
永続的セッションを利用することで実現が可能です。
例えばクライアントの切断中に Publish されたメッセージを受信したい場合などに利用します。## MQTT 永続的セッションの使用
cleanSession フラグを 0 (false) に設定し IoT Core へ接続する必要があります。
またセッションが残存している場合のみ有効です。[https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/mqtt.html#mqtt-persistent-sessions](https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/mqtt.html#mqtt-persistent-sessions)
>永続セッションは、クライアントによって承認されていない、
【AWS】EC2のログをOpsworksを用いてCloudWatchへ転送する。
# はじめに
アプリケーションのログをCloudWatchへ転送することが出来ると、
**Logs insightsで統計的な分析が出来たり、
CloudWatch Alermと連携させて特定のlogを検出すれば通知させたり**することが出来ます。今回は**Opsworks**でEC2を管理している場合での、CloudWatchへのログの転送方法を紹介します。
# 転送方法
Opsworksでは`Stack`という概念があり、Stackの中に`Layers`と呼ばれる管理単位があり、この中でEC2インスタンスを管理します。
(Stack > Layers > EC2インスタンス という関係)CloudWatchへの転送の設定は`Layers`の設定変更のページで行います。
※ インスタンス単位で設定するワケではないので、対象となるLayers内で管理されているEC2全てでCloudWatchへの転送設定が反映されます。対象となるLayersを選択、`CloudWatch Logs` タブを開き、Editボタンを押します。
![スクリーンショット 2021-10-19
cloudwatch logs の サブスクリプションフィルタ とは
## 勉強前イメージ
なんかのフィルタ?サブスクリプション?
## 調査
### cloudwatch logs の サブスクリプションフィルタ とは
cloudwatch logsのサブスクリプションフィルタとは
cloudwatch logsに出力されたログデータを特定の文字列を含むデータなどをリアルタイムに検知し、
kinesis や lambda などにログを転送できる機能になります。
サブスクリプションフィルタを使用すると、あるログを出力されていて「Error」が含まれると
lambdaからチャットなどに流すことができるようになります。### どういう構成で使われる?
例えば以下のような構成で使われます。
1. あるログをずっと取得しています。
2. cloudwatch logs のサブスクリプションフィルタで error という文字列があれば
3. lambdaにログを送ります。
4. そのログからチャットに通知を行います。![12021-11-04 # cloudwatch logs の サブスクリプションフィルタ とは – diagrams.net
An error occurred (NoSuchKey) when calling the GetObject operation: The specified key does not exist.
#エラーの訳
指定されたキーは存在しないよ#コード
“`Python
bucket_name = ‘xxx’
object_key_name = ‘xxx.json’
s3 = boto3.resource(
‘s3′,
region_name=’ap-northeast-1’,
aws_access_key_id = ‘xxx’,
aws_secret_access_key = ‘xxx’,
)bucket = s3.Bucket(bucket_name)
obj = bucket.Object(object_key_name)response = obj.get()
body = response[‘Body’].read()json.loads(body.decode(‘utf-8’))
“`#エラー
“`
An error occurred (NoSuchKey) when calling th
未経験からRails,AWS,Docker,CircleCI,GitHubでポートフォリオ作成しました
はじめに
未経験から**Ruby on Rails**, **AWS**, **Docker**, **CircleCI**, **GitHub**を一から学習し、Webアプリを作成してみました。
この記事ではアプリの紹介や実装機能、開発する上での苦労した点をお伝えします。
ポートフォリオをアップデートした際にはこちらの記事も更新していきます。アプリの概要
エンジニアが作成したポートフォリオを投稿、共有できるSNSアプリです。
– エンジニアの為のポートフォリオ共有サイトがない。
– 既存の投稿サイトだとポートフォリオが埋もれてしまう。これらの問題を解決するために「Portfoliofor」というサービスを開発しました。
URLは下記
AWSを用いてシステムを作る際に開発用アカウントに付与するIAM権限
## はじめに
AWSを使ってシステムのプロトタイプを作成していると、Roleをリソースに付与するなどの作業で、その都度IAM権限が必要になる。
ので、ちょいちょい「xxxの権限必要なんですけど…」との問い合わせをもらうことになる。– LambdaでS3やCloudWatchのトリガーを受け取るためのロール付与
– GlueでS3をクロールするためにS3アクセスのポリシーを作成
– ECSで自動起動・停止の設定をする
– etc…## 最初は都度対応していたが…
[IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html)
この辺を読んで、最初は以下の対応で済ませていた。
– 開発者用ユーザーグループを作成
– 開発用ポリシーをユーザーグループに付与して、ポリシーを編集して権限を随時追加編集していたポリシーの例。
“`json
…
{
“Effect”: “Allow”,
RDSメンテナンス、PHDやメールで通知されないものも取得&通知するLambda
RDSのメンテナンス情報はその全てがメールやPHD(Personal Health Dashboard)に通知されるわけではありません(サポート確認済み)。そのようなものも把握したい場合は [describe-pending-maintenance-actions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-pending-maintenance-actions.html) コマンドで取得する方法があります。
ということで describe-pending-maintenance-actions して結果が空でなければ、SNSに通知するLambdaを書いてみました。 [CloudFormationのテンプレート](https://gist.github.com/shu85t/cc304146b0e05a32a7439a7b3f042a5e) としてまとめています。
定期実行しておけば、これまでPHDやメールだけでは把握ができなかったメンテナンス情報も拾えます。
# 構成
![構成.png](htt
AWSパブリックIPにドメインを関連させてかつhttpsにする方法
##手順
・まずドメインを外部で手に入れる(私はお名前.comを使用した)
・Route53でホストゾーンを作成。
・ネームサーバーを設定する
・ACMで証明書を発行する(バージニア北部で行うこと)
・Cloudfrontでディストリビューションを作成する。
→オリジンドメインはEC2のパブリックIPv4DNSを貼り付ける
・Route53の設定を変更(typeAでレコードセットを作成、エイリアスを”はい”にする。参考になった動画は
ほとんどこの通り実行したらできましたが、freenomを使用せずお名前.comを使用したこと。
Cloudfrontでディストリビューションを作成していなかったことが相違点としてあったため自分なりにおかえながら実行してみた。しっかりポートフォリオサイトを保護された通信環境のもとにおけたので嬉しかったです!!
Amazon Step FunctionsのWorkflow StudioでParallel, Map, Choise状態の入出力を見る
# はじめに
本記事では、Amazon Step FunctionsのWorkflow StudioでParallel, Map, Choise状態を含むステートマシンを作成し、その入出力を見ていきます。Step Functionsでは、Parallelで静的並列処理、Mapで動的並列処理を実現することができます。本記事の特徴は以下です。
* Workflow Studioを使ってグラフィカルに作る
* Parallel, Map, Choise状態とLambda関数を使用
* 実践的な処理というよりは、入出力を明確にするテスト的な処理を作る
* LambdaでPythonを使用しますが、簡単すぎるコードしかないため未経験者でも問題ありません以下の内容は含まれません。
* ASL(次節で説明)を使って作る方法
# Step Functionsとは?
サーバレスオーケストレーションサービスと [公式][1] では言われています。分かり易く言い換えると、サーバレスなAWSサービス(主に [AWS Lambda][2] )をつなげて1つのワークフローを作成できるサービス
ec2初心者がssh接続するまで
## はじめに
おそらくこの記事を見てくださっている方はec2とは何なのかある程度知っていると思います。
なのでec2についての説明は割愛します。~~(決して説明が面倒だとかそんなことはありません。決して。)~~この記事ではEC2インスタンスを作成してssh接続するまでの手順を紹介します。
タイトルの通り初心者なので、もっといい手順や設定があればコメントで教えていただければと思います。## キーペアの作成
キーペアはインスタンスに接続する際に必要になります。
自動生成はされないので自分で作成します。
既にキーペアを作成している方は飛ばしてください。EC2のダッシュボードから[キーペア]をクリックして一覧画面に遷移します。
![スクリーンショット 2021-11-04 0.20.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/650805/85b272f7-4c37-4790-1f7d-ccd5c539402e.png)[キーペアを作成]をクリックして作成画面に遷移します。
![スク
CloudFront+S3構成にLambda@Edgeを挟み込む
CloudFront経由のS3にホスティングしたWebページにLambda@EdgeでBasic認証をかける。
何度か使いそうなので使いまわせるようCDK化(Python)しておく。# コンソールから作成
## 1. S3バケットの作成
* 任意のS3バケット名を指定。
* パブリックアクセスのブロックのチェックを外し、作成。
* 任意のindex.htmlファイルをアップロード。## 2. CloudFrontディストリビューションの作成
* オリジンドメインに上記で作成したS3バケット
* 「S3バケットアクセス」 > 「はい、OAI を使用します」 > 「新しいOAIを作成」
* 「バケットポリシー」 > 「はい、バケットポリシーを自動で更新します」![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406130/f8226abe-3a7a-7e00-acb3-39191298d997.png)
S3に以下のバケットポリシーが自動で設定される。
“`
{
CloudFrontのキャッシュを削除するコンソール画面の作成
#はじめに
Cloudfrontのキャッシュ削除は、AWSコンソールから操作しますが、チームで開発時やお客さんに納品後、お客さん側でキャッシュ削除する場合、キャッシュ削除するためだけにIAMユーザーを作成するのは手間だったり不都合があったため、S3に配置したhtmlでEC2を操作できる仕組みを作成しました。
ただし、メンバー以外に操作されないよう、S3にはCloudfront OAI、CloudFrontとApiGatewayにはBasic認証をかけてます。#構成図
![スクリーンショット 2021-11-03 23.43.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/7befb5e6-1a3c-d94c-0048-988776e47d3a.png)CloudFrontのキャッシュ削除のコンソール画面用のhtmlをS3に配置して、CloudFrontで配信し、S3からアクセスできないよう制限します。
#完成ページ
![スクリーンショット 2021-11-03 23.21
AWS:便利なAutoScalingを設定してみた。
AWS:AutoScaling オートスケーリングについて
オートスケーリングとは
必要に応じてEC2インスタンスを増減してくれる便利な機能。
![IMG_84970B690799-1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1226984/3fa4746b-346f-9da1-88a8-88e487cbe511.jpeg)まずは起動テンプレートを作成
EC2インスタンス>起動テンプレート>起動テンプレートを作成
それぞれ、必要に応じてカスタマイズをする。アクションメニューからバージョンをつけて設定の更新ができる。これが最大の特徴。
☆インスタンスのアクションから「イメージ&テンプレート」を選択しても作成可能。
AutoScalingグループを作成
AutoScaling>AutoScalingグループ>AutoScalingグループを作成
名前や作成したテンプレートを選択し、容量を選択。最小、希望、最大の容
【AWS】AWS Glue + PySparkでお手軽なサーバレス分散処理
# はじめに
数TBクラスの大きなデータを変換してDBへputするような場合、
データをいくつかのグループに分割して、複数台のコンバータで分担して処理したい。
AWS Glueを使えば分散処理ライブラリSparkを利用した並列処理をサーバレスで簡単に実現できる。サンプルコード↓
https://github.com/uni-ezobafun/ocean_glue_spark_parallel_processing
### AWS Glue + PySparkによる分散処理のメリット
* フルマネージドなサーバレスサービスで、煩雑な保守作業は不要
* データ量や処理の重さに応じて、コンソールから分散処理の台数をいつでも変更できる (2台 〜 299台)
* 利用台数 x 利用時間分のみ課金公式ドキュメント↓
https://aws.amazon.com/jp/glue/
### やること
* S3に置いたPySparkスクリプトをAWS Glueと紐付けて実行する
* 要素が5000個の整数型リスト1000個用意して、それぞれ(重い処理の疑似として)バブルソートす
AWSのコンソール画面を英語設定してみた
[zenn](https://zenn.dev/mo_ri_regen/articles/aws-english-setting)のほうでも同じ記事を投稿しています?
[zenn](https://zenn.dev/mo_ri_regen)ではフロントエンドのことも含め、いろいろ投稿しているのでぜひご覧ください?AWS は日本語のドキュメント [^1]が充実しているので、あまり英語にするメリットがなさそうだと思われるかもしれないのでメリットを考えてみました。
[^1]: 公式ドキュメント以外にもクラスメソッドの[ブログ](https://dev.classmethod.jp/tags/aws/)など企業レベルで発信している会社もある
## 英語にするメリット
– 強制的に英語に触れることができる
これが一番メリットだと思います。
英語を勉強したいなと思っても意識して勉強って難しい ? ので、少しでも英語を使わざるを得ない環境にすることで英語に慣れることができます。– 日本語訳に振り回されない
Amazon はアメリカの会社なのでどうしても和訳という作業が発生し