AWS関連のことを調べてみた2021年11月17日

AWS関連のことを調べてみた2021年11月17日

Simple Storage Service(S3) の設定の注意点・レビュー観点

## はじめに

今年はS3バケットに関わる仕事に多く関わらせてもらったので、得た知見を共有します。
設定項目が多いので、分かっていてもレビュー時に見落としてしまうことがあると思います。
レビュー時のチェックリスト的に使ってもらえることを目指してます。

修正点あったら指摘していただけると嬉しいです。追記要求なども大歓迎です。

また、CORSなど、ここに書いてない設定については筆者が疎いので深く言及しません(できません)
なるべく使ってみるようにして、追記していきたいと思います。

## バケット名から用途を推測できるか

変数の命名と同じですが、名前が適当だとバケット名を見た時に何に使われているか分からないと確認の手間が発生します。

本番用のバケットには `production` を含めるなどと決めておくと、オペミスも減らせると思います。

NG例
![Screen Shot 2021-11-16 at 21.33.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187545/63c18

元記事を表示

踏み台サーバー経由のEC2へのSSH接続

# この記事の対象者
AWSでの踏み台サーバーとは何かを知り、それがどんなメリットデメリットがあるかを知りたい方
接続方法にはどんな種類があって、その接続方法をざっくりと知りたい方
ここでは、OSは、MACを扱っていきます。

#踏み台サーバーでのアクセス
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697228/8e4a55b7-ffbd-6949-42e7-d3f3d072028a.png)

ローカル環境やインターネット環境から、直接プライベートサブネット内にあるEC2サーバーにアクセスするのではなく、**パブリックサブネット内にあるEC2サーバー経由**でプライベートサブネット内EC2サーバーにアクセスすることです。

一旦、パブリックサブネット内のEC2サーバーにアクセスするのがポイントですが、このサーバーのことを**踏み台サーバー**と言います。中継サーバーのことですね。

| メリット | デメリット|
|:-|:-|
| 直接インターネットにさらされないので、セキュアなアクセ

元記事を表示

AWSで基本的なブログサービスを構築する(シングル構成)

#■はじめに
AWS無料利用枠を利用して基本的なブログサービスを構築し、その際の手順をまとめました

#■対象者
– AWSの勉強始めたてでとりあえず何か作ってみようかなという人
– 自分用の手順メモ

#■構成図
![WS000000.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1864204/60458f0f-ec03-dd12-df1b-2928e1f6225b.jpeg)
userはブラウザからIPを入力しhttp通信でEC2にアクセスする。
EC2にはmysql、wordpressをインストールし、SQL発行でRDSにアクセス、データを取得し画面表示を行う。
ssh接続はteratermでEC2に接続する際に利用する。

EC2は外部のユーザからのアクセスを受けるが、RDSにはアクセスさせない。
そのためEC2はパブリックサブネットに配置し、RDSはプライベートサブネットに配置する。

#■作業内容
大まかに以下。

1. VPCを作成する
* EC2を配置するパブリックサブネット作成
*

元記事を表示

EC2 に RDS for Redis と通信を行う Docker コンテナを起動する

## 経緯

– プライベートなサブネットに配置した RDS for Redis (TLS暗号化) と パブリックなサブネットに配置した EC2 内の Docker コンテナの間に通信が必要になった

## 対応

– AWS 公式ドキュメントの “redis-cli を使用して送信中の暗号化を有効にした Redis クラスターに接続するには” 以降の手順を参考にし、dockerfile を作成した
– 具体的には、stunnelを利用する方法を採用した

## 内容

– それぞれのファイルを作成し、Docker イメージをビルド
– API の Docker イメージにするときは、dockerfile にソースコード取り込みなどの処理を追加すればいい

– dockerfile

