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

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

【Fargate】ローカルからMysqlClientでRDSにアクセスしたい?セッションマネージャーのリモートホストポートフォワード機能があるよ【SSM】

# 背景
開発期間中にPJメンバーから、DBに投入しているSeedデータではとあるテストを実施する際にカバー出来ない部分があって、ローカルからMysqlClientで値を変えながら実施したい旨の話がありました。

該当PJではFargate+Auroraで構成されており、また常駐的な踏み台は用意せず、必要な時だけそれ用のmiscコンテナを起動させる方針を取っています。

そんな中、丁度今年の5月下旬にタイトルにある機能がセッションマネージャーにリリースされたこともあり、テンポラリーなmiscコンテナをリモートホストポートフォワードの中継役として実施したところ、既に幾つか記事として見かけますが、便利だと言うことで周辺知識を改めて追いながら書いてます。

# 概要
## ポートフォワードのイメージ
そもそもポートフォワードとはなんぞやという話ですが、下図のように例えば自端末の特定ポート(例:13306)への通信に対して、別のホストやアドレスの特定ポート(例:3306)に自動で転送してくれる仕組みを指します。

![スクリーンショット 2022-07-30 18.19.22.png](htt

元記事を表示

AWS AmplifyでTypeScriptとExpressを使ったLambda関数のRESTful APIを作る方法

はいさい!ちゅらデータぬオースティンやいびーん!

# 概要
AWS AmplifyのCLIを通して、API GatewayとLambdaを用いたRESTful APIを作る際に、サーバーレスのExpressと、TypeScriptを使う方法を紹介します。

## 背景
まず、サーバーレスのExpressをなぜLambdaで使うのかですが、単純に筆者は、Expressに慣れており、Expressならさっさと書けるからです。筆者と同様な作者はいるかと思いますが、いかがでしょうか?

その他に、Expressで書くと、Lambdaを脱出する必要があったら、コードを再利用することもできるので、おすすめです。

実際、Expressをサーバーレスで実行するために、オープンソースのプロジェクトがあり、現役で開発が進んでいます。それほど人気な書き方・実装方法だと筆者は捉えています。

https://github.com/vendia/serverless-express

そして、なぜTypeScriptをLambdaに導入するかですが、こちらは、コードの品質を上げるためです。型がないバックエン

元記事を表示

AWSからPrivateLinkでSnowflakeに接続にする

## <検証したいこと>
AWSのVPCからPrivateLinkを経由でSnowflakeに接続します。

現場業務でAWSのVPCからSnowflakeへ接続するためのPrivateLinkを構築しました。
手順が複雑であったことから復習を兼ねて自分が持っているアカウントで構築してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1925708/39c2f775-9c76-3270-f3c8-13ea325ffa94.png)

## <前提条件>
1.Snowflakeのエディションは、Business Criticalであること。
2.AWS環境には、VPCが作成されていること。
3.AWS CLIをローカル端末にインストールしていること。

## <作業手順>
①システム関数「SELECT SYSTEM$AUTHORIZE_PRIVATELINK」でSnowflakeのPrivateLinkを有効化します。
②AWSのVPCにInterface型のVPCエンドポイントを

元記事を表示

AWSのオンプレ向けサーバーエージェント一覧

AWSのサービスの中には、エージェントをインストールすることで、オンプレのサーバーとも連携できるものがある。そういったサービスを一覧した。他にもあったかな?

# SystemsManager
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/ssm-agent.html

サーバーを一括管理するサービス。個別にSSHでログインせずに、コマンドを実行したり(Run Command)、OSアップデートをしたり(Patch Manager)できる。

他のエージェントをインストールすることもできるので、SystemsManagerは最初にインストールしておくのが良さそう。

なお、EC2の新しめAMIでは最初からインストールされているはず。

# CodeDeploy

https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install.html

デプロイ作業サービス。個別にSSHログイン

元記事を表示

【AWS】RDS for PostgreSQLをスナップショットから復元するCloudFormationテンプレート

RDSは利用料が結構かかることが多いです。そのため、使用しない期間はスナップショットだけ残して、あとで復元するという使い方をしていました。
その時に、前の設定をマネジメントコンソールから毎回入力するのは面倒なので、CloudFormationでRDSを復元する方法を学びました。
今回はその中で、RDS for PostgeSQLのスナップショットを復元するCloudFormationを紹介します。

# 結論

