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

AWS関連のことを調べてみた2020年03月22日
目次

参考にならないAWSソリューションアーキテクト・アソシエイト合格までの道のり

# はじめに
思い立って12日、約10時間でAWSソリューションアーキテクト・アソシエイトを取得した日記
バックグラウンドが同じ人はいないので、参考にならないな。。。多分。

### スペック
– 学生時代
– 趣味のプログラミング 10年
– 社会人(下の2つは同時稼働)
– 銀行・証券関連プログラマ 5年
– ゲームプログラマ 5年
– サーバーサイドプログラマ 1年
– インフラエンジニア(サーバー/ネットワーク) 15年
– DBA 10年
などなど
– AWS
– 趣味でAlexaスキルを作るためにLambdaとかCloud9とかは
2年くらい前から使っていた
– Alexaスキル公開しているので毎月AWSの無料枠+$100使える
→[Alexa AWSプロモーションクレジットのご紹介](https://developer.amazon.com/ja-JP/alexa/alexa-skills-kit/alexa-aws-credits)
– なので、ちょこちょこと実験しているけど課金されたこと

元記事を表示

AWS Global AcceleratorでLoadbalancerのPublicIPを固定する

### 非機能要件概要
– 外部システムとデータ連携している時、外部システム側がDNS名ではなく、IPを指定した接続のみという非機能要件もあったりします。PublicIPを持つEC2 Instanceでリバースプロキシを作成したり、Network Loadbalancerを使用すればIPを指定した接続という要件は満たせます。しかしながらSSLアクセラレーション機能がなかったり、バックエンドサーバのInboundを0.0.0.0/0にしておく必要があったり、EC2に依存する設定が複数あります。
また、Direct ConnectとVPC endpointを使用して外部システムと同じ閉域網で構築したりもします。
ただし、使用するコンポーネントも多く、外部システムとの作業調整やデータ提供の可用性を高めるためのコストが高くなりがちです。
また、Application LoadbalancerとClassic LoadbalancerにはPublicIPが2つ付きますが、このIPは動的でAWSの任意のタイミングやトラフィック需要によって変動します。そのため、IP変更されたことを検知するためにポー

元記事を表示

新たな言語 “Dark” を実際に触ってみて

# はじめに
先日、私が以前に申請していたDarkのプライベートベータ版に漸く招待されたので、実際に触ってみた感想を述べようと思う。

# 1. Darkとは
Darkとは、Ellen Chisa、そしてCircleCIの創業者であるPaul Biggarによって設立された会社で開発されている**「偶発的な複雑さ」**を無くし、バックエンドWebサービスを構築するための総合的な**プログラミング言語**であり、**エディタ**であり、**インフラストラクチャ**である。呼称するならば、総合的なソフトウェア開発プラットフォームだろう。Web上にエディタが展開され、そこで全ての開発を行える為、開発ツールやパブリッククラウドと言った多くのテクノロジーを直接触る必要は無い。

また、最大の特徴としては**デプロイレス**だろう。デプロイレスとは、入力したものが即座にデプロイされ、本番環境ですぐに使用できる事である。Darkはインタープリタをクラウドで実行する。関数またはHTTP/イベントハンドラで新しいコードを作成すると、抽象構文ツリーの差分(エディターとサーバーが内部で使用するコードの表現)

元記事を表示

AWS RDSにHeidiSQLでSSHトンネル接続を行う

HeidiSQL(ハイジSQL)で AWS RDS に接続するメモです。

# 概要

VPCのサブネットで、RDSをPrivateに置いている場合、踏み台EC2を作成して、SSHトンネル接続を行います。RDSはPrivate で、Webはpublicです。DBに直接にアクセスできないようにしています。

|社内|⇔|パブリック|⇔|プライベート|
|:–|:–|:–|:–|:–|
|PC|22 SSH
3307 仮|踏み台EC2|3306 MySQL

元記事を表示

AWS Identity and Access Management (IAM)

# 概要
* AWSでIAM管理に最低限必要な知識をざっくりと解説
* 対象読者はIAM入門者向けとなっています

# ルートユーザー
* ルートユーザーはemailとパスワードでログインでき、全てのAWSサービスとリソースにアクセスできる
* 日々のタスクをルートユーザですることは推奨されない
* ルートユーザを作成した後は、[個人用のIAMアドミンユーザとグループを作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)することが推奨される
* AWSアカウントのルートユーザーのアクセスキーは作成、更新、無効化、削除できる
* パスワードを変更することもできる
* ルートユーザーの認証情報を持っていれば、誰でも請求情報を含むアカウントの全てのリソースに無制限にアクセスできる
* アクセスキーを作成するときは、アクセスキーIDとシークレットアクセスキーをセットで作成する
* シークレットアクセスキーの表示およびダウンロードは一回のみ
* IAMユーザもルー

元記事を表示

CloudFormationテンプレートを1からしっかり理解しながらECS on Fargateなアプリを自動構築する

# 前提条件
「CFn?IaC?何それ美味しいの?」な超初心者向け。

とは言え、AWSの機能を使おうって言うんだから、当然[AWS BlackBeltオンラインセミナーのCloudFormation編](https://www.youtube.com/watch?v=HU47ZAM3mtw)くらいは見ていると読みやすいと思う。

あと、CFnは知らなくても同じことをマネジメントコンソールでポチポチできるくらいの理解度は前提。

文中後半で動かしているアプリは、8080ポートで待ち受けるHTTPサーバ。
SpringBootなWebアプリと考えてもらえれば。

# 環境を整える
1から理解しながら書くので、力技でいく。
基本の流れは、「リファレンス見ながら書く→構文チェック→動かしてみる→修正する→…」の繰り返し。

というわけで、以下の記事を参考に構文チェッカをインストールしておく。

【Qiita】[cfn-python-lint](https://qiita.com/komeda-shinji/items/f0d106481313340438bf)

pipのインストールは以下の

元記事を表示

AWSでDjangoサーバーを立ててみる

Python3、djangoのインストール
以下の場合、/usr/local/bin/にインストールされるのでパスを通しておく。

“`
インストール
yum install python3
python3 -m pip install Django
python3 -m django –version

プロジェクト作成
/usr/local/bin/
django-admin startproject mysite
“`
[Djangoのチュートリアル](https://docs.djangoproject.com/ja/3.0/intro/tutorial01/)通りに進めると「python manage.py runserver」でSQLiteを使用していてもバージョンエラーが発生するのでバージョンを上げる。

SQLiteのバージョンアップ
[https://www.sqlite.org/download.html](https://www.sqlite.org/download.html)

“`
パッケージの取得
yum install wget tar gzip

元記事を表示

Elasticsearchで類似ベクトル探索 / 類似画像検索 [TensorFlowでDeep Learning 20]

([目次はこちら](http://qiita.com/kumonkumon/items/6fd05963df92e9eec8c0))

#はじめに
3年ほど前に、[Deep FeaturesとFaiss](http://qiita.com/kumonkumon/items/d6a221c40024b6603b0d)というタイトルで画像検索に関して書いたが、2020年3月AWSから、[Build k-Nearest Neighbor (k-NN) similarity search engine with Amazon Elasticsearch Service](https://aws.amazon.com/about-aws/whats-new/2020/03/build-k-nearest-neighbor-similarity-search-engine-with-amazon-elasticsearch-service/)が発表されたことを教えてもらい飛びついた。しかもただただサポートされているだけじゃなくて、HNSWで実装されているとのこと。

>Built using th

元記事を表示

オブジェクトロック設定をしているS3バケットをConfigのスナップショット配信先にはできない

# 結論
まずは結論から。
タイトル通りなのですが、
**オブジェクトロック設定をしているS3をConfigのスナップショット配信先にはできません(2020/03/21時点)**。
以下、詳細について書いていきます。

# AWSサービス概要
登場するAWSサービスの概要を説明します。
##[AWS Config](https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/WhatIsConfig.html)
AWSリソースの構成情報の記録を行います。
リソースカットで特定時間にどういった設定になっていたか、どういった変更が行われたかが分かります。
そのため、構成管理・変更管理の目的でConfigを利用することがあります。
[設定スナップショットの配信](https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/deliver-snapshot-cli.html)機能を用いることで、特定時間のリソース情報をS3に保存することができます。

また、[Co

元記事を表示

Amazon ECS の Volumes と Bind Mount の仕組み

#1.Volumes#

`/var/lib/docker/volumes/` ↔️ `/var/www/html`

![スクリーンショット 2020-03-21 13.46.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/76cee64c-2753-0ee0-5e89-1bb644d0e2f9.png)

管理者権限でログイン

“`
sudo su
“`

`/var/lib/docker/volumes/` に移動。

“`
cd /var/lib/docker/volumes/

ll
drwxr-xr-x 3 root root 4096 Mar 21 04:47 80a6b074bf3171ef09d22cfdc17c950986315ec71498fe2c10fe364573a3dcff
“`

`80a〜`に移動`

“`
cd 80a6b074bf3171ef09d22cfdc17c950986315ec71498fe2c10fe364573a3dcff

元記事を表示

Serverless Frameworkのアプリにカスタムドメインを付与する

[前回作成したLaravelのサーバレスアプリ](https://qiita.com/umihico/items/64fcf159f68ebd866170)にカスタムドメインでアクセスできるようにします。
ACMで証明書を取得します。Route53経由の方はDNS経由で簡単に取得できます。サブドメインはワイルドカードで申請するのみです。
**Lambda関数がEdgeの場合は、`us-east-1`(バージニア北部)のACMである必要があります。東京のACMは関係ありません。**

スクリーンショット 2020-03-21 10.54.52.png

発行済になったら`serverless-domain-manager`のインストールします。[a4e6e25d](https://github.com/umihi

元記事を表示

Lambda@Edgeを完全に理解する?‍♀️

# 何者だお前は
2017年7月17日に正式リリースされたサービス。
[Lambda@Edge の一般提供を開始](https://aws.amazon.com/jp/about-aws/whats-new/2017/07/lambda-at-edge-now-generally-available/)

>AWS Lambda にコードをアップロードし、Amazon CloudFront イベント (ビューワーリクエスト、ビューワーレスポンス、オリジンリクエスト、オリジンリクエストなど) によってトリガーされるように設定するだけです。関連するリクエストが CloudFront によって受信されると、ビューワーに近い最適な AWS のロケーションに実行のためルーティングされます。次に、Lambda@Edge はコードを実行し、CloudFront のグローバルなネットワーク間のリクエストのボリュームに応じてスケールします。Lambda@Edge により、コードを実行して各個別のリクエストに基づいてウェブページをカスタマイズし、グローバルに実行されるカスタム認証ロジックを作成して、安全な

元記事を表示

iOSデバイスでプログラミング環境構築

### 今時机やPCの前だけで作業できる環境はナンセンスでしょ?!
スキマ時間の有効活用や職場にラップトップ、タブレットを持ち込めないとき、旅行などのための環境構築です。
PCが壊れても別の端末ですぐ作業開始できる環境が大事。
布団の中でゴロゴロしながらもプログラミングできますし
旅先で重たいラップトップなんか持ちたくない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208182/cb657862-d46e-9737-849e-9e3822b709e1.png)

### 用意するアイテム
– iOSデバイス
– モバイルキーボード(なくても可)
– [Working Copy(GitHub用)](https://apps.apple.com/jp/app/working-copy-git-client/id896694807?l=en)
– [Textastic](https://apps.apple.com/jp/app/textastic-code-editor-9/id1049

元記事を表示

Laravelのサーバレス用ライブラリbrefを使い、lambdaでhello world

プロジェクトを作ってから少し手を加えるだけで、Laravelのサーバレス化ができました。
AWS上のデプロイはServerless Frameworkが全てやってくれます。

[本家のドキュメントはこちら](https://bref.sh/docs/frameworks/laravel.html)
[Githubはこちら](https://github.com/umihico/laravel-demo)

“`bash
composer create-project –prefer-dist laravel/laravel laravel-demo #プロジェクト作成
cd laravel-demo
composer require bref/bref #肝のbrefインストール
“`

以下の編集を加えます。[b508b15](https://github.com/umihico/laravel-demo/commit/b508b15edf5d1f0a0a7b51e2360e4f390da3dac1)

“`diff:.env
– SESSION_DRIVER=file
+

元記事を表示

【#awscli】管理者権限を持たないWindows環境に「AWSコマンドラインインターフェイス(AWS CLI v2)」をインストールする #AWS #awscliv2 #jawsug #環境構築 #環境設定

AWS CLI v2では「Pythonがなくてもインストールできるようになった!」というのがウリなのですが、 相変わらずWindows MSI インストーラ形式で提供されているので管理者権限を持たないWindows端末にインストールすることができません。

というわけで管理者権限を持たないWindows端末に「AWSコマンドラインインターフェイス(AWS CLI v2)」をインストールした際の内容を自分用のメモとしてまとめました。

#### 環境情報
|OS/ソフトウェア |バージョン |入手元 |
|:—|:—|:—|
|Windows 10 pro |バージョン1903(May 2019) |Microsoft Corporation |
|Python3 |3.8.2 |https://www.python.org/downloads/windows/ |
|pip |20.0.2 | |
|botocore |2.0.0dev6 |https://github.com/boto/botocore/archive/v2.tar.gz |
|aws-cli |2.0.

元記事を表示

時々忘れるので「MFA前提でAWS CLI を使う方法」をメモ

# 概要
MFAを有効にしている前提でAWS CLIを使うときの方法を忘れて、ハマる事象の回避のためのメモとリンク

# 要するに
1. aws sts get-session-tokenでキーを取得
2. exportでキーを設定
3. aws xxを打てる状態に

# 手順
AWS公式ページを見て実行するのみ。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/authenticate-mfa-cli/

元記事を表示

【#awscli】あらかじめ指定した接続元IPアドレス以外からの「AWS CLI v2」実行時はMFA(ワンタイムパスワードでの認証)が必要になるようIAMを設定する #AWS #awscliv2 #jawsug #環境構築 #環境設定

特定の接続元IPアドレス以外からの「AWSコマンドラインインターフェイス(AWS CLI v2)」実行時のみMFA(Multi-Factor Authentication)が必要になるようにIAMの設定をしたので、その際の手順を自分用のメモとしてまとめました。

# MFA(Multi-Factor Authentication:多要素認証)とは

**参考: Wikipedia – 多要素認証**
https://ja.wikipedia.org/wiki/多要素認証

簡単に説明すると次の4つの要素のうち2要素以上を使用して認証を行うことです
1.知る要素
2.持つ要素
3.備える要素
4.場所の要素

認証を多段階で実施しても(多段階認証をしても)、同じ要素での認証ではセキュアではないとされています(例: ”印鑑”と”通帳”など)

ちなみに、
天空の城ラピュタにおける崩壊の呪文は、

* **”バルス”** という呪文を【←知る要素】
* **飛行石の結晶** を持った状態で【←持つ要素】
* **王族の人間** が【←備える要素】
* **ラピュタ内の聖域と呼ばれる場所**

元記事を表示

CloudFront×S3で403 Access Deniedが出るときに確認すべきこと

# 前提
– S3をオリジンとしたCloudFrontディストリビューションを作成している
– HTMLや画像ファイルをCloudFront経由で配信したい
– 独自ドメインのCNAMEを登録している

CloudFrontのドメイン、またはCNAMEで登録している独自ドメインにアクセスすると以下のような画面が表示される

 2020-03-20 22.20.01.png

これをアクセスできるようにすることがゴールです。

# 確認すべきこと

## バケット内のオブジェクトが公開されているかどうか
まずCloudFront抜きのS3単体で考えます。

特に制限をかけておらず、バケットのパブリックアクセスが可能になっている状態であれば、
`パブリック` という黄色のラベルが表示されているはずです。

元記事を表示

AWS で無料のサーバーを 30 分で立てる

しばらく前に AWS の知識をゲットしたはずだったんだが、記憶力が悪いせいですっかり忘れた。

インターネット上に自分用の Linux サーバーが欲しかったので、AWS を使おうとしたのだが、ほとんど何も覚えてない。ゼロから始めてサーバーを立てるまで、を復習がてら記事にする。

AWS はユーザー登録から 1 年間の無料枠があるとはいえ、ユーザー登録にクレジットカード番号が必要。これは済んでいることとする。

# まずはじめに
トップサイトからログインすると、画面遷移して「AWS マネジメントコンソール」に連れていかれる。ここが異世界の入口だ。タダでもらえる初期装備はなかなか豪華で、小さいサーバーならタダで使わせてもらえる。マネジメントコンソールのメニューを探して「Billing」と「VPC」と「EC2」とを確認する。この 3 つが主な活動場所だ。

# Billing

課金の状況を知るところ。

まず最初はここを知らないと安心して使えない。ここには「今月はいくらかかったか」の金額が表示されている。無料枠の中で使っていれば $0 と表示されているはず。

# VPC ダッシュボード

元記事を表示

AppSyncでLambdaを呼び出す

# AppSyncでLambdaを呼び出す

## はじめに
先日「[API Gatewayでリクエストして、Lambdaで処理させて、AppSyncで受け取る](https://qiita.com/w2or3w/items/227465969ecbbef21787#lambda%E3%81%AE%E4%BD%9C%E6%88%90)」という記事を書きました。この記事のあとがきにも書いたのですが、フロントエンドからLambdaを実行させるために何の迷いもなくAPI Gatewayを利用していたのですが、どうやらAppSyncでも出来そうだぞということで。

データソースにDynamoDBを指定しているAppSyncへ、LambdaをデータソースとするIFを追加します。

## スキーマへIFの追加
AppSyncのスキーマに、モザイク処理を実行するためのIFを追加します。
AWSコンソール > AppSync > 目的のAPI > スキーマ
MutationへprocessApplyMosaicという関数、そして入出力用のデータ型を定義します。
入出力用のデータ型はAPI Gatewa

元記事を表示

OTHERカテゴリの最新記事