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

AWS関連のことを調べてみた2022年07月11日
目次

Direct Connect GatewayでVPC間が疎通してしまうことがある

# 概要

AWSの同一Direct Connect Gateway(以下DXGW)に接続したVPC間で通信が可能になっていました。以下、結論です。

– ドキュメントを読むと「単一の Direct Connect ゲートウェイにアタッチされた仮想インターフェイス間の直接的な通信」はサポートされていない、となっている
– 仮想プライベートゲートウェイの関連付け — https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/virtualgateways.html
– 実は、「スーパーネットが、同じ Direct Connect ゲートウェイおよび同じ仮想インターフェイス上に関連付けられている接続された仮想プライベートゲートウェイ(VGW)を持つ 2 つ以上の VPC にわたってアドバタイズされる場合です。この場合、VPC は Direct Connect エンドポイントを介して互いに通信できます。」という仕様により通信できてしまうようだ
– Direct Connect ゲートウェイ — htt

元記事を表示

Cognitoの USER_SRP_AUTHフロー や パスワード付きカスタム認証フローで必要な「SRP_A」を計算する (js, ts限定)

## SRP_A ってなに?
Cognitoに用意されている認証フローのうち、下記で必要になるパラメータだよ。
* USER_SRP_AUTHフロー
* パスワード検証付きカスタム認証フロー

https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html

上記フローでは、広く標準化された鍵交換プロトコルである **Secure Remote Password プロトコル (SRP)** を使っていて、 SRP_A はそれに関連する **「大きな整数」で生成された値** だよ。

## Cognito使ったことあるけどSRP_Aなんて聞いたことない。これっていつ使うの?
Cognitoが用意してくれるログインエンドポイント+トークンエンドポイントを使う構成や、Amplify UI にお任せする場合には、あまり登場しない部分かもしれないね。

でも、自分で Cognito の各種 API をコールしていく実装なら、必要にな

元記事を表示

Rustのlambda_http辛すぎなのでaxumしてみた