「コードだけ読めれば大丈夫!」って方のために最初にCloudFormationテンプレートの例を載せます。(YAML形式です。)
各項目については後ほど説明しますので、気になるところがあれば以降も読んでいただけると嬉しいです。

:::note info
「Encryption Settings」「Performance Insights Settings」の設定とオートスケーリング設定のための”MaxAllocatedStorage”は必要であれば設定してください。
:::

“`yaml:cf-rds-example.yml
AWSTemplateFormatVersio

元記事を表示

S3 MFA Deleteの設定で詰まったところ

# MFA Deleteとは
MFA Deleteは、S3バケット内のオブジェクトを誤って削除しないようにするための仕組みです。
厳密に言えば、MFA Deleteを有効にしてもオブジェクト自体の削除はできてしまうのですが、**オブジェクトのバージョンを削除しようとしたときに、MFAコードの入力を求められるようになります**。

オブジェクトが消えても、バージョンさえ残っていれば、そのオブジェクトを復元することが可能です。
>バージョニング対応のバケットからオブジェクトを削除すると、Amazon S3 はそのオブジェクトの削除マーカーを作成します。削除マーカーがオブジェクトの最新バージョンになり、実際のオブジェクトが以前のバージョンになります。削除マーカーを使用すると、Amazon S3 はオブジェクトが削除されたかのようにオブジェクトのリクエストに応答します。例えば、オブジェクトの GET リクエストを送信すると、Amazon S3 はエラーを返します。
>
>バージョニング対応のバケットから削除されたオブジェクトは、次のいずれかの方法で取得できます。
>- 以前のバージョンのオブジ

元記事を表示

AWS日記45(AWS Lambda – Layer)

# はじめに
今回はAWS Lambdaの[レイヤー](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/gettingstarted-concepts.html#gettingstarted-concepts-layer)を試します。
[Lambda レイヤーの作成と共有](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html)を参考に、Lambda関数で使用するライブラリを作成します。

# 動機
Lambda関数実行時に以下のエラーが発生し、エラー解決のため レイヤーにライブラリを設定しました。
“`bash
/var/task/bootstrap: error while loading shared libraries: libXXXXX.so.1: cannot open shared object file: No such file or directory
“`

# ライブラリのzipファイルを作成
“`bas

元記事を表示

AWS認定資格を全て取得したので、簡単に総括する。

# この記事について

AWS認定資格をコンプリート(新しいSAPの認定は除く)したので、簡単に総括します!
これからAWS認定資格受ける方、コンプリートを目指す方の参考になれば嬉しいです!

あくまで個人的な主観で書いているので、参考までに留めていただければ幸いですm(_ _)m

# 受験記録

| 試験名 | 取得日 | スコア |受験回数 | 学習所要時間(hour)|
| — | :—: | :—: | :—: | :—: |
| AWS Certified Solutions Architect – Associate [SAA] | 2020-11-30 |793 | 1 |約35|
| AWS Certified SysOps Administrator – Associate [SOA] | 2021-02-10 |886| 1 |30|
| AWS Certified Alexa Skill Builder – Specialty [AXS]| 2021-02-21 |769 |1 |14|
| AWS Certified Devel

元記事を表示

【AWS】EC2インスタンスの一覧をCSVで取得する方法

# 手順
実行するIAMユーザーのポリシーに`AWS CloudShell`の実行権限がついていることを確認
(権限さえあれば良いので、IAMロールにポリシーをアタッチしてもOK。)

今回取得するCSVの内容は、以下の通り。
`ec2-info.csv`というファイル名でダウンロードされます。

aws cliのコマンド内容を変えるだけで他の項目も取得できるので、各々の目的に合わせてご自由にカスタマイズをどうぞ。

| Name | インスタンスid | インスタンスタイプ | 起動状態 | 起動日時 |
|:-:|:-:|:-:|:-:|:-:|
| | | | | |

以下の内容をcloud shellにペースト

