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

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

EC2へのログインが出来ない場合

# 課題
AWS CloudShell に鍵ファイルを置いて、EC2へログインを試したらエラーが出てログイン出来ない
“`shell-session
[cloudshell-user@ip-x-x-x-x ~]$ ssh -i “hoge.pem” ec2-user@ec2-y-y-y-y.ap-northeast-1.compute.amazonaws.com
<省略>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0664 for ‘hoge.pem’ are too open.
It is required that your private key files are NOT accessible by others.
This privat

元記事を表示

AWSでWEB3層構造の構築④(DBサーバの構築とAPサーバとの連携)

AWSでWEB3層構造の構築にチャレンジしてみました。

前回の記事の続きです。
– [AWSでWEB3層構造の構築①(WEB3層構造の基礎)](https://qiita.com/lucifer22/items/44906506f48d99d14a3e)
– [AWSでWEB3層構造の構築②(VPC、サブネット、NW設定、インスタンス起動、SSH接続)](https://qiita.com/lucifer22/items/2e5850e1b851de5629d6)
– [AWSでWEB3層構造の構築③(WEBサーバ、APサーバの構築と連携)](https://qiita.com/lucifer22/items/10b4cbd22b921dacd001)
の続きです。

作りたい環境は以下の図の通りです。

![スクリーンショット 2023-01-24 20.25.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3084322/554722ef-ff74-d140-c755-f03cfd4401

元記事を表示

AWSでWEB3層構造の構築③(WEBサーバ、APサーバの構築と連携)

AWSでWEB3層構造の構築にチャレンジしてみました。

前回の記事の続きです。
– [AWSでWEB3層構造の構築①(WEB3層構造の基礎)](https://qiita.com/lucifer22/items/44906506f48d99d14a3e)
– [AWSでWEB3層構造の構築②(VPC、サブネット、NW設定、インスタンス起動、SSH接続)](https://qiita.com/lucifer22/items/2e5850e1b851de5629d6)

作りたい環境は以下の図の通りです。

![スクリーンショット 2023-01-24 20.25.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3084322/554722ef-ff74-d140-c755-f03cfd4401a9.png)

# 1. WEBサーバの構築

### 1-(1). Nginx のインストール
ローカルホストからWEBサーバへSSH接続し、WEBサーバを構築していきます。

まずはNginxをインス

元記事を表示

AWSでWEB3層構造の構築②(VPC、サブネット、NW設定、インスタンス起動、SSH接続)

AWSでWEB3層構造の構築にチャレンジしてみました。

前回の記事の続きです。
– [AWSでWEB3層構造の構築①(WEB3層構造の基礎)](https://qiita.com/lucifer22/items/44906506f48d99d14a3e)

作りたい環境は以下の図の通りです。

![スクリーンショット 2023-01-24 20.25.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3084322/193ebb8a-2b90-02cb-fabc-68f0ece22955.png)

# 1.AWSアカウントを作成

AWSでサーバを構築する際はAWSアカウントが必要になります。
アカウントを持っていない場合は、下記URLからアカウントを作成します。

https://aws.amazon.com/jp/register-flow/

# 2.VPC(VirtualPrivateCloud)の作成

アカウント作成後はVPCを作成します。
VPCとはクラウド上に作成することが出来る、

元記事を表示

AWSでWEB3層構造の構築①(WEB3層構造の基礎)

未経験からサーバーエンジニアに転職するために、WEB3層構造について勉強しています。WEB3層構造の仕組みについて自分なりの理解をアウトプットし、実践としてAWSでWEB3層構造を構築するまでの過程を記すこととしました。

本記事が、私と同じような初心者エンジニアの方達の手助けとなれば幸いです。

# 1. はじめに

まずは、本題であるWEB3層構造の前提となる知識を以下に示しておきます。

#### 前提知識① ミドルウェア 

ミドルウェアとは、アプリケーションとOSの中間的な処理を行うソフトウェアのことです。OSはサーバを動かす上での基本機能を備え、ミドルウェアをインストールすることで特定の処理や動作が可能になります。
ミドルウェアは単体で動かず、サーバにインストールすることで、後述するWEBサーバ・APサーバ・DBサーバを構築出来るようになります。

#### 前提知識② クライアントサーバシステム

クライアントサーバシステムとは、機能やサービスを提供する「サーバ」と、サービスをリクエストする「クライアント」とで役割を分担したシステムのことです。
クライアントとは、簡単に言

元記事を表示

【AWS DBS対策】RDS for OracleをAuroraへ移行してみた【後編:スキーマ移行からリソース削除まで】

# 本記事は、前回の記事の続きです。まだご覧になっていない方は[こちら](https://qiita.com/vallack5296/items/4232cf697129f344b4c4)からどうぞ。

# ■手順

### ・スキーマの変換
まずはOracleのスキーマをAurora MySQLのスキーマにコンバートします。

#### – 移行元の情報入力
ダウンロードしたSCTを開きます。
「File」、「New Project」の順に選択し、Project nameに「DMSDemoProject」と入力します。![スライド19.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/70b94909-c2db-ae6c-1121-02ce86b7cc93.png)
「Add source」、「Oracle」、「Next」の順に選択します。![スライド20.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2

元記事を表示

【AWS DBS対策】RDS for OracleをAuroraへ移行してみた【前編:環境構築から各DBへの接続まで】

AWS DBS合格に役立った公式のハンズオンを触った過程を記事にしました。他の方の参考になれば幸いです。AWS DBSを勉強中の方はぜひともやってみてください。**手順や操作は少々アレンジしています。**
※元のハンズオンは[こちら](https://docs.aws.amazon.com/dms/latest/sbs/chap-rdsoracle2aurora.steps.html)で、本記事では「Step 1: Launch the RDS Instances in a VPC by Using the AWS CloudFormation Template」から「Step 4: Test the Connectivity to the Aurora MySQL DB Instance」を対象としています。

# ■前提
・AWSのアカウントを所持している
・OSはWindows 11
・2022年12月28日時点での情報を参考にしている

# ■構成図
RDS OracleからRDS Auroraへマイグレーションを行います。
AWS内のリソースについてはAWS Database

元記事を表示

connpassでインフラの勉強会を開催してみる

# 内容
業務と趣味でインフラ関連の技術を色々やっております!リモートで勉強会を開催してみようと思い、connpassでユーザグループとイベントを作成してみました。誰でも参加出来ますので是非ご参加下さい。そろそろ“`2023 AWS ALL Certifications Engineers“`の申込も始まるので何かAWS認定資格関連で話したいと思います。

# LTについて
## 基礎レベルを募集
他の勉強会では少しハードルが高いな〜と思う方やLTの練習をしたい方もお気軽に申込下さい。

## 質問有無を選べます
LT後のQA有無を選択出来ます。無の場合は終了後コメントのみさせていただきます。

# 概要
## イベント概要
https://infra365.connpass.com/event/272976/

## グループ概要
https://infra365.connpass.com/

## インフラ技術基礎勉強会について
https://speakerdeck.com/toru_kubota/inhuraji-shu-ji-chu-mian-qiang-hui-kai-

元記事を表示

AWSでWordPressサイトをつくる!

# はじめに
WordPressに触れてみたい。そんな時にこちらのサイトを見つけたので参考にWordPressのウェブサイトをAWSで構築します。

https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Scalable-2022-confirmation_386.html

2020年に初めてAWSを触ったときに同様のことを試行錯誤しながらやってみたのですが、その頃と比較しながら作ってみました。

# VPCとネットワーク
VPCの作成時に「VPCなど」を選ぶことにより、SubnetやルートテーブルにNATゲートウェイまでうまいこと作成してくれるようになっていました。これは便利です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/c4c45371-eb21-819b-a92c-78995c2293fb.png)

↓あの頃試行錯誤しながら作ったネットワークコンポーネントが一気に作られていく様は壮

元記事を表示

【AWS】RDS MySQLを構築してみた(初心者用)

# ~ はじめに ~
今回は、作成した[**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](htt

【DVA資格勉強】VPCピアリング接続してみた

## 概要
AWS認定DVA資格勉強時にまとめたものです。
実務でVPCピアリング接続する機会があったので主にその内容です。

## VPCピアリング接続とは
VPCピアリング接続は、プライベート IPを使用して2つのVPC間でトラフィックをルーティングすることを可能にするネットワーク接続です。どちらのVPCのインスタンスも、同じネットワーク内に存在しているかのように、相互に通信できます。別AWSアカウント、リージョンでも接続可能です。

## 手順
### 今回作成するもの
VPC AとVPC Bをピアリング接続します。

![](https://storage.googleapis.com/zenn-user-upload/59b4f8cff028-20230112.png)

### VPCピアリングに必要なもの
別AWSアカウントにVPCピアリングするために必要な情報は以下になります。
| | |
| ————— | —————- |
| AWSアカウントID | xx

個人的に管理しやすいterraformディレクトリ設計

個人的に管理しやすいterraformのディレクトリを考えてみました。
3レイヤードアーキテクチャとかありますが、最小限の個人的に使ってるディレクトリの構造を紹介します。

### ディレクトリ構造
“`shell
.
├── entrypoint #entry point。基本ここをapplyすればok
│   └── <プロジェクトの名前> #プロジェクトの名前を記述し、必要な環境分ディレクトリを作成する
│   ├── dev
│   │   └── main.tf #環境別にterraform applyする
│   ├── prod
│   │   ├── main.tf
│   │   ├── .json #credentialはここに置く
│   └── stg
│   └── main.tf
├── modules //各モジュールを配置する
│   ├── aws
│   └── gcp
│   ├── gcr
│   ├── gcs
│   ├── gk

