- 1. 「セキュアで堅牢なAWSアカウント」を実現する CloudFormationテンプレート – ⑧S3バケットのサーバサイド暗号化
- 2. IAM単語まとめ
- 3. [AWS] CloudFront + Lambda@Edge で IP 制限をかける
- 4. AWS CLI用のIAMユーザ/ロール設定
- 5. AWSアカウントのベストプラクティス(エンタープライズ向け)
- 6. 「セキュアで堅牢なAWSアカウント」を実現する CloudFormationテンプレート – ⑦デフォルトセキュリティグループを無効化する
- 7. SQS → Lambdaのリトライ処理について整理してみた
- 8. AWS基礎
- 9. AWS X-Ray+Goを使ってSQSでのメッセージングを観測する
- 10. 【AWS入門】初めてのLambdaはTranscribe♪
- 11. バージョニングを有効にしたS3で、オブジェクトを一気に削除したい
- 12. Goofysを使ってAmazon S3バケットをファイルシステムにマウントする
- 13. 【AWS入門】PollyとTranscribeで男女音声で遊んでみた♪
- 14. AWSの3種類のLBの比較と使い分け (ALB, NLB, CLB)
- 15. AWS APIGateway CORS(クロスオリジンリソース共有)画面コンソールがおかしい話
- 16. [Rails5.2] CircleCI × Capistrano でテスト成功後にAWSへ自動デプロイする
- 17. ServerlessFrameworkでLmabda関数名に柔軟性を持たせようとする時の注意点
- 18. railsで開発中にAWSから高額請求された件、、、
- 19. 【AWS EFS】AWS EFSを利用した共有ファイルストレージ構築
- 20. AWS S3 Laravelアプリから画像ファイルをアップロードして表示する
「セキュアで堅牢なAWSアカウント」を実現する CloudFormationテンプレート – ⑧S3バケットのサーバサイド暗号化
# はじめに
AWSにはアカウントやリソースへの脅威検知に対応した、**AWS IAM Access Analyzer**, **AWS Security Hub**, **Amazon Detective**, **Amazon Inspector**, **Amazon GuardDuty**, **AWS CloudTrail**, **AWS Config** などのサービスが用意されています。
また、**AWS Security Hub** では、[**CIS AWS Foundations Standard**](https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-standards-cis.html) , [**Payment Card Industry Data Security Standard**](https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-standards
IAM単語まとめ
# IAM単語まとめ
備忘録として概要をまとめておきます。– 責任共有モデル:セキュリティの責任をユーザーとAWSで分担している
– ユーザーの責任:物理インフラ以外
– AWSの責任:物理インフラ
– IAM:アクセス権限管理の仕組み
– ポリシー:アクセス権限
– 管理ポリシー:複数のプリンシパルエンティティに紐づけられる
– AWS管理ポリシー:AWSが作成して管理
– カスタム管理ポリシー:AWSアカウントで作成して管理
– インラインポリシー:1つのプリンシパルエンティティに紐づけられる。自分で作成して管理
– ポリシー
– ユーザーベース:ユーザーにリソースへのアクセス権限を設定
– ユーザー、グループ
– リソースベース:リソースに別のリソースへのアクセス権限を設定
– ロール
– プリンシパルエンティティ(ポリシー設定単位)
– ユーザー
[AWS] CloudFront + Lambda@Edge で IP 制限をかける
# はじめに
[こちらの記事](https://qiita.com/ksh-fthr/items/ee2b7880a9e6c0fc6f88) の 「[まとめにかえて](https://qiita.com/ksh-fthr/items/ee2b7880a9e6c0fc6f88#%E3%81%BE%E3%81%A8%E3%82%81%E3%81%AB%E3%81%8B%E3%81%88%E3%81%A6](https://qiita.com/ksh-fthr/items/ee2b7880a9e6c0fc6f88#まとめにかえて))」で触れたとおり、 CloudFront へのアクセスに対して IP アドレスで制限をかける方法について触れる。
実現にあたり、本記事では CloudFront と Lambda@Edge を利用する。# 注意
本記事は 2020年6月21日 時点の情報です。
ご覧になられた時点で UI が変更されている可能性がありますので、その点ご注意ください。# 前提
– [こちらの記事](https://qiita.com/ksh-fthr/items
AWS CLI用のIAMユーザ/ロール設定
## はじめに
ユーザとロールの分離とMFA設定をやった記録です。プライベートだとゆるみがちだったIAM周りを引き締めます。
## やったこと
### ロール作成
新規でロールを作成し、AWSのサービスを操作するのに必要十分な権限を付与します。※今回は安直にAdmin
「SwitchRoleAdmin」というロールを作成した上で、下記のポリシーを付与します。
“`json:SwitchRoleAdminロールのポリシー(Admin)
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: “*”,
“Resource”: “*”
}
]
}
“`このロールを想定しないユーザから使用されると困るため、特定の条件下でのみ使用できるように設定します。ここではMFA認証済みの特定ユーザのみ許可します。
IAMロール詳細画面の「信頼関係」タブから下記の設定を追加します。
“`json:信頼関係の編集(ポリシードキュ
AWSアカウントのベストプラクティス(エンタープライズ向け)
#はじめに
現職でHD会社のIT部門でAWS移行を担当しています。
AWSのアカウント管理の考え方について勉強したので一度整理してみます。#AWSアカウントの種類
まず、AWSで扱うアカウントには以下の種類があります。
・AWSアカウント(root)
・IAMアカウント
・組織アカウント
##AWSアカウント
AWSを利用する際に登録するアカウントで、全ての権限を持っています。
非常に強力なアカウントのため、通常は使用しないようにします。##IAMアカウント(ユーザー)
各サービスやマネージメントコンソールのログインの際に使用するユーザー。
ポリシーをアタッチすることで操作できる範囲や権限を指定します。##組織アカウント(Organizations)
組織内で複数のAWSアカウントを扱う場合に、共通のポリシーなど統制を効かせるために
Organizationsというサービスがあります。
このサービスで利用する、複数のアカウントを管理するアカウントになります。#なぜIAMユーザーが必要なのか
AWSアカウント(root)では権限が強すぎるため、もし乗っ取りにでもあったらそ
「セキュアで堅牢なAWSアカウント」を実現する CloudFormationテンプレート – ⑦デフォルトセキュリティグループを無効化する
# はじめに
AWSにはアカウントやリソースへの脅威検知に対応した、**AWS IAM Access Analyzer**, **AWS Security Hub**, **Amazon Detective**, **Amazon Inspector**, **Amazon GuardDuty**, **AWS CloudTrail**, **AWS Config** などのサービスが用意されています。
また、**AWS Security Hub** では、[**CIS AWS Foundations Standard**](https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-standards-cis.html) , [**Payment Card Industry Data Security Standard**](https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-standards
SQS → Lambdaのリトライ処理について整理してみた
2018年の6月より、AWS LambdaのイベントソースとしてSQSが選択できるようになりました。
今回はLambdaのイベントソースでSQSを選択し、Lambda側で処理が失敗した場合、どのようにリトライ処理が行われるのかについて整理してみました。
# リソースの作成
今回は、SNS → SQS → Lambda の構成で検証していきたいので、それぞれのリソースを作成いたします。
## SQS
“inu-queue”というキュー名でキューを作成いたします。キューの種類は標準で各設定値はデフォルトです。
そして、”inu-dlq”というキュー名でDLQ(デッドレターキュー)用のキューも作成します。こちらもキューの種類は標準で各設定値はデフォルトになります。
2つのキューを作成したら”inu-queue”のDLQの設定を行います。
DLQの設定方法は、AWSコンソール画面だと以下の手順で設定することになります。
inu-queueのキューにチェックをつける → [キューの操作]をクリック → [キューの設定]をクリック → デッドレターキューの設定で[再処理ポリシー
AWS基礎
#前提
AWS(ブログシステム構築)について学んだことを書いていきます。#本題
#DBを用いたブログシステムの構築
NATゲートウェイ構築後、プライベートサブネットに配置されたDBサーバーに、各種ソフトウェアをインストールできるようになった。
MariaDBをインストールし、データベースを構成したり、WebサーバーにWordPressをインストールしたりし、ブログシステム構築を行う。##内容
WebサーバーにWordPressをインストールし、ブログシステムを構築する。
ブログのデータはDBサーバー上のMariaDBに保存する。1、DBサーバーの構成
DBサーバーにMariaDBをインストールし、WordPressからデータを保存できるようデータベースを作成。2、WebサーバーにWordPressをインストール
3、WordPressを初期設定
※MySQLとMariaDB
WordPressで利用できるデータベースサーバーは、MySQLかMariaDB。
MariaDBはMySQLの開発者が枝分かれし開発し始めたオープンソースの互換データベース。
AmazonLi
AWS X-Ray+Goを使ってSQSでのメッセージングを観測する
## 概要
タイトルの遠り、AWS X-Rayを使って、SQSでのメッセージングを観測します。X-Rayを使えば、複数のアプリケーション間で「どこからどこにメッセージが送られているか」が図示されるため、アプリ間通信の仕様や障害発生箇所の把握がしやすくなります。今回は、Go言語を使って実装します。結論(ソース)はページ下部にあります。
## 環境
– Go言語 1.14.3
– aws-sdk-go
– aws-xray-sdk-go
– Mac OS X 10.15.4前提として、aws-sdk-go, aws-xray-sdk-goは`go get`コマンドでインストール済みとします。
## この記事の対象読者
– AWSの有名どころサービスなら開発したことがある。AWS CLIも設定済み。
– SQSは知識があるがX-Rayはあまり知らない。X-Rayの概要や実装方法を知りたい
– (実装部分については)Go言語はそれなりに読める## X-Rayの概要
アプリから情報を収集して、以下のような__サービスグラフ__を作成したり、リクエストの実行時間を計
【AWS入門】初めてのLambdaはTranscribe♪
これは備忘録のために、参考のとおりにやってみた記録です。
参考記事はすっきり書かれていてわかっている人なら簡単なんだと思いますが、AWS初心者には難しい内容でした。そのあたりを泥臭く解説したいと思います。
なのでやったことは、最終的に参考記事のまんまです。
【参考】
・[S3 → Lambda → Transcribe → S3 で文字起こしパイプラインを作成する](https://qiita.com/leomaro7/items/ad9726391d547ea3bcfd)
###やったこと
・1 S3に(input)用のバケットを作成
・2 Lambdaを開く
・3 Lambda関数の定義と意味
・4 CloudWatch Logsの見方
・5 S3に(output)用のバケットを作成
・6 Lambda修正
・7 実行ロールの変更の仕方
・8 Lambda functionを編集する
・9 Transcriptionの確認の仕方
###・1 S3に(input)用のバケットを作成・5 S3に(output)用のバケットを作成
AWSの左上のサービスを押すと全サービスが表示されて、こ
バージョニングを有効にしたS3で、オブジェクトを一気に削除したい
Amazon S3でバケットを削除するには、バケットの中身を空にする必要があります。
ですが、バージョニングを有効にしたバケットの場合は、単純にオブジェクトを削除するだけではなく、全バージョンのオブジェクトを削除する必要があります。
“`shell
$ aws s3api delete-bucket –bucket [your-bucket-name]An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: The bucket you tried to delete is not empty. You must delete all versions in the bucket.
“`本当にずっと持っていたいバケットなら困らないんですけど、テスト目的で作ったバケットとかだと削除したい場合に面倒になります…。
[バージョニングを有効にした S3 バケットの削除方法](https://tech.xeres.jp/2018/12/13/how-to-delete-s3-buck
Goofysを使ってAmazon S3バケットをファイルシステムにマウントする
# What’s?
Amazon S3をファイルシステムとしてマウントできたらなぁと思って少し調べたら、[s3fs](https://github.com/s3fs-fuse/s3fs-fuse)というのが有名だということがわかりまして。
なんですけど、手元の環境ではs3fsでは上手くいかなかったので、Goofysに変えてみたところうまくいったので、こちらで試してみました。
[Goofys](https://github.com/kahing/goofys)
# Goofys
Goofysは、Amazon S3バケットをファイルシステムとしてマウントできるソフトウェアです。Goで実装されています。
s3fsよりもパフォーマンスが良いことが売りなようですが、s3fsの紹介を読むと代わりにPOSIX互換性は落ちるようです。
> goofys – similar to s3fs but has better performance and less POSIX compatibility
[s3fs / Reference](https://github.com/s3fs-
【AWS入門】PollyとTranscribeで男女音声で遊んでみた♪
[前回のtranscribe](https://qiita.com/MuAuan/items/f67bb978a77dbddb018d)[前々回polly](https://qiita.com/MuAuan/items/ca17a467256a1ad3332c)で、それぞれをちょっと弄って遊んだが、今回は自由に使い倒す目的で簡単に利用できるように変更した。
###やったこと
・会話アプリ想定でのシーケンス
・実現するコード
・実際の結果
###・会話アプリ想定でのシーケンス
想定は、途中に会話アプリで文字文章を変換してあたかも男性と女性が会話しているような状況を作り出すことである。
ここで会話アプリは自然言語処理であり、入力は文字文章での会話アプリである。そのために、以下のようなシーケンスを実施した。
①適当な文章を入力
②①の文章をpollyで女性の音声に変換
③女性音声ファイルmp3を取得;発生
④女性音声ファイルをtranscribeして文字文章に変換;会話アプリ入力;返答文章
⑤返答文章(今は④の変換された文字文章)をpollyして男性の音声に変換;発生
⑥男性音声ファイル
AWSの3種類のLBの比較と使い分け (ALB, NLB, CLB)
AWSのELB(Elastic Load Balancing)にある3つのLBの使い分けについてまとめました。
– ALB (Application Load Balancer)
– NLB (Network Load Balancer)
– CLB (Classic Load Balancer)CLBが最初(2009年)にリリースされたELBで、当時はCLBという名称はなくELBといえばいまのCLBでした。2016年と2017年にALBとNLBがリリースされました。後発のALBとNLBのほうがCLBよりも高機能で高性能です。
# 3つのLBの選択方法
CLBの機能のほとんどはALBとNLBでカバーされていますので、基本的には後発のALB, NLBの2つを使い分けます。CLBでしか実現できない要件がどうしても外せない場合にのみCLBを使います。CLBだけの機能はわずかです。
以下は、要件に応じてどれを使うべきかの大雑把な基準です。
– EC2-Classicの環境
– → **CLB**
– EC2-Classicの環境ではない
– プロトコルはHTTP
AWS APIGateway CORS(クロスオリジンリソース共有)画面コンソールがおかしい話
#要約
AWSのAPIGatewayを利用してAPIを作ることになり、
触ってみると、APIGatewayの画面コンソール上、バグなんじゃね?という
ものを見つけました。
結論から言うと、
**「クロスオリジンリソース共有」は、画面からさわるなよ!:smirk:**
という事です。
※「HTTP API」「Lambda プロキシ統合」利用の場合の話となります。こいつです!
#1.前提
そもそも、「Lambda プロキシ統合」を使うと、
CORS設定は自分で行う必要がある認識ではあります。
[AWS APIGateway + Lambda プロキシ統合 の利用でCORS設定にはまった話](https://qiita.com/maechi/items/
[Rails5.2] CircleCI × Capistrano でテスト成功後にAWSへ自動デプロイする
# 概要
以下の2つの機能を実装するための方法を記載しています。– CircleCIを使用してプッシュと同時にRuboCop, Rspecを走らす。
– テスト成功後にCapistranoによってAWSに自動デプロイする## 前提
– Rails5.2
– Capistranoによる自動デプロイを実装している実装に当たって、以下の記事を大変参考にさせていただきました。
[rails5.2/Capistrano/CICD環境によるAWSへの自動デプロイ](https://qiita.com/AK4747471/items/882b70f663f4a80ae770)上記記事の内容だけでも、テスト→デプロイの処理は実現できます。
この記事は、上の参考記事の補足として、workflowによる処理を追加することで、テストが成功した場合のみデプロイを実行する方法を解説しています。補足部分のみ記事にしているため、そこに到るまでの過程については上の参考記事をご覧下さい。
# 実装
早速ですが、最終形のコードは以下のようになりました。
後でいくつかのブロックに分けながら解説してい
ServerlessFrameworkでLmabda関数名に柔軟性を持たせようとする時の注意点
Lambda関数名に柔軟性をもたせようとしたら、ロググループ名が変わってしまったり、ログが出力されなくなったりしたのでその時の対応についての注意点になります。
##### 普通にserverless.ymlでLmabdaを定義するとこんな感じになると思います。
“`serverless.yml
service: demoprovider:
name: aws
runtime: python3.7
stage: ${opt:stage, ‘dev’}functions:
hello:
handler: handler.hello
“`この場合、リソースのロググループ名はServerlessFrameworkが以下のようにしてくれます。
論理ID`HelloLogGroup`
物理ID`/aws/lambda/demo-dev-hello`物理IDはこんな感じですね。
`/aws/lambda/${self:service}-${self:provider.stage}-${Lambda関数名}`##### ログループ名を表示したり使い回
railsで開発中にAWSから高額請求された件、、、
EC2に750時間/月の無料利用枠、RDSにdb.t2.microという無料のインスタンスサイズが存在しているが、これには大きな落とし穴がある(見事に落ちました。。。)
実は、EC2のインスタンスやRDSのインスタンスサイズEC2の考え方は、作成数 X 利用時間 = 合計利用時間 という計算になっており、
無料利用枠 = 合計利用時間なのである。
私の場合EC2を2個走らせていた。
幸い、月の半分程で気づいたので請求はされなかったが、危なかった。
急いで両方の停止を実行し、開発中のみ起動するようにした。RDSの場合、インスタンスサイズ(CPU、メモリ、ストレージ、ネットワークキャパシティーの組み合わせによって構成されている)を自由に選択でき、db.t2.microが無料利用枠として存在する。これが最低レベルであり、性能に比例して値段が上がる。
私の場合、db.m5.xlargeというインスタンスサイズが選択されており(原因不明。。。)、**1ヶ月で500$近い請求をくらった。。。。。**すぐさま該当のDBインスタンスをdb.m5.xlarge ➡️ db.t2.micr
【AWS EFS】AWS EFSを利用した共有ファイルストレージ構築
##目標
・AWS EFS(※1)を利用して共有ネットワークファイルストレージを構築する。
・EFS固有の特徴をハンズオンで検証する。※1 EFSとは
AWSが提供するフルマネージド型のNFSサーバ(※2)のことです。
マネージドサービスのため自前でNFSサーバを構築するより高速構築が出来、
かつ管理の手間を省くことが可能です。※2 NFSとは
ネットワークを通じてファイルシステムを共有する際に使われる通信プロトコルのことです。
主にUnix系OS同士のファイルシステム共有にはNFSが古くから使われているようです。##前提
・複数AZにEC2サーバ(Amazon Linux 2 AMI (HVM), SSD Volume Type)が構築済みであること。
・基本的なLINUXコマンド操作が出来ること。##利用環境
ハードウェア : **AWS EC2サーバ 2台(別AZ構成)**
OS(AMI) : **Amazon Linux 2 AMI (HVM), SSD Volume Type**
その他ソフトウェア:
**amazon-efs-utils**(EFS操作用ユー
AWS S3 Laravelアプリから画像ファイルをアップロードして表示する
# 目次
– AWS EC2に構築したLaravel環境で作成したLaravelアプリから画像ファイルをS3にアップロードする方法をまとめる
# 実施環境
– ハードウェア環境
| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |– ソフトウェア環境(下記の環境をEC2に構築した)
| 項目 | 情報 | 備考 |
| — | — | — |
| MySQL | 8.0.20 for Linux on x86_64 | コマンド`$ mysql –version`で確認 |
| Apache | 2.4.43 | コマンド`$ htt