- 1. Aurora Serverless v2のスケールアップ・スケールダウンをスケジューリングする
- 2. AWS SAM Pipelineで、二つのアカウントを横断してデプロイ
- 3. Amazon Polly とは
- 4. 【AWS】RDSの可用性設定をAWS CLIで変更してみた
- 5. KotlinでSQS(ElasticMQ)を使ってみた
- 6. 【AWS】 EC2にSSHで接続できたときのおはなし
- 7. AWS Solutions Architect Associate (SAA-C03)に合格するまでの話
- 8. Amazon Lex とは
- 9. ソリューションアーキテクト対策_RDS, Aurora, DynamoDB篇
- 10. ソリューションアーキテクト対策_ELB篇
- 11. AWSのクレデンシャルをコンテナに引き継ぐ方法
- 12. 【Tips】AWS SDKのエンドポイントを別のHTTPS Serverに変更する
- 13. 【備忘録】ALBアプリケーションベースのスティッキーセッションがfavicon.icoのせいで効かなかった話
- 14. [DVA試験対策]AWS ECS
- 15. EC2のネットワークアダプタ(NIC)を誤って無効化した時の対応方法
- 16. GithubActions + LocalStack = AWS使うシステムのCI
- 17. Lambda で CloudWatch Logs のログを自動で S3 にアーカイブする、をちょこっと便利にした。
- 18. AWS Step Functions で簡易的なジョブ管理ステートマシンを作成してみる
- 19. Redshift Serverlessにタグ付けする
- 20. CloudFormationでポリシーを作成するとパラメータの末尾に:rootがついてしまう
Aurora Serverless v2のスケールアップ・スケールダウンをスケジューリングする
## Aurora Serverless v2
Aurora Serverless v2は、AWSマネージドな新しいDBインスタンスです。
Aurora Serverless v2ではインスタンスタイプではなくACU(Aurora Capacity Unit)と呼ばれる値を設定し、性能を決定します。その際、ACUの最小値と最大値を設定することができ、DBの負荷に応じてこの範囲内で自動的にスケールアップ/ダウンすることが特徴です。
詳しくは[公式リファレンス](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.how-it-works.html?#aurora-serverless-v2.how-it-works.capacity)をご確認ください。このようにAurora Serverless v2は負荷に応じてスケールする機能がありますが、スケールアップする速度はその時点でのACUによって決まります。したがって、スパイクが予測できる場合、あらかじめACUをあ
AWS SAM Pipelineで、二つのアカウントを横断してデプロイ
# はじめに
「テストのアカウントで一度デプロイしてから、本番アカウントにデプロイ」というCI/CDパイプラインの構築を、SAM Pipelineのテンプレートでやってみましたので記事にしました。# 参考
https://aws.amazon.com/jp/builders-flash/202110/new-lambda-container-development-6/?awsf.filter-name=*all
# イメージ図
1. CodeCommitにPUSH
1. それをトリガーに、パイプラインが実行
1. Test側アカウントでCodeBuildによってデプロイ等が実行
1. AWS SAMによってLambdaを生成
1. Test側アカウントのデプロイが成功すれば、Prod側アカウントにもデプロイ大まか以下のような構成と思われます(厳密には違うかもしれません)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/9e4b
Amazon Polly とは
## 勉強前イメージ
polly、slackで見たことある
あれ一緒?## 調査
### Amazon Polly とは
テキストを音声スピーチに変えてくれるAWSのサービスになります。
現在では、英語や日本語など33種類提供されていて、アメリカ英語やイギリス英語など細分化されているのが特徴です。
またこのAIもすでに事前トレーニング済みのものになります。また、読み上げのエンジンが以下の2つ用意されています。
– スタンダード
– ニューラルニューラルはニューラルTTS(NTTS)とも呼ばれ、スタンダードより高音質で音声を生成でき人間のような自然な読み上げ音声になります。
現在日本語は女性はMizukiで、男性はTakumiという音声が再生でき
男性はニューラルも存在します。費用としては従量課金制で、
最初の12ヶ月は500万字/月まで無料、それ移行は100万字あたり4.00USD/月になります。## 勉強後イメージ
slackのpolly全く関係なかったw
音声にしてくれるサービスらしい。## 参考
– [入力したテキストを音声に変換するAWS「
【AWS】RDSの可用性設定をAWS CLIで変更してみた
# ・概要
RDSの可用性設定は以下2種類があります。
シングルAZ構成
マルチAZ構成可用性設定はRDSマネジメントコンソール上で変更することができます。
https://zenn.dev/mn87/articles/668d1df1c2f9d2また、AWS CLIの「modify-db-instance」で可用性設定を変更することも可能です。
https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.htmlマネジメントコンソールから可用性設定を変更する方法が記載された記事はいくつかありますが、AWS CLIを使った可用性設定変更の記事はあまりないので、そっちのナレッジを増やすべく、実際に検証・記事にしました。
以下では、AWS CLIによる可用性設定変更方法を記載しますが、本記事では以下2パターンの方法を記載します。
・シングルAZ→マルチAZに変更
・マルチAZ→シングルAZに変更# AWS CLIによるRDS可用性設定変更方法
## ・使用するコマンド
modi
KotlinでSQS(ElasticMQ)を使ってみた
# 経緯
業務でSQSを使う必要が出てきて、調査・検証した結果意外とややこしいことがわかったので備忘録として残そうと思います。[確認用のリポジトリ](確認用のリポジトリ)
## ElasticMQ
とりあえず、ローカルで検証をおこなうためにSQSと互換のあるElastcMQを使います。
[ElasticMQ](https://github.com/softwaremill/elasticmq)
docker-composeはこんな感じ。“` yml:docker-compose.yml
version: “3”
services:
elasticmq:
container_name: elasticmq
image: softwaremill/elasticmq-native
volumes:
# 設定ファイル
– ./elasticmq/custom.conf://opt/elasticmq.conf:ro
ports:
– “9324:9324”
– “9325:9325”
“`
【AWS】 EC2にSSHで接続できたときのおはなし
![Uploading-amico.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1051129/21b3848a-f058-ffb4-3e05-151517b8195f.png)
### はじめに
今回の記事をかいたきっかけ
– 個人開発で触れたときからEC2接続がうまくいかないときが多かった。
– 案件で必要になり試行錯誤してようやく流れるようにできるようになったのでメモです。※個人情報は***などで消してあります。
※今回はアカウント作成者から送ってもらった情報をもとに接続するため、アカウントの作成やキーペアの取得を知りたい方は[公式サイト](https://aws.amazon.com/jp/ec2/getting-started/)のチュートリアルまたは検索することをおすすめします(本当は公式が良いですが所見だとわかりにくい部分もあるかと思います)。
https://aws.amazon.com/jp/ec2/getting-started/
### 今回接続するために共有した必要
AWS Solutions Architect Associate (SAA-C03)に合格するまでの話
# はじめに
![スクリーンショット 2022-09-17 19.54.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407666/fcd82bf3-acdf-cf8b-f7d3-52b2dfcf7350.png)AWS Solutions Architect Associate (SAA-C03)に2022/09/17に受験し、合格しました。
試験勉強をしていた時は、[試験が改定されること](https://aws.amazon.com/jp/certification/coming-soon/)を途中まで知らず、結構ヤバいと感じてたものの、試験改定が実施されてから半月での試験日だったので、SAA-C03の情報が不足していたため、これからC03を受ける人のために、記録して残しておきたいと思います。# 結論
**SAA-C02(旧来試験)とほぼ変わりません**。ただし、変更点にもあるようにウェイトがC02から少し変更されているので、問題演習を多めにやることを推奨されます。
対象のサービスは
Amazon Lex とは
## 勉強前イメージ
んーみたことあるようなないような・・・・
## 調査
### Amazon Lex とは
音声やテキストを使った会話形のインタフェースを構築できるサービスになります。
Amazon LexはAlexaと同じ技術を採用しています。
音声→テキストの変換に自動音声認識(ARS)を使用しており、テキストの認識には自然言語理解(NLU)という技術が使われています。### Amazon Lex のメリット
– すぐにチャットボットを構築できる
いくつか設定を行うだけで簡単にチャットボットを作成できます。
すでに学習がされている人工知能を活用しているので、ディープラーニングなど機械学習の知識は必要ないです。– AWSの他のサービスと連携できる
もちろんAWSの他のサービスと連携できます。
lambdaやcloudwatchを組み込んでデータの取得などを行うことができます。## 勉強後イメージ
LINEとかと組み合わせてLINE Bot作れるとか?
## 参考
– [ディープラーニングを利用した対話型アプリを構築できるAmazon Lexを解説]
ソリューションアーキテクト対策_RDS, Aurora, DynamoDB篇
## はじめに
試験勉強した際のメモを自分用に記事化。
内容は公式やBlack Beltの写経ですので目新しいことはありません:pray:## RDS
### RDSのセキュリティ保護について
データベースの暗号化は、データベースの作成時に行うことができる。・暗号化の対象
DBインスタンス、自動バックアップ、リードレプリカ、スナップショット・暗号化方式
AES-256、AWS KMSによる鍵管理
インスタンス作成時にのみ暗号化が可能
スナップショットのコピーの暗号化/リストアが可能ちなみにDBのリストアとはバックアップしていたスナップショットを突っ込んだり、複製したりの意味。
### RDSのリードレプリカについて
RDSは最大5個のリードレプリカを作成して、読み取り処理の負荷を分散させることができる。
それにより、RDSインスタンスのスケールアップを実施することなくコスト最適な対応が可能。・ちなみにRDSのレプリケーションとは
複製(レプリカ)を作ること。
マスターのデータベースと同じ内容のデータベースを作成するため、負荷分散やホットスタンバイとしての利用が
ソリューションアーキテクト対策_ELB篇
## はじめに
試験勉強した際のメモを自分用に記事化。
内容は公式やBlack Beltの写経ですので目新しいことはありません:pray:## ELB
### ALBの特徴
レイヤー7に対応し、HTTP/HTTPSリスナー対応
WebsocketとHTTP/2のリクエストを受付
1インスタンスに複数ポートを登録可能
ターゲットグループでのヘルスチェックが可能
★リクエスト内容を確認して分散先を振り分ける、コンテントベースルーティングが可能ちなみにWebsocketプロトコルとは、WebサーバとWebブラウザの間で双方向通信ができるようにするプロトコルのこと。
ALBが対応している。### パスルーティングについて
URLパスに基づいてリクエストを転送するルールを持つリスナーを作成できる。
これをパスルーティングという。パスルーティングを使用して、1つのALBで複数のバックエンドサービスにトラフィックをルーティングすることができる。
よってパスベースルーティングによってトラフィックの制御が可能。### ELBのクロスゾーン負荷分散
有効な全てのAZの登録済みター
AWSのクレデンシャルをコンテナに引き継ぐ方法
コンテナ起動時に `AWS_ACCESS_KEY_ID` と `AWS_SECRET_ACCESS_KEY` を環境変数に設定することで、ホストで利用しているAWSのクレデンシャル情報をコンテナに引き継ぐことができます。
“`bash
PROFILE=hogehoge
AWS_ACCESS_KEY_ID=$(aws –profile $PROFILE configure get aws_access_key_id)
AWS_SECRET_ACCESS_KEY=$(aws –profile $PROFILE configure get aws_secret_access_key)docker run \
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
<イメージ名>
“`
【Tips】AWS SDKのエンドポイントを別のHTTPS Serverに変更する
# はじめに
AWSでの試験を楽にするためにLocalStackを使用したかったが、やむを得ない事情でローカルPCで起動することができなかったのでAWS上で起動することになり、その際通信をセキュアにするためにSSL化したら面倒くさかったのでメモ。# AWS SDK(Java)編
JavaのSDKでは、以下のように変更をする“`Java
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
import com.amazonaws.client.builder.AwsClientBuilder;// (中略)
final AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.standard()
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(
【備忘録】ALBアプリケーションベースのスティッキーセッションがfavicon.icoのせいで効かなかった話
業務で遭遇した現象でエビデンスも何もないし雑だが、自分用の備忘録として残しておく。
# 事象
AWS上に乗っけているオンラインアプリケーションに不具合があるとお客様から問い合わせがあった。事象は下記。・アプリにログインしようとするとログインできずエラー画面が表示される
・エラー画面からログイン画面に戻り、再びログイン試行すると正常にログインできる
・ブラウザにはChrome、Edge(Chroniumu版)を使用。# 環境
・ALB-EC2(webサーバ)-EC2(Apサーバ)-RDS‥という構成
・EC2とRDSはマルチAZ配置
・EC2(Apサーバ)にTomcatを導入しており、Javaアプリケーションが乗っている
・ALBにはアプリケーションベースのスティッキーセッションを設定しており、Tomcatが発行するCookie「JSESSIONID」に紐付けてCookie「AWSALBAPP-0」〜「AWSALBAPP-4」を発行するようになっている# 原因
・ログを調査したところ、ログイン時にセッション切れが発生していたことが確認できた
・更にwiresharkを用いて
[DVA試験対策]AWS ECS
# AWSのコンテナサービス
コンテナのオートストレーションサービス(EKSも同様のサービス)。
実行環境はFargate,EC2があり、イメージレジストリはECR。コンテナが実行されるまでの流れ
①ユーザーがオーケストレーターに指示
②仮想マシンにインストールされているエージェントからコンテナのランタイムを呼び出す
③イメージレジストリからコンテナイメージを取り出してコンテナを実行する
↓
手作業によるミスオペや効率ダウンをなくす# ECSの要素
### タスク定義
・コンテナの仕様書。
・コンテナの定義(イメージの場所)、割り当てるIAMロールなどの情報が入っている。
・JSON形式。
・タスク定義は変更できない(イミュータブル)なので、更新したコンテナイメージ(古いイメージはバージョニングされているので別物)をタスク定義する(Familyパラメータ)。その後サービスを、古いものから新しいものに変え、見るサービスを変更する。
・コンテナ定義内でログの設定ができる。### クラスター
実行環境の境界。タスク定義に基づいて実際に実行されるもの。複数のコンテナを1つの
EC2のネットワークアダプタ(NIC)を誤って無効化した時の対応方法
# はじめに
作成した仮想マシン(Windows Server 2019)でネットワーク設定を触っていた時、誤ってネットワークアダプタを無効化してしまいました。
これにより「仮想マシンの電源ON/OFFはできるものの、仮想マシンとの間で一切の通信が出来ない」という状態に陥り、仮想マシンにログインして操作できなくなりました。
そこで、今後同様の事態に陥った時に素早く対応できるように、この時の対応手順を記事としてまとめてみました。
# 対応方法
## 1. ネットワークインターフェースの作成
* EC2の画面から[ネットワークインターフェイス]に入り、Elastic Network Interface(ENI)を作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/6db0c84b-c161-e9ae-670b-d1d240cf2f52.png)
* リソースIDだけだと区別がつかなくなるので、ENI作成時に識別できる情報を入れておきます。
* 「ネット
GithubActions + LocalStack = AWS使うシステムのCI
# この記事は?
[Github Actions](https://github.co.jp/features/actions)と[LocalStack](https://localstack.cloud/)を使って、インフラにAWSを利用しているシステムのCI環境を構築した時のメモ– **Github Actions**
– Githubにpushしたりmergeしたりしたら自動であれこれやらせたいときに使う機能
– masterのコードを取ってきてDockerコンテナ内でビルド&AWSへデプロイ等ができる
– Privateリポジトリかつフリープランなら月2,000分まで無料、Publicなら完全無料
– **LocalStack**
– Dockerコンテナ内に仮想のAWS環境を作れるツール
– 今回はGithub Actionsでこのコンテナにデプロイして統合テストを実行してみるLocalStack公式のドキュメントは↓
https://docs.localstack.cloud/ci/github-actions/
サンプルコードは↓
htt
Lambda で CloudWatch Logs のログを自動で S3 にアーカイブする、をちょこっと便利にした。
AWSで各種クラウドサービスのログを、CloudWatch Logで保管することができます。CloudWatch Logではログの保管日数を指定することができます。手動であればS3へログをエクスポートすることもできます。S3も保管したデータの保管日数を指定することができます。
となると、以下のような処理を自動で実装したいもの。
・各種ログをCloudWatch Logに保管する。
・ある程度の日数が経過したら、S3にログをアーカイブする。古いログはCloudWatch Logから自動削除。
・必要なだけS3で長期保管する。必要な保管期間を過ぎたログは、S3からも自動削除。しかし定期的に自動でS3へログをエクスポートする機能はありません。何度もググりましたが、皆さん同じ悩みをお持ちです(笑)
という事で、「CloudWatch Log」「S3」「エクスポート」「自動」といった用語でググれば、Lambdaで実装されている事例・記事が多く見つかります。本当に助かります。
# 【参考】
私がお世話になった記事です。https://qiita.com/tamura_CD/items
AWS Step Functions で簡易的なジョブ管理ステートマシンを作成してみる
AWS で簡易的なジョブ管理をしてみよう、という試みです。
# 概要
AWS 上でジョブ管理するにはどうしたら良い?という話がありましたので、自分なりに少し考えてみました。普通に考えれば、例えば以下のようになるかとおもいます。
* Cloud Watch Events、場合によっては Event Bridge を使ってジョブを起動する
* ジョブの流れは Step Functions で様々なフロー制御を組み込んで作成
* Step Functions から Lambda 関数、ECS RunTask、AWS Batch などを順次呼び出す
* ログは Cloud Watch Logs に格納
* 問題発生時には SNS から SES や Slack 連携などでアラートを発報するただですね、今回は以下のような制約をつけて考えてみました。
* 数人の小さなチームで、スケジュールがかなり厳しい中で開発する必要がある
* AWS に詳しいのは自分だけで、他のメンバーはこれから学ぶ必要があるこういった状態ですと、いまから AWS を学んでもらうのは効率が悪いです。期間も短いこと
Redshift Serverlessにタグ付けする
2022年9月現在、Redshift ServerlessにはAWS CLIを使用してのみタグを付与できる。
## 事前準備
AWS CLIを最新バージョンにする。
※`redshift-serverless`はCLIのバージョンが古いと使えない。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html## タグを付与できるリソース
* 名前空間
* ワークグループ## コマンド
タグ関連で使用可能なオペレーションは以下の3つ* TagResource(タグを付与する)
“`
aws redshift-serverless tag-resource –resource-arn 【名前空間 or ワークグループのarn】 –tags key=”Name”,value=”test”
“`* UntagResource(タグを削除する)
“`
aws redshift-serverless untag-resource –resource-arn 【名
CloudFormationでポリシーを作成するとパラメータの末尾に:rootがついてしまう
# はじめに
久しぶりにCloudFormationを使ってIaCに挑戦していたところ、作成したいリソース通りにならないという問題が発生したためまとめます
おそらく他の記事にもなかったため、つまずくと時間がかかるかと思いますので誰かの役に立てば嬉しいです
# 問題
S3のポリシーをCloudFormationで以下のように作成しました
“`yml:s3.yml
S3BucketPolicy:
Type: “AWS::S3::BucketPolicy”
Properties:
Bucket:
Ref: S3Bucket
PolicyDocument:
Statement:
– Action:
– “s3:ListBucket”
Effect: “Allow”
Resource:
Fn::Sub: “arn:aws:s3:::${BucketName}”
P