- 1. AWSのRDSを削除したのに課金され続けてしまった話。。。原因が分かった。。。
- 2. CloudFormationでApiGatewayのログを有効化に必要な諸々の設定をする
- 3. RailsアプリをAWSにデプロイするまでにすごく苦労したので教訓メモ
- 4. AndroidからAWS Cognitoのユーザプールをさっくり使う
- 5. LaravelアプリをAWSにデプロイする
- 6. PythonでS3バケット内の一覧を取得し、特定のKeyで検索 Key名と最終更新日、カウント数をファイルに出力
- 7. AWSのControl Towerマスターアカウントからセルフマネージド型StackSetsを展開してみた
- 8. Cloud Runでカスタムドメインの設定方法(Route53編)
- 9. 【初心者】Amazon Inspector を使ってみる
- 10. AWSのアクセスキーを間違えないようにする方法
- 11. AppSync & GraphQL 入門
- 12. Amazon linux2 でsshpassを使う
- 13. GitHubへのpushをトリガにCodePipelineを走らせてテスト・デプロイする
- 14. Amazon Cognitoを利用したIDPとのシングルログアウト連携の実現
- 15. システムステータスチェックとインスタンスステータスチェックの失敗に備えた対処法
- 16. Multi-AZ構成のRDSを強制フェイルオーバーさせる方法
- 17. AWS ルーティングテーブルの書き換えによるAZまたぎでのフェイルオーバ
- 18. Amazon API GatewayのHTTP APIをOpen APIを利用して定義してみた (1/2)
- 19. CloudWatch Alarmが氾濫しているので停止する。
- 20. AWS概要 セキュリティ、ID管理について
AWSのRDSを削除したのに課金され続けてしまった話。。。原因が分かった。。。
AWSのRDSを使いアプリを作成していましたが、
結構月額が高いし、あまり使わなくなったので
RDSを削除しました。ですが、なぜが、まだ課金されている???
![スクリーンショット 2021-01-21 11.10.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355517/7a58f18b-3a94-b0ad-4023-77f7d6e28c5c.png)
なぜ?????
### 結論:スナップショットが残っていると課金し続けるようです。。。
https://us-west-2.console.aws.amazon.com/rds/home?region=us-west-2#snapshots-list:
ここにスナップショットがある人は削除しましょう!!!!!!
やはり
AWSは奥が深いですね。。。
CloudFormationでApiGatewayのログを有効化に必要な諸々の設定をする
共通の設定が必要なのでどっかに書く
“`yaml
Resources:
APIGatewayPushToCloudWatchLogsRole:
Type: AWS::IAM::Role
Properties:
Description: “Allows API Gateway to push logs to CloudWatch Logs.”
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
Effect: Allow
Principal:
Service: apigateway.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
– arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLog
RailsアプリをAWSにデプロイするまでにすごく苦労したので教訓メモ
# 何コレ
ポートフォリオを作成する上で以下の環境構築を行っていたが、個人的にとても苦労したので備忘録として残しておきたいと思い書いた。## 設定環境
AWS EC2(1年間無料で使えるインスタンス)
AWS RDS
Ruby 3.0.0
Rails 6.1.1
puma 5.1.1
mysql 5.7アプリはまだRails newしただけの状態
## 使った教材
こちらの記事を参考に環境構築を行った。わからない単語などは都度調べながら。
https://qiita.com/take18k_tech/items/5710ad9d00ea4c13ce36
記事自体はタイトルの通り、知識としては今は無くとも環境構築できるのではと思う(インフラ大事だからいずれはもっと学習するつもり)。## 何が苦労したのか
主に以下の点でとても苦労した。・記事とおりやっているが、capistranoの設定あたりから壮大につまずく
→これは記事が悪いわけでは無く(それ以外はすんなり設定できたので非常に感謝している!)、環境というのはどうしても個々で異なるので、あまり鵜呑みにせず、できたらラッ
AndroidからAWS Cognitoのユーザプールをさっくり使う
![スクリーンショット 2021-01-21 8.25.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/924658/026507a3-3977-e0d2-c867-46e2c94ed8b3.png)
サインアップやサインイン、パスワード再発行など、ユーザ管理がないアプリケーションを見かけない日はありません
とはいえ自前でバックエンドのシステムを作るのも大変…
でもAmplifyはちょっとリッチすぎる気がする…そんな私のための備忘録です
下記のことができます
– メールアドレス、パスワードによるサインアップ、ログアウト
– メールアドレス認証
– パスワード再発行メールアドレスやパスワードはガッツリ個人情報です
その辺りの管理をAWSにお願いできるのはかなり気楽ですよねー# 前準備
## SES (Simple Email Service)に配信用のメールアドレスを登録する
![0_SESにメールアドレスを登録し、送られたURLをクリックしてVerifyする.PNG](
LaravelアプリをAWSにデプロイする
LaravelアプリをAWSにデプロイする手順をメモ書き程度に残す
PythonでS3バケット内の一覧を取得し、特定のKeyで検索 Key名と最終更新日、カウント数をファイルに出力
所用で必要になったので
“`
# -*- coding: utf-8 -*-
import boto3PUBLIC_S3_BUCKET_NAME_TEST = ‘バケット名’
def access_count():
count = 0
with open(‘file.txt’, ‘w’) as f:
# バケットの一覧取得
S3 = boto3.resource(‘s3’)
S3BUCKET = S3.Bucket(PUBLIC_S3_BUCKET_NAME_TEST)for obj in S3BUCKET.objects.all():
if ‘検索名’ in obj.key:
count += 1
print(count, obj.key, obj.last_modified, file=f)print(‘total=’ + str(count), file=f)
“`
AWSのControl Towerマスターアカウントからセルフマネージド型StackSetsを展開してみた
# 構成
前回、[AWSのControl Towerマスターアカウントからサービスマネージド型StackSetsを展開してみた](https://qiita.com/kazu_kazu/items/51f97632d1dc40c314e5)の記事を作成しましたが、いくつかデメリットがあったのでセルフマネージド型StackSetsバージョンとしてこちらの記事を執筆します。
今回の構成はこちら。![StackSetsSelfService.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/fdb3400e-ec9d-8f98-c0a5-bb8c90b57675.png)
アカウント払い出し時に、BudgetsとSNSをアカウントに展開した上で払い出します。
セルフマネージド型StackSetsで、OUではなくアカウント指定でBudgets,SNSを展開します。
セルフマネージド型StackSetsを使用するには、以下のロールが必要です。|アカウント|ロール|
|—|—
Cloud Runでカスタムドメインの設定方法(Route53編)
Cloud Runでカスタムドメインの設定方法(Route53編)
ドメインはさくらインターネットで取得した**Cloud Run コンソールからカスタムドメインを管理をクリック**
![custom_domain1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59264/04aec12e-f325-aea2-407e-cad96ef5b8b7.png)今回はベースドメインをtoyscreation.jp サブドメインをweekend-hackathonにする
toyscreation.jpと入力して続行![screencapture-console-cloud-google-run-domains-2021-01-20-23_30_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59264/e1f9aabb-03e6-2212-770c-d58e52b6423c.png)
ドメイン所有の確認、TXT
【初心者】Amazon Inspector を使ってみる
# 1.目的
– セキュリティ関連サービスを一通り復習している。一度も触ったことの無かった Amazon Inspector について、チュートリアルレベルの確認を行い概要を理解する。# 2.Amazon Inspector とは(自分の理解)
– EC2インスタンスに対する脆弱性評価を実施し、リスクを可視化するサービス。
– 分かりやすい解説は [Developers.io記事:「AWS再入門ブログリレー Amazon Inspector編」](https://dev.classmethod.jp/articles/re-introduction-2020-inspector/) などにあるので、それを見ながら、自分の手で確認したことを記載する。# 3.やったこと
– 評価対象とするインスタンスを作成する。
– Inspectorで以下を行う。
– 評価ターゲットの作成: ターゲット(評価対象インスタンス)を指定し、Agentをインストールする。
– 評価テンプレートの作成: ターゲット及び評価項目の選択を行う。
– 評価を実行し、結果を確認する。
AWSのアクセスキーを間違えないようにする方法
2社以上の案件を同時にこなしている場合など、AWS Access Key IDを複数切り替えて使いたい場合にキーを間違えて使しまうと、大変なことになってしまいます。そこで、以下のようにすると明示的に切り替えられるので、間違いが減るのではないでしょうか。
### aaa社向けのプロファイルを作成する。
\>aws configure –profile aaa
AWS Access Key ID [None]: AKIASHE7LMTU4XXXXXXX
AWS Secret Access Key [None]: RlMpPqE19cnfwIS6XGatw3Y5RncQYpIdL+XXXXXX
Default region name [ap-northeast-1]:
Default output format [None]: json### デフォルトプロファイルが存在するかどうかを確認する。
\>aws configure
AWS Access Key ID [****************26WM]:
AWS Secret Access Key [*************
AppSync & GraphQL 入門
![AppSync](https://user-images.githubusercontent.com/7469495/105184322-9179a580-5b72-11eb-8f73-5bbe20a686ec.png)
## AppSync とは?
GraphQL というAPI仕様を用いて「柔軟なAPI」を提供するAWSのマネジメントサービス
ちなみに、従来の REST API 形式だと AWSは API Gateway を提供している
## GraphQL とは?
Facebookが開発しているWeb APIのための規格
「クエリ言語」 と 「スキーマ言語」 からなる
REST API は、1URLに対し1つのAPIや情報を提供できるのに対し、
GraphQL は欲しいデータを以下のようなクエリとして発行すると、**欲しいデータを欲しいObject形式で**得ることができます
“`javascript
// リクエスト
query GetCurrentUser {
currentUser {
id
name
}
}“`
↓
Amazon linux2 でsshpassを使う
# Amazon linux2 でsshpassを使う
## 概要
Amazon Linux2でsshpassを使う場合はEPELのリポジトリを有効化する一手間が必要でしたので、その手順をご紹介します。## 手順
### 1. RHEL 7 用の EPEL リリースパッケージをインストールし、EPEL リポジトリを有効にします。
“`bash
sudo amazon-linux-extras install epel -y
sudo yum-config-manager –enable epel
“`### 2. sshpassをインストール
“`bash
sudo yum install -y sshpass
“`### 3. sshpassの設定
“`bash
sshpass -p {パスワード} ssh {user名前}@{SSH先}
“`## 参考
– [CentOS、RHEL、または Amazon Linux を実行している Amazon EC2 インスタンスの EPEL リポジトリを有効にするにはどうすればよいですか?](https://
GitHubへのpushをトリガにCodePipelineを走らせてテスト・デプロイする
以前の記事([【知識0からのCloudFormation】LambdaをデプロイするCodePipelineを組む](https://qiita.com/Kept1994/items/b791e7a92b8e9a93653f))でCodeCommitにPushしたらデプロイするパイプラインの作成までやった。
今回は以下の変更を目標とする。* デプロイする前にテストコードを挟む。
* ソースコードをGitHubで管理する。### 前提
* Admin権限のIAMユーザを作成している。(adminである必要はないがとりあえず面倒なので)
* AWSコンソールに上記ユーザでサインインしている。
* git、aws-cliインストール済。## CodeCommitにリポジトリを用意
### 秘密鍵と公開鍵の作成
“`sh
$ ssh-keygen -t rsa -C “hogehoge@gmail.com”
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/
Amazon Cognitoを利用したIDPとのシングルログアウト連携の実現
複数のWebサービスに1つのIDでシングルサインオン (SSO)・シングルログアウト (SLO) できるように、IDプロバイダ (IDP) を構築して各サービスとOpenID Connect (OIDC) やSAMLで連携する構成について考える。このときに、IDPと連携するWebサービスの構築にAWS(Amazon API GatewayやAWS AppSyncなど)を利用する方法を検討した。
IDPと連携してAWSサービスの認証を行うにはAmazon Cognitoを使うのが常套手段となる。SSOのみが要件であれば公式ドキュメントや解説記事も多く悩むポイントは少ないが、SLOの実現についてはあまり取り上げられていない。この記事ではAmazon CognitoでIDPと連携する際のSLOの実現方法を整理する。
### 前提
* IDPと各サービスは異なるドメイン(オリジン)で提供される。
* IDPと各サービスはOpenID Connect (OIDC) もしくはSAMLで連携する。
* AWSサービスとIDPの連携は以下のいずれかの方法で行う。
* Amazon Cogni
システムステータスチェックとインスタンスステータスチェックの失敗に備えた対処法
#タイトルの内容を設定する方法
ec2のコンソールを開き、画像のように選択。
![スクリーンショット 2021-01-19 17.48.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784921/3aa7658b-d0e1-7115-c462-d9bf5388d38d.png)アラームアクションは、下記4種類が設定できるが、システムチェックか、インスタンスチェックかで方法が異なる。
システムチェックの場合は、「復旧」を。インスタンスチェックの場合は「再起動」を選択。
システムチェックとインスタンスチェックの詳細は、以下を参考に。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html#types-of-instance-status-checks![スクリーンショット 2021-01-19 18.01.55.png](https://qiit
Multi-AZ構成のRDSを強制フェイルオーバーさせる方法
#Multi-AZ構成を構築する方法
下記の2手順で構築可能
1.RDSのコンソール画面を開き、「データベースの作成」を選択
![スクリーンショット 2021-01-20 16.52.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784921/f3c1a0a8-e84a-82f3-d1c0-9f31e1701466.png)2.次画面の中盤あたりに、下記画像の項目があるので、「スタンバイインスタンスを作成する」を選択(Amazon aurora以外)
![スクリーンショット 2021-01-20 16.39.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784921/cb96d35c-82fc-aa15-2acd-dc506d4144b8.png)
Amazon auroraの場合は、少し表記が異なる。以下画像のように選択。
![スクリーンショット 2021-01-20 17.03.14.png]
AWS ルーティングテーブルの書き換えによるAZまたぎでのフェイルオーバ
オンプレミスとawsをダイレクトコネクト接続するにあたり、ルータのインスタンスを作成しました。awsではVRRPなどを使って冗長化することができませんが、lambdaを使ってawsのルーティングテーブルを書き換えることで、似たようなことが実現できます。
この内容は、以下のブログを参考にしています。
[Making Application Failover Seamless by Failing Over Your Private Virtual IP Across Availability Zones](https://aws.amazon.com/jp/blogs/apn/making-application-failover-seamless-by-failing-over-your-private-virtual-ip-across-availability-zones/)以下のように、AZを超えた切り替えを目指します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104
Amazon API GatewayのHTTP APIをOpen APIを利用して定義してみた (1/2)
## はじめに
AWS ドキュメントを見ながら、Amazon API GatewayのHTTP APIをOpenAPIを利用して定義する機会があったので、メモとして残します。当記事は手順を簡単に解説し、別記事にて、実際のサンプルを提示したいと思います。
## サマリ
– Open APIを利用したAPI定義が可能
– 定義は別ファイルに外部化することも可能
– 外部化したファイルに対してもパラメータや他のスタックのExportした値、擬似変数が利用可能## 今回試した設定のもとになる要件
– HTTP APIを採用する
– APIは数十のパスが想定され、メンテナンスが発生しやすい
– 統合先としては、VPC Linkを利用してプライベートなVPCのALBと、AWS Lambda関数がある
– mTLS接続をする。つまり、ためにカスタムドメインとトラストストアの構成,ACMの証明書が必要
– アクセスログを出力する
– いくつかのパスはIAMによる認可が必要
– CORS設定が必要
– DeployはSAM(Serverless Application Model)を利用する
CloudWatch Alarmが氾濫しているので停止する。
# (備忘録)CloudWatch Alarmがうるさいので、停止した。
## 目的
わが社ではCloudWatchAlarmを設定し、アラート内容をタスクとしてチケット化するシステムを作っているのですが、不要なアラート(テスト等によるもの)のチケットが氾濫し始めたので、停止する方法を調べました。備忘録です。## 手順
CloudWatchの権限を持ったユーザでCloudShellからCLIをたたくだけ。“` sh
$ aws cloudwatch disable-alarm-actions –alarm-name 【Alarm名】
“`再開は↓
“` sh
$ aws cloudwatch enable-alarm-actions –alarm-name 【Alarm名】
“`アラームが停止していることを確認する際は、CloudWatchAlarmのコンソールで、表示設定をいじいじして「アクションが有効になっています」を表示させる。
無効になっていれば停止完了。以上。
AWS概要 セキュリティ、ID管理について
#概要
もはや何番煎じているか分かりません。
1月から個人的に始めている未経験AWSチャレンジの一環として、CP試験に向けての個人的なメモとして記述します。※は書き方を模索中ですが、問題を通して思った感想になります
#セキュリティ、ID管理
##AWS Identity and Access Management(AWS IAM)
AWS利用者に対して、AWSのサービス範囲を制御するサービス
・識別:ユーザーの発行(登録)
・認証:登録されたユーザーかの確認
・認可:登録されているユーザーは何が出来るのか制御・IAMユーザー:個人
・IAMグループ:チーム開発
・IAMロール :サードパーティのIdP(SAML認証)に権限を委任する場合の仕組み
→他のサイトでも個人情報を提供する仕組みのこと(SAML認証があれば、他のサイトで使いまわせる)・IAMポリシー:サービス(リソース側)が使用者を判断する
「どのAWSサービスの」「どんな操作を」「許可する」をJSON形式で記述
”物”側で認証するという考え方##AWS Certificate Manager(ACM