- 1. AWS Lambda から Cloud Firestore を使ってみる
- 2. railsチュートリアルが終わったらcloud9を削除しよう!(じゃないと毎月お金かかるよ)
- 3. API Gateway → Lambda を実行 同期・非同期 with CloudFormation
- 4. S3+Cloudfront+Route53でSPAを公開したときにハマったこと
- 5. AWS LambdaとSlack incoming webhookでサイトの生存確認チェッカーを作る
- 6. AWS CLI インストールエラー対処法まとめ
- 7. AWSでWordPressを構築する
- 8. AWSの「Well-Architected Framework」をまとめてみた
- 9. AWS CLIコマンドがCRON実行できない場合には環境変数(認証周り)を確認する
- 10. ECS FARGATE でZabbixを構築30分コース
- 11. SSHにてAWSにあるインスタンスにログインできない時の対処法
- 12. EC2インスタンスのSwap領域を作成する
- 13. AWSでMastodonインスタンスを立てる
- 14. 【AWS】EIP、パブリックIPアドレス、プライベートIPの違いとは?
- 15. いつもの公開鍵でアクセスできるEC2を立ち上げる
- 16. AWS CLI設定のアレコレ
- 17. AWS CloudFormationを使ってみた
- 18. LaravelでS3を操作する時はアクセスキー&シークレットキーではなくIAMロールを使うこと
- 19. 『Amazon Web Services 基礎からのネットワーク&サーバー構築』(4)
- 20. 【AWS】W-A(AWS Well-Architected Framework)とは?
AWS Lambda から Cloud Firestore を使ってみる
FirestoreのデータをAlexaSkillから呼び出したかったのでLambdaに接続してみました。
そのときの手順を残しておきます。
勉強中の身ですので温かい心で読んで頂けると嬉しいです。
###1.環境
Windows 10
Node v11.13.0###2.Firebaseのプロジェクト作る
Firebaseのコンソールからプロジェクトを作成します。
プロジェクトを作るとDatabaseがサイドバーから選べるのでそこから新しいデータベースを作成します。###3.ローカルフォルダにNode.jsのプロジェクトを作る
コマンドラインから任意のディレクトリに移動して
“`npm init“`を実行。
package.json が作成されます###4.Firebase Admin SDK をダウンロード
[Firebaseのドキュメント](https://firebase.google.com/docs/firestore/quickstart?hl=ja)に従ってnode-moduleをインストールしましょう
“`npm install firebase-adm
railsチュートリアルが終わったらcloud9を削除しよう!(じゃないと毎月お金かかるよ)
###①事象
awsを使用してないにも関わらず、 毎月$0.88(約100円)請求がきていた(以下のようなメールが届いていた)
“`
Greetings from Amazon Web Services,This e-mail confirms that your latest billing statement, for the account ending in ****, is available on the AWS web site. Your account will be charged the following:
Total: $0.88
You can see a complete break down of all charges on the Billing & Cost Management page located here:
https://console.aws.amazon.com/billing/home#/bill?statementTimePeriod=0000000000
To protect your privacy, w
API Gateway → Lambda を実行 同期・非同期 with CloudFormation
AWS CloudFormationを用いて、API GatewayからLambdaを同期・非同期で呼び出します。
CloudFormationテンプレートと、Lambdaソースは以下のような構成にしました。構成を変える場合、LambdaのCodeUriでディレクトリを、Handlerでファイル名を変更できます。
“`shell
|
|–apigateway.yml
|–Makefile #なくても構わないです。コマンドを毎回打つのが面倒なので作っただけです。
|–Lambda
|–test
test.py
“`“`makefile:Makefile
.PHONY: deploy
deploy:
$(call blue , “Lambda package & deploy”)
@aws cloudformation package –template-file apigateway.yml –s3-bucket ご自身のS3バケット名 –output-template-file packaged-temp
S3+Cloudfront+Route53でSPAを公開したときにハマったこと
## tl;dr
– やはりまだACMの証明書はバージニア北部にリージョン設定しておかないとCloudFrontに設定できない
– S3のバケット名はドメイン名完全一致じゃないとだめ
– S3の`Static website hosting`を設定したときに出てくるエンドポイントをCloudFrontの`Origin Domain Name`に設定しないと`Static website hosting` の設定を素通りする、何も効かない## やってたこと
– S3 + CloudFront + Route53 で静的ホスティングサイトを作成する
– アップするものはReact(create-react-app)で作成したSPAのbuildファイル
– CIで自動的に〜とかちょっとすっ飛ばしたかったので手動でS3のバケットに挙げる## ハマったこと
### やはりまだACMの証明書はバージニア北部にリージョン設定しておかないとCloudFrontに設定できないお名前.comでドメイン取得したので、互いにサイトを行ったり来たりで取得した。
最初は四苦八苦あって証明書は取れたもの
AWS LambdaとSlack incoming webhookでサイトの生存確認チェッカーを作る
主要サービスにはいろいろ監視ソフト入れて、トラフィックの異常増大や、生存確認、リソースの利用状況なんかを可視化しているケースが多いと思います。ですが、例えば自社サイト(wordpressとかが多い)はじめ、管理コストをあまりかけられないサービスなりサイトって有りますよね。そんなサイトたちをAWS LambdaとSlackのincoming webhookを使って落ちているときに通知してくれるスクリプトを書いてみました。
## Slackのincoming webhookのURLを発行する
ワークスペースの設定 → APP管理 → カスタムインテグレーションへ移動
直リンクだと以下のページ
https://##yourdomain##.slack.com/apps/manage/custom-integrations![Screenshot from 2020-05-22 22-53-18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/293892/7df5c62f-5da4-c7c6-a5d1-
AWS CLI インストールエラー対処法まとめ
# 参考文献
– [OSのPython古くて困ってる場合はpyenv入れたら便利だよ](http://uorat.hatenablog.com/entry/2016/02/03/131534)
– [Python2 で get-pip.py で SyntaxError](https://qiita.com/Gro/items/34506dda61d0870c24f6)
– [Amazon Linux 2でpipをインストール](https://qiita.com/yuta_vamdemic/items/ba932c741cbc8e20d5ec)
– [AWS CLIのインストール](https://qiita.com/yuyj109/items/3163a84480da4c8f402c)
– [pyenv と pyenv-virtualenv をインストールする](https://qiita.com/shigechioyo/items/198211e84f8e0e9a5c18)#エラー内容
“`
$ pip install awscliDEPRECATION: Python
AWSでWordPressを構築する
今回はAWSにWordPressを構築していく。以下の作業が完了していることが前提。
[・Webサーバー構築](https://qiita.com/r_saiki/items/cc1d7ed9864ce07501f2)
[・AWSでDBサーバーを作成する](https://qiita.com/r_saiki/items/278ae0765f30684ed860)#WordPress用のDBを作成
RDSにWordPress用のDBを作成する。EC2(Webサーバー)とRDS(DBサーバー)を起動したら、SSH接続して、EC2からRDSに接続する。~~~:UbuntuからEC2にSSH接続してDBに接続
$ sudo ssh -i /home/r-saiki/ダウンロード/aws-key-webserver.pem ec2-user@18.177.125.119
[sudo] r-saiki のパスワード:
Last login: Tue May 19 11:09:37 2020 from fs96f9c6f1.tkyc217.ap.nuro.jp__|
AWSの「Well-Architected Framework」をまとめてみた
こんにちは!
大変なご時世ですが、自宅のリプレイスを控えております中の人です。
大幅なスペックアップが見込める半面、利用料金の増加に耐えられるかが気になる今日この頃です。。。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531245/7d18e697-b67f-478d-384a-4e0d80d72998.png)
弊社でも使えてたり使いきれてなかったりするAWSですが、この学習もかねて、
その設計原則である「**Well-Architected Framework**」について私なりにまとめてみました。# この記事のゴール
– AWS Well-Architected Frameworkがどんなものか知る
– AWS Well-Architected Frameworkの学習を通じて、クラウドにおける設計原則に触れてみる
– AWS設計で使える各種サービスの名前を知る
– 具体的にAWS Well-Architected Frameworkをどう活用するのか、活用できるのか
AWS CLIコマンドがCRON実行できない場合には環境変数(認証周り)を確認する
# AWS CLIシェルプログラムをCRON実行する場合
このようなS3へファイルをコピーする
シェルプログラムを作ってコマンド実行で動作したので“`sh:
#!/bin/bash
aws s3 cp ファイル名 s3://backet_name/
“`そのままCRONへ登録し失敗する理由は大体環境変数まわりかと思います。
– AWS IAMのクレデンシャル情報(アクセスキー、シークレットキー、リージョン情報など)を環境変数に指定する
– aws cliのコマンド引数で直接クレデンシャル情報を指定する
– S3へのアクセス権限を付与したIAMロールをEC2インスタンスに紐づける(未確認)上記のいづれかの方法を取ればCRONで動作します。
ここでは、環境変数でクレデンシャル情報を指定する方法を記述します。
環境変数でクレデンシャルファイルを指定する例)“`sh:
#!/bin/bashexport AWS_SHARED_CREDENTIALS_FILE=クレデンシャル情報を保存したファイル
aws s3 cp ファイル名 s3://backet_nam
ECS FARGATE でZabbixを構築30分コース
# 背景
コンテナ間の接続検証としていずれEC2からECSへ予定のzabbixを対象にした。
ECSはdocker-compose.ymlのlinksが使えない。
ECSのデフォルト値や細かい設定は省略する。# EC2
## ロードバランサーを作成
![ecs-zabbix_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249425/8561fb81-d757-f8f2-6330-da8754f65099.png)
* ロードバランサー名: infra-test-web
* AWS Certificate Managerに証明書作成済みならSSL 証明書に追加する。
* DNS名はRoute53でCNAMEして短くする
* infra-test-web-2099560009.ap-northeast-1.elb.amazonaws.com → ecs-zabbix.domain.com![ecs-zabbix_2.PNG](https://qiita-image-stor
SSHにてAWSにあるインスタンスにログインできない時の対処法
AWSを学習中のものです。
ローカル環境にて、SSHを使って、AWSにあるインスタンスにログインを試みていました。#エラーの内容
“`:ターミナル
$ ssh -i my-key.pem ec2-user@18.181.72.120
Warning: Identity file my-key.pem not accessible: No such file or directory.
ec2-user@18.181.72.120: Permission denied (publickey).“`
上記のようなエラーにずっと悩まされていて、やっと解決したので記録に残しておきます。
#解決策
##「cd .ssh」という隠しフォルダに移動する
“`:ターミナル
$ cd .ssh
“`##フルパスに書き換えて実行する
“`:ターミナル
ssh -i ~/Downloads/my-key.pem ec2-user@18.181.72.120
“`
自分はダウンロードディレクトリに my-key.pemをおきました。#SSHにログイン完了
“`:タ
EC2インスタンスのSwap領域を作成する
AWSでEC2インスタンスを立ち上げた直後ではインスタンスタイプによっては
SWAP領域が確保されていない場合があります。
※T2、T3インスタンスタイプでは確保されていません。Swap領域が確保されていないと、メモリを使い果たしてしまった場合
OOM(Out Of Memmory) Killerが実行されます。OSがAmazonLinux2の場合にSwap領域を1GB確保する手順を
記述します。#### 1.メモリ情報確認
“`
# free -h
total used free shared buff/cache available
Mem: 985M 49M 60M 388K 875M 771M
Swap: 0B 0B 0B
“`
Swapが確保されていません。#### 2.Swap領域の確保
Swapで利用する1GBのファイルを作成しま
AWSでMastodonインスタンスを立てる
## やること
– AWS周りの設定
– Mastodonインスタンスの構築![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401342/35c93c20-b601-407e-b551-dff9685722a6.png)
## 前提
– AWSアカウントがある
– CUIが扱える
– 独自ドメインがある当記事では、以下で構築します
– AWS ルートユーザー(12ヶ月無料期間中)
– 非Docker
– Mastodon v3.1.4
– メールサーバー非構築## 実際にやってみる
### AWS EC2インスタンスを作成下記URL通りに基本進めていく
下記URLの説明と違う点
– Ubuntu 18.04 LTS を選択
– スペック選択は「無料期間枠の対象」となっているものを選択http://webfood.info/mastodon-aws-tutorial/#ec2-1
### SSHログイン
今回はめんどくさかったので、**Windows Termi
【AWS】EIP、パブリックIPアドレス、プライベートIPの違いとは?
# はじめに
現在、AWSソリューションアーキテクトアソシエイトの資格について勉強をしています。
今回は、EIP/パブリックIPアドレス/プライベートIPの違いについて学んだのでアウトプットしていきたいと思います。# EIP/パブリックIPアドレス/プライベートIPとは?
## EIP
**「Elastic IP Address」**の略になります。
**AWSアカウントに紐づけられた静的なグローバルIPアドレスです。****特徴**
– 再起動してもIPアドレスが維持される
– 利用していない場合に課金される**課金されるパターン**
– EIPがEC2に関連付けられているが、EC2が停止している場合
– EIPが付与されているが、どこにも関連付けられていない場合
– 稼働しているEC2に2つ目のEIPを関連付ける場合## パブリックIPアドレス
**インスタンス起動時に自動的に割り当てられる動的なグローバルIPアドレスです。**
**特徴**
– ランダムに割り当てられるためIPアドレスを指定できない
– インスタンスを再起動すると別のIPアドレス
いつもの公開鍵でアクセスできるEC2を立ち上げる
**いつも使っている公開鍵** でアクセスできる Amazon EC2 インスタンスを立ち上げる方法について解説します。
いつも使っている公開鍵とは GitHub に登録しているものを想定しています。
また、 使用する AMI は ubuntu 18.04 のもの想定しています。
AWS コンソールのダッシュボードは 2020/05/22 に私がアクセスした時のものを想定しています。EC2 インスタンスへのアクセスにいつもの公開鍵を使うようにすることで、AWS のダッシュボードで生成したキーペアを管理する手間を省くことができます。
## GitHub に登録している公開鍵について
GitHub に登録している公開鍵は、 `https://github.com/ユーザー名.keys`という URL で `text/plain` でアクセスできます。複数の公開鍵を登録している人は複数行で出力されます。
“`shell
$ curl https://github.com/kamataryo.keys
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTI
AWS CLI設定のアレコレ
# 環境
MacOS# AWS CLI インストール
“`
brew install awscli –upgrade –user
“``hostname doesn’t match ` というエラーが出た場合は?
=> 確認: Python のバージョンは 2.7.9 以上か# アクセスキーの作成
AWS CLIには
使用している環境でAWS認証情報が設定されている必要がある。AWSの認証情報を設定するには、使用するIAMユーザーにてアクセスキーを作成する必要がある。
ダッシュボードのここ。`AWS Access Key ID`と`AWS Secret Access Key`が発行されるので保存する。
# コ
AWS CloudFormationを使ってみた
# はじめに
* AWS CloudFormationとは、VPC, Subnet, EC2Instance等のリソースを一括で構築したいときに、yamlファイルに設定を記述して、構築をオートメーション化するサービスである。つまりVPC, Subnet, SecurityGroup, …などと、何回もマネージメントコンソール上でポチポチする必要がない。
* yamlじゃなくてjsonでもOKこのCloudFormationによるインフラ構築をAWS CLIを用いて行ってみました。
## 前提知識
* VPC, EC2, SecurityGroup, etc.
* S3
* AWS CLI
*
但し、それほど深い知識は必要ない。## Key pairの作成
AWSのkey pairを事前に作成しておく。すでにある場合は問題ない。## yaml fileの作成
[aws_cf.yaml](https://github.com/oga-a/aws_cloudformation/blob/master/aws_cf.yaml)(ファイル名は任意)でVPC, Subnet,
LaravelでS3を操作する時はアクセスキー&シークレットキーではなくIAMロールを使うこと
LaravelからS3を使用する際はStorageファサードでS3を操作することが多いと思う。
その際に私がググった限りでは、ほとんどがアクセスキーとシークレットキーをソースコードにべた書きしているケースばかりだった。
しかし、こちらはアンチパターンなので、ec2で上記を行う場合はIAMロールを使用して、アクセスキー等はAWS側に隠ぺいしてもおう。ec2にIAMロールを割り当てる手順は転がっているので、ここでは割愛。
# Laravel側
config/filesystems.php
‘s3’ => [
‘driver’ => ‘s3’,
‘key’ => env(‘AWS_ACCESS_KEY_ID’),
‘secret’ => env(‘AWS_SECRET_ACCESS_KEY’),
‘region’ => env(‘AWS_DEFAULT_REGION’),
‘bucket’ => env(‘AWS_BUCKET’),
『Amazon Web Services 基礎からのネットワーク&サーバー構築』(4)
#前回のおさらい
サブネットのなかにサーバーを構築し、SSH接続できるようにした。#今回の目的
構築したサーバーにWebサーバーソフトをインストールし、Webサーバーとしてインターネットに公開する。#大まかな流れ
Apacheのインストール
↓
確認作業
↓
ファイアウォール設定
↓
DNSサーバー構成
↓
まとめ#Apacheのインストール
**「サーバーをWebサーバーとして機能させたい。」**
→「Webサーバーソフト」をインストールする。
→今回はApache HTTP Serverを使う。(手順)
1、**サーバーにSSH接続**
$ ssh -i my-key.pem ec2-user@[パブリックIP]2、**Apacheをインストール**
$ sudo yum -y install httpd
yum:管理者コマンド
-y:ユーザーの確認なしにすぐインストールする指定
httpd:Apacheを構成する実行ファイル名3、**Apache起動**
$ sudo systemctl start httpd.service
【AWS】W-A(AWS Well-Architected Framework)とは?
# はじめに
現在、AWS-SAAを学習しております。
今回は、W-A(AWS Well-Architected Framework)についての内容をアウトプットしていきたいと思います。
(ざっくりとしたメモレベルになります。)# W-A(AWS Well-Architected Framework)とは?
クラウド最適化への課題と不安に対する解決方法として整理されたクラウド活用のベストプラクティス集になります。
**いわゆる、クラウドに関するノウハウが集まったフレームワーク集です。**
具体的には
– サービス開始から10年以上の経験によって作られたノウハウがベースになっている
– 常に進化し続けている
– クラウド活用の設計原則、質問と回答形式(チェックリスト)をまとめたベストプラクティス集になります。
# フレームワーク(5つの柱)
– 運用上の優秀性
– セキュリティ
– 信頼性
– パフォーマンス効率
– コスト最適化## 運用上の優秀性
**「いかに安全に効率よく運用していくか?」**というフレームワークになります。
– ビジネス価値を提供する