AWS関連のことを調べてみた2023年01月22日

AWS関連のことを調べてみた2023年01月22日
目次

APIGateway + Lambda + DynamoDB を利用したサーバレス構築ハンズオン

## はじめに
普段DynamoDBをあまり使用しないので、CFnの練習がてら構築していきたいと思います。
[前回のブログ](https://cloud5.jp/lambda-dynamodb-serverless/)では、CLIからDynamoDBに値を渡していましたが、いっそのことフロント画面から送り保存すれば、より学習が捗るかと思いまして着手してみました。

といってもフロント画面などさっぱりなので、前回に引き続き学習教本として、[AWS Lambda実践ガイド 第2版 著:大澤文孝](https://www.amazon.co.jp/AWS-Lambda%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-%E7%AC%AC2%E7%89%88-impress-gear/dp/4295013307/ref=asc_df_4295013307/?tag=jpgo-22&linkCode=df0&hvadid=553954433678&hvpos=&hvnetw=g&hvrand=2164190274868650654&hvpone=&hvp

元記事を表示

AWS認定試験を受けるにあたり、実際に行った学習方法

## 何故、認定試験を受けるのか
恐らくこの記事を読んでいる方はAWSのサービスを使用していたり、初学者の方がスキルアップとしてAWS認定試験の受験を考えているはずです。
私はAWSソリューションアーキテクトアソシエイトとデベロッパーアソシエイトを保持しており、折角なのでどう学習して何が役に立ったかをまとめたいと思います。

## 学習に使用したもの
前提としてBlack Beltやホワイトペーパーだけで勉強したわけではありません。
全体像を掴むために教材とオンライン講座を買っています。
参考として私が使用したものが以下になります。

### 参考書
– [改訂新版 徹底攻略 AWS認定 ソリューションアーキテクト アソシエイト教科書[SAA-C02]対応](https://book.impress.co.jp/books/1120101067)

### オンライン講座
– [これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版) | Udemy](https://www.udemy.com/share/101WKkCUEc

元記事を表示

DOCKER_HOSTをsshで指定しているときにdocker-pyからDockerサーバーにつながらない(一部のバージョン)

## 起こったこと。
aws-sam-cliからbuildコマンドを呼び出すとエラーが出た

## エラー内容

内容は

“` bash
$ sam build
Traceback (most recent call last):
File “/opt/homebrew/bin/sam”, line 8, in
sys.exit(cli())
^^^^^
File “/opt/homebrew/Cellar/aws-sam-cli/1.70.0/libexec/lib/python3.11/site-packages/click/core.py”, line 1130, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/homebrew/Cellar/aws-sam-cli/1.70.0/libexec/lib/python3.11/site-packages/click

元記事を表示

EC2シリアルコンソール接続を試す。

# はじめに
EC2インスタンスにシリアル接続を行える「**EC2シリアルコンソール**」について、今まで使ったことがなかったので、以下AWSのドキュメントを参照して、どういったものなのか試してみようと思います。

– [Linux インスタンス用 EC2 シリアルコンソール](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-serial-console.html)

# EC2シリアルコンソールとは
私もオンプレミスのサーバを構築する際にはシリアルポートから接続して作業を使ったりしておりましたが、主にサーバ機等を初期セットアップする際に使用する黒いコンソール画面に接続できるサービスとなります。

設定誤りや障害でネットワークサービスがダウンしてしまった場合等、リモートログインできないような状況になった場合でもシリアルコンソールから接続することでサービス復旧作業を行ったりすることができるため、何かあった場合の予防策として覚えておくと役に立つことがあるかもしれません。

# 前提条件
全てのEC2インスタンスに対

元記事を表示

# 3大クラウド(AWS,Azure,GCP)をそれぞれプロダクションで実運用した感想(その1 シェア、将来性)

# 3大クラウド(AWS,Azure,GCP)をプロダクションで実運用した感想(その1 シェア、将来性)

# はじめに
今まで私がエンジニアとして10年以上仕事をしてきた過程で、利用されているクラウドインフラ基盤を転職要件に含めていなかったことも相まって、AWS(Amazon Web Services),Azure(Microsoft Azure),GCP(Google Cloud Platform)という3大クラウドのクラウド基盤で、サービスの立ち上げから運用まで関与することができました。

各々のクラウド基盤に関して掘り下げられていることはあっても、エンジニア/SREの視点から俯瞰して述べられていることはあんまり無いので私が実務レベルで各々のサービスを使っていて感じたことを共有しておきます。

最初に結論を述べておくと、各々得意、不得意があるので、作成したいサービスの内容や規模感、エンジニア組織によって最も適しているクラウド基盤は異なってくるという印象です。

また、若手のエンジニアや学生向けにどれを勉強しておくべきかという視点でいうと、働きたい企業や今後

Terraformを使ってPrivateLink構成のDatabricksワークスペースをデプロイしてみる

機能の記事は、こちらの前振りでした。これまでは[手作業で構築](https://qiita.com/taka_yayoi/items/1ca54463469df05dd3ee)していましたが、手順の多さにムキーとなってました。

https://qiita.com/taka_yayoi/items/cfd853a9859586c26477

:::note
**注意**
– こちらの記事ではMacを使用しています。
– AWSへのデプロイです。[顧客管理VPC](https://qiita.com/taka_yayoi/items/f23bd799e1960e2eccbe)を用いた[PrivateLink構成](https://qiita.com/taka_yayoi/items/c6bdbb6452f6a0895961)のデプロイとなります。[パックエンド接続](https://qiita.com/taka_yayoi/items/1ca54463469df05dd3ee)のみです。
:::

色々サンプルが公開されています。最初はこれをベースに自分で設定ファイルを作成しようとしまし

会社のインフラ環境をAWS構成図に落とし込んだら、めちゃくちゃ勉強になった件

### インフラ初心者は、現場で使っているクラウドサービスの構成図を書くのがおすすめ
– よくハンズオンなどで、作りながらインフラを学ぶパターンが多いと思う
– 一方で、すでにできているものをインフラ構成図に落とし込む、ということをやると、いろんな学びが得られる
– ドキュメント整備のきっかけにもなるし、一石二鳥だ!

### インフラ環境を構成図に落とし込むのが、なぜ勉強になるのか?
* 既存環境を図に落とし込む作業は、現状の構成を把握し理解する能力が求められる。ハンズオンで覚えた知識の復習にもなる。
* 例えば、図を書いているうちに「ロードバランサーってなんだっけ?」「サブネットグループがprivateかpublicかどうかを決めるのってどんな設定だったっけ?」と、基礎知識を振り返るきっかけが生まれる
* 普段、AWSのコンソール画面から操作していると、決まった流れの中で操作をしているため、あまり深く考えずに「そういうものだから」と浅い理解で進めてしまう。でも構成図に書き起こしていくと、「あれ、これってなんでこんな構成になってるんだ?」と考えるきっかけになる。
*

EKS PodがOOMKilledでクラッシュする

# はじめに
AWS EKSでk8sの勉強用でクラスタを立て、マイクロサービスアプリをデプロイした時に遭遇したエラー。

### 忙しい人用
ソース:[ノードよりも大きいメモリー要求を指定する](https://kubernetes.io/ja/docs/tasks/configure-pod-container/assign-memory-resource/)
要約してもそのままな気がするが、OOM(Out Of Memory)によってPodが不健全な状態のため強制終了と再起動が繰り返される。
そのためPodのリソースリクエスト量を増やす必要があるが、**ノードのキャパシティを超えるようなリクエストをしてしまうとPodがスケジュールされない**ので要注意!

# このエラーの見つけ方
・`kubectl describe pod xxxxxx`を実行したときに`Reason:`に表示される。
・`kubectl get pod`実行時の`STATUS`列を見る。
この辺りで十分かなと思います。

# スペック
EKSをEC2でホストし、podのマニフェストは以下のようになっています。

【AWS】WebサーバーからRDS MySQLに接続(Part3)

# ~ はじめに ~
今回は、作成した[Webサーバー](https://qiita.com/ponponpoko/items/e5553ef3ace2e4cb5633)のデータをDBで管理するためRDSを作成し、
Webサーバーからアクセスできるようにします。

今回の記事は、長くなりそうなため3パートに分けて書く。
– [**Part1:RDS作成前の事前準備**](https://qiita.com/ponponpoko/items/4b57170e5617f3259300)
– [**Part2:RDS MySQLの作成**](https://qiita.com/ponponpoko/items/2187f2eef73135a18a59)
– [**Part3:WebサーバーからRDS MySQLに接続**](https://qiita.com/ponponpoko/items/af684509bc553986d1ac)

※ RDSで使用するDBエンジンは、[Amazon RDS for MySQL](https://docs.aws.am

python(boto3)でS3上のファイルをコピーし、コピー元のフォルダごと削除

# やりたいこと
S3上の対象のファイルを別の場所にコピーして、そのファイルが格納されていたフォルダごと削除したいことがありました。
具体的には、AWS Glueでファイルを新規フォルダに出力した後、そのファイルをリネームして別のフォルダに移動させたかったのです。
S3を扱うboto3のコードは色々と検索でヒットしましたが、ドンピシャのものがなかったので記事にしてみます。

# 前提
以下がコピー元、先のURIと想定します。
少しわかりにくいですが、sampleフォルダの中にあるtest.txtを1階層上に「new_file.txt」という名前にリネームして移動します。その後、sampleフォルダは削除します。

・コピー元のファイル
`s3://sample-bucket/20230121_copy_glue/sample/test.txt`

・コピー先のファイル
`s3://sample-bucket/20230121_copy_glue/new_file.txt`

# 実装
これで動きました。
`sample`フォルダにはファイルが1つしか入っていない前提なので、1つのファイ

1NCE(ワンス)IoT SIMのAPIを使ってデータ残量をAWS QuickSightで可視化してみる

この記事では、2022年10月26日から日本で事業開始した低容量IoT回線、1NCEのSIM回線のSIM管理プラットフォームで無償で使える1NCE APIを使って、各SIMカードの残量データをAWS QuickSight上で可視化する方法を紹介します。

## 1NCE(ワンス)IoT回線プラットフォームとは?
そもそも1NCE(ワンス) IoT回線というもの自体がまだまだ新しいものなので、簡単に特徴をまとめてみます。

> + 1回線当たり一括2,200円(税込)の支払いのみで、最長10年間、500MBまで利用可能(プリペイド式)
> + SIMカード1枚からオンラインで購入可能
> + 日本国内に加えて、140以上の国と地域において追加料金なしでローミングサービスを利用可能
> + SIMカードに加えて、ウェブ上の回線管理ツール(CMP)や、お客さまのシステムとのデータ連携を可能にするAPI、安全にデータを伝送するOpen VPNなどの機能を追加料金なしで利用可能
> + eSIMやIPSec-VPN(各拠点のLANを相互接続する高セキュリティーのネットワーク)などの機能を、有

【AWS】Lambdaにフロント側からデータを渡す

# 背景
AWS LambdaでAmazon Cognitoのメールアドレスや電話番号を変更時にフロント側から送られてくるデータを使用して重複チェックをしたい時があって、少しつまづいたのでどうにかできないかということがありました。

変更のタイミングでAmazon Cognito側のLambdaトリガーを使って実装していたのですが、トリガー発火した時のeventの中身には登録されているAmazon Cognitoのユーザープールのデータが取れるので、フロント側から変更したデータは得られていないことが発覚。

API Gatewayをトリガーにしたらデータも取得できるので可能ですが、今回はAmazon Cognito + AWS Lambdaでの実装が必要だということだったので、別の方法が必要でした。

# 解決方法
今回はフロント側からAmplifyのAuthを使用した方法で変更のデータが送られるので、そのときに**ClientMetadata**を送信することで対応しました。

ただ、状況によってはClientMetadataの使用が非推奨のこともあるので、実装する際は要件などに気を

NextjsをFargateで起動するまで

## 前置き
– 一回やっただけだと頭からすぐ抜けていきそうなので、作業ログっぽい形で残す
– どうせGUIは変更が入るのでコマンドとテキストメインで

## Nextjsの準備
割愛。

## イメージの作成とローカルで確認
こっからちゃんと書く。
Dockerfileの準備。
“`:Dockerfile
FROM node:14-alpine

WORKDIR /usr/src/app

ENV LANG C.UTF-8
ENV TZ Asia/Tokyo

COPY ./app/ ./

RUN yarn install && \
yarn build
EXPOSE 3000

CMD [“yarn”, “start”]
“`

実際には管理しやすいようにイメージ名をECRのリポジトリ名にした。

“`bash
// イメージの作成
$ docker build -t hoge .

// imageの確認
$ docker images

// 確認のためイメージの起動
$ docker run –rm -p 3000:3000 hoge
“`

http:/

AWS初心者向けサイト

# AWS初心者向けサイト

AWS Builders Online Series
T5-4: 目的別!アプリ開発者が AWS を使いこなすための最初の学習ロードマップ!
で紹介があった公式サイトのうち、「最初に学ぶ」にフィーチャーしたサイト3つのリンクメモ。

## AWS 初心者向け資料
まずはドキュメントや動画
https://aws.amazon.com/jp/events/aws-event-resource/beginner/

## AWSハンズオン資料
とりあえず触ってみたい場合
https://aws.amazon.com/jp/events/aws-event-resource/hands-on/

## AWS デベロッパーセンター
アーキテクチャや言語別についての情報
https://aws.amazon.com/jp/developer/

## AWS Builders Online Series
https://aws.amazon.com/jp/events/builders-online-series/

【GitHub Actions】Fargateへの自動デプロイ時にハマったことと対応まとめ

# 概要
下記記事を参考にGitHub ActionsでのCI/CDを構築した。

– test

https://zenn.dev/ryouzi/articles/cd6857c08e60e7

– deploy

https://qiita.com/hatsu/items/a70d5c49a39561836751

※ubuntuとcheckoutについてはそれぞれ最新バージョンに変更して利用した。
– ubuntu→latest
– checkout→v3

テストの方は特に問題なく設定できたが、デプロイではハマる箇所が多かったためまとめ。

# 環境
– アプリ
– ruby 3.0.2
– rails 6.1.4
– mysql 8.0.31
– インフラ
基本的にこちらの記事の通り。

https://qiita.com/hatsu/items/22e11e94a0a981d78efa

HTTPSでアクセスできるようSSL化まで行っている、
ローカル→(HTTPS)→ALB→(HTTP)→Fargate⇄RDS
の状態。

# 発生したエラーと対応

re:Invent 2022 データベース関連の新サービス、アップデートまとめ

# re:Invent 2022で発表されたデータベース関連のアップデートをまとめました
## Amazon Aurora Zero ETL integration to Redshift
https://aws.amazon.com/jp/about-aws/whats-new/2022/11/amazon-aurora-zero-etl-integration-redshift/

– Aurora で扱うペタバイト規模のトランザクションデータに対して Amazon Redshift を使用し、ほぼリアルタイムの分析や機械学習 (ML) を実現
– Aurora に書き込まれたトランザクションデータは、数秒以内に Amazon Redshift で利用可能
– 複雑なデータパイプラインを構築および維持して抽出、変換、ロード (ETL) 処理を行う必要なし
– 米国東部 (バージニア北部) リージョンで、MySQL 8.0 と互換性のある Amazon Aurora MySQL 3 の限定プレビューとして利用可能

## Amazon RDS Optimized Reads および

AWS SAAを勉強するうえで引っかかったところや要メモのまとめ

# AWS SAA 合格した感想など
去る2022年12月、AWS SAA(ソリューションアーキテクトアソシエイト)を合格しました。先立って合格していたCLF(クラウドプラクティショナー)と合わせると、6週間くらいの学習期間だったと思います。
採点されない問題が出題される(=範囲外の難しい問題が何故か出る)ため、一見出題される問題の内容はCLFでも意外と難しく感じられましたが、やはり輪をかけてSAAのほうが難しかった印象です。

実際に出題された内容云々よりは、学習範囲、とくに03に内容がアップデートされていたりするので、引っかかるところが多く、学習しながら乱雑にまとめていたメモがあるので後進のために投下しておきます。

なお、ガチのメモなので、「ここまではわかっているけどここで引っかかった」という、私の脳みそのメモリ番地にアクセスしないと書いてあることの前提条件がわからない内容も多分に含まれます。
ですので、逆にこの中途半端な内容をもとに自らの知識とのすり合わせを行ったり、不明な点を調べるなどするとさらにブラッシュアップされるのではないでしょうか。物は言いようですが。

以下、乱雑に

Auroraのカスタムエンドポイントが変更中も利用できるようになってた

# 以前まで(公式ドキュメントによると、2022/3/18前まで)

Auroraカスタムエンドポイントは変更中に一時的に接続エラーとなる場合があり
カスタムエンドポイントのメンバーを変更したりするためにシステムを停止する必要がありました。

> You can’t connect to or use a custom endpoint while the changes from an edit action are in progress\. It might take some minutes before the endpoint status returns to **Available** and you can connect again\.

勘弁してくれよAWSって思いながら、実際にカスタムエンドポイントを変更している最中に
クライアントエラーするのかテストをしたことがあり
記載の通り、数十秒繋がらなくなる場合があるという結果が出ていました。

クライアント側がリトライするように実装すればいいんですけどね。。。

# ひっそりと更新されてた

https://g

DynamoDBのテーブルのレコード数をカウントし、CloudWatchでメトリクス表示する

2023年1月現在、DynamoDBのレコード数を確認する
CloudWatchメトリクスがないためこの記事を投稿しました。

# 全体の流れ
![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1046178/99f54a83-933d-7ebb-1bd0-0c2ef9e88ca2.png)

# 構築するリソース

・DynamoDB
適当のもの
・Lambda
ランタイム: Python3.9
・EventBridge
1分ごとにLambdaをトリガーするスケジュール
・IAMロール/IAMポリシー
Lambda実行ロールとEventBridgeがLambdaを呼び出すロール


# 0. まずはじめに
手順1以降のコピー&ペーストを行いやすいように、AWSアカウントIDを変数に割り当てる

“`shell:CLI
ex

LambdaでDataSyncのタスクの実行を自動化させる

# 概要
AWS DataSyncで作成したタスクをコンソール上ではなく、イベント駆動型でAmazon S3からAmazon EFSにデータ転送を行います。

具体的には下記の流れを想定しています。

1. Amazon S3にファイルをアップロードします。

2. それがトリガーとなってAWS LambdaがAWS DataSyncを実行します。

3. AWS DataSyncでアップロードされたファイルをAmazon EFSに同期します。

4. Amazon EC2上でマウントされたEFSファイルシステム内を確認します。

![datatranfer.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429912/1af07d1c-190b-4cb3-9044-ba69cc08ea83.png)

# 注意事項
* AWSサービスに知見のある方を対象にしていますが、そうでもない方にも試して頂けると嬉しいです!
* 一つのリージョンでリソースを構築します。今回は東京リージョンで作成しま