- 1. MFA端末を紛失して2要素認証ができない場合、AWSに問い合わせる方法
- 2. AWS上のAmazonLinuxから同じサブネットのLinuxサーバへsshしてみた
- 3. ミニマムなVue.jsコンポーネントプログラミングその5(動的なデータ取得:サーバ準備)
- 4. Mac OSXでaws cliを利用する準備
- 5. AWS SAM + Step Functions でアクセスチェックをする。(ruby runtime)
- 6. サーバー認証まわりの基礎(独自SSL証明書、DNSなど。Amazon CloudFrontでの例。)
- 7. EC2からS3への自動バックアップを10分で実装
- 8. EC2とRDSを使用し、RailsアプリをAWSにあげる際に詰まった点 -その2-
- 9. PHP Laravel 基礎
- 10. Cognito+API Gateway+Lambdaでユーザ作成APIを作りたいんだー!
- 11. AWSへの不正アクセスを防ぐために気をつけておいた方が良いことを紹介します
- 12. Go+CDK(TypeScript)で始めるサーバレスチュートリアル
- 13. AWSでMatlabインスタンスを起動、リモート接続
- 14. 独自ドメインでCloudFront にアクセスできるようにする
- 15. Amazon Cognitoのユーザー作成について
- 16. BucketAnywhere の設定
- 17. AWSを使用するWebアプリケーションをデプロイして、アクセスするとBad Requestが出た時の対処
- 18. プログラミング初学者がDjango+機械学習+AWSでWEBページを公開するまでpart1
- 19. GitHub Actions の Runner を一発で構築するスクリプト
- 20. Firelensのヘルスチェック方法
MFA端末を紛失して2要素認証ができない場合、AWSに問い合わせる方法
## 無料会員中に作成したEC2インスタンスが起動中だった
無料会員中にCloud9を利用していたが、そのままEC2インスタンスを立ち上げたまま放置していた。
最低スペックのインスタンスが4つ立ち上がっていて、毎月7ドル強課金され続けていた。
## MFA端末が手もとにない場合のAWSへの問い合わせ方法
今回は一番面倒であろう、電話番号が有効でなかった場合だったのでそちらを例にしている。
まず、MFA設定中のアカウントでログインする。
ルートユーザーでログインを試みた際の画面を表示している。
メールアドレスとパスワードを入力すると、以下のような画面になるがMFAコードが発行できないので以下の「MFAのトラブルシューティング」をクリックする。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87431/72942595-5405-1c9e-6950-c4f5f3f06f8c.png)
次に以下のような画面が表示されるので「別の要素を使用したサインイン」をクリックする。
![2.p
AWS上のAmazonLinuxから同じサブネットのLinuxサーバへsshしてみた
#概要
AWS上に立てたAmazonLinuxサーバから同じサブネット内のサーバへsshできずに困っておりました
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411353/07761db4-3fef-13ac-2f10-de9bd39be1c2.png)**※私の個人情報が記載されていますが、既に削除しております!**
#解決方法
早速ですが原因はTeraTermコンソールに表示されている通りです。“`TeraTerm.txt
>>Permissions 0644 for ‘/home/ec2-user/.ssh/ansibleKey.pem’ are too open.
“`
キーのアクセス権が足りていないようですね。。。ですので「ansibleKey.pem」のアクセス権をchmodコマンドで「700」に変更します。
“`TeraTerm.txt
$ sudo chmod 700 ~/.ssh/ansibleKey.pem
“`その後、再度ssh接続
ミニマムなVue.jsコンポーネントプログラミングその5(動的なデータ取得:サーバ準備)
その1:ミニマムなシングルコンポーネントVue
その2:ミニマムなルータ
その3:ミニマムなサブコンポーネント
その4;ミニマムなデータ取得(静的)ときたので、今回は動的なデータ取得ですが、まずはデータを取得できるサーバを準備します。
WebAPIサーバを外部に立てて、WebAPIコールで画面に表示するデータを更新します。
画面サーバを立てるわけではないので、CakePHPとか、ララベルとかそういった
リッチサーバフレームワークは不要なので、軽量かつ直感的にコード実装できる
Flaskを使いたいと思います。(RestFullなWebAPIを実装するためのライブラリも充実してるようだし)Flaskが動作して外部公開できるサーバなら何でもよく、無料レンタルサーバとか、選択肢は
いろいろあるのでしょうが、ここは流行りのAWS上にサーバ立てしようと思います。
AWSへのアカウント登録の説明ははしょりますが、ベーシック(無料枠)で登録しました。#NC2インスタンスの生成/起動
なにはなくとも、まずこれです。
いろんなAWSサービスも、立てたEC2インスタンスの上で動作しています。
Mac OSXでaws cliを利用する準備
AWS CLI バージョン 2 をMac OSXにインストールする手順です。
# 前提– Mac OSX のPCを持っている
– インターネットに接続できる
– AWS のアカウントを持っている
– AWS CLI バージョン 2 がインストール対象です# 事前準備
始める前に AWS CLI を操作するための IAMユーザを作っておきます。
– AWSコンソール
– IAM
– アクセス管理 > ユーザ
– ユーザを追加
– ユーザ名:(任意)
– アクセスの種類:プログラムによるアクセス
– アクセス許可の設定:(任意)ユーザを作成すると `Access key ID` と `Secret access key` が割り振られます。
後ほどconfigureする時に必要なので控えておいてください。# AWS CLI をインストール
[AWSドキュメント](https://docs.aws.amazon.com/ja_j
AWS SAM + Step Functions でアクセスチェックをする。(ruby runtime)
# 概要
AWS SAM(Lambda) + Step Functions を利用してウェブサイトの外形監視を行います。
## やること
1. サイトの外形監視をする。(lambdaで実行)
2. アクセスした際にステータスコードが200 or 302の場合、メールで通知(lambda + SES)
3. アクセスアクセスした際に上記のステータスコード以外の場合は、時間をおいて再アクセスをする。
StepFunctionsでループの処理を実装し、最大5回実行する。
4. 正常なステータスコードが取得できなかった場合は実行を失敗として終了する。
失敗時の通知はCloudWatch Eventで通知予定ですが、今回は実装しません。注意)
通常は成功時は通知をせず、失敗時に通知を行うと思いますが、今回は成功した場合に通知をする設定にしています。(学習目的のため)# 実行環境
1. AWS CLIを設定済であること(バージョン1)
2. AWS SAMをインストール済であること
3. SESを設定済であること## 環境設定の参考サイト
AWS CL
サーバー認証まわりの基礎(独自SSL証明書、DNSなど。Amazon CloudFrontでの例。)
いつもいつも忘れてしまうので、備忘のため書いておくことにしました。本当に忘れっぽくて困る・・。
# サーバー認証とは
サーバー認証とは、クライアントが、これから接続する相手であるサーバーの正当性を確認することです。
正確には、「サーバーの公開鍵」が正当なものかを確認することです。
# サーバー認証の流れ
クライアントは、サーバーからサーバー証明書を受け取ります。
このサーバー証明書には、以下が記載されています。
1. サーバーの公開鍵(これがメインの情報)
* その他属性
* 上記をまとめてハッシュ化し、更にそれを認証局の秘密鍵で暗号化したもの(= 認証局の署名)
* その時に利用されたハッシュ関数の名前、暗号化方式クライアントは、サーバーの公開鍵が信頼できるものか確認するために、サーバーの公開鍵に認証局のお墨付きが付いているかを確認します。
具体的には、クライアントは以下を行います。
* **認証局の公開鍵**と、4に書かれてある暗号化方式をもとに、3を復号します。(もともと**認証局の秘密鍵**で暗号化されているわけですから、認証局の公開鍵で復号できるわけで
EC2からS3への自動バックアップを10分で実装
#この記事で解説すること
この記事ではAWS EC2(AWSCLI)からS3に、特定のディレクトリを毎時間バックアップを取る方法を解説します。前提として、EC2内からS3へアクセスをすることができる状態(エンドポイントが開設されている状態)を想定しております。EC2ーS3間のエンドポイントを作成することができていない方は先にこちらのブログを見てください。#EC2からS3に自動バックアップをする機能を実装する手順
0.パス等が通っていることを確認する。
1.バックアップ用のシェルスクリプトを書く。
2.Cronを書いて、自動的シェルスクリプトを実行する環境を整える。Cronをアクティベートする
3.テストするそれでは一つ一つ、紹介していきます。
##0.パス等が通っていることを確認する。
まず、awsCLIが無事稼働しているか、s3を利用することができるか、チェックするために、以下の二つのコードを実行してみてください。“`
touch test.txt
aws s3 cp test.txt s3://[バケット名]
“`“`
aws s3 ls s3://[バケット
EC2とRDSを使用し、RailsアプリをAWSにあげる際に詰まった点 -その2-
#●はじめに
下記の記事を参考にEC2とRDSへを使用しRailsアプリをAWSにデプロイする際に詰まった点と、その解消方法をまとめました。
[世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで](https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce)#3.データベースの作成・接続ができない(RDSとRailsの接続)
RDSを使用したため、参考サイトの記述されているMySQLの設定方法とは異なる方法で実装する必要があります。
RDSとRailsの接続時に気にする大きなポイントは2つです。###1.RDSのセキュリティグループで、EC2インスタンスのブライベートIPからの接続を許可してあるか
セキュリティーグループは、AWS consoleからRDSを開き、DB選択すると確認できますね。
![スクリーンショット 2020-05-01 23.16.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5
PHP Laravel 基礎
#前提
Laravelでアプリを作っていた時に学んだことを殴り書きしていきます。#本題
ミドルウェアとは
アプリケーションへ送信されたHTTPリクエストをフィルタリングする、便利なメカニズムを提供してくれるもの。
ブラウザ経由で来たリクエストをコントローラーに処理が行く前に何らかの処理を追加できる機能。
ログイン認証のミドルウェア。storeメソッド
Laravelでは慣習的にstoreメソッドはデータをデータベースへ挿入する際、よく使われるメソッド名です。insertメソッド
insertメソッドはデータベースに新しいレコード(行)を追加するメソッド。アップロードした画像はハッシュ名(ランダムな名前)で保存したいため、どのレビューとどの画像が紐付くのかをデータベースに保存しておく必要がある。
ハッシュ名で画像を保存する理由としては、セキュリティのため。
わかりやすい名前で保存してしまうと直接URLにアクセスされてしまう等のセキュリティリスクが上がるため、ランダムな名前で保存する。論理削除
論理削除とは実際にはデータを削除せずに、削除されたと見なすフラッグと呼
Cognito+API Gateway+Lambdaでユーザ作成APIを作りたいんだー!
AWSの認定は保有していますが
実践できていない主なサービスがサーバレスまわり…ということで勉強を兼ねて、簡単なAPIを作成してみます。
#やりたいこと
APIでユーザ作成
– username と passwordをリクエストボディに指定しAPIをコールするだけでユーザ作成する。
– メールアドレス/電話番号の認証は不要。#参考
[LambdaでCognito認証(ユーザー作成)](https://qiita.com/minmax/items/8c2aa57b76e09b8192ed)#やってみよう!
###ユーザプールの作成
こんな私でもCognitoでユーザ管理をするにはユーザプールを作成しなければならないことは知っている。属性は必要最低限を指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613712/1a254b24-c952-5ccf-d650-2f2e400d01f9.png)![image.png](https://qiita-image-st
AWSへの不正アクセスを防ぐために気をつけておいた方が良いことを紹介します
まずはIAMのベストプラクティスに則ることが最も大切ですが、この記事では実際にどのような攻撃手法で不正アクセスを試みるのかを紹介しつつ、その対策方法も記載していこうと思います。
[IAMベストプラクティス](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html)
[S3セキュリティベストプラクティス](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/security-best-practices.html)## 1. アクセスキーの漏洩によるAWSの不正利用
### どうやっているか
AWSを利用している人にとってはお馴染みの攻撃手法だと思います。
実際にGithubに上げてみたところ**13分**で抜き取られるというQiitaの記事もあるぐらいですので、仕事/プライベート関らず対策が必要です。[GitHub に AWS キーペアを上げると抜かれるってほんと???試してみよー!](https://qiita.com
Go+CDK(TypeScript)で始めるサーバレスチュートリアル
# 今から作るもの
サーバーレスの鉄板構成である、`APIGateway+Lambda+DynamoDB`を、AWS CDKを用いて構築していきます。LambdaはGoで実装し、CDKはTypeScriptで実装します。全体像はこんな感じです。
![cdk-apigw-lambda-dynamo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246737/35dfd6de-540e-e9e0-9c60-3fc41b2afe31.png)
## CDKとは
>AWS クラウド開発キット (AWS CDK) は、使い慣れたプログラミング言語を使用してクラウドアプリケーションリソースをモデル化およびプロビジョニングするためのオープンソースのソフトウェア開発フレームワークです。
[AWS公式](https://aws.amazon.com/jp/cdk/)より引用
簡単に言うと、CloudFormationテンプレートをプログラミング言語を使って書けるようになるよということです。現在CDKで
AWSでMatlabインスタンスを起動、リモート接続
#はじめに
クラウドでmatlabを起動して実際に動かすといった特殊なケースなのですが、ネットに記事が意外となかったため記事にすることにしました。
選択肢としてはAWS or Azureがあるようです。今回はAWSでmatlabインスタンスを立ち上げてみたいと思います。#結論
超簡単にできました。
awsにはmatlabが事前にインストールされたec2マシンを起動できるので便利でした。
本当はGCPを使いたかったため、立ち上げ方を調べるのに多少時間がかかりましたが、5分もあれば動かせる環境が構築できます。#構築
最初に公式サイトにある動画のリンクを貼っておきます。
英語ですが、実際に見ることでどうやって立ち上げるかをイメージできるかと思います。
https://jp.mathworks.com/videos/how-to-run-matlab-in-the-cloud-with-amazon-web-services-1542634996553.html手順としては
(0.awsアカウントを作る)
1.インスタンスを立ち上げるためのgithubにアクセスする。
http
独自ドメインでCloudFront にアクセスできるようにする
以下の構成を[以前の記事](https://qiita.com/kanadeee/items/247d114170587e683c4f)で作ったので、
「CloudFront のディストリビューションに割り当てられたドメイン名ではなく
独自ドメインでアクセスできるようにしたい」と考えました。
![スクリーンショット 2020-04-30 22.33.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/5e2dd353-a860-1cee-3441-89c089cdc32c.png)
ググったところ、**CloudFront のディストリビューションにCNAME を追加**すれば実現できそう。
#事前準備
– 紐付けたい独自ドメインのSSL証明書ACM でSSL証明書を取得したい方は、もしよかったら以下の記事を参考になさってください。
[AWS Certificate Manager (ACM) でSSL証明書を取得する](https://qiita.com/kanadeee/items
Amazon Cognitoのユーザー作成について
# 概要
Amazon Cognitoユーザーをコンソールから作成した際に、アカウントステータスが`FORCE_CHANGE_PASSWORD`となってしまい、このままだとユーザーが使えない状態なので、`CONFIRMED`に変更し、ユーザーを使えるようにしたかったので、備忘録もかねて変更方法を以下にまとめます。:writing_hand:# 手順
変更方法は簡単で、2ステップで完了します。1. 仮パスワードからSession情報を取得する
2. 仮パスワードを変更する# 1️⃣ 仮パスワードからSession情報を取得する
まず、Session情報を取得するためにシェルに以下のコマンドを入力します。
(私の設定しているリージョンは東京リージョンなので、リージョンに関する部分は必要に応じて変更してください)“`shell:シェル
aws cognito-idp admin-initiate-auth \
–user-pool-id ap-northeast-1_xxxxxx \
–client-id xxxxxxxx \
–auth-flow ADMIN_NO_
BucketAnywhere の設定
Androidのアプリに「BucketAnywhere」(旧称S3Anywhere)というのがある(そういえばかなり前からあったような)。その名の通りAndroidスマホからAWSのS3バケットへのアクセスができる。
AWS初めて4年になるが、業務はオンプレでAWS使わないので(泣)趣味がてら機能を使って見ている。今回はスマホのバックアップとして、上記ソフトを使ってみる。とは言ってもファイルやフォルダを手で選ばないといけないので全自動では無い。改めて今回使おうとしたらすっかり忘れてたので手順を記録しておく。1.AWSでS3のバケットを作成する。コンソールからメニュー一覧を選んで、名前をつけて作成する。
2.S3アクセス用のIAMを作成する。その前に今回はグループを作成して、そのグループにAmazonS3FullAccessのポリシーをアタッチする。
3.IAMユーザーを作成して、上記グループに含める。アクセスキーとシークレットキーをダウンロードか、画面コピーかして保存する。
4.S3の作成したバケットについて、アクセスポイントを作成する。作成したバケットを選択すると、「概要」「プロ
AWSを使用するWebアプリケーションをデプロイして、アクセスするとBad Requestが出た時の対処
#この記事について
とあるDjango入門本を読んで、デプロイしてみたものの、アクセス時に躓いたので、後学のために残します。##環境
####開発環境
OS : Windows10 pro
Python : 3.8
Django : 3.0.4
####本番環境
PostgreSQL : 11.5
EC2インスタンスへSSH接続ツール : PuTTY
Nginx
Gunicorn##前提条件
デプロイ済みで、作成したWebアプリの稼働状況確認の段階とします。##ソース
###settings.py
#####デプロイ時
“`pythonDEBUG = False
ALLOWED_HOSTS = [os.environ.get(‘ALLOWED_HOSTS’)]
“`
##環境変数
###.bash_profile
“`
(…略…)
export ALLOWED_HOSTS=←AWSのインスタンス情報から確認できます。
“`
##実行
http://(Elastic IP)/ でアクセス… Bad Requestと表示される。##
プログラミング初学者がDjango+機械学習+AWSでWEBページを公開するまでpart1
この記事は、2020年1月からIT部門に異動した25歳IT知識0人間がゴールデンウイークでWEBページを公開するまでを記録に残したものです。
今日は2020年5月1日、これから開発の5日間が始まります。初めての投稿ですので、軽く自己紹介を。
機械系の工学部卒25歳、会社は建設会社。最近はIoTとか流行りですよね!うちの会社にも1年前くらいにできたんですよ。
で、少人数の部署ながらpythonとかAWSが触れるので、業務でちまちま勉強しています。
4か月たったのでそろそろ1人立ちしなきゃいけないんですが、IT業界は深いですね。いくら学んでも学びきれません。ただ、アウトプットを出さないことにはどうしようもないので、GW期間に成果物を作ろう、と決心したのです。
ちなみにこのQiitaもアウトプットです。間違いやアドバイス等なんでもコメントいただけると幸いです。
諸先輩方、よろしくお願いいたします。さて、まずは計画を立てましょう。
はい、立てました。5/1(金) スケジュール立て、成果物のイメージ作り
ー>スケジュールは30分くらい。
成果物は1時間くらいでイメージはできる。
GitHub Actions の Runner を一発で構築するスクリプト
Terraform で EC2 の user_data に突っ込んで、自動構築した。
“`rb:gh-action.tf
resource “aws_security_group” “runner” {
egress {
from_port = 0
to_port = 0
protocol = “-1”
cidr_blocks = [“0.0.0.0/0”]
}
}resource “aws_instance” “runner” {
ami = “ami-0278fe6949f6b1a06” # ubuntu 18.04
instance_type = “t2.small”
vpc_security_group_ids = [aws_security_group.runner.id]
user_data = file(“./ec2-scripts/init-gh-action-runner.sh”)
}
“`“`sh
Firelensのヘルスチェック方法
# 概要
Firelensのヘルスチェック方法がAWSドキュメントに無いので(もしかしたらあるかもしれないですが見つけられなかった)やり方を共有します。
前提として、下記条件での使用になります。– Firelensの実装はFluent Bitを使用
– Firelensはサイドカーとして組み込む
– ECSで使用# Firelensとは
FirelensはAWSのコンテナサービスでログ収集を簡単に取り扱えるようにしたツールです。
[Firelens の発表 – コンテナログの新たな管理方法](https://aws.amazon.com/jp/blogs/news/announcing-firelens-a-new-way-to-manage-container-logs/)
# Firelensの使用方法
サイドカーとして組み込んで使用します。
アプリケーションがログを標準出力するとそれを拾ってくれます。
下記の私の記事も読んでいただく良いかもしれません。[ecs-cli composeを使用してFireLensからDatadogへログを送信するYamlの記述方