“`
FROM alpine:latest

RUN apk add –no-cache stunnel
COPY ./redis-stunnel.conf /etc/stunnel/redis-stunnel.conf
COPY ./docker-entrypoint.sh /usr/local/

元記事を表示

CloudWatch Logs Insightsのコマンド例

# 概要

AWS IoTで出るログを例に、Logs Insightsの基本的で便利なコマンドを紹介します。

より応用的なことは、[CloudWatch Logs Insights のクエリ構文 – Amazon CloudWatch Logs](https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)のページを見ながら作ると良いです。

# 今回仮定するデータ

検索対象のCloudWatchLogsには以下のJson形式のデータが入るとします。
Logs Insightsは`json`であれば勝手にパースしてくれ、`logLevel`や`accountId`などと入力すれば、普通に使えるようになります。
オリジナルのデータなどは`parse`コマンドでパースします。本記事では触れません。
(参考: [CloudWatch Logs Insights のクエリ構文 – Amazon CloudWatch Logs](https://docs.aws.amazon.com/

元記事を表示

【AWS】【ハンズオン】各10分くらいで、Serverless Architecture(Lambda、API Gatway)+RDSを触ってみる

だいぶご無沙汰しています。
どーも、のぶこふです。

「あれ、タイトルがAWSだけど、Blockchain関連じゃなかったんかワレ」と思った方、鋭いですね。

今年から弊社はAWSにも注力していて、ご多分に漏れず私もAWSを触る機会がが増えてきました。
最近、社内向け勉強会(現地とZoomのハイブリット開催)にて、資料を作成したので、こちらにも投稿します。

各詳細は、[Github](https://github.com/nobkovskii/aws_handson/tree/main/01_serverless-architecture)を参照していただくとして、Qiitaでは寄り道に逸れた内容とか勉強会の振り返りを書いていこうと思います。

あ、Blockchain(Cordaとか)はBlockchainで、EKS上にNode立てたりしてますので、遠からず。

“`
                      (゚∀゚)アヒャ
“`

### 全体像
構成図としては、下記の通りです。
Serverlessな構成としては、RDSを使っていることを除けば、ごくごく一般的な内容です

元記事を表示

こんなのがあったのか!? AWS SDK v3 Client mock

## はじめに

結構前の話になりますが、AWSのBlogを読み漁っていると、以下のような記事を見つけました。

https://aws.amazon.com/jp/blogs/developer/mocking-modular-aws-sdk-for-javascript-v3-in-unit-tests/

どうやらJS用のAWS-SDKのクライアント用のMockライブラリがあるらしい。。。

というわけで、さっそく試してみることにした。

## **AWS SDK v3 Client mock**

詳細は、以下GitHubのリンクを参照ください。

https://github.com/m-radzikowski/aws-sdk-client-mock

## **使い方(例)**

「S3のバケットからオブジェクトを取得する処理」を例にしてMockライブラリを試してみようと思う。

### 例(S3のバケットからオブジェクトを取得する処理)

“`ts
// src/main.ts
import { GetObjectCommand, S3Client } from ‘@a

元記事を表示

S3のオブジェクト一覧をaws-cliのワンライナーで取得する

# 概要
掲題の通りです。需要があるかはわかりませんが・・・。

# 経緯
どのオブジェクトが一番容量を食っているか (=どのオブジェクトが一番金食い虫か) をcliのみで手軽に調べるためのコマンドを書きました。
結果的には1バケットずつ見て行った方が早かった気もしますが・・・。

# 前提・動作環境
Windows10 + Git Bashで動作確認しています。

:::note warn
バケット数・オブジェクト数が多い場合のご利用は自己責任でお願いします。
また、このコマンドではオブジェクト名とサイズは判明しますが、所在までは明らかになりません。
:::

– Git Bash (Git)

“`
git version 2.34.0.windows.1
“`

– AWS CLI

“`
aws-cli/1.22.6 Python/3.8.5 Windows/10 botocore/1.23.6
“`

# コマンド