# 目的
AWS LamsbdaでAPIっぽいことをするには[lamba_http](https://crates.io/crates/lambda_http)を使うことになるんですが、HTTPの低レイヤーを相手にすることが多くて辛いです。
何かいいものが無いかと調べていたら、数日前に[axum-aws-lambda](https://crates.io/crates/axum-aws-lambda)というものが出来ていたのでこれを使ってみました(この記事を書いた日からだと27日前でした)。

# コード
## lambda_httpだけでやってみる。
“`rust:Cargo.toml
[package]
name = “web”
version = “0.1.0”
edition = “2021”

[dependencies]
lambda_http = “0.5.2”
serde_json = “1”
tokio = { version = “1”, features = [“full”] }

“`

“`rust:main.rs
use lambda_http::{

元記事を表示

Swagger、結局どう使うの? を整理してみた

## 概要

Swaggerとは、REST APIの設計を楽にするよう作られたツールです。

とはいえ、作成したAPIサーバに対し、どのように使用するのか・メリットは何か、がいまいち整理できていなかったので、今更ながら実際に使用してみることで整理をしてみました。

API開発者目線の使用感を記載するため、Swagger部分だけでなく、ソースコード開発からAPI公開までの工程について構築手順を記載していきます。

## 想定読者

* Swaggerの使い方の一例を知りたい方

## 目次
* 全体構成図
* 構築方法
* APIサーバ
* Swagger
* GitHub
* API Gatewayへインポート
* 所感
* まとめ

## 全体構成図

今回は以下を使用して構成しました。
* APIサーバは、spring bootで開発しビルドしたjarファイルをECS上でコンテナとして構築した。
* API Gatewayを用いてAPIを公開した。
* APIドキュメントの公開はGitHub Pagesを用いた。(GitHubと連携しAPIドキュメントの公開を可能に

元記事を表示

AWS Hands-on for Beginners 〜Serverless 編〜  #2

## はじめに
勉強していることをなんとなくメモっていきます。

行うこと
https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-hands-on/
サーバーレスアーキテクチャで翻訳 Web API を構築する
自分宛のメモを残していきます。

本人情報
IT現場雑用員(一生エクセル触ってる人)
社会人2年目、脳死資格取得男、最近SAPに受かった。

AWS Hands-on for Beginners 〜Serverless 編〜  #1  の続きです。

## DynamoDBについて
### DynamoDBの特徴
**1. フルマネージド型のNoSQLデータベースサービス**
マネージドサービスなのでソフトウェアのインストールなどは必要にならず、起動さえできればすぐにデータベースとして使い始められます。キーバリュー型のデータベースであり、セッション情報の管理などにも使われます。

**2. 3つのAZに保存されるので信頼性が高い**
RDSは自分でマルチAZを有効する必要がありますが、Dynamo

元記事を表示

AWSにてチーム開発をする際のTerraformの設定

# はじめに
AWSにてチーム開発をする際の設定です。
CloudFormationでは意識しないような設定がTerraformでは必要です。
チーム開発のために下記のリソースを別途構築する必要があります。

– S3をBackendとし、terraform.tfstateを管理する。
– DynamoDBにてlockをし、開発者の “`terraform apply“` の実行の排他制御をする。

Terraformのバージョンは “`v1.1.6“`とする。

# 実行環境の準備
[AWS CloudFormationを動かすためのAWS CLIの設定](https://qiita.com/miyabiz/items/fed11796f0ea2b7608f4)を参考にしてください。

※ CloudFormationと同じです。

# S3とDynamoDBを構築する
1. [terraform-aws-tfstate-backend](https://github.com/cloudposse/terraform-aws-tfstate-backend)を利用する。

元記事を表示

AWS Client VPNとAzure P2S 機能比較 02~AWS Client VPN クライアントPC設定編~

# AWS Client VPNとAzure P2Sを比較してみた
[前回の記事](https://qiita.com/drafts/5dc7de8f3cde645959b2)からの続きです。
AWS Client VPNでオンプレミスのPCをAWSのVPCに接続し、その際にインターネットに出るIPアドレスをAWSの固定IPアドレスにする、という構成です。
ネットワークの用語でいうと**フルトンネル**(フルトンネリング)という構成です。
NAT GatewayにElastic IPアドレスを設定し、AWS Client VPNでインターネットに出る際、IPアドレスをElastic IPアドレスに固定する(固定IPアドレスにする)というシナリオです。
今回はAWS Client VPNのクライアントPC側の設定です。
Azure P2Sは証明書インストールとP2Sのエージェントインストールのみなので大した作業ではないのですが、AWS Client VPNは運用観点も絡めるとまぁまぁ面倒な設定があるので比較のためにも記事にしました。

## AWS Client VPNの構成図と本記事の

元記事を表示

【ECS】LaravelからElasticCacheに接続しようとしたら「Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?」というエラーが出た【AWS】

## 前提情報
– PHP7.4
– Laravel 6.x
– ECS/Fargate

## エラーの原因と詳細
ローカル環境にあるredisコンテナには接続できたので、次にAWS上でElascitCacheの動作確認をするため、ECS/Fargate環境へデプロイしたら`Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?`というエラーが発生してElasticCacheへ接続できない状況でした。

Redisクライアント(phpredis)から外部(ElasticCache)へ接続するときに、PHPのOpenSSLモジュールが有効になっていないのが原因っぽい。(Redisに限らず、外部へHTTPS接続する際にはOpenSSLモジュールを有効にしないといけないようです)

というか、そもそも[LaravelのドキュメントにOpenSSLは必須だよ](https://laravel.com/docs/9.x/deployment#server-r

元記事を表示

Fargate で構築した Laravel と WordPress の コンテナを 読み取り専用(ReadOnly)にする

# はじめに

Fargate で Laravel や WordPress を構築後、セキュリティを高める方法として、`読み取り専用(readonlyRootFilesystem)` を有効にする方法があります。
この設定を行なうと、コンテナ内のファイルやディレクトリが読み取り専用となり、マルウェア等に対してセキュリティーが高めることができます。

ただし、全てを読み取りにはできず、一時的に書き込みが必要なディレクトリがサーバー内にありますので、一部のディレクトリを読み書き可能なボリュームとしてマウントし、残りは読み込み専用にすることが必要です。

今回は、Fargate で構築した Laravel と WordPress を読み取り専用にする方法について方法を記載します。

ちなみに、`読み取り専用(readonlyRootFilesystem)` を有効にすると、Fargate Execが使用できないデメリットがあります。

# 事前構築

– 下記の記事でwordpressをfargateで構築
– ソースはDockerfileのみ

https://qiita.com/hir

元記事を表示

AWS EKSの運用は実家の猫に任せてお前は先に行け

どうも、僕です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242714/a4972451-89ba-0d7f-b01e-30cb68fd4fed.png)

# CatOps
DevOps が Developers を運用に引きずり込む為のマインドセットだとすれば CapOps は猫を運用に引きずり込む為のマタタビセットと言えるでしょう。今回は実家でおやつを食べてばかりのあいつにも手伝ってもらいます。彼のおもちゃの半分ぐらいは私がAWSをこねくり回して得た給与によって供給されているのでこれは当然の義務とも言えます。

# Amazon Web Services Cat-Like Interface (AWS CLI)
作業用のIAMロールを作ります。仕事じゃないのでアクセス許可は雑です。

– AmazonEC2ContainerRegistryFullAccess
– AmazonEC2FullAccess
– AWSCloudFormationFullAccess
– [Ek

元記事を表示

3大クラウドのIoTサービスに接続してみた

AWS / Azure / GCP のIoTサービスへの接続比較です。
個人ブログには設定方法を画面キャプチャをつけて詳細に説明してますので興味がありましたらご参照ください。

# AWS IoT Core

* クライアントIDは任意の文字列
* 証明書発行機能がある
* 純粋なMQTTブローカーに一番近い印象

| 項目 | 値 |
| — | — |
| プロトコル | mqtts |
| ホスト名 | AWS IoTの設定画面で表示されるエンドポイント |
| ポート番号 | 8883 |
| クライアントID | 任意の文字 |
| ユーザー名 | 未指定 |
| パスワード | 未指定 |
| CAファイル | [Amazon Root CA 1](https://www.amazontrust.com/repository/AmazonRootCA1.pem)を保存したファイル |
| クライアント証明書 | デバイス証明書 |
| プライベートキー | プライベートキー |

* Publish
任意のトピック名に対してPublishが可能です。(一部A

元記事を表示

[AWS] Step FunctionsのoutputPath、resultPath、resultSelectorを使いこなす

# はじめに

AWS Step Functions の各タスクへの入力は、inputPathでJSON pathを指定することで、雑多な入力から必要な項目だけを拾うことができます。

出力側にはoutputPath、resultPath、resultSelectorというものがありますが、どうにも動作がわからなかったので調べてみようと思い立ちました。

と、勢い込んでみたものの、AWS Console に[Data flow simulator](https://console.aws.amazon.com/states/home?#/simulator) というよいものがありました。この記事読むより、シミュレーターで試してみたほうがよいです。

でも、めげずに書いてみます。

# 動作を確認した環境

## Lambda

入力と出力を確かめたいだけなので、値を返すだけのLambdaを作りました。これをStep Functionsの中で呼び出してみます。

“`ts:
export const sampleLambdaHandler = async (event: unknown

元記事を表示

NATGatewayを自動作成・削除

とりあえずできたので書き出し
そのうち図を書き足します

# 概要

平日の業務時間中だけサーバを使いたい。さらにNATゲートウェイも使わないので止めたい。
という~~貧乏な人~~コスト意識の高い方向けテンプレート

## このテンプレートは

NATGWとSSM DocumentとEventBridgeを作るもの
NATGW: テンプレートの起動パラメータによって、作成・削除ができる
SSM Document: このテンプレートで作成したCFn Stackの更新(NATの作成削除を実行)できる
EventBridge: スケジュールでSSM Documentを実行する

#### 起動パラメータ
+ NATGW 作成フラグ
+ メール通知送信先アドレス
+ NATGWを配置するパブリックサブネット
+ NATGWを経路にするプライベートサブネットのルートテーブル

#### 作成するリソース

| リソース | 内容 |
|—————|——————

元記事を表示

AWS Cognito ユーザープールにLINEサインイン連携を設定する

## この記事の目的

– Cognito ユーザープールにLineサインイン連携を設定
– これによりLineアカウント認証を使って独自サービスのログイン制御を実現できます

## ?これより先は下記記事の内容を前提とします

– [AWS Cognito ユーザープールからの認証トークン取得](https://qiita.com/jun_knd/items/fd70e370153e8cbd8d75)

## Cognitoドメインの取得

– 後で必要になるので、Cognitoの設定画面からCognitoドメインを取得します。
![image](https://user-images.githubusercontent.com/38905609/178088612-7249f843-25c2-4877-9f5e-02e73a5bc1ac.png)

## LINEログインチャンネルの作成

– [LINE Developers コンソール](https://developers.line.biz/console/)にサインインします。

– プロバイダーを作成します。
![im

元記事を表示

【Sphinx / GitHubActions / CloudFront / S3】PythonコードをSphinxでドキュメント化してみる

# はじめに
少し前に、チームで頻繁に使うコードを共通ライブラリとしてまとめ、それをドキュメント化する業務に取り組んだ。
調べたところ、Sphinxというライブラリでドキュメントが作成できることを知った。
GitHubActions等を使用し「ソースコードを更新したら、ドキュメントも自動で更新する」ようなパイプラインを作れば、効率的に運用できると考え、実行してみたのでその時の記録を残したいと思う。

# 使用技術
* Poetry
* Sphinx
* AWS CloudFront
* AWS S3
* GitHub Actions

## 省略すること
* テストコードの記述と自動テスト
* tagでのバージョン管理
* 認証

# 方法
## 1. Poetryの導入
poetryを導入する際のコマンドは大きく二つある。
1. `$ poery new`:ディレクトリやREADMEファイルなど、プロジェクトを作成する上で必要なことを基本的に全てやってくれる
2. `$ poetry init`:パッケージ一覧を管理する`pyproject.toml`を生成する

ディレクトリの構

元記事を表示

もう迷わない!Figを使ってCLI&シェルライフを快適にしよう!!

# Figとは
FigはターミナルやシェルにてオートコンプリートでCLIやシェルコマンド実行の補助をしてくれる便利ツールです!

![画面収録-2022-07-10-13.50.18.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/4b5147a1-3ad2-a63d-b272-970120a1e572.gif)

サポートしているCLIが多く、AWSCLIも対応していたため試してみました。
![スクリーンショット 2022-07-10 14.31.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/b92f6fce-73fb-659d-e004-ed34224e594d.png)

# インストール
下記公式サイトに移動してDownloadボタンを押下します。
※現時点で対応OSはMacのみのようです。

https://fig.io/

![スクリーンショット_2022-07-10_13_1

元記事を表示

IAM Roles AnyWhere で オンプレサーバ → KinesisFirehose → S3にデータ転送

オンプレサーバからAWSクレデンシャルを使わずにKinesisFirehose → S3にデータを転送したメモです。

– オンプレサーバ : CentOS7
– リージョン:us-east-1

## 1. [S3バケットを作成](https://s3.console.aws.amazon.com/s3/bucket/create)

バケット名を入力してリージョンを選択したら他はデフォルトのままバケットを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1246630/50b422b1-3355-fced-90c4-3176e5f093b8.png)

## 2. [Kinesis Firehoseを作成](https://us-east-1.console.aws.amazon.com/firehose/home?region=us-east-1#/create)

– SourceはDirect-PUTを選択
– DestinationはAmazon S3を選択

元記事を表示

【AWS】EC2

# EC2とは?
仮想サーバを提供するコンピューティングサービス。オンプレミス環境でサーバーを用意しようとすると、OSのインストール、ラックの増設、ネットワークや電源の管理(面倒な配線の敷設)といった様々な作業が必要となってしまう。
加えて新サービスを構築する際は、必要となるコンピューティングリソースの「見立て」に基づいて、上記の作業を実施する必要がある。万一リソースが足りない際は、サービスとして致命的だし、リソースが大きすぎた場合は採算が取れなくなる。
そこでAmazon Elastic Compute Cloud (EC2)の出番。
「インスタンス」と呼ばれる単位でサーバが管理される。
EC2を起動するときは、元となるイメージを選んでインスタンスを作成する。Amazon Machine Image (AMI)と呼ばれる。

AMIにはAmazon Linux AMIやRed Hat Enterprise linux, Microsoft Windows Serer といったAWSが標準で提供しているものや、各ベンダーがサービスをプリインストールしたAMIがある。

https://

元記事を表示

【Terraform】コード作成〜クラウド環境に適用するまでの流れ

## はじめに
Terraformでのコード作成〜クラウド環境(AWS環境)に適用するまでの流れについて書きたいと思います。

:::note warn
Terraformのコード作成方法や環境構築等の準備については今回は省略します。
あくまでもクラウド環境にTerraformのコードを適用するまでの流れにフォーカスした内容になっています。
:::

## クラウド環境にコードを適用する迄のフロー
Terraformのコードを準備するところからコードの内容を反映する迄の一連の流れをフローにしました。

![flow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/f6739318-f37b-5a33-3edd-2df69f536711.png)

## 作業手順

### コード準備
Terraformのコードを用意します。

※今回使用するコードは以下になります。
[ec2_create_code](https://github.com/masato930/ec2_create_code

元記事を表示

【AWS】EBSとは

# Amazon EBSとは
AWSが提供するマネージド・ストレージサービスの1つ。
Amazon EBS(Elastic Block Store)の略称。

# S3との違い

この記事がめちゃくちゃ分かりやすい。

https://tech-dive.xyz/2018/10/30/post-147/

EBSはPCでいうHDDに当たる存在。直接EC2とアタッチされている関係性。
一方S3はネットワークを介した接続となる。なので、アップロードの速さに関してはEBSに軍配が上がる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665477/7e2206ff-b470-f029-4bd7-7956d6840053.png)

画像引用:[同じストレージなのに何が違うの?EBSとS3の違い](https://tech-dive.xyz/2018/10/30/post-147/)

ちなみにアタッチとマウントの違いは。。。。

[アタッチ](https://e-words.jp/w/%

元記事を表示

OTHERカテゴリの最新記事