- 1. 作成したEC2にWebサーバー(nginx)を立ち上げるまで。
- 2. Athenaで基礎からしっかり入門 分析SQL(Pythonコード付き) #4
- 3. AWS CloudFormationで開発環境を作ってみる
- 4. AWS Certified Cloud Practitionerを受けようと思った人へ
- 5. S3操作をするLambda関数(Python-image)をSAM CLIを使ってデプロイする手順をまとめてみる
- 6. terraformのworkspaceを利用してVPCをマルチリージョンに展開する
- 7. 認証に関して調べた事を書き連ねてみる。
- 8. Amazon Linux 2 に複数PHPバージョンを同居
- 9. 2021年9月2日のAWS東京リージョン障害についてざっくり。
- 10. AWSクラウドプラクティショナー合格体験記
- 11. Elastic Beanstalkの環境の終了やアプリの削除でerror
- 12. TerraformでS3を構築
- 13. IAMロールとAWSサービスロールの違いって何?(自分なりの理解)
- 14. S3のレプリケーション(同一AWSアカウント)
- 15. AWS Systems Manager(SSM) パラメータストアのクロスアカウント設定
- 16. AWS EC2にSSL/TLSを追加する(https化)
- 17. AWS CLIからDynamoDBを操作してみる。
- 18. zabbixによるプロセス監視
- 19. zabbixによるURL監視の備忘録
- 20. zabbix-agent.conf での個人的勘所
作成したEC2にWebサーバー(nginx)を立ち上げるまで。
作成したEC2にWebサーバー(nginx)を立ち上げるまでの簡易的なメモです。
## 1.EC2にログイン
SSHでログイン。“`bash
# XX.XXX.XX.XXXはパブリックアドレスを入力。
ssh -i ~/.ssh/xxx.pem ec2-user@XX.XXX.XX.XXX
“`## 2.EC2にnginxをインストール
amazon-linux-extrasを使ってnginxをインストールします。“`bash
# マニュアルの確認
man amazon-linux-extras# 利用可能なリストを表示
amazon-linux-extras# 管理者権限でインストール
sudo amazon-linux-extras install nginx1# nginxを起動
sudo systemctl start nginx.status# nginxのステータスを確認(起動されていることを確認)
systemctl status nginx.status# ポート80番の状態を確認
sudo lsof -i:80
“`##
Athenaで基礎からしっかり入門 分析SQL(Pythonコード付き) #4
今まで複雑なデータ操作・分析などはPythonでやっており、SQLは普通のアプリ開発程度のライトなものしか触って来なかったのですが、やはり分析用の長いSQLなども書けた方がやりとり等で便利・・・という印象なので、復習も兼ねて記事にしておきます。
また、SQLに加えて検算も兼ねてPythonやPandasなどを使ったコードもSQLと併記していきます(Pythonで書くとどういった記述が該当するのかの比較用として使います)。
※長くなるのでいくつかの記事に分割します。本記事は4記事目となります。
# 特記事項
本記事では配列関係を良く扱っていきます。その都合、Pandasなどでapplyメソッドなどを絡めた形で触れている節もあればビルトインでの記述のみしている節もあります(本記事からPandas色が少し薄くなります)。
# 他のシリーズ記事
※過去の記事で既に触れたものは本記事では触れません。
`#1`:
用語の説明・SELECT、WHERE、ORDER BY、LIMIT、AS、DISTINCT、基本的な集計関係(COUNTやAVGなど)、Athenaのパーティション、型、
AWS CloudFormationで開発環境を作ってみる
# ■ CloudFormation
CloudFormation は AWSリソースのプロビジョニングを行えるサービスで、YAML(またはJSON)でテンプレートを記述することができます。
今回は勉強がてら自分の開発環境を作ってみたいと思います。![スクリーンショット 2021-09-07 005950.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92383/f57c2ea5-3f44-8f0f-a84a-5a32aff10972.png)
## ◎ テンプレート
“`dev.yml
# 組み込み関数: https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html
# 疑似パラメータ: https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/pseudo-param
AWS Certified Cloud Practitionerを受けようと思った人へ
# なぜ書くのか
– 自分がこの試験に興味を持った時に、「勉強法から受験方法までを流し読みできる記事」があればいいと思ったから
– 特に受験方法(オンライン試験の時間帯や当日のやり取り)はあまり情報がなくて不安だったから(→ 「受験してみての感想」を参照)# なぜ受けたのか
– 仕事でAWS使いそうだけど、知識がまったくなかったから
– AWSサービス名となんとなくの役割を理解して、会議やドキュメントを理解できるようになるため
– (Djangoの勉強してたらクラウドでサーバー立ててみたくなったから)# 筆者について
– 社会人3年目
– メーカーでソフトウェア開発担当
– クラウド開発経験ゼロ# 勉強方法
#### 作戦
初級の試験かつ選択式の問題ということで、とにかく過去問の数をこなす方針を立てました。#### 勉強時間
– 約2週間
– 平日1時間、休日3, 4時間ほど
実際にやってみて、多すぎず少なすぎずちょうどいい勉強時間だったと思います。サーバー管理やデプロイに関する知識・経験がもとからあれば、この半分くらいの勉強時間で合格できる印象です。###
S3操作をするLambda関数(Python-image)をSAM CLIを使ってデプロイする手順をまとめてみる
##はじめに
Lambda関数を作成するにあたり、必要な手順をざっくりまとめました。
以下も試しました。– 1つのアプリケーションで複数の関数の定義
– S3の操作周りをLambdaで行う
– SAM CLIのローカルテストを試す##開発者のIAMユーザ作成
開発とデプロイで使用します。
![スクリーンショット 2021-09-04 3.33.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/35a521dc-8ae5-66ad-5764-947364e38860.png)
![スクリーンショット 2021-09-04 3.38.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/399a653b-7a69-e8ea-447f-0ce564bf8239.png)
あとは、デフォルトのまま作成し、アクセスキー、シークレットアクセスキーを保存#####必要な場合アクセス権を追加
ユー
terraformのworkspaceを利用してVPCをマルチリージョンに展開する
workspaceを使って複数リージョンのインフラ環境をサクッと作って管理してみる。
マルチリージョン構成ので同じ構成のVPCを展開する時に便利。workspaceについてはこの記事を参考に
https://dev.classmethod.jp/articles/how-to-use-terraform-workspace/
今回のversion
“`
$ terraform –version
Terraform v1.0.3
on darwin_amd64
+ provider registry.terraform.io/hashicorp/aws v3.42.0Your version of Terraform is out of date! The latest version
is 1.0.6. You can update by downloading from https://www.terraform.io/downloads.html
“`やっていきましょう。
workspaceはawsのregion名で作成。“`
default
*
認証に関して調べた事を書き連ねてみる。
# このページに関して
今後重要になると思い、認証や認可やSSOとかの知見を得ようとしています。調べてると用語がたくさん出てきてどれがどう関係しているのかこんがらがってしまっています。その為、自分が整理する為のメモページです。とはいえ、同じ感覚を持つ人も多いと思うのでその方たちの参考になればと思います。初心者タグつけているのはその為です。
間違っている点など多々あるかと思います。その際には指摘など頂けると有り難いです。# 認証って何?
[IT用語辞典](https://e-words.jp/w/%E8%AA%8D%E8%A8%BC.html)によると、**認証とは、対象の正当性や真正性を確かめること。ITの分野では、相手が名乗った通りの本人であると何らかの手段により確かめる本人確認(相手認証)のことを単に認証ということが多い。**だそうです。
# 世の中ではどんな感じ?
大体のサービスでユーザーIDとログインパスワードを求められる形です。これは昔も今も同じかなと思います。
ただ、最近で世の中で流行っているのはシングルサインオンです。すなわちどこかのサービスでログインして
Amazon Linux 2 に複数PHPバージョンを同居
## Amazon Linux 2 に複数のPHPバージョンを同居
PHPインストール時に複数バージョンを同居しても問題ないよう、インストールしてる手順をメモ
:::note warn
汎用的なやり方ではないと思いますが、簡単に設定・切替えしたい人向けです。
:::① yum updateした後に、remiリポジトリを追加
“`sh
# 最新版へupdate
sudo yum -y update
# remiリポジトリを追加
sudo rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
“`② 利用するPHPバージョン毎にインストール
“`sh
# PHPを使うバージョン毎にインストール
for v in 70 74 80; do sudo yum -y install php$v php$v-ph
2021年9月2日のAWS東京リージョン障害についてざっくり。
2021年9月2日、AWS東京リージョンでAWS Direct Connectの障害があり、調査のサマリが公開されました。
https://aws.amazon.com/jp/message/17908/
某所でこれ読むの辛いというコメントをもらったので、私の理解の範囲で要点をざっくり箇条書き。分かる人、読める人は上のサマリの方が間違いがなく、より詳しいので、そちらを読んでいただいた方がいいと思います。
# 概要
* 午前 7 時 30 分から、Direct Connectの東京リージョンに向かうトラフィックについて断続的な接続の問題とパケットロスの増加を観測。
* 午後 12 時 30 分に復旧を観測しはじめ、午後 1 時 42 分に接続の問題は完全に解決。
* Direct Connect ロケーションと東京リージョンの間のネットワークデバイスの一部に障害が発生したことが原因。
* 他のすべてのネットワーク接続は影響を受けませんでした。他の AWS リージョンへの Direct Connect トラフィックも影響を受けませんでした。# 根本原因
* 新しいプロトコルと
AWSクラウドプラクティショナー合格体験記
時間的・金銭的にコスパよく合格するために取り組んだことを共有します.
# Step1: 基本的なAWSサービスを利用する
資格取得のみが目的であるまたは厳しい時間的制約がある方はこのステップを飛ばしてもOKです.
しかしながら,特に初学者の多くの人にとってはこのステップによってAWSの理解が深まるかと思います.
私は[AWS公式のハンズオン](https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-hands-on/)を用いて,以下のサービスを触ってみました.
– EC2
– VPC
– IAM
– Lambda
– APIGateway
– RDS
– DynamoDB
– ELB
– AutoScaling
– Route53
– CloudWatch
– S3特にはじめの一歩として,EC2, VPC, IAMの機能に触れる上では以下を指針としました.
加えて,Qiita限定公開記事の執筆,同期・先輩との勉強会で
Elastic Beanstalkの環境の終了やアプリの削除でerror
# 状況
Elastic Beanstalkで環境やアプリケーションが削除できなくなる時がありました。# 原因
RDSだったり、セキュリティグループなどの依存関係があると削除できなくなるようです。# エラーメッセージ
以下はElastic Beanstalk管理内にRDSを立てた環境でRDSを先に削除してしまった際に出たエラーメッセージです。“`error.txt
ERROR
Stack deletion failed: The following resource(s) failed to delete: [AWSEBRDSDatabase].
2021-xx-xx-xxxx
ERROR
Deleting RDS database named: xxxxxxxxxxxx failed Reason: DBInstance xxxxxxxxxxxx was not found during DescribeDBInstances“`
# 余談&注意点
今回のエラーの本筋とは関係ありませんが
Elastic BeanstalkではRDSを『管理下に置かない』こと
TerraformでS3を構築
## これは何
CFをTFで作成した( https://qiita.com/namely_/items/7686771cb682f756116f ) 際に、
実はS3も作成していたのですが、書き忘れたのでメモを書きました。## 構成図
![スクリーンショット 2021-09-07 16.19.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1740345/5eeebed7-bf1a-16b3-532b-c4739d9554a1.png)
## S3のアクセス制御について
いつもこんがらがるので、書いておきます。
“`
ユーザポリシー
• IAM Userに対して、S3やバケットへのアクセス権限を設定
• 「AWSにおいて、このユーザは何ができるか?」• バケットポリシー
• S3バケット毎に、アクセス権限を指定
•「このS3リソースには誰がアクセスできるのか?」• ACL
• 各バケットおよびオブジェクトのアクセス権限を指定
• ACLはバケット単位のACLとオブジェ
IAMロールとAWSサービスロールの違いって何?(自分なりの理解)
## はじめに
レプリケーションの設定をしている時に、IAMロール・AWSサービスロールという2つが出てきてそれぞれのロールの違いって何?となったので色々調べて自分なりに理解したのでそれを備忘録として残す## IAMロール(単に「ロール」)とは
[公式の説明](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-role)の通り、IAMロール(単に「ロール」)とは、一時的な権限としてユーザとかサービスに権限を付与するのに使うものこのロールは同一AWSアカウント内のユーザの権限を制御するためにあるものではなく、
– AWSのサービスに対して権限を付与する
– 他のAWSアカウントのユーザに一時的に使ってもらうための権限を付与する
– WebサービスからAWSのアクセスしたりするための権限を付与するという事をするために存在する
そのため、AWSアカウントに属するユーザに対して権限を制御をするのにロールをアタッチして・・・という事は行わな
S3のレプリケーション(同一AWSアカウント)
## はじめに
DevOpsの一環でCICDを構築した際、レプリケーション先で[レプリケート後にDeployを実行させる仕組みを構築した](https://qiita.com/yuta-katayama-23/items/64a5b3a7b7c3f9b76e2f)が、自分ではレプリケーションを設定した事がなかったので試しにやってみたまた、今回レプリケーションの設定をやる中でIAMロール?サービスロール?といった言葉出てきて、それぞれのロールの違いって何?となったのでそれについても調べたりして[自分なりに理解を深めてみた](https://qiita.com/yuta-katayama-23/items/0606e8d590968e43fd27)を参照)
※一応自分の理解を確かめるという意味でも、ここではあえてIAMロールとサービスロールの2パターンでレプリケーションをやってみた・参考:[チュートリアル: レプリケーションの設定](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/replication-exa
AWS Systems Manager(SSM) パラメータストアのクロスアカウント設定
Bのアカウントに存在するパラメータストアをAのアカウントから参照するための設定について確認した記事です。
# 構成
– Aアカウント
– パラメータストアの値にアクセスする方のアカウント
– アカウントIDを仮に0123456789012とする– Bアカウント
– パラメータストアに値を保管しているアカウント
– アカウントIDを210987654321とする## アカウントBでパラメータストアに値を保管する
![スクリーンショット_2021-09-07_10_45_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52141/a9d1d136-b6c3-8fbd-2132-54a2ebbe4f2a.png)
設定値としては画像の通り
– キー名:cross-test
– 種類:String
– 値:test## アカウントBでパラメータストアアクセスするロールを作成する(671268391729)
“`:パラメータストアのARN形式
arn:a
AWS EC2にSSL/TLSを追加する(https化)
AWS EC2インスタンスWEBサーバーを[ムームードメイン](https://muumuu-domain.com/)などで取得した独自ドメインでHTTPS化を有効にする手順について
##ムームードメインの操作
取得したいドメインを検索>カートに追加
###ドメイン設定
WHOIS公開情報:チェック
ネームサーバー(DNS):ムームーDNS
ドメインの利用方法:選択しない
ムームーメール:チェックしない##ACMの操作
*AWS Certificate Managerのコンソール画面>証明書のリクエスト
*パブリック証明書のリクエストを選択して、証明書のリクエストをクリック
*取得したドメインを入力し、次へ
*DNSの検証を選択して、次へ
*任意のタグをして、確認
*確定とリクエスト
*検証状態のステータスが「検証保留中」になっていることを確認する
*ドメイン名左の▼をクリックして、CNAMEレコードの名前欄と値欄を控える##ムームードメインの操作
*カスタムドメインの操作
*コントロールパネルからムームーDNSをクリック
*取得したドメインの 利用する をクリック
*D
AWS CLIからDynamoDBを操作してみる。
#はじめに
業務でDynamoDBを利用しているのですがAWS CLIからコマンドを打つ機会があったので忘れずに操作内容をメモしておこうと思います。##事前準備
今回はローカル環境からコマンドを打っているため、AWS CLIを利用するにあたってAWS Configureの設定をする必要があります。“`console
C:\WINDOWS\system32>aws configure
AWS Access Key ID [None]: IAMユーザのアクセスキー
AWS Secret Access Key [None]: IAMユーザのシークレットアクセスキー
Default region name [None]: ap-northeast-1
Default output format [None]: json
“`##DynamoDBの作成
今回はこの「test_dynamoDb」というテーブルを利用して色々と操作をしていこうと思います。
パーティションキーは”TestKey”とします。
![test_dynamo0.png](https://qiita-image-
zabbixによるプロセス監視
バージョンは4系
今回のポイント
“`
対象環境のEC2インスタンスについて、特定プロセス監視の追加。
例えばこんな感じ
inotifywait -e CLOSE_WRITE,DELETE -mrq /var/www/html/hoge/huga
“`inotifywaitでディレクトリの変更を監視しつつそれをzabbixに飛ばしてそこからslack通知なりなんなり便利に使ってみましょうという流れ。
https://ameblo.jp/itboy/entry-10172179452.html
今回困ったこと
1. プロセスの引数がいっぱいあってどうやって指定するのかわからん
2. プロセスの引数にオプション指定ある
3. プロセスの引数の中にカンマがあるここに書いてあるように
https://qiita.com/manabuishiirb/items/221f57f3f1352cd72bf8
“`
proc.num[]
“`[]の中は引
zabbixによるURL監視の備忘録
zabbix触り始めて割と最初の頃に躓いた時のメモ
バージョンは4系対象はALB配下のwebサーバー
## Hosts作成のあれこれ
zabbix-web上での設定
Agent interfacesは厄介
ELB配下のURLについてはDNS設定が出来ない(当然ELBいるから)
-> というそもそもコンテナで稼働しているzabbixサーバーはport 10050 をlistenしている
-> ELBでそんなport開いてるわけ無いでしょ
-> しかしuser agentを設定しないわけにも行かないので自分のローカルIPを設定すれば結果的におkIPを選択して、127.0.0.1 / port 10050
※zabbixサーバー自身のローカルを指定してる(ELB配下じゃなかったら監視対象のDNSを指定したい所)Groupsは監視対象次第(EC2とかRDSとか)で適宜
VisibleNameはそのまんまhost名になるので、パット見でわかりやすい名前や、既存の設定に合わせて命名しましょう。##・Triggersについて
既に環境をクライアントに引き渡している場合、アラート
zabbix-agent.conf での個人的勘所
serverバージョンは4系、AmazonLinux2環境
ubuntu環境に入れた時はこの記事をまんま進めてた(大感謝)。
ubuntuにagentを入れた時はインスコ完了時点でstartしている。https://www.server-world.info/query?os=Ubuntu_18.04&p=zabbix40&f=7
# zabbix-agent.confでよく弄る箇所
“`
### Option: LogFile
# Log file name for LogType ‘file’ parameter.
#
# Mandatory: yes, if LogType is set to file, otherwise no
# Default:
# LogFile=LogFile=/var/log/zabbix/zabbix_agentd.log
“`agentのLogを吐き出す場所の指定。
各agentのログを一箇所にまとめたい時等に割と弄る—
“`
### Option: EnableRemoteCommands
# Whether