“`shell:cloud shell
aws ec2 describe-instances \
–query “Reservations[].Instances[].{InstanceId:InstanceId, InstanceType:InstanceType, State:State.Name, Name: Tags[

元記事を表示

AWS資格自宅受験がなかなか落とし穴が多かったので発信したいです。

# はじめに
7月中旬、初めてAWS資格(CLF:クラウドプラクティショナー)に挑戦し、危うかったものの合格することができました。
勉強法について発信されている方はたくさんいらっしゃいますが、当日のことを知れる場が少なくとっても困ったので、備忘録兼私の失敗をする人が減ることを祈願し、今回記事を書きます。

## 概要
今回、私が受けた試験や試験システムについて箇条書きですが先に紹介いたします。

* AWS資格の受験は初めて
* PearsonVUEシステム選択
* 自宅受験
* 引っ越し直後でネット回線を引く前でモバイルWi-Fiをレンタル(ネット回線に不安がある方用に後ほど説明を付け加えます)
* 身分証明書は一般自動車免許(初心者期間仕様)
* 受験は日本時刻11:15~ チェックインは10:45~

## 当日の流れ
当日の流れを時系列ごとに書いてみます。

10:00 部屋の準備
部屋はリビングで、背面に照明や窓があると試験監督者の監視の妨げになることで控える必要があったため、いつもとは違う場所に椅子や机をセッティング

10:40 チェッ

【AWS】AWS Certificate Manager (ACM)

# SSLとTLS
基本的な概念は同じ。SSLの進化系がTLS。

SSLとTLSとは?意外に知らないSSLとTLSの違い(簡単編)

# 証明書
上記はサーバーの信頼性を確認するためのサーバ証明書が利用されている。
Let’s Encryptとかがよく知られているが、もちろんAmazonさんが認証してくれるものがある。
それがACM。

# ACMが連携可能なサービス
EC2に直接証明書をインポートすることはできないことに注意。

・ELB
・CloudFront
・Elastic Beanstalk
・API Gateway
・Nitro Enclaves

AWS ECS Execに必要なTask IDをコマンドラインから取得

# はじめに

最近AWSのインフラ構築にTerraformを使いはじめて少しずつではあるが使えるようになってきた。
当面はコンテナ環境を構築したいのでFargateを使うのだけどもやはりコンテナ内へのシェルログイン機能がほしい。

## 当方の環境

Linux環境で実施しているが同様の環境が作れるならOSは問わないと思う。

* aws-cli/2.4.24 Python/3.8.8 Linux/4.15.0-189-generic
* session-manager-plugin
* GNU Make 4.1
* GNU Awk 4.1.4
* jq-1.6

aws-cliとsession-manager-pluginは絶対必要だけどもそれ以外は無くてもコマンドライン操作のコピペでなんとかなる。

# 実装

## ECS Exec

そこでECS Execの出番となり、以下のサイトなどを参考にやってみた。

https://zoo200.net/ecs-fargate-execute-command/

設定方法は上記を参考にしていただくとしてExecの実行は

“`sh

AWSのコスト #4

# AWSの料金体系
## 使った分だけ支払う従量制
将来必要だけれど、今必要ない分を借りる必要がない。

## 代表例
### Amazon EC2
インスタンス使用料+EBSの料金+通信量+その他オプション
### Amazon S3
保存容量+転送料
### Amazon RDS
ストレージ料金+DBインスタンスの料金+バックアップストレージの料金+通信量

## AWS料金のメリット・デメリット
イニシャルコストがかからない分、ランニングコストがかかる。
突発的にアクセスが集中するケースはAWSが有効に使える。
アクセス量の変化が少ない場合は、AWSを使用すると運用を任せらるため人件費の削減ができる。

Cost Anomaly DetectionでAWSのコスト異常検知を設定する

# Cost Anomaly DetectionでAWSコスト異常検知
## 背景
– AWSのコストエクスプローラーを見ると、特定の日に急にコストが跳ね上がった日があった

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2707757/76c0ceed-ee3c-c940-df8e-d9d77cd3cf66.png)

– なにこれ?やばい!ってなったけど、こういう情報は早く知りたい。

