- 1. AWSの知識まとめ(初級)
- 2. AWS Code シリーズ要旨
- 3. CNAMEレコードとALIASレコードの違い
- 4. IAMについて
- 5. [2021年] AWS Certified Cloud Practitionerに本2冊で合格した話
- 6. 【AWS】素の Cloud9 に Python 3.9 をインストールする
- 7. とりあえずAWS Cognito触ってみた
- 8. RDS自動起動停止をlambdaで
- 9. AWSまとめ (IPアドレス)
- 10. MWAA での環境変数設定パターン
- 11. AWS SAM ローカルでいろんな角度からhello worldする
- 12. AWSのssmのポートフォワードを並列稼動で起動する。
- 13. EKSのバージョンの「サポート終了」についてちゃんと調べてみた
- 14. Route53でS3にホスティングしたアプリケーションをCNAMEを使って任意のドメイン名でアプリを公開する
- 15. 作成したアプリケーションをS3でホスティングしてインターネットに公開する
- 16. [Rails] AWS SESのSMTPサーバを使う大まかな流れとSandboxを解除したやりとりの記録
- 17. LINE x SageMaker で背景切り抜きアプリつくった
- 18. AWS ネットワーク
- 19. AWS Systems Managerのオートメーションを使う
- 20. 【AWS】NLB配下のEC2をCloudFrontのIPで制限したい②
AWSの知識まとめ(初級)
最近バックエンドエンジニアをしていても、インフラの知識が必須のようなイメージ
があるので実務では使ってないが少しずつ知識をためていこうと思う!## 基本もろもろ
– ルートユーザーとIAMユーザーがあり、基本的にはIAMユーザーで作業を行う
– 操作ログはCloudTrailで追跡できる、S3に保存される
AWS Code シリーズ要旨
CI/CD
====
アプリケーションの開発フェーズにおける自動化を行い、開発チーム、運用チームに生じる問題を解消するためのソリューションです。
AWSのCodeシリーズは、この CI/CD を果たすための役割としてサービスを提供しています。Code Commit (継続的インテグレーション)
==========
– Code Commit はAWS上にプライベートな Git リポジトリをホストし、複数の開発者が共同で効率的に作業を行うために提供されたソース管理サービスです。
– 任意のIAMユーザーからソースコードをリポジトリに`push`し、プルリクエスト、コミットの機能を利用して、リポジトリのソースコードに対して変更管理を行う事が可能となり、AWS上でセキュリティを保全しながら共同開発が行えます。
– ブランチと呼ばれる、マスターの変更管理から派生した特定の開発工程を管理するための機能を作成する事が可能で、Masterブランチから分岐したブランチにより、開発者は不特定多数のソースコードに対して並行作業をする事が可能です。
– リポジトリのプッシュをトリガーにメールを通知させ
CNAMEレコードとALIASレコードの違い
# 前提
– ドメイン名からI Pアドレスを受け取って通信したい
– AWS S3とRoute53使用
– Aリソースレコード(Aレコード)とは、ドメイン名に対するIPv4アドレスを指定するリソースレコード。同じドメイン名に対して複数記述することができる。https://jprs.jp/glossary/index.php?ID=0161
# CNAMEレコードの場合
>DNSの名前解決では、CNAMEリソースレコードが見つかった場合、ドメイン名を正式名に置き換えて名前解決を継続します。https://jprs.jp/glossary/index.php?ID=0212
つまりCNAMEレコード名でアクセスしたらAレコード名を返す。
でも通信するためにはIPアドレスが欲しいので、Aレコードが返されたらそのAレコード名を使用して名前解決をしてIPアドレスを受け取る。![CNAME A.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1836602/700d41ae-1755-a509-60b0-
IAMについて
AWSのCloudPractitionerの勉強の過程で、IAMについて紛らわしかったのでまとめる。
私はAWSについてちゃんと勉強する前、個人開発でEC2を使っていたことがあった。
その際管理者アカウントを常に使っていたので、「この機能いる??」と思っていた。(いらない機能わざわざ用意しないよねってのは置いといて、、)# IAMとは
`Identity and Access Management`の略。その名の通り、アクセス権限と認証を管理する機能。# いつ使うのか
各アカウントにリソースを使う権限を付与したいとき。# IAMポリシー
権限が書かれたファイル。
誰がどのサービスのどのリソースに対してどんな操作をするのか、といったことをJSON形式で記述する。
“`
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“s3:Get*”,
“s3:List*”
],
“Resource”: “*”
}
]
}
“`
こんな感じでどんな操作を許可するのかが書かれてる。#
[2021年] AWS Certified Cloud Practitionerに本2冊で合格した話
# はじめに
10年以上セキュリティエンジニアとして働いていましたが、訳あって最近インフラのリーダーになりました。会社では主にAWSを利用しているため、勉強がてらAWSの資格を取得したという話です。ちなみにセキュリティエンジニアの時はAWSを使うことはなくGCPで色々なことをやっていました。AWSを使わなかった理由は、数年前にAmazonアソシエイトを意味不明な理由で垢バンされたからです。。
# 勉強方法
以下2冊の本を読み込みました。どちらも1年以上前の本ですが特に問題なかったです。
Amazonアソシエイトを垢バンされているためアフィリエイトリンクにはなっておりません。安心してクリックしてください。以下の本はシンプルにまとまっていて覚えやすい&理解しやすかったです。
3日くらいかけて内容を暗記しました。次に、上の本1冊だけでは不安だったので以下の本も買いました。
上の本に記載していない内容が多々ありましたので買ってよかったです。
こちらも3日くらいかけて内容を暗記しました。https:
【AWS】素の Cloud9 に Python 3.9 をインストールする
結果何とかなりましたが時間を吸われたので、
備忘録として残します。## 1. やりたいこと
– AWS Cloud9
– Python `3.7.10` (既定のバージョン※) を `3.9.0` にアップデートする
※ 2021 年 11 月 24 日 現在## 2. 前提
– 環境
– 作成してそのままの Cloud9 (Amazon Linux 2)## 3. 方法
Python バージョン `3.7.10` からスタートします。
“`sh
$ python –version
Python 3.7.10
“`### 3.1. pyenv インストール
まず pyenv をインストールします。
“`sh
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv# 確認
$ ~/.pyenv/bin/pyenv –version
pyenv 2.2.2-1-gf2925393
“``~/.bashrc` に以下を記載し、 pyenv コマンドへパスを通します。
とりあえずAWS Cognito触ってみた
#§1.はじめに
##1.何のページ?
AWSの中で2021年2月7日時点で常に無料(?)なサービスである
Amazon Cognitoをとりあえず触ってみたときの備忘録的なものです。無料枠の確認は[AWS クラウド無料利用枠](https://aws.amazon.com/jp/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc)で行えます。
Cognitoは何?って人は検索してもらうか[Cognitoの紹介ページ](https://aws.amazon.com/jp/cognito/)をご覧ください。
AWS S3だけはアカウントを作って最初の1年は無料なのですがそれ以降は
お金がかかります(2021年3月7日現在では一月に1GBあたり0.025ドル)##2.誰向け?
備忘録的なものなので自分向けですが、
AWSに興味があってとりあえず登録してみたけど何していいかわからない~って
人の参考になればいいかなと思ってます。
専門的な用語などはできる
RDS自動起動停止をlambdaで
#はじめに
RDSの料金を節約するために夜中に停止して朝起動するジョブを作ります。
#RDSの作成
RDS上でテスト対象となるDBを作成します。“`json:DBの情報
“DB識別子”: “postgres-db”
“`#lambdaの作成
event変数でAction(Start/Stop)と対象のInstanceを取得して、対象DBのステータスを取得したあと起動/停止を行います。“`python:/lambda_function.py
import boto3
region = ‘ap-northeast-1’def lambda_handler(event, context):
rds = boto3.client(‘rds’, region_name=region)
action = event[“Action”]
db_instance = event[“Instance”]response = rds.describe_db_instances(DBInstanceIdentifier=db_instan
AWSまとめ (IPアドレス)
・パブリックIPアドレス-
TCP/IPというプロトコルでは通信先の特定にIPアドレス(ネットの住所みたいなもの)を使う。
このIPアドレスは32ビットで構成されるが、「192.168.1.2」のように8ビットずつ区切られたものを10進数に変換し、「.」で区切られた形で表されます。ちなみに.内で区切られた数字は0~255までの数字で表され、このIPアドレスは重複しては住所の役割を全うしないのでICANNという団体が管理しています。
(しかし、このIPv4のアドレスの在庫が切れたので、新しく出たIPv6に移行するまではNATというIPアドレスを旧友できるシステムを開発したそうです。)・プライベートアドレス
プライベートアドレスとはネットに繋がれていないアドレスのことです。(社内の電話回線など)・・CIDR表記
IPアドレスのネットワーク部のビット数をIPアドレスの末端につけたもの。例: 192.168.1.2のIPアドレスがあったとして、この場合ネットワーク部(192.168.1を2進数に直すと24個の数字で表されるので、24ビット)の24という数字をIPアドレスの末端に
MWAA での環境変数設定パターン
# 設定パターン
網羅的ではないですが、複数あります。以下の5つを試したり紹介だけだったりしていきたいと思います。
* ①Airflow UIで設定(GUI)
* ②DAG内で設定
* ③airflow.cfgで設定(マネコン & CLI)
* ④airflow cliで設定
* ⑤Secrets Managerに全振り## ①Airflow UIで設定
Airflow UIでの環境変数設定を見ていきます。Airflow UIでのGUI操作になります。
#### 手順
Airflow UIを開き、上部の[Admin]にカーソルを当て、[Variables]をクリック
左下の[+]ボタンをクリックします![スクリーンショット 0003-11-26 7.34.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27932/cac44046-3178-9eab-06fe-11c376c54c00.png)
Key/Valueの形式で入力します。ここではfoo/barを入れました。左下の[
AWS SAM ローカルでいろんな角度からhello worldする
## やりたいこと
サーバーレスな処理を実装するのに備えて、ひとまずSAMを使ってローカル環境にてブラウザやcurlコマンドでhello worldをしたいです。“`
$ sam –version
SAM CLI, version 1.22.0
“`## 実装!
### sam initする`sam init`して、プロジェクトを新規作成します。
SAMからの質問に対して、下のように答えました。“`
template: AWS Quick Start Templates
package: type: Zip (artifact is a zip uploaded to S3)
runtime: ruby2.7
Project name [sam-app]: identify_user
quick start application templates: Hello World Example
“`↓(参考)上記の詳細、質疑応答の全貌。
“`
$ sam initWhich template source would you like to use?
AWSのssmのポートフォワードを並列稼動で起動する。
AWSのEC2を開発機として利用しているが、ssmで接続に慣れてくると、鍵をできるだけ使いたくない。できるだけIPを考えたくない。ポートフォワードで、接続できると良いとなってきた。
asis
“`
aws ssm start-session –target i-0dhogehogec26 –profile tanigawa.rei –document-name AWS-StartPortForwardingSession –parameters “portNumber=22,localPortNumber=50022
ssh -i ~/.ssh/key/tanigawa-rei-development.pem ec2-user@127.0.0.1 -p 50022 -N -L 8000:localhost:8000 -L 33306:localhost:33306 -L 9000:localhost:9000 -L 9090:localhost:9090 -L 15808:localhost:15808
“
ssmのポートフォワードでは、複数ポートの指定ができな
EKSのバージョンの「サポート終了」についてちゃんと調べてみた
# 背景
業務でEKSを扱っていて、ふと生じた疑問について調べてみました。
[今回参考にしたドキュメント](https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/kubernetes-versions.html)# EKSの「サポート終了」とは?
K8sは成長途中の技術であるためバージョンのアップデートが早く、約3ヶ月に1度のペースで新しいマイナーバージョンがリリースされています。
それに伴いAWS上のEKSクラスターもデプロイしたらしっぱなしではなく、運用しながら手動アップグレードし続ける必要があります。ドキュメントでは、
> 各マイナーバージョンは、最初にリリースされてから約 12 か月間サポートされますと書かれており、これ以降で下記の終了日を超えるとそのバージョンは「サポート終了」となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/1e9ddc5c-0e6e-653c-95e6-62306395c
Route53でS3にホスティングしたアプリケーションをCNAMEを使って任意のドメイン名でアプリを公開する
# 前提
ドメインをとってRoute53でホストゾーンを作成してあるものとする。
https://qiita.com/mocomou_/items/ad70792f8935839b1071
# CNAMEとは
> 別名に対する正式名を指定するためのリソースレコードです。
ホスト名には、「canonical name(正式名)」以外に、「aliases(別名)」を付けることができます。DNSの名前解決では、CNAMEリソースレコードが見つかった場合、ドメイン名を正式名に置き換えて名前解決を継続します。ある別名に対する正式名は常に一つであるため、一つの別名に対し、正式名を二つ以上指定することはできません。
CNAMEリソースレコードは、以前はホスト名に別名を付ける手段として使われていました。現在では主にCDN (Contents Delivery Network)や、/24未満のIPv4アドレスの逆引きを設定する際に使われています。
別名は、例えば1台のサーバーで複数のサービスを提供している場合に、サービスごとにサーバーの名前を変えるときに使用します。サーバーの正式なドメイン名はse
作成したアプリケーションをS3でホスティングしてインターネットに公開する
# Nuxt.jsで作ったアプリをS3にホスティングする
## Nuxt.jsでの作業
こちらの本を参考に(というかまるっと引用)して簡単なアプリケーションを作成。
そして
“`
$ npm run generate
“`でdistファイルを作る。
このファイルの中身を後でS3にアップロードする。generaateはホスティングサービスにデプロイするとき、
build はNode.js サーバにデプロイするとき
ように使い分ける。
参考:https://blog.mktia.com/diffrences-between-build-and-generate-in-nuxt/## AWS S3での作業
### バケットを作成する
![バケット作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com
[Rails] AWS SESのSMTPサーバを使う大まかな流れとSandboxを解除したやりとりの記録
Deviseのパスワード発行メールのように、受信を気にしないメールをサクッと飛ばしたい時がままあるので記事にしました。
# Rails
## gem
gem ‘aws-sdk-rails’
## ActionMailer
“`ruby
# config/initializers/aws.rbAws::Rails.add_action_mailer_delivery_method(
:ses,
credentials: Aws::Credentials.new(ENV.fetch(‘AWS_ACCESS_KEY_ID’) { ‘AWS_ACCESS_KEY_ID’ },
ENV.fetch(‘AWS_SECRET_ACCESS_KEY’) { ‘AWS_SECRET_ACCESS_KEY’ }),
region: ‘ap-northeast-1’
)
“`
“`ruby
# config/environments/production.rbconfig.action_mailer.deliver
LINE x SageMaker で背景切り抜きアプリつくった
# はじめに
LINExAWSでほげほげする回の続編です。これまで
i. LINEでLambdaに画像を送信
ii. Rekognitionで顔情報の取得(表情判定)
iii. SageMakerでセマンティックセグメンテーションモデル作成
をしてきました。今回はi, iiiを用いて、背景切り抜きするLINEアプリを作ってみました。具体的には
1. LINEでLambdaに画像を送信して
2. セマンティックセグメンテーションモデルを用いて背景画像を切り抜き
3. 切り抜いた画像をLINEに送り返す
をしてみました。基本的には組み合わせです。# 完成物
こんな感じになります。
LINEで画像をおくると、背景が切り抜かれた画像が返却されます。
いぬ。かわゆ。
「あれ
AWS ネットワーク
#【AWS ネットワーク】
AWSのネットワーク設計はとても重要。
TCP/IPなど、ネットワークの知識ももっとつけていこう。記事について、誤りや不足している点がございましたらご指摘頂けますと幸いです!!
##AWS上でのネットワーク設計のポイント
– 物理設計の検討、構築が不要
– マネージドサービスによる運用負荷の軽減
– プログラマブルな作成、管理、展開##VPC(Virtual Private Cloud)
– AWSの仮想ネットワークサービス
– 地域(リージョン)毎にアカウントと紐づいた仮想的なネットワーク空間
– リージョンは、複数のAZから構成される。
– 基本的に東京リージョンを使用する。
– 1アカウントで複数のVPCを作成することも可能。
– dev環境、stg環境とprod環境でVPCを分けることがスタンダード。
– ※ **前提**:VPCの内部のことをローカルという。###VPCのCIDRブロックは /16
– CIDRブロックは、/16 が推奨されている。
– (大きさは /28 から /16 の範囲で使用
AWS Systems Managerのオートメーションを使う
## はじめに
本記事は、以下の記事の続きです。
https://qiita.com/kiyokanishiyama/items/8432d070b9436f999122
本記事では、前回に続き、Systems Managerのオートメーションランブックを実行できるようにします。
オートメーションランブックを使うと、Systems Managerのマネージドインスタンスにセキュリティーパッチを適用したり、Windows Server AMIにWindows Updateを全自動で終わらせるなど、様々なタスクを実行することができます。## 記事のカバー範囲
– AWSが用意した既成のランブックだけでなく、ユーザーがカスタマイズしたランブックも実行できるようにします。
– ランブックのカスタマイズ方法についてはカバー範囲外です。## オートメーションのロールを理解する
オートメーションの実行時に利用するロールとポリシーの関係です。
![2021-11-24-23-36-23-image.png](https://qiita-image-store.s3.ap-north
【AWS】NLB配下のEC2をCloudFrontのIPで制限したい②
# 概要
下記の続きとなります。https://qiita.com/kurono/items/71814097531ed32efd55
# 過信
そもそも、NLBがどのIPでヘルスチェックしているかを俺は理解していなかった。ヘルスチェックをするIPはCloudFrontのIPアドレスではなく**NLBの所属するVPC内で払いだされたIPアドレス**。
NLBの先のインスタンスでは**CFのIPアドレス**と**VPCのCIDR**(AWS公式はVPCのCIDRを登録するのが推奨っぽい)をセキュリティグループで許可してあげなければいけない。
[ターゲットセキュリティグループ](https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/network/target-group-register-targets.html#target-security-groups)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amaz