AWS関連のことを調べてみた2022年07月07日

AWS関連のことを調べてみた2022年07月07日
目次

せっかくAWS上に作ったk3sクラスタにローカルからアクセスしたいのだが、、、

この間書いた記事で、AWS上にk3sクラスタを作ることができました。
AWSのインスタンスにログインしてからkubectlで操作してもよいのですが、せっかくなのでローカルのWindows端末からもアクセスしたいですよね。でも、どういうわけかてこずってしまいました。

# 1.準備
## 用意したインスタンス
**サーバー用×3**
名前:k3s-a,k3s-b,k3s-c
インスタンスタイプ:t3.large
ストレージ:20G
AMI:Debian 11を指定

**エージェント用×1**
名前:k3s-d
インスタンスタイプ:t2.micro
ストレージ:20G

* 各インスタンスは、同じサブネットに所属するように設定しておきました。
* セキュリティグループも各インスタンス同じものを設定しておきます。このセキュリティグループは、同じセキュリティグループに所属するインスタンスからは無制限にアクセスできるようにしておく必要があります

## ソフトウェアのバージョン
**k3s側**
Debian GNU/Linux 11
k3s version v1.23.8+k3s1 (53f

元記事を表示

FULL KAITENがAWS Athena移行に至った訳と、RustでAWS Athenaにリクエストを投げる際の実装例について

# はじめに

フルカイテンが提供する在庫分析SaaS「FULL KAITEN V3」(以下FULL KAITEN)では、顧客データをETLを介してデータストアに格納しています。日次バッチとして、ETLでのデータ処理→データストアに処理したデータの投入を実行しています。

“`mermaid
flowchart LR
subgraph 日次バッチ
id1(ETL)–>id2(データ投入)
end
id2–>id3[(データストア)]<-->id4(WebAPI)
“`

AWS Athana移行前のFULL KAITENでは、データストアとして、[Elasticsearch](https://www.elastic.co/jp/elasticsearch/)を使用していました。多くの顧客データを扱うようになり、Elasticsearchへのデータ投入後から利用可能な状態になるまでに時間がかかってしまう問題が発生しました。そこで、データストアをS3へのデータ投入後に速やかに利用することができる[AWS Athana](https://aws.amazon.com/jp/a

元記事を表示

AWS Database Migration Service (DMS) でいくつかのテーブルにデータが入らないエラーを解消する方法

# 現象
AWS Database Migration Service (DMS) で複数のテーブルにデータを入れようとすると、いくつかデータが入らないテーブルが出てきます。

# 原因
テーブルにリレーションを張っていると、参照元テーブル→参照先テーブルの順にデータを入れないとデータが入りません。
しかしAWS Database Migration Service (DMS)は順番関係なくデータを入れようとしますので、データが入らないことがあります。

# 対応策
エンドポイントの「追加の接続属性」に

“`
initstmt=SET FOREIGN_KEY_CHECKS=0
“`

を入れておくことで、リレーションのエラーを回避させることができます。

エンドポイント→エンドポイント名を選択→右上の「アクション」ボタンを押し「変更」ボタンを押す→「エンドポイントの変更」画面で

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561175/0a071ca7-4df9-2d16-bc

元記事を表示

AWS NLB-ALB多段構成を組み、更にはパスベースルーティングを確認してみた。

# 概要
このページでは、AWSにおける以下の確認内容を記載します。

①NLB-ALB多段構成を行うことで静的なIPアドレスで、ALBが利用できること(基本的なバランシングが出来ていること)。
②さらに、NLB-ALB多段構成にて、本来ALBがもつパスベースルーティング(パスバランシング)機能が利用できること。

# はじめに
オンプレ設備からDirectConnect(以下、DX)経由で、アドレス帯が異なるAWS上のELBと通信を行うことがあると思います。

そのAWS上で利用されるアドレス帯がオンプレ設備側で許容することが出来ない場合、
NAT(Network Address Translation)を利用することが多くオンプレ側にもアドレス消費を求められるアーキテクチャになると思います。

特にELBがALBを使う場合には、IPが静的にアドレスをアサインすることができないため
ある程度利用されるIPアドレスを想定したアドレスを確保しなくてはいけませんでした。

例)
![pptお絵描きネタ.png](https://qiita-image-store.s3.ap-north

元記事を表示

Ectoのconfigに1行足してAuroraのフェイルオーバーに対応する

MyXQLやPostgrexのドキュメントを読めば書いてあるのですが、結構調査に時間がかかったのでメモ。

MySQLの場合は`disconnect_on_error_codes: [:ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION]`、また、PostgreSQLの場合は`disconnect_on_error_codes: [:read_only_sql_transaction]`を足せばOKです。

MySQLの例

“`elixir
config :my_app, Repo,
database: “ecto_simple”,
username: “user”,
password: “pass”,
hostname: “localhost”,
disconnect_on_error_codes: [:ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION]
“`

### 備考: Auroraのフェイルオーバー問題とは

AWSのAuroraはMultiAZでフェイルオーバーすると、ReaderとW

元記事を表示

【Qiitaでも使える】テキストから図が生成できるMermaidでAWS構成図をつくる

# はじめに

Mermaid記法で記述したテキストからダイアグラムの図が生成できるMermaidでAWS構成図をつくる方法を紹介します。

また、MermaidはGithubやQiitaなどのWebサービスやVSCodeやIntelliJなどのツール、コマンドやWebシステムでも使用できますので、詳細は[[【Qiitaでも使える】テキストから図が生成できるMermaidについてのザックリ解説]](https://qiita.com/b-mente/items/97a4296666faccd53a72) (以下ザックリ解説)をご覧ください。

Mermaidのことはなんとなくわかったけど、AWSの構成図や配置図が描けないか考えていた人にも参考になれば幸いです。

# AWSの構成図をつくる

## ・どんな感じの図ができるのか

AWSの構成図を描くときにはAWS公式から提供されている[[AWS Architecture Icons]](https://aws.amazon.com/jp/architecture/icons/)というAWSのダイアグラムを書く際のアイコンセットを利用す

元記事を表示

Terraform 入門から精通まで(二)

## 概要
今回、Terraformを使って、AWS VPCを構築して、VPCのpublic subnetに外部からアクセスできるec2を起動します。

## システム構成図
![截屏2022-07-07 0.01.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2531066/747d23e8-8bbd-e036-126c-4316b3cda96c.png)

## やること
– VPCを構築
– Internet Gatewayを作成
– Route Tableを作成
– サブネットを作成
– Route Tableにサブネットを関連付け
– port22,443,80を許可Security Groupを作成
– network interfaceを作成
– 作成したnetwork interfaceにElastic IPを関連付け
– EC2を作成して、ec2にApacheをインストールして、起動する

## 前提条件
・MAC
・VS code
・リソースを作成するためのAWSの権限設定をも

元記事を表示

AWS Elastic Disaster Recovery Workshopをやる

# はじめに

この記事は[AWS Elastic Disaster Recovery Workshop](https://catalog.us-east-1.prod.workshops.aws/workshops/080af3a5-623d-4147-934d-c8d17daba346/en-US)をやった際のメモ書きです。
リンク先のWorkshopは英語で書かれています。もし、英語を読むことが大変である方はこの記事をぜひ参考にしてください。
ただし、リンク先の情報を全てこちらに記載しているわけではないため、詳細な情報を得たい方は本家Workshopを実施してみてください。

# Introduction

AWS Elastic Disaster Recovery(DRS)は、OS、データベースやアプリケーションなどのマシンを、低コストなステージングエリアに継続的にレプリケートするサービスです。
災害発生時にDRSに指示することで、レプリケートしていたマシンをリカバリーインスタンスとして、数分で自動的に起動することができます。

以下はDRSの基本的なネットワーク図です。
左手

元記事を表示

AWS Cognitoでワンタイムパスワード(MFA認証)を設定していても自動テスト(Cypress)をする方法

## Cypressとは

cypressはブラウザをクライアントとして、WebアプリケーションのE2Eテスト(End to End Test)を実現するためのテストツールです。テストコードをjavascriptのコードで記述することでテストを自動化することができます。

https://www.cypress.io/

### Cypressと認証

cypressでE2Eテストを行う際の対象Webシステムが認証を必要とする場合、cypress側が認証を通過する必要があります。IDとパスワードのみの認証であれば、テストコード側に認証情報を渡してキーボード入力で認証を通過することが可能です。ただ、最近のアプリケーションではSNS認証や多要素認証など様々な認証方法があります。
cypress公式でもAuth0やAWS Cognitoなど最近よく使われる認証サービスに関するガイドがあり、実装の参考になります。

https://docs.cypress.io/guides/end-to-end-testing/amazon-cognito-authentication

私がやりたかったA

元記事を表示

AWS Security Hub、Config、GuardDutyのイベントをSlack通知してみた

## はじめに
Security Hub、Config、GuardDutyのイベントを、EventBridge → SNS → Chatbot経由でSlack通知してみたので、その備忘として。

## 構成
構成は以下の通りです。
Security Hub、Config、GuardDutyの特定のイベントをEventBridgeでひろい、SNS、Chatbot経由でSlackに通知します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/e1dd3e44-185c-9b55-e345-79dfa59ecc34.png)

## KMS(CMK)の作成
SNS用のCMKを作成します。
SNSの暗号化は必須ではありませんが、CMKを作成し適用しておきます。
※今回、3つのSNSトピックを作成しますが、AWSサービスからのイベント通知である事から、CMKは1つ作成し、3つのトピックで同じ鍵を使用する事にします。

| 設定項目 | 設定値 |
|:-|:-|
| エイリアス |

元記事を表示

AWS Amplify 備忘録

AWS のドキュメントではよくクライアント例として Amplify のライブラリが使われていますが、Amplify とは何か非常に分かりづらいのでメモします。Amplify には以下のような様々な機能がありますが、それぞれ独立しており、特に Amplify CLI が無いと Amplify Library が使えない事はないです。純粋にマーケティング的な理由で同じ名前にしているのではと思います。

* Amplify CLI:
* クライアントアプリにデータベースや認証などのバックエンドを追加する仕組み。
* バックエンドは AppSync や Cognito などの AWS サービスをうまい具合に調整してくれるらしい。
* クライアントは Amplify が自動生成した src/aws-exports.js を使ってバックエンドにアクセスする。
* Amplify Hosting:
* Amplify の中でウェブサイトを公開するしくみ。
* Amplify Library:
* AWS の色んなサービスに接続するクライアントライブラリ。

元記事を表示

Serverless Consoleを使ってVSCodeでのAWSサーバーレス開発を加速させる?

# Serverless Consoleとは
Serverless ConsoleというAWSでのサーバーレス開発にうってつけなVS Code拡張機能を見つけたのでご紹介。

https://marketplace.visualstudio.com/items?itemName=devAdvice.serverlessconsole

# 準備
適当なServelessアプリを作ります。

“`bash
$ serverless -v
Framework Core: 2.70.0
Plugin: 5.5.2
SDK: 4.3.0
Components: 3.18.1
$ serverless create –template aws-python3 –name MyServerlessApp –path MyServerlessApp
“`

“`python:handler.py
import json
import boto3
import logging
from decimal import Decimal

logger = logging.getLogger()

元記事を表示

AWS CLIでAmazon CloudWatch Logsに保存されたログを見たい

# Whats’?

Amazon CloudWatch Logsに保存されたログを参照する方法について、まとめておきたいなと。

AWS CLI使用前提ですが。

# 環境

今回の環境は、こちらです。

“`shell
$ aws –version
aws-cli/2.7.12 Python/3.9.11 Linux/5.4.0-121-generic exe/x86_64.ubuntu.20 prompt/off
“`

AWSのクレデンシャルは、環境変数で設定しているものとします。

“`shell
$ export AWS_ACCESS_KEY_ID=…..
$ export AWS_SECRET_ACCESS_KEY=…..
$ export AWS_DEFAULT_REGION=…..
“`

# `aws logs`でAmazon CloudWatch Logsに保存されたログを参照する

参照するドキュメントは、このあたりでしょう。

https://awscli.amazonaws.com/v2/documentation/api/latest

元記事を表示

AWS Client VPNとAzure P2S 機能比較 01~AWS Client VPN構築編~

# AWS Client VPNとAzure P2Sを比較してみた
AWS Client VPNでオンプレミスのPCをAWSのVPCに接続し、その際にインターネットに出るIPアドレスをAWSの固定IPアドレスにする、という構成です。
ネットワークの用語でいうと**フルトンネル**(フルトンネリング)という構成です。
NAT GatewayにElastic IPアドレスを設定し、AWS Client VPNでインターネットに出る際、IPアドレスをElastic IPアドレスに固定する(固定IPアドレスにする)というシナリオです。
まずはAWS Client VPNの構築です。

## AWS Client VPNの構成図
普段AzureのP2Sを構築していて当然構成図も書いたことがあるのですが、AWSの構成図は初めて書きます。
お作法も分からないのでなってなければご指摘ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/0e493807-629b-0c90-3c66-7

元記事を表示

【初心者】AWS CI/CD for Amazon ECS ハンズオン をやってみる

# 1. はじめに
– devops関連の復習をしている。前の記事「[【初心者】CodeCommit, CodeDeploy, CodePipeline を使ってみる](https://qiita.com/mksamba/items/63c87ca7e910eef1e843)」で、初めてcode系サービスのハンズオンを行ったが、もう少し詳しいものをやってみたいと思い、CodeBuildなどが内容に含まれている別のものを実施する。

# 2. やったこと
– AWS Japanから公開されている「[AWS CI/CD for Amazon ECS ハンズオン](https://pages.awscloud.com/rs/112-TZM-766/images/AWS_CICD_ECS_Handson.pdf)」を実施する。
– 2020/4に作成されており少し古いため、そのまま実行できない箇所もある様子だが、まあ大丈夫かなと思いチャレンジする。
– ハンズオンに含まれる内容は以下の通り。
– ハンズオン1: ECS環境の構築
– 今回のハンズオンの動作環境となるVP

元記事を表示

【初心者】CodeCommit, CodeDeploy, CodePipeline を使ってみる

# 1. 目的
– devops関係の復習をしている。code系のサービスの知識が乏しいため、基礎的なハンズオンから始めて勉強する。

# 2. やったこと
– AWS公式チュートリアル[「チュートリアル: シンプルなパイプラインを作成する (CodeCommit リポジトリ)」](https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/tutorials-simple-codecommit.html) を実施する。
– Developers.IOの記事[「CodeCommitからEC2にデプロイするシンプルなパイプラインを作ってみた」](https://dev.classmethod.jp/articles/pipeline-to-deploy-from-codecommit-to-ec2/)に、上記公式チュートリアルの詳細な解説があり、それも見ながら実施する。
– チュートリアル内容は以下の通り。
– CodeCommitにリポジトリを作成し、デプロイしたいアプリケーション(※httpdを起動してind

元記事を表示

aws ec2 の使い方 (aws-cli)

インスタンスがひとつの場合の InstanceId の調べ方

“`bash:go_list.sh
aws ec2 describe-instances > tmp01.json
jq .Reservations[0].Instances[0].InstanceId tmp01.json
“`

インスタンスのスタート

“`bash:go_start.sh
aws ec2 start-instances –instance-ids i-0f619596fcebda123
“`

インスタンスのストップ

“`bash:go_stop.sh
aws ec2 stop-instances –instance-ids i-0f619596fcebda123
“`

## 実行中のインスタンスのパブリックIPアドレスを調べる方法 ##

“`bash:get_state.sh
jq .Reservations[0].Instances[0].InstanceId $1
jq .Reservations[0].Instances[0].State $1
jq .Reserva

元記事を表示

【AWS】「AWS Well-Architected Framework」や「ベストプラクティス」を紐解く会(社内勉強会)を実施しました

# はじめに
最近、めちゃんこ暑くて、絶賛とろけてます。
換気のために窓を開けると、熱風が注ぎ込んできますね!

どーも、のぶこふです。

ついったでも少し呟いたのですが、社内向けに「[W-A](https://aws.amazon.com/jp/architecture/well-architected)」や、[AWS をはじめる 10 のことシリーズ「AWS でアーキテクチャ設計を検討する上で知っておくべき 10 のこと (+1)」](https://pages.awscloud.com/JAPAN-event-OE-At-least-10-Architecting-2020-reg-event-LP.html?aws_introduction_page)を紐解く会を実施しました。

## モチベーション

クラスメソッドさんの研修に参加させていただいて、W-Aの大切さを改めて実感したので、これは社内にも還

元記事を表示

ECS Execでトラブルが起きたら、amazon-ecs-exec-checkerを使ってみよう

ECS Execは、ECSで稼働しているコンテナに対しコマンドを実行できる仕組みです。

ローカル環境だと出ないエラーが出てしまって、原因がわからない場合や、
VPC内のリソース以外からはRDSへの接続が許可されていない場合に活躍します。
仰々しい名前が付いていますが、独立したサービスではなく、SSMでコンテナに接続する感じです。
AWS CLIが入っていれば、ぜひ試してみてください。

導入方法は下記のドキュメントを御覧ください。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/ecs-exec.html

さて、ECS Execするための設定なのですが、
簡単そうに見えて、ネットワークなどの設定によっては、一発で繋がらない事もあります。
AWS Execでは色々と隠蔽されているのもあり、トラブルの原因を探るのはなかなか難しい。
(よくあるのは、ssmmessagesへの権限付与が足りないとか..VPC Endpointがないとか..)

そんなときに役立つのが、 `amazon-ecs-exec-checke

元記事を表示

lambdaのメモリとCPU数はどこが切れ目なのか調べてみた

すでにほかの記事でも触れられていますが、lambdaはメモリを増やすとCPUが増えるようです。

https://qiita.com/hamadu/items/12303d9f9cb800db14d3
https://aws.amazon.com/jp/lambda/faqs/

128MBでもすでに2つ割り当てられていたり最大でも6つだったりどこが区切れなのか調べてみました。

ソースコードは以下に置いてあります。

https://github.com/misogihagi/lambda-cpuinfo

## 結果

128MBごとに増やした結果です。ざっくりいうと3GB,5GB,7GB,9GBでスレッドが一つ増えるみたいです。

![visualization.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230043/ad4c5b74-d42a-df4d-bd09-a1e0559eb58a.png)

“`json:vega-light
{
“data”: {
“values”: [

元記事を表示

OTHERカテゴリの最新記事