【SAA資格勉強】Kinesisについて

## 概要
AWS認定SAA資格勉強時にまとめたものです。
Kinesisとは、動画とデータストリームをリアルタイムで容易に収集、処理、分析するサービス。
[公式ドキュメント](https://aws.amazon.com/jp/kinesis/)

## Kinesisの特徴
### Kinesis Video Streams
分析、機械学習等のために、接続されたデバイスからAWSへ動画を簡単かつ安全にストリーミングできる。ビデオストリームデータを収集することに特化したサービス。

![](https://storage.googleapis.com/zenn-user-upload/dc807fa1f372-20230112.png)

#### ユースケース
・監視カメラ等の膨大な量の動画データをリアルタイムで取り込み、Amazon AI Servicesで分析する。

![](https://storage.googleapis.com/zenn-user-upload/1ff0ddb37b6a-20230112.png)

### Kinesis Data Streams

【CDK】cdk deploy実行時に「but the current credentials are for XXXXXXXXXXX」のエラー

# はじめに
cdk deployコマンドを実行したところ、タイトル記載のエラーが発生し、コマンド実行に失敗しました。
本記事では、今回の事象と原因、解決策を記載します。

# 環境情報
実行環境:Mac(Big Sur 11.7.2)
CDK使用言語:TypeScript
cdk-cliのバージョン:2.61.1

# 事象
cdk deployコマンド実行時に以下のエラーが出ました。
・実行コマンド
 cdk deploy –profile user1 –region ap-northeast-1

・エラー内容
Stack Deployments Failed: Error: Need to perform AWS calls for account user1, but the current credentials are for XXXXXXXXXXX

# 原因
Stackインスタンスに渡す環境情報に不備があったことが原因でした。
CDKでは、Stackインスタンスに以下の環境情報を渡します。
 account:AWSアカウントID
 region:デプロイ先リージョ

CodePipelineのチュートリアルやってみた!~S3編~

# はじめに
DOPの試験を受けた際にCodePipelineにたくさんお目にかかったので、どうせなら触ってみようとチュートリアルをやることにしました。

# やってみる
今回は「チュートリアル: シンプルなパイプラインを作成する (S3 バケット)」をやってみました。

## 事前準備
実際にパイプラインを作成するにあたり、こちらの記事を参考に作業用のIAMユーザを作成します。
記事では`AWSCodePipeline_FullAccess`を最低限与えると書かれていますが、このチュートリアルを行うにあたり以下のポリシーも割り当てた方がいいと思います。
* `IAM

S3オブジェクトを動的抽出してLambda並列処理するStep Functions Distributed Mapを実装してみた

こんにちは。ユビキタス言語1年生の人です。

先日、S3バケットの特定prefixを持つ(同じフォルダ配下にある)オブジェクトをそれぞれLambdaで処理したい・・・と有識者の人に相談したら、テンション高めで「Step Functions Distributed Mapが適しています!」とおススメされたので早速使ってみました。

使ってから知ったのですが、AWSのグローバルイベントre:Invent 2022で発表されたばかりのアップデート機能でした。それまで、Step Functionsを使ったことも触ったこともなかったのですが、ものすごく便利だったのでご紹介します。

## Step Functionsの初心者が知ったこと

Step FunctionsはWorkflow StudioというGUIの視覚的にドラッグ&ドロップで作れるワークフローのモードと、jsonで定義されたAmazon States Language (ASL) というコードでワークフローを作るモードがあります。最初にフロー全体の骨組みを作るときはWorkflow Studioが作りやすいですが、ちょこっと更

Datadogで無駄にAWS CloudWatchのコストが掛かってるかも?

レバレジーズ株式会社 SREチームリーダーの竹下です。

弊社では、監視周りにDatadogを使用しているのですが、最近なぜかAWS CloudWatchの使用料金が月$100ほど増えていたので調査したところDatadogが原因だったので、調査方法と対処方法を記載しておきたいと思います。

# 現象、調査方法

弊社ではある日から突然、下のスクリーンショットのように、全く使っていないregionのCloudWatchの料金が発生し、月当たり$100ほど使用料が増加していました。

![スクリーンショット 2023-01-18 17.30.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708474/0fd6867e-609a-c2d8-901a-77f4b3030843.png)
※CloudWatchのリージョン別の使用料金です。横軸は日付です。

上図の取得方法はAWS Consoleの[Cost Explorer](https://us-east-1.console.aws.amazon

指定した複数リージョンのセキュリティグループの一覧をワンライナーで作る

# はじめに

セキュリティグループルールの一覧は管理コンソールからのCSV出力が可能ですが、複数リージョンの出力を一度に行いたかったのでAWS CLIで一覧を作成することにしました。
作成した一覧はタブ区切りになっているのでスプレッドシートなどにコピーしてご活用ください。

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-security-groups.html

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-security-group-rules.html

## コマンド

– 取得したいリージョンが複数あればスペース区切りでリージョン名を追加してください

“`bash
echo -e “OwnerId\
\tRegionName\
\tVpcId\
\tGroupId\
\tGroupName\
\tDescription\
\tSecurityGr

技術Memo 2023/01/22

早速停滞していますが、今年からは気になった情報について毎週Memoを残していこうと思いたって作成し始めた記事です。

# Cloud
## AWS
### Database

* **[Introducing Amazon Neptune Serverless](https://aws.amazon.com/jp/blogs/aws/introducing-amazon-neptune-serverless-a-fully-managed-graph-database-that-adjusts-capacity-for-your-workloads/)**
サーバレスのグラフDB爆誕! グラフDB、以前に調査して結局使っていないのできちんと調べたいですね。

* **[Amazon ElastiCache が Redis 7 のサポートを追加](https://aws.amazon.com/jp/about-aws/whats-new/2022/11/amazon-elasticache-redis-7/)**
Redis Functionsがサポートされ、LUAスクリプト

Python で Amazon S3 の MultiPartUpload を扱う

Amazon S3 に巨大ファイルを置きたいときに MultiPartUpload を使いたくなることが多々あるが、Python + boto3 からそのまま扱おうとするとややこしいので自分が使いやすいようなクラスを実装した。

## 実装
“` python
class AmazonS3MultipartUploader:
“””Amazon S3 に巨大なオブジェクトに少しずつ書き込んでいくためのクラス”””

def __init__(self, s3, *, part_size_threshold: int = 5 * 1024 * 1024, **kwargs):
self.s3 = s3
self.mpu = self.s3.create_multipart_upload(**kwargs)
self.kwargs = {
“Bucket”: self.mpu[“Bucket”],
“Key”: self.mpu[“Key”],
“Upl