- 1. AWS クラウドプラクティショナー 単語
- 2. AWS認定 ソリューションアーキテクトアソシエイト(SAA)に合格するまで
- 3. Serverless入門で作りたいと思っている簡単なサービス
- 4. CloudFront単体でレスポンスヘッダを付与できるようになった!!(Lambda@Edgeなしでのレスポンスヘッダ設定)
- 5. プライベートなEC2にSSMセッションマネージャーで接続してみた
- 6. CloudFormationで出会ったエラー集【随時更新】
- 7. はじめてのAWS CloudFormation -S3バケット作成編-
- 8. terraform でVPCなどを作る
- 9. Amazon Redshift Data APIを使ったETL
- 10. [aws,alb]Health checks failed with these codes: [500] の解決例
- 11. CdkPipelineで静的Webホスティング環境(CloudFront/S3)を構築。
- 12. 小ネタ/Flutter で AWS S3 へのアクセスに minio を使う
- 13. AWS CloudFormationのテンプレートを作成する時はAWS CLIのdescribeを使う
- 14. AWS DNS の基本
- 15. AWS CloudWatch Logsのput log eventsとメトリクスフィルターで簡易的な監視
- 16. 【最速?】GoとEC2で「Hello, World!」
- 17. 【超初心者向け】5分でAWS Lambda + API Gateway でRest APIを作る
- 18. AWS CLIの設定の仕方(アクセスキーIDとシークレットアクセスキーの取得編)
- 19. Cloud9環境へDockerのインストール方法 コンテナ起動
- 20. ポートスキャンサンプル(python 3.8 on aws-λ )
AWS クラウドプラクティショナー 単語
自己学習用メモ
【ユーザ】
AWS マネジメントコンソール
アカウント登録して最初に利用するGUI
AWSマネジメントコンソールを利用する際に、ユーザーIDとパスワードによるログインを実施
IAM AWS Identity and Access Management
アクセス権限管理を行うサービス
各開発者に対してAWSリソースの利用を制御できるサービス
IAMポリシー
最小限のアクセス権として、タスクの実行に必要なアクセス許可のみ付与
IAMユーザグループ
「1000人などの多数のユーザーがいる会社などで各部署ごとにアクセスする場合に有効」
オンプレミス環境では運用チームがID管理をし、AWSで同じ役割を実行するのに役立つサービス
MFA
多要素認証
「ログインするときに、ユーザー名とパスワードに加えて、高いセキュリティ」
EC2 for MySQL
管理はユーザーにゆだねられる
AMI(Amazon マシンイメージ)
EC2インスタンスのイメージを取得して、そのイメージから新しいインスタンスを作成
さまざまな設定のインスタン
AWS認定 ソリューションアーキテクトアソシエイト(SAA)に合格するまで
AWS認定**ソリューションアーキテクトアソシエイト(SAA)**に合格しました。合格までの道のりを記録しておきます。
※この記事ではオンライン試験の詳細など、クラウドプラクティショナーの記事と重複していて、不要な箇所は省略してあります。
https://qiita.com/hiyanger/items/a36c6a20e4a8876b737f###概要
・AWSの**中級**の試験で、**アーキテクト**の他には**デベロッパー**、**運用**と全3種類ある。
・アーキテクトなので**設計分野**がメインの試験です。
・受験料は**15,000円**
・試験時間は**140分**
・出題数**65問**
・合格は0~1000点間で**720点以上(72%以上)**
・合格率は**50%程度**(実際の数値なしなので噂レベル)
・受験はピアソンかPSI(オンライン受験可能)###予備知識
AWSへの移行や、既存AWS環境の保守などを片手間レベルでやったりしてたので、若干知識はありました。EC2、RDS、ELB、S3等主要なシステムはざっくり把握していた感じです。また、クラウ
Serverless入門で作りたいと思っている簡単なサービス
# 書き始め
まず最初に記事にしてしまえば、やるであろうという願望のもと、書き始めています。# 目標
AWSの以下のブログから、1日に1度、スクレイピングしてきて、新しいブログが発見できたら、そのブログのタイトルとURLを一緒に自分のアカウントにツイートさせる。
https://qiita.com/bakira/items/00743d10ec42993f85eb以下のアーキテクチャを目指します。
![Architecture.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593337/1c2a8e88-1972-39e8-3bdd-8593148acfa5.png)# 環境
– MacOS 11.6
– VisualStudio Code
– Python3.9
– Serverless Framework 2.65.0
– エンジニア二年目# 参考にするサイト
– Tweeter APIの使い方:https://qiita.com/bakira/items/00743d10ec
CloudFront単体でレスポンスヘッダを付与できるようになった!!(Lambda@Edgeなしでのレスポンスヘッダ設定)
今までCloudFront+S3で公開しているシステムはレスポンスヘッダを付与したい場合にLambda@Edge等で設定してやる必要がありました。
しかし、今回のリリースでCloudFrontだけでレスポンスを付与できるようなったらしいので、調べてみました。https://aws.amazon.com/jp/about-aws/whats-new/2021/11/amazon-cloudfront-supports-cors-security-custom-http-response-headers/
# レスポンスヘッダーポリシーについて
ポリシーメニューから`レスポンスヘッダー`を選択します
デフォルトでいくつか登録されているのが分かります。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/325108/7f81bc36-4d90-94b8-4b65-cd8272df8455.png)
### デフォルトで登録されているポリシーを開いてみる
デフォルトで登録されているポ
プライベートなEC2にSSMセッションマネージャーで接続してみた
AWSのセキュリティ関連の話で、
「EC2やRDSはプライベートサブネットに配置しましょう」
という話がよく出てきますが、プライベートなEC2へのアクセスにはプラスαの作業が必要です。
NATゲートウェイを使用するという方法がありますが、今回はSSMセッションマネージャーを使用したプライベート接続をやってみたいと思います。# 構成図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1162215/b5d43e4f-550a-d039-81dd-37502aa1eb3d.png)## 軽く説明
やることは結構シンプルです。
1. EC2にアタッチするIAMロールを作成する
2. プライベートサブネットにEC2インスタンスを構築する
3. VPCにプライベートリンクを設置する
4. SSMセッションマネージャーでEC2インスタンスに接続する# 前提
– VPCは`10.0.0.0/16`で作成済み
– DNSホスト名の解決を「有効」に変更しておく(デフォルトでは無効)
![imag
CloudFormationで出会ったエラー集【随時更新】
###Circular dependency between resources: [xx,yy,zz]
循環依存でループになってしまい発生するエラー。
回避するには下記を追記“`yml
Transform: AWS::Serverless-2016-10-31
“`https://aws.amazon.com/jp/premiumsupport/knowledge-center/cloudformation-circular-dependency-sam/
ただ、IAMが関わると少し注意が必要らしい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469267/d71a332f-c29c-1cef-ced8-8379fc7ffcc9.png)
####Template format error: Every Default member must be a string.
パラメータの値として関数は使えないみたいなので、文字列リテラルにし解決。
また、下記の
はじめてのAWS CloudFormation -S3バケット作成編-
# はじめに
AWSのCloudFormationに対して、なんとなくとっつきにくいイメージを持っていたので、手始めによくある設定のS3バケットをテンプレート化してみました。# CloudFormationテンプレート作成環境を整える
VScodeでCloudFormationテンプレートを書くにあたって、以下の記事を参考に環境を整えました。– 参考記事:[DevelopersIO:VS Code拡張機能を追加してCloudFormation開発環境をレベルアップする](https://dev.classmethod.jp/articles/20211008-vscode-extention-settings/)
拡張は”CloudFormation support for Visual Studio Code”と”cfn-lint”のみ導入しました。”pydot”と”indent-rainbow”は現状必要なさそうだったので導入していません。
# S3バケットのパラメータ設計
作成するバケットのパラメータを一度GUIベースで考えてみます。
AWSインフラ環境を新規構築する
terraform でVPCなどを作る
参考
—https://qiita.com/gogo-muscle/items/58fee5760400ff1bc602
前提
—Windows10 WSL Ubuntu
terraform
aws cli
導入済み手順
—
①作業ディレクトリを作成する。参考サイトのようにファイルやフォルダを作成する
②treeコマンドを入っていなかったらインストールする
③terraform.tfvars を作成する
④main.tf を編集する
⑤terraform init
⑥terraform plan
⑦terraform applyAWSコンソール上で作成されていること確認する
Amazon Redshift Data APIを使ったETL
# はじめに
始めまして、株式会社ジールの@KimiyukiMuramatsuです。
AWSを使ったデータ分析基盤の構築を業務としております。
その中で得たノウハウをQiitaを通して発信していきたいと思います。Lambdaを使って、S3上のファイルに対してETL処理を行い、Redshiftにロードする方法を検討しておりました。
Redshift Data APIを使って実現できると考え、検証してみました。
Redshift Data APIを使うことで、LambdaからRedshiftのSQLを呼び出すことができます。
SQLを使えれば、Redshift Spectrumにより、S3上のファイルをETL処理してからRedshiftのテーブルにロードできます。
(Insert Into Select From ~ )
# 検証したいこと
* Redshift Data APIを使って、LambdaからRedshif
[aws,alb]Health checks failed with these codes: [500] の解決例
## 何があった?
ecs(fargate)をalbで負荷分散させるようなアーキテクチャ設計での環境構築をした際、何度ECSをたててもALBがタイトルのエラー文でunhealthyになってしまう現象が起きていました。
## 原因
albの設定ではなく、laravelのAPP_KEYの登録ミスでした。具体的には`base64:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=`と登録しなければいけないのに`XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=`と登録しておりました。
結果phpのコンテナが立ち上がってすぐもエラーで削除されてしまい、結果としてロードバランサーの方でエラーとなって現れておりました。
## 解決策
環境変数の部分を修正することで解決しました。(筆者はSystemManagerのParameteStoreに保存していたのでその中の値を修正しました。)## 類似エラー解決の考察
エラー文が500やTarget.FailedHealthChecksのように具体的な原因が出てい
CdkPipelineで静的Webホスティング環境(CloudFront/S3)を構築。
# CdkPipeline
## CdkPipeline is 何?
CDKの登場によりコードベースでAWSリソースを管理できるようになった。
しかもCloudFormationのような形式ではなく、typescrictやpythonなどの慣れ親しんだ言語でそれらを記述できるためメンテナンスコストを抑えられる。
コードベースで管理できるというとこは、git管理が効くということであり、そうなると人はCICDパイプラインに乗せ込みたくなるものである。
しかし、CdkPipelineのGA以前にCodePipelineでそれをやろうとすると、CodeBuildの中で自前で色々しないといけなかったり、そもそもそのPipeline自体はCICDに載せられないので別管理になる等課題があった。## 触ってみる
2021/7にGAしたCdkPipelineを使って、以下の超入門構成を管理してみる。
https://dev.classmethod.jp/articles/aws-cdk-101-typescript/
その上で最終的にはCloudFront-S3のあるあるな静的Webホステ
小ネタ/Flutter で AWS S3 へのアクセスに minio を使う
Flutter で AWS のサービス・リソースにアクセスするときに使うライブラリは、公式には Amplify Flutter に集約されてきており、S3 へのアクセスも **[amplify_storage_s3](https://pub.dev/packages/amplify_storage_s3)** を使うのがスタンダードです。
ただ、アプリケーションで内部的なデータバックアップ目的に S3 を使うなど、
– Cognito の認証は必要ない
– かといってゲストアクセス可能な状態では使いたくない
– アクセスキー・シークレットアクセスキーで手軽に使いたいというニーズには合いません。
そのような場合に使える Flutter のライブラリもいくつかあるようですが、今回は S3 互換ストレージとして有名な Minio の非公式クライアントライブラリ **[minio](https://pub.dev/packages/minio)**(3.0.0)を使ってみました。
※こちらのアプリケーションに組み込んで使っています。
– **[hmatsu47/map
AWS CloudFormationのテンプレートを作成する時はAWS CLIのdescribeを使う
# はじめに
AWS CloudFormationのテンプレートを作成する時はAWS CLIのdescribeを使うととても作業が捗る。
普段、コンソールでリソースを作成するとテンプレートの引数で何を与えればよいか分からないが、AWS CLIで既存リソースに対しdescribeすると一発でテンプレートの引数が分かる。
# やり方
1. AWS CloudShell を開く。AWS Console(トップページ)の右上 `>_` を四角で囲んだマークをクリック。
1. 作成したいリソースに対して、`aws xx describe-xx –output yaml`
1. CloudFormationのリファレンスを見ながら、出力されたyamlのうち必要なものを抽出する。引数の先頭が大文字でない場合があるため注意する。CloudFormationのリファレンス
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html
AWS CLIの
AWS DNS の基本
DNS(Domain Name System)
==========
ここでは AWS ではなく、一般的なDNSの役割を記載します。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597898/3b628e46-3ad7-6516-cefc-334a17532f74.png)
– ***Name Server***
クライアントから FQDN を探索し、自身が名前解決を行うサーバーを示します。– ***Full Serivice Resolver***
ネームサーバーからの応答をクライアントに返す役割を示します。– ***Stub Resolver***
フルサービスリゾルバーに名前解決の実行を委ねるリゾルバーです。
DNSクライアントとして名前解決を要求する側に位置しており、要求に対して応答を受けます。– ***Forwarder***
要求を受け取った際に、ルールに沿って、中継する役割を示します。
ネームサーバーへ辿る反復問合せの機能を持たないため、常に再帰的問
AWS CloudWatch Logsのput log eventsとメトリクスフィルターで簡易的な監視
# はじめに
AWS CloudWatch Logsのput-log-eventsでCloudWatch Logsへログを送り、メトリクスフィルターでログの内容を監視します。CloudWatch Agentでログを送信した方が素直な実装です。
# put-log-events
参考
https://dev.classmethod.jp/articles/put-cloudwatchlogs/
`put-log-events` を行う時のBashスクリプト
“`bash
#!/bin/bash –readonly PROCNAME=${0##*/}
function log() {
local fname=${BASH_SOURCE[1]##*/}
echo “$(date ‘+%Y-%m-%dT%H:%M:%S’) ${PROCNAME} (${fname}:${BASH_LINENO[0]}:${FUNCNAME[1]}) $@”
}export SERVICE_NAME=$1 # hello_world.service
# CloudWatchLo
【最速?】GoとEC2で「Hello, World!」
## やりたいこと
GoとEC2を使って、ブラウザでHello, World!するだけです。
こちらの記事を大変参考にしました。
https://qiita.com/Dragon-taro/items/09a67b93093770348ce5ローカルにGoは既にインストールされている前提です。
ちなみに、僕のGoのバージョンは1.16.6でした。## Goアプリの作成
ファイル構成“`
.
└── main.go
“`“`go:main.go
package mainimport (
“fmt”
“log”
“net/http”
)func main() {
http.HandleFunc(“/”, func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, “Hello, World!”)
})log.Fatal(http.ListenAndServe(“:8080”, nil))
}
“`
## EC2の作成
以下、コンソール画面をポチポチしてEC2を作成する。|
【超初心者向け】5分でAWS Lambda + API Gateway でRest APIを作る
# 作ったもの
![](https://github.com/nmasashi/qiita/blob/main/lambda/apigateway_lambada/images/lambda.png?raw=true)
ただ、以下の json を返すだけの RestAPI です。
AWSを最近勉強し始めたよちよち歩きのエンジニアの第一歩です:v:“`json
{
“statusCode”: 200,
“body”: “\”Hello from Lambda!\””
}
“`# 手順
用意するもの
– AWS アカウント
## lambda 関数作成
1. 任意のアカウントでログイン
1. [Lambda 関数一覧](https://ap-northeast-1.console.aws.amazon.com/lambda/home?region=ap-northeast-1#/functions)にアクセス
1. 「関数の作成」をクリック
![](https://github.com/nmasashi/qiita/blob/main/lambda/api
AWS CLIの設定の仕方(アクセスキーIDとシークレットアクセスキーの取得編)
AWSにポートフォリオをデプロイするためにCLIの設定を行いました。
AWSのconfigure(設定)には
・アクセスキーID
・シークレットアクセスキー
・AWSリージョン
・出力形式
上記の4つの情報を入力しなければなりません。まずIAMのIdentify and Access Manegementのユーザーを開き、ユーザを選択して、認証情報のタブを選択し、アクセスキーを作成のボタンをクリックします。そしてMFAデバイスの割り当ての管理をクリック。
MFAデバイスの管理で仮装MFAデバイスにチェック入れ、続行。そうするとQRコードを表示することができるので、それをスマホのauthenticator (googleの認証システムなど)を使って読み取ります。
そうすると6桁の数字が一定時間おきに表示されるので、そのコードをMFAコードに入力します。(入力するMFAコード欄は二つあるのですが、同じコードは打ち込まないでください。)
Cloud9環境へDockerのインストール方法 コンテナ起動
## 概要
前回作成したCloud9の環境でとりあえずdockerをインストールしてコンテナを起動してみます。コンテナは[こちら](https://qiita.com/mongamae-nioh/items/7525be957f4e5e10d403)のAdventCalendarを作成してみます。
## Dockerインストール
### Cloud9へのDockerインストール
* 以下のコマンドでDockerをインストールします。
* インストールされていた場合はスキップします。“` shell
docker -v
sudo yum install -y docker
“`
* 以下のコマンドでdocker composeもインストールしておきます。“` shell
sudo curl -L “https://github.com/docker/compose/releases/download/1.27.0/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
sudo c
ポートスキャンサンプル(python 3.8 on aws-λ )
メモリは1GB推奨。がっつりスキャンするので、要チューニングして利用のこと。
“`python
import json
import socket
import random
from multiprocessing import Process, Pipe
import urllib.request#向き先
TARGET_HOST=’hogehoge.com’#通知先WEBHOOK
webhook = “https://discord.com/api/webhooks/9999999999999999/hogehoge”#生成するスレッド数:CONNECTION多重度と同義。400辺りでファイルディスクリプタ関連エラー
THREAD_MAX=300
#検査レート:何%のポートを検査対象とするか。0.3の場合、検査ポートの30%をScan対象とする
#TODO:アホほど回るのでチューニングすること
SCAN_RATE=0.3
#タイムアウト:socketのタイムアウト時間(秒)。0.3くらいで検査できそう
SOCK_TIMEOUT=0.3def portscan(