“`
aws s3 ls –profile hoge | awk ‘{print $3}’ | sed -r ‘s#(.*)#aws s3 ls s

元記事を表示

AWS APIGatewayからLambdaへリクエストヘッダー情報を受け渡す

#はじめに
APIGatewayからLambdaへリクエストヘッダー情報を受け渡す必要があり、
その際に行った実装方法とテスト方法について、備忘録として記載します。

前提
 ・本記事では、下記の赤矢印①〜②の実装方法について記載する。
![API_lambda_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1255237/6b5f27ad-2d81-d9fb-a9c0-7a637487486b.png)

#目次
[1. Lambda関数の作成](https://qiita.com/drafts/19dba5d3ef8955f3b2d1/edit#1-lambda%E9%96%A2%E6%95%B0%E3%81%AE%E4%BD%9C%E6%88%90)
[2. APIGatewayの作成](https://qiita.com/drafts/19dba5d3ef8955f3b2d1/edit#2-apigateway%E3%81%AE%E4%BD%9C%E6%88%90)
[(おまけ1)Lambd

元記事を表示

AWS 同一VPN内のLambdaからRDSへ接続を行う

#はじめに
Lambda関数からRDSデータベースへ接続を行う機会があり、
その際に実装を行った方法について、備忘録として記載します。

前提
 ・RDSデータベースの作成・設定済みとする。
 ・本記事では、下記の赤矢印①〜②の実装方法について記載する。
![lambda_rds_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1255237/a9374b91-aae1-77fd-6445-06bd8dffc75f.png)

#目次
[1. Lambda関数の作成](https://qiita.com/drafts/d8bb6608d1343770b099/edit#1-lambda%E9%96%A2%E6%95%B0%E3%81%AE%E4%BD%9C%E6%88%90)
[2. Lambda関数のソースコード実装](https://qiita.com/drafts/d8bb6608d1343770b099/edit#2-lambda%E9%96%A2%E6%95%B0%E3%81%AE%E3%8

元記事を表示

AWS Cognito(IDプール)で認証を行い、S3バケットへアップロードを行う

#はじめに
Cognito(ユーザープール)のIDトークンをもとにCognito(IDプール)にて認証を行い、
S3バケットへオブジェクトのアップロードを行う機会があり、
その際に実装を行った方法について、備忘録として記載します。

前提
 ・Cognito(ユーザープール)の作成・設定済みとする。
 ・本記事では、下記の赤矢印③〜⑤の実装方法について記載する。
![cognito_s3_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1255237/4fd4f71a-8be6-3129-a730-d041909d7468.png)

#目次
[1. S3バケットの作成](https://qiita.com/drafts/3aca986885a7554e9ba3/edit#1-s3%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90)
[2. Cognito(IDプール)の作成](https://qiita.com/drafts

元記事を表示

【AWS】CodeCommitでCloneの方法(ssh)【2通り】

1つ目のやり方でできなかったため、2通りの手順を用意しました。
①Linux及びGitBashを使用する
②SourceTreeを使用する

#Linux及びGitBasを用いたクローン(方法①)

##config 設定方法

“`:ターミナル
$ touch ~/.ssh/config //config作成
$ vi ~/.ssh/config //config書き込み(直接書き込んでもOK)
“`
configの中身

“`config:config
Host git-codecommit.*.amazonaws.com
User
IdentityFile ~/.ssh/<秘密鍵のフォルダー名>
“`

##GitBash起動時に秘密鍵を自動認証

Git Bash 起動

“`:GitBash
$ vi ~/.bashrc
“`
“`:bashrc
eval `ssh-agent`
ssh-add -k ~/.ssh/id_rsa
“`

Git Bash 再

AWS EFSのバーストクレジットとスループットの算出方法について調べてみた

ある日、CloudWatch のメトリックスを確認していたところ、あることに気づきました。

# EFSのバーストクレジットが減っている!
![burstcredit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1352206/a8c5ef50-e845-6c01-fdeb-1857b472c50f.png)

ECS の永続的データの保管領域として利用している EFS において、バーストクレジット (BurstCreditBalance) が徐々に減少していることに気づきました。

## EFSにおけるバーストクレジットとは
詳細については以下のドキュメントに記載があります。

* [Amazon EFS パフォーマンス](https://docs.aws.amazon.com/ja_jp/efs/latest/ug/performance.html)
* 原文: [Amazon EFS performance](https://docs.aws.amazon.com/efs/latest/

AWS EC2にてPHPのRedis拡張機能を有効化する。

PHPのREDIS拡張機能を追加する。

手順はシンプル
・インストール
・有効化

**※以下、インストール**
インストールにはpeclを利用する。

## peclインストール

“`
wget http://pear.php.net/go-pear.phar
php go-pear.phar
“`

インストール時にオプション指定をいくつか設定できるが、
筆者はデフォルト設定にしたためEnterを押した。

## PATHの追加
“`
export PATH=$PATH:/home/ec2-user/pear/bin
“`

## redisのインストール
“`
sudo pecl install redis
“`

**※以下、有効化**
## php.iniに以下を追加
“`
extension=redis.so
“`

## Apache再起動
“`
sudo service httpd restart
“`

# 参考
https://pear.php.net/manual/en/installation.getting.php
https://se

SageMaker Clarifyで分析できるバイアスメトリクスを理解したい

## 目標

以下、2つのドキュメントに書いてある内容を理解する。

https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-detect-data-bias.html

https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-detect-post-training-bias.html

## バイアスメトリクス

Amazon SageMaker Clarifyの元ネタ論文であるところの [Fairness Measures for Machine Learning in Finance](https://pages.awscloud.com/rs/112-TZM-766/images/Fairness.Measures.for.Machine.Learning.in.Finance.pdf) の後ろの方に各バイアスメトリクスの定義と簡単な説明をまとめたテーブルが記載されている。

![image.png](https://qiita-image-store.s3.ap-

【AWS】 Terraform & Serverless による IaC の導入

以前、ポートフォリオとしてタスク管理アプリを作成しました。そのインフラ構成には主にAWSを利用していましたが、大部分がAWSマネジメントコンソールからの手作業によって作成していました。

この方法は、初めて触れる技術を使用してインフラを構築する場合であれば、画面の指示に従いながら進めていくことができるというメリットがあります。しかし、インフラが大きくなり複雑化すると次第に管理が難しくなってきます。利用されているリソースを把握し、その変更が他へ与える影響も考慮する必要があります。

これらの問題に対応するため、インフラをコードで管理する **Infrastructure as Code** (**IaC**) を導入しました。これによって、使用されているリソースや依存環境が明確になり、またインフラの構築や削除をコマンドで容易に行えます。

IaCを実現するためのツールはいくつかありますが、ここでは**Terraform**と**Serverless Framework** (Serverless) を用いることにしました。Terraformのみで全ての構成管理を行うことも可能だと思います

困ったことと解決したことメモ_20211115

#AmazonForecast
https://dev.classmethod.jp/articles/amazon-forecast-getting-start/

https://dev.classmethod.jp/articles/amazon-forecast-improvement-by-option-dataset/

Jenkins slave nodeの追加

#事前準備
masterノード: 1台のAWS EC2インスタンスを作成しておく。
slaveノード: 1台のAWS EC2インスタンスを作成しておく。

# slaveノードの配置

“`
sudo yum update
sudo amazon-linux-extras install java-openjdk11
java
sudo useradd -d /var/lib/jenkins jenkins
sudo grep jenkins /etc/passwd
sudo su – jenkins
cd /var/lib/jenkins
mkdir .ssh
mkdir work
cp /home/ec2-user/.ssh/authorized_keys /var/lib/jenkins/.ssh/
chmod 600 /var/lib/jenkins/.ssh/authorized_keys
chmod 700 /var/lib/jenkins/.ssh
“`

# Jenkins web uiでslaveノードの追加と接続
<1>masterノードから、slaveノードに

Amazon linux上のJenkinsインストール

# 事前準備
1台のEC2インスタンスを用意しておく。
![Screen Shot 2021-11-15 at 18.35.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1289758/0034f50a-feb1-b16a-2940-ca21f641cd2a.png)

security groupを設定しておく。
![Screen Shot 2021-11-15 at 18.31.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1289758/a9a8dc4a-8cb7-b688-1a5e-634503cf98f0.png)

#1. jenkinsをインストールする

“`
sudo yum update
sudo wget -O /etc/yum.repos.d/jenkins.repo \
https://pkg.jenkins.io/redhat-stable/jenkins.repo
s

[AWS]サーバーで障害が起きた時に自動的にソーリー画面へ切り替える

サーバーで障害が起きた時に、自動的にソーリー画面へ切り替えてくれる機能の紹介です。
AWSのDNSサービスであるRoute53で、フェイルオーバーの機能を利用します。

![route53-alb-s3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140953/6b4a55ad-0959-23bf-24ae-d67d1d7b6b22.png)
画像引用元:https://xp-cloud.jp/blog/2017/08/25/1834/

簡単に設定方法を説明すると、

1. S3にドメイン名と同じ名前のバケットを作成し、静的Webサイトホスティング設定を行う
2. S3へメンテナンスページ(index.html)を配置する
3. Route53で既存のAレコードの種別をフェイルオーバーのプライマリに変更する
4. Route53で同名のAレコードを作成して、種別をフェイルオーバーのセカンダリ、行き先をS3のエンドポイントにする

詳細な設定方法は以下。

https://xp-cloud.jp/bl