AWS関連のことを調べてみた2020年10月25日

AWS関連のことを調べてみた2020年10月25日

TerraformでECS環境(on EC2)を立ち上げる方法

# 動機
Terraformを学んだばかりで、EC2でECS環境を立ち上げたいと思って調べてみるものの、出てくる情報はFargateばかりでした。
そこで、EC2でECS環境を立ち上げるにはどうしたらいいかまとめました。

# 環境
– Terraform 0.13.4
– AWS provider 3.12.0

# 前提
タスク定義やALBなどは作成済みとしています。
今回は、ECSのサービスとクラスターを作成するところをみていきます。
また、AWS公式の[チュートリアル](https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/tutorial-cluster-auto-scaling-console.html)を参照して、必要なリソースを確認しながら作成しましたので、そちらも参照するといいと思います。

# キャパシティープロバイダーの作成
いきなりですが、ここが一番難しかったです。クラスター作成時はいつもインスタンスの設定をしていたので、Terraformで立ち上げる際は苦労しました。

通常は以下の

元記事を表示

AWS Lambda を C# で書いてみる


– [はじめに](#はじめに)
– [開発・実行環境準備](#開発実行環境準備)
– [VisualStudio プラグイン](#VisualStudio-プラグイン)
– [プロジェクト作成](#プロジェクト作成)
– [開発とデプロイ](#開発とデプロイ)
– [コード記述](#コード記述)
– [デプロイ設定](#デプロイ設定)
– [認証情報の準備](#認証情報の準備)
– [デプロイ](#デプロイ)
– [テスト](#テスト)
– [Visual Studio でテスト](#Visual-Studio-でテスト)
– [AWS Console でテスト](#AWS-Console-でテスト)


# はじめに

このドキュメントは AWS Lambda を C# で記述するための手順です。
コードエディットやパブリッシュには Visual Studio を使用します。

# 開発・実

元記事を表示

MinIOを使ったAWS S3利用アプリのテストバケット・オブジェクトの準備

## 目的

AWS S3を利用したアプリのローカルのデバッグのモックやユニットテストなどで、

– バケットはすでにインフラ側の設定として準備されている
– バケット内のオブジェクト/データは別処理が作成している

の様な構成の場合、MinIOのDockerコンテナーを使うのが良さそう。クライアント側からバケットを作り必要なデータをputするというのもあるかと思うが、コンテンテナー立上たら必要がデータが入っていてるのが便利かなぁと。

こちらのQiita記事 [docker-composeでMinio起動時にデフォルトのbucketを作成する](https://qiita.com/terukizm/items/6850aa316de425e3e3b4) を参考にバケットの用意はできたが、テスト用のデータも仕込んでみた。

## ディレクトリ構成

“`
.
├── docker-compose.yml
├── entrypoint.sh
└── test_data
├── README.md # テストデータの説明などを書いておく
├── f

元記事を表示

[AWS SAM] Swaggerを使用したAPI定義

1. [[AWS SAM] 概要、Hello World](https://qiita.com/takmot/items/27f7145f953fc62bdf6b)
2. [[AWS SAM] Lambda関数からS3アクセス](https://qiita.com/takmot/items/6c8cefe94f80a214aeb0)
3. [AWS SAM] Swaggerを使用したAPI定義 (※本記事)

# Swaggerについて

RESTful APIを構築するためのオープンソースのフレームワーク
記述形式はJSONまたはYAML
バージョン2と3があり記述方法が異なるため注意
Swaggerで定義したAPIをSAMテンプレートから参照して使用する

# 【SAM】API定義とSwaggerファイル連携

## 必須項目のみでのAPI定義

以下のようにAPI Gatewayを表すTypeと、デプロイするステージ名が必須項目

“`yaml
Resources:
RestApi:
Type: AWS::Serverless::Api # API Gatewa

元記事を表示

AWSコンソールにログインしてインスタンスをポチポチするのはもう嫌なのでターミナルに極振りしたいと思います

AWSを複数アカウント扱っていると、コンソールに入って〜インスタンスを起動・停止して〜別のアカウントに切り替えるてコンソールに入って〜インスタンス起動・停止して〜また別のアカウントに切り替えてコンソールに入って〜インスタンス起動・停止して〜・・・・・・

うわああああんっ!!んもぅっいい加減にしてっ!!!!

と言うくらいにもううんざりしてきたので、基本的な操作は全部ターミナルから行うことを固く決意しました。
ということで、`EC2/RDS` のインスタンス操作を行うための `AWS CLI` を使ったワンライナーをザザザッと並べていきたいと思います。

## EC2
EC2 の操作から見ていきましょう。

### 確認

#### 単体確認
まずは、基本の確認から。起動/停止するにも情報が必要になりますからね。

“`bash:EC2単体確認
% aws ec2 describe-instances –profile [profile-name] –instance-ids
“`

#### 複数確認
複数インスタンスを確認したい場合は、`–in

元記事を表示

[AWS認定SAP]アプリケーション移行戦略(6R)

#6Rとは
2011年に調査会社であるGartner社が定義したクラウド移行の5つのアプローチに基づいて定義された以下の6つの移行戦略。

1. Rehost (“lift and shift”):ホスト変更
2. Replatform (“lift, tinker and shift”):プラットフォーム変更
3. Repurchase (“drop and shop”):再購入
4. Refactor / Re-architect:再設計
5. Retire:リタイア
6. Retain:保持

##1. Rehost (“lift and shift”)
現在の環境をそのままクラウド移行し、随時最適化する。

##2. Replatform (“lift, tinker and shift”)
コアの部分を変えず部分的に最適化した上で移行する。

##3. Repurchase (“drop and shop”)
現在のシステムやアプリケーションの使用を廃止し、新しいシステムやアプリケーションに移行す。

##4. Refactor / Re-architect
現在のシステムや

元記事を表示

【Windows】通常の通信はVPNを経由したくないけどAWS向けはVPNを経由したい

#はじめに

リモートワークでVPNを使っているんですけれども、Windowsで普通にVPNを設定するとすべての通信がVPNを経由してしまいます。
そこで、VPN先のネットワークへの通信だけVPNを経由し、普通にググったりツイッターで~~脱線~~情報収集したりするのは直接インターネットに出ていきたい。
しかしながら、特定のIPだけはVPNを経由したい。
そんな環境があって、特定の数個のIPアドレスだけ手動で登録して使ってました。

しかし、AWSのEC2スポットインスタンスをポコポコ立ち上げてアクセスする必要が出てきました。セキュリティ上、拠点以外からのアクセスは遮断しています。
スポットインスタンスを立ち上げるたびにいちいちパブリックIPを調べて手動でルーティング設定するのは面倒です。
そこで、AWS向けは全部VPN経由にする方法を考えました。
たまたまAWSが使われているサービスへの通信(例の52.68.96.58とか)もVPN経由になってしまいますが、まあ、許容範囲内でしょう。

#前提条件

・AWS Tools for Windows PowerShell がインストールされ

元記事を表示

Railsのbundle installで見かけないエラーが…それに対する解決法

# はじめに
最近、講義やゼミでの研究も相まってAWS Cloud9でrailsを使う機会が増えている。
そんな中で初めて見たエラーだった。ネットで検索してもいまいち解決法が分かりにくかったので、ここにメモがてら残そうと思う
# 本題
では、どんなエラーが出たのか。以下の様なエラーだ。

“`
$ budle install
There was an error while trying to write to
`/tmp/bundler-compact-index-xxxxxxxxx(date)-xxxxxx-xxxxxxx/versions`. There was insufficient space
remaining on the device.
“`

ほほう…何だろう。最後の一文を見るとデバイスの容量が足りないという事みたいです。
という事は・・・デバイスのボリューム自体を増やす。もしくは使いそうにないファイルの中身を消去して、空きを作るなどが考えられます。では、前者を解決策1、後者を解決策2としたいと思います。

#### 解決策1
これは、AWS Cloud9のボリ

元記事を表示

AWSとネットワーク(基礎)

# はじめに
AWSはAmazon Web Servisesの略で、Amazonが提供しているクラウドサーバーのサービスです。
AWSへの理解度を高めるために、学んだことをアウトプットします。
今回はネットワークとの関係を記載します。

# AWSを使う目的
AWSを使う目的は、簡単に言うとネットワークやサーバーを構築する手間を省くためです。
ネットワークやサーバーを構築するには、インターネット回線や複数のサーバー、接続するためのハブやルーターなどのネットワーク機器の用意が必要です。
AWSを使うことで仮想的なネットワークやサーバーを構築することが可能です。

# リージョンとアベイラビリティーゾーン

* リージョン
AWSでは世界に数十箇所のデータセンター群があり、それぞれの地域に存在するデータセンター群のことをリージョンと言います。

* アベイラビリティゾーン
アベイラビリティゾーンとはリージョンをさらに分割したものです。
アベイラビリティゾーンはそれぞれ独立した設備を用いているため、一つのアベイラビリティゾーンが災害などの被害を受けて使用できなくなっていても、別のアベイラ

元記事を表示

Chalice で Excel 向けの CP932 CSV ファイルを作成して返す

# はじめに

Webアプリケーションの管理系の仕組みを作っていると「システムのデータをExcelで開けるCSVファイルにまとめてダウンロードできるようにして欲しい」というパターンに経験上結構遭遇する。
Python3系で何も考えずにCSVを作ると UTF-8 の文字エンコーディングになるので、Excel のデフォルトの設定だと文字化けしてしまう。 もちろん、Excelでちゃんと読み込みエンコーディングを指定すれば問題なく開けるのだが、「そんなの分からんから最初から文字化けないようにして」と言われることも多い。その場合、Windows用のエンコーディング (CP932, あるいは Shift_JIS, SJIS) でCSVファイルを作成する必要がある。

今回は Chalice を使ってやっていたのだが、ドキュメントをよく見た結果ドはまりしたのでメモ。

## version など

“`bash
$ pipenv run chalice –version
chalice 1.21.2, python 3.8.2, linux 5.4.0-52-generic
“`

##

元記事を表示

Lambda Layer と CloudFormation / sam-cli で楽ちん X-Ray

# はじめに

こちらの [Lambda Layer と X\-Ray \- Qiita](https://qiita.com/Ricordanza/items/d68d708e274e28b6bfa2) という記事で、X-Ray を Lambda Layer で組み込む方法が紹介されています。複数の lambda をデプロイする場合に、個別に X-Ray を組み込まなくても一発で付け外しができるので、けっこういい感じです。

けっこういい感じなんですが、すこしコマンドを叩くのが手間なので、CloudFormation 化できないかな、と思っていたところ [AWS SAM CLI で Lambda Layers が ビルドできるようになったよ \- Qiita](https://qiita.com/hayao_k/items/f8c7ad5e35e29d590957) という記事を見つけました。

というわけで、2つの記事の内容をガッチャンコしたら、こんなかんじで

  **X-Ray の LambdaLayer を CloudFormation で作れて楽チン!**

という記事です

元記事を表示

AWSの構成図からワンクリックでリソースを作成できるサービスを作ってみた

# この記事について
AWSを学習しているときに構成図を見て、「この構成図にタグとかスペックを設定できて、ここから直接リソースを構築できたらいいのに!!」と思ったことがあるのは私だけでしょうか?
今回は、そんなサービスを作ったのでその紹介になります。

URL: https://guinfra.app
フィードバック: https://forms.gle/iqHVrFQRjkNKWefA8

(グラフ作成機能があったりキーの入力等の操作が必要だったりするので、PCからのアクセスを推奨しています!スマホからの方すみません?‍♂️)

# 自己紹介
Amplify with AppSyncのベタープラクティス

Amplify with AppSyncの開発に携わっていく中で見つけたプラクティスをまとめました。
皆さんの開発の助けになれば幸いです。

## 前提
– Amplify上に展開しているアプリケーションはReact x TypeScriptで構成されていることを前提にしています。
– Amplify cliで運用するにあたってのプラクティス紹介が中心なので、AmplifyやAppSyncそのものの説明などはしていません。
– これらのプラクティスがどんなケースでも有効というわけではないので、プロジェクトに合わせて使えそうなものを採用してみてください。
– ここに載っているもの以外でみなさんが実践されている/ご存知の知見があれば、是非シェア頂けると助かります!

## 環境を分ける
Amplifyには開発環境を分離できる機能が備わっています。
以下の図のように、開発環境や本番環境毎に切り替えることが出来るので、開発基盤を作る際にまずは環境を分けるのが良いと思います。

![](https://storage.googleapis.com/zenn-user-upload/yu9yjvg

元記事を表示

AWS VPC作成の記録

# はじめに
AWSのVPCを構成する要素とその作成方法。特にPublicサブネットの登録方法。そして、簡単にいくつかの設定値について記述します。

# VPCを作成するぞ!
## 今回扱わないもの
私は、開発・検証環境を作ることが多いので毎日の料金負担が発生しそうなものは省略しています。
* Natゲートウェイ 設定するだけで料金がかかるようだ。
* Elastic IP 使用していると料金はかからないようだが、使わずにIPアドレスを占有していると料金がかかるようだ。

## VPC を俯瞰

VPCの構成要素になります。ほかに「セキュリティグループ」もあります。

![VPC構成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93066/0016a90b-ba3c-744b-ae03-e016372d47f3.png)

VPC
VPC本体
ネットワークACL
サブネットのファイアウォールのようなもの。セキ

EMRをVisual Studio Codeから起動するスクリプト (コロナ禍対応)

Visual Studio CodeからEMRを使う方法として今はJupyterHubへの接続をしています。

毎回、EMR設定、立ち上げを行うのは面倒なので、スクリプトを書きました。

## Security Groupの設定

昨今、毎回、IPが変わるようなシチュエーションも想定されるため、クライアントアドレスを自動的に送信して所望のアクセスを得ます。

“`bash
sg_name=sg-hoge

# delete existing security group
sg=$(aws ec2 describe-security-groups –filters Name=vpc-id,Values=vpc-******* Name=group-name,Values=$sg_name –query ‘SecurityGroups[*].[GroupId]’ –profile prof)
aws ec2 delete-security-group –group-id $sg –profile prof

# create security group
echo creati

LINE Messaging API + AWS + GASでサーバーレスな体温管理

LINEベースで連絡をとっているサークルで、体温を毎日はかり各自Googleスプレッドシートに書き込んで管理していたのですが、回答率が悪く、またLINEでリマインドをすると他の連絡事項などのメッセージが流れていく、、ということが起こっていました。
そこで、LINEの公式アカウントを作り、そこで毎日体温のリマインドをし、そこに返信したらスプシに自動で書き込まれる、というシステムを今まで触れたことがなかったLINE Messaging APIやGASの勉強も兼ねて作ってみました。

#このソリューションのメリット

サークルに限らず会社や他のコミュニティでもそうだと思うのですが、COVID-19の感染が広がる中、メンバーの体温管理が必要な状況となっています。
体温を毎日測ってもらって、フォームで聞くかスプレッドシートに書き込んでもらうという手段が考えられるのですが、少しでもステップが多いと毎日行ってもらうのが厳しくなります。具体的に言うと、URLを送りそれに答えてもらうという形をとると回答率が一気に下がります。そして毎日リマインドをするのも大変で係の心理的負担にもなる上に大事な連絡事項が流

AWS Elemental Link 使ってみた!

発売日の朝に iPhone12 が届いた streampack 木村です。

早速、仕事しながらデータ移行などをやってますが、実はもうひとつ届いてたものがあります。

それがコレ
#Elemental Link です

![Image from iOS (17).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172426/02805dac-d4dc-47d7-8fbd-837f48261f66.jpeg)

要は電源入れたら勝手に AWS にストリームを送ってくれるハードウェアエンコーダーボックスです。

AWS Elemental Link
https://aws.amazon.com/jp/medialive/features/link/

リリースからちょっと時間経っちゃってますが、遅ればせながらオーダーしてみました。

# 注文

Elemental Link は AWS アカウントと紐付いている為、自身の AWS アカウントにログインした状態で、前述の Elemental Link のペー

Amazon Linuxでrbenvをインストール

## 依存ライブラリーをインストール
“`
sudo yum -y install gcc
sudo yum -y install make
sudo yum -y install openssl
sudo yum -y install openssl-devel
sudo yum -y install gcc-c++
sudo yum install -y mysql-devel
sudo yum install -y readline-devel
sudo yum install -y libxml2-devel
sudo yum install -y libxslt-devel
sudo yum install -y bzip2
“`

## gitをインストール
“`
$ sudo yum -y install git
“`

## rbenvをインストール
“`
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo ‘export PATH=”$HOME/.rbenv/bin:$

TimestreamにAWS CLIでクエリ

### 事前状態

* awscliを最新にする
* Timestreamでサンプルデータベース作っておく

### ヘルプ
“`bash:
$ aws timestream-query help
“`

“`bash:
TIMESTREAM-QUERY() TIMESTREAM-QUERY()

NAME
timestream-query –

DESCRIPTION
AVAILABLE COMMANDS
o cancel-query

o describe-endpoints

o help

o query
“`

### ドキュメントはこちら

https://docs.aws.amazon.com/cli/latest/reference/timestream-query/query.html

### CLIでクエリ

“`bash:
$ aws timestream-query query –query-s

AWS Lambda Powertoolsを触ってみた



# はじめに
サーバレスの[イベント](https://serverless.connpass.com/event/190055/)で[紹介](https://speakerdeck.com/_kensh/aws-lambda-powertools)された[AWS Lambda Powertools](https://awslabs.github.io/aws-lambda-powertools-python/)が便利そうだったので触ってみました。
(こちらの[セッション](https://pages.awscloud.com/EMEA-field-OE-AWS-Developer-Ac