## 解決策
### Cost Anomaly Detectionを活用する
– コストエクスプローラーからコスト異常検知をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2707757/975faa1b-e027-ce86-7e53-23a3bd684530.png)
– モニタータイプとモニター名を設定する
![image.png](https://qiita-image-store

【AWS】S3のストレージクラス

データを格納するといっても使い方によって必要なスペックは全く異なる。
AWSで提供されているS3のストレージクラスを以下にまとめる。

# S3標準
通常のやつです。
イレブンナインの耐久性(Durability)を誇り、99.99%の可用性(Availability)です。

# S3標準(低頻度アクセス)
データへのアクセスは随時可能だが、データの読み出し容量に対する従量課金が発生する。
その代わり、格納コストが安価。
アクセスしたいときは迅速さが求められるが、そこまでアクセスは発生しない、といった要件の時に出番。

# S3 One Zone-IA
単一のAZのみでデータを複製しておくストレージクラス。名前の通り単一のAZでの保管となるため、当該AZで障害が発生したときはデータが失われてしまう。

# S3 Intelligent
参照頻度を明確に決めることができないデータを取り扱う場合に使う。
S3とS3標準(低頻度アクセス)の二刀流であり、30日以上参照されなかったデータに関してはS3標準(低頻度アクセス)の方に移動される。頻繁に移動が発生する場合はコスト増につながることに

GitHub Actionsでもっとセキュアにコンテナイメージをプッシュする

2021/10/27にGithub ActionsでOpenID Connect(以下OIDC)サポートが[正式にアナウンス](https://github.blog/changelog/2021-10-27-github-actions-secure-cloud-deployments-with-openid-connect/)になりました。

元々IAM Userの機密情報(アクセスキー&シークレットキー)を使ってGithub Actionsでコンテナイメージのビルド&プッシュを行っていましたが、IAM Userの機密情報を使っていることで、万が一誤って機密情報をGithubリポジトリにプッシュしてしまうこともありえ、AWSも推奨していないので、今回OICDの仕様に則り一時的な認証情報でAWSリソースへアクセス・操作できるようにしたいと思います。

## AWSでの設定
まずはGithub ActionsからOIDCでAWSにアクセスできるよう、いくらかIAMでロールなどを作成します。

AWSコンソールからポチポチして作成することもできるのですが、作成したリソースの管理のために

Nginxでhtml表示する方法

# はじめに
Apacheでhtml表記はできましたが、
Nginxでのhtml表記に少し手こずったため記録します。
※日本語の文字化けも解決

# 仕様
– Linux
– Amazon-linux2
– nginx

# Nginxのインストール
“`
# yum search nginx
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
=================================== N/S matched: nginx ====================================
pcp-pmda-nginx.x86_64 : Performance Co-Pilot (PCP) metrics for the Nginx Webserver

Name and summary matches only, use “search all” for everything.

# amazon-linux-extras list | grep ngi

EC2インスタンス内のMySQLをdumpしてS3に保存する

## 概要

– 対象
EC2にMySQLを配置しており、バックアップを定期的に実行したい人
– ざっくりとした流れ
MySQLのdumpファイルを作成し、S3に保存するシェルを作成
cronで上記のシェルを定期実行する

## mysqldumpを実行するシェルスクリプト作成

※AWS CLIを利用するためのcredentialsは登録済みと仮定します。
“`bash
#!/bin/sh

# dumpの実行結果を保存するファイルパスを指定
filename=~/test.sql
database=[DBの名前]
mysqldump -u root –quote-names –skip-lock-tables –single-transaction –flush-logs –master-data=2 $database > $filename

aws s3 cp $filename s3://[backet_name]
# s3にアップロードした後、ローカルからdumpファイル削除
rm $filename

“`

試しにこのシェルを実行しようとしたところ、

【初心者向け】Amplify×AppSync×DynamoDBさわってみた

# 概要
例のごとくやってみた系の記事です。タイトル通り各AWSサービスの作成からリクエストまでの一連の流れを説明します。
もちろん公式も[チュートリアル](https://docs.amplify.aws/start/getting-started/installation/q/integration/vue/)を出してくれています(ありがたや)が、そこそこボリューミーかつ英語記事なので、初心者にはこの記事の方が全体感を掴みやすいと思います。
※内容は主観がもりもりなので、どちらかというと雰囲気で捉えてもらえると嬉しいです。

# 背景
近年のWEB進歩はめざましく、特にサーバレス化はWEBサービスを開発するにあたって選択肢の一つとして必ず入ってきます。現に私が現在取引しているクライアントの要件も完全フルマネージドを所望しています。その選択肢としてAWSでは様々なサービスが用意されていますが、AppSyncやDynamoDBもその一つです。
その開発の一環で初めてそれぞれのサービスを使ってみて、大きな魅力と導入に対する若干のハードルを感じたので、これから望む方に多少なりとも導入が楽に

一時的な障害に強いシステム(アプリケーション)を構築する

## 以下の記事を参照して頂ければと思います

https://note.com/shift_tech/n/n236a7e03c033

**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です。**

## 補足
ソースコード全体は以下。

https://github.com/yuta-katayama-23/intro-vuecli/commit/a4f87435f7c34bae23cfa4f9ecfa450a94af371f