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

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

Laravelアプリで画像をS3に保存するように変更したらハマった話

#Laravelアプリで画像をS3に保存するように変更したらハマった話

##環境
Heroku
AWS(S3で画像を保存)
PHP 7.3
Laravel 8.8.0
MySQL 5.6.47
HTML
CSS
Blade

##背景
元々、Laravel8で作ったアプリのデプロイは、全ての機能をHerokuでデプロイしていました。しかし、投稿画像が一定時間を超えると画像がリンク切れを起こします。これはHerokuの仕様です。
この問題を解決すべく、画像の保存場所をAWSのS3に変更しました。環境変数の設定などを行い(これは、「Heroku Laravel S3」などでググれば出てきます)、いざ画像を投稿しようとしたら以下のようなエラーが出ました。

####①これで画像を投稿しようとすると……
![V-Lifeイベント作成ページ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644353/7ab48e33-a6f9-2fe4-3b01-52cc65d26953.png)
####②こうなる
!

元記事を表示

AWS AppSync + GraphQL + AWS Amplify + Angular

AngularからGraphQLでAWS AppSyncと通信を行う基本方法を記述します

今回はサンプルなのでAWS AppSyncのデータソースはDynamoDBのテーブルを直接参照する形とします。

【前提条件】
 Angular側には既にAmplifyがインストールされていることとする

(1)AWS AppSyncでインターフェースを作成
 (a)AWS AppSyncの「データソース」を選択し、データソース画面を表示する
 (b)「データソースを作成」ボタンをクリックし、新しいデータソース画面を表示する
 (c)以下の通り入力し、「作成」ボタンをクリックする
   データソース名・・・適当な名前(ここではsampleとする)
   データソースタイプ・・・「Amazon DynamoDBテーブル」を選択
   リージョン・・・DynamoDBテーブルのあるリージョンを選択
   テーブル名・・・情報を取得したいテーブルを選択
   既存のロールを作成または使用する・・・適宜選択
   バージョン管理・・・今回は有効化しない
   GraphQL を自動的に生成する・・・「O

元記事を表示

AWS 認定ソリューションアーキテクト – プロフェッショナル資格試験に合格した時の勉強法

# 概要

アソシエイト資格に合格してから2年、「AWS 認定ソリューションアーキテクト – プロフェッショナル」資格試験にもチャレンジしてみました。結果、なかなか大変だったけど、2回目の受験にしてなんとか合格できたので、アソシエイト資格に続きプロフェッショナル資格の勉強法を紹介します。

もしアソシエイト編に興味がある方がいたら以下に記事を投稿してします。

[AWS初心者がAWS 認定ソリューションアーキテクト – アソシエイト資格試験に合格した時の勉強法](https://qiita.com/fkooo/items/e5284a4ed3c3466ffd41 “AWS初心者がAWS 認定ソリューションアーキテクト – アソシエイト資格試験に合格した時の勉強法”)

## 私の経歴

* インフラは専門外
* メインはアプリケーションエンジニア。システムの可用性/耐障害性とかはインフラチームにお任せ。AWSのアソシエイト資格取得で少し自信が付き、ちょっと口を出してみたりする。
* AWS初心者から脱却中
* 仕事では、EC2の中のアプリケーションの話しが多いのであまり知識を活用

元記事を表示

CDKでAWS Batch環境の作成 準備編

## 概要

CDKを使ってAWS環境を作成するときの方法についてまとめていこうと思います。
今回は準備編なので軽めに
(うまく動かないところがあったので・・・)

## 準備

* [AWS Summit](https://resources.awscloud.com/aws-summit-online-japan-2020-on-demand-self-paced-hands-on-85234)のCDKハンズオンを見て準備をしましょう。
* こちらでも簡単に準備手順を
* AWS CLIのインストール
* AWS Configureの設定
* アカウントはCDKで作成するリソースにアクセスできる権限を付与しましょう。(お試しでやる場合はAdministrator権限の方がいいかもしれません)
* node.jsのインストール
* `npm install -g aws-cdk` のコマンドでcdkをインストール

### プロジェクトの準備

* TypeScriptでの例となります。
1. 空のディレクトリを用意する。
1. ディ

元記事を表示

EC2 などの Linux に git をインストールする方法

備忘のために Linux に git をインストールする方法をメモ

まずは各種パッケージをアップデート

“`
$ sudo yum update -y
“`

それから git をインストール(簡単)

“`
$ sudo yum install git -y
“`

インストールできていることを確認します。

“`
$ git version
git version 2.23.3
“`

元記事を表示

Serverless Application Repositoryへアプリケーションを公開する

# はじめに

以下の投稿でSAMで作ったリソースを、Serverless Application Repositoryに公開してみたので手順をまとめました。

– [CodeCommitのプルリクをCodeBuildで検証しAWS ChatbotでSlack通知する](https://qiita.com/joe-king-sh/items/d896ec66a93212e92147#%E5%BE%8C%E7%89%87%E4%BB%98%E3%81%91)

基本的には公式の[AWS Serverless Application Repository – アプリケーションの発行](https://docs.aws.amazon.com/ja_jp/serverlessrepo/latest/devguide/serverlessrepo-publishing-applications.html)手順の通りです。

# Serverless Application Repositoryの公開手順
## SAMテンプレートにメタデータを追加
Serverless Application R

元記事を表示

[ 初心者 ] AWSでWordPressを立ち上げてみる #1 ~ ネットワークの構築 ~

#動機
最近、AWSの資格であるクラウドプラクティショナーを取得しましたが、ほぼほぼ教本を読んだり、問題集を解くだけで、ハンズオンをしていませんでした。なので、復讐がてら試しにWordPressを立ち上げることにしました。
構築の記事は全5回に分けて投稿します。

#環境
・macOS Catalina 10.15.5

#前提
・AWSアカウントを取得済みである
・サービスによって料金が発生することを理解している

#全体構成図
![aws_wordpress_completed.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148800/e327f8dc-bb1b-2c26-4f0c-4a324d065735.png)
今回は最もシンプルな構成にします。可用性、冗長性は気にせずに、とりあえずWordPressが立ち上げるを目標にします。

#AWSインフラ構築全5回

1. ネットワークの構築
2. Webサーバの構築
3. ドメインを作成
4. DBサーバーを構築
5. WordP

元記事を表示

【AWS SOA】EC2のプレイスメントグループの備忘録

#はじめに
プレイスメントグループを使用することで、ネットワークパフォーマンスが向上したり相互関係のあるエラーを軽減できる。
SOAの勉強に当たってEC2のプレイスメントグループの理解が求められるため、本稿で簡単にまとめたい。

#プレイスメントグループ戦略
・クラスター
シングルAZでインスタンスを論理的にグループ化。
低いネットワークレイテンシー、高いネットワークスループットが特徴。
![スクリーンショット 2020-10-04 18.04.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/451e5398-8d9e-7dcf-077a-15b6e050895d.png)

・分散
物理ラックの単位でインスタンスを配置。
グループのAZ毎に、最大7つの実行中のインスタンスを持つことができ、同時障害のリスクが軽減されるため、重要なアプリケーション向け。
![スクリーンショット 2020-10-04 18.11.29.png](https://qiita-image-store.s3.a

元記事を表示

【俺得】lambdaからSESを呼びだすPG

# 前置き
構成図は後程追加するが個人備忘録として先にPGを記載しておく。
利用サービスは、lambda、RDS、SESを利用、
動きとしては、{“data”:”10100″}みたいなデータをlambdaで受け取り、
RDSに対して上記データを利用したselectを条件句で実行、取得した値を利用してさらに別テーブルでselectをwhere句で実行、
メールアドレスを取得してsesへ連携という流れ。

# lambda~SES利用時の注意点
・東京リージョンではSESのエンドポイントがありませんでした。
・今回lambdaはVPC内に作成していましたが、Publicサブネットにあるからといってインターネットアクセスは不可みたいです。今回はPrivateサブネットへ移動しNatGatewayを利用しました。

# zipに含めたもの
・lambda_function.py

下記はpip install pymysql -t .でインストールを実施しました。
・PyMySQL-0.10.1.dist-info
・pymysql

# SESを呼び出すプログラム
“`lambda_fun

元記事を表示

オートスケール(Amazon EC2 AutoScaling)の導入判断ポイント

既存のシステムに対してこれからAmazon EC2 AutoScaling(以降はAutoScalingと記載)を導入するシステム運用者向けに導入判断のポイントについて書きたいと思います。

## オートスケール(AutoScaling)の導入判断ポイント

この記事を読むとオートスケール導入すべきかどうかの判断ポイントが分かります。

オートスケール導入のメリットは何となく想像できると思うのですが、

* 突発的なアクセスや(キャンペーンなど)予測されるアクセス時の対応

* 手動スケール運用の工数削減

* コスト(AWS利用料)削減

大体この3つだと思います。

デメリットはオートスケール導入や運用にかかる工数(大変さ)です。
クラウドなら簡単に導入できると思われているのか
「うちのシステムをオートスケール化しといて。すぐできるでしょ?」
と頼まれたのですが、躓きポイントがありました。

一般的にはメリデメを比較して導入するかどうかを判断すると思います。
本記事ではAutoScaling導入工数や導入後に発生する工数について記載しています。

※AutoScalngの機能につ

元記事を表示

Route53の全レコードをまとめてテキストファイルに出力するワンライナー

必要になったので書きました。必要なものは[AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html#cliv2-linux-install)と[jq v1.6](https://stedolan.github.io/jq/)とgawk[^1]です。なお[この記事](https://qiita.com/netebakari/items/8c49069d9f7d1c35629f)の焼き直しです。

# コマンド

“`
aws route53 list-hosted-zones | \
jq ‘.HostedZones[] .Id’ -r | \
gawk -F”/” ‘{cmd=”aws route53 list-resource-record-sets –hosted-zone-id ” $3 ” | jq \x27.ResourceRecordSets [] | if has(\”ResourceRecords\”) then [.Name, .Type, .

元記事を表示

WindowsからEC2にSSH接続する

#前提条件
– AWSコンソールで既にEC2インスタンスを作成済み
– EC2にアクセスする為のパブリックIPを設定済み
– EC2において、SSH接続の為の22番ポートが解放されている
– Windowsのオプション機能で、OpenSSH クライアントがインストールされている

#結論
以下のような形式でアクセスできます。

“`powershell
ssh -i .\key.pem ec2-user@192.168.0.1
“`
`.\key.pem`のところには、EC2を作成した時のキーペアのパスを指定します。
`192.168.0.1`のところには、EC2にアクセスする為のパブリックIPを指定します。
ユーザ名は、`ec2-user`で問題ありません。

#参考元
– [Windows10 の ssh を使った AWS EC2 への接続](https://qiita.com/uttne/items/7bfa4e820834f7f54be8)
– [【初心者向け】Amazon EC2にSSH接続する【Windows、Macintosh】](https://dev.classm

元記事を表示

AWS SAM CLIの設定切替

# 経緯
新規プロダクトサービスの一環で、AWS SAMでServerlessを使ったんですが、今後の開発環境どうしよう?となりまして。
基本的なテストはローカルでいいにしてもステージング的な環境は欲しいし、複数のリリース先ってどうやって管理するん?
sam deployの設定をお手軽に切り替える、そんな機能ないの?
ドキュメントやhelp(当時sam –version 1.2.0)見てもそれっぽいものは見つからなかったんですが、AWS SAMのissue探してみたらあっさりありまして。

https://github.com/aws/aws-sam-cli/issues/1615

Release 1.3.0 – Support for Multi Config
https://github.com/aws/aws-sam-cli/releases/tag/v1.3.0

**ついこないだリリースされてた。**
※気づいた時点でちょうど1週間前

しかしまだあんまり情報ないようなので、とりあえずざっくり情報書いておきます。
あんまり詳しいわけではないので、間違ってたらごめんね!(

元記事を表示

CodeCommitのプルリクをCodeBuildで検証しAWS ChatbotでSlack通知する

# はじめに
プルリクエストで提案されたコードの変更を、マージの前にテストすることで、コードの品質を保ち、動かないコードをマージするリスクを回避する事ができます。

AWS 認定 DevOps Engineer Professionalの対策をしていると、以下のブログを発見し、
今ならもっとシンプルな構成で作れるのではと思い構築してみました。
[Validating AWS CodeCommit Pull Requests with AWS CodeBuild and AWS Lambda](https://aws.amazon.com/jp/blogs/devops/validating-aws-codecommit-pull-requests-with-aws-codebuild-and-aws-lambda/)

GitHubのプルリクをCodeBuildでビルドする記事はよくありますが、CodeCommitのプルリクをビルドする詳細な記事はあまりなく、CodeCommitをリポジトリにCIを構築しようとする方の参考になれば幸いです。

SAMとLambdaのソースはGitHu

元記事を表示

[aws,ecs]クラスターを削除できない時の解決例

# 何があった?
1枚目の画像のクラスターの削除を押して、2枚目の削除の手続きをしてもローディングがずっと続いてしまう状況が続きました。

1枚目
![スクリーンショット 2020-10-04 8.29.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555157/f6163d18-add2-3457-9273-5ad054190b11.png)
2枚目
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555157/7efc6601-da6a-c5b6-3dc9-29ca97a2c3c2.png)

# 解決策
左のメニューのタスク定義画面に飛んでタスクを削除した後に、クラスター削除の手順を行うと削除を実行することができました。

# 原因
憶測になってしまいますが、クラスターの中に動いている複数のタスクがある場合に、クラスター削除で一度にタスクごと消せるようにしてしまうと、意図していなかったタスクまで

元記事を表示

ALB + Lambdaでお手軽3分ベーシック認証

## 概要

ALBのリスナールールの変更とLambdaの追加でベーシック認証を行います。

ベーシック認証の処理の流れとしては以下となります。

– ALBで`Authorization`ヘッダーを検証する
– 認証OKであれば、正規のターゲットグループに転送する
– 認証NGであれば、Lambdaをターゲットとするターゲットグループに転送する
– Lambdaではベーシック認証を要求するレスポンスを返す(なお、ALBからのヘルスチェックに対しては`200`を返すようにします)

## 1. Lambda関数の作成

まず、ALBが存在するリージョンで、Lambda関数を作成します。

– `一から作成`を選択
– 関数名を入力(今回は`BasicAuth`とします)
– ランタイムは`Node.js 12.x`を選択
– 実行ロールは`基本的な Lambda アクセス権限で新しいロールを作成`を選択
– VPCは特に何も選択しない
– `関数の作成`ボタンを押下

![Lambda関数の作成](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

Docker DesktopでAmazon ECR Credential Helperを使用する

Docker Desktop for Windows/Mac 2.4.0.0 以降、[Amazon ECR Credential Helper](https://github.com/awslabs/amazon-ecr-credential-helper) が
同梱されるようになりました。

**Docker for Mac Stable release notes – Docker Desktop Community 2.4.0.0**
https://docs.docker.com/docker-for-windows/release-notes/#docker-desktop-community-2400

都度、以下のようなコマンドで ECR へログインする一手間が減ります。

“`shell-session
$ aws ecr get-login-password | docker login –username AWS –password-stdin https://.dkr.ecr..amazonaws.com

元記事を表示

AWS Chalice使ってみた

# 概要

AWS Lambdaを起点にAWSGatewayの設定や、IAMロールを自動デプロイできるフレームワークです。

:thought_balloon: Lambdaを使ったWebアプリケーションを爆速で作れるフレームワークを求めて利用してみました。

# 使ってみた

### 1.インストール

“`bash
$ pip install chalice
“`

### 2.AWS の認証情報を設定

`~/.aws/config` `~/.aws/credentials` の設定を行う必要があります。(他記事参照お願いします)

### 3.プロジェクトの新規作成

“`bash
$ chalice new-project handson
$ cd handson
“`

### 4.作成されたプロジェクトの確認

“`bash
$ ls -1a
./
../
.chalice/
.gitignore
app.py
requirements.txt
“`

app.py がメインのプログラムになります。

※以下新規作成時のコード

“`python
from

元記事を表示

【AWS SOA】EC2インスタンスタイプ変更

#はじめに
AWS SOAの試験でEC2のインスタンスタイプ変更を行なう問題が出題される。今回は改めてインスタンスタイプの変更の方法について押さえたいと思う。

#手順
・EC2インストール(今回はその点は省略する)
・SSH接続
・メモリ容量の確認
・インスタンスの停止
・インスタンスタイプの変更
・インスタンスの起動
・SSH接続
・メモリ容量が増えているか確認

#やってみた
SSH接続は、以下の記事参照。
https://dev.classmethod.jp/articles/aws-beginner-ec2-ssh/

SSH接続できたら以下のコマンドを使って、容量を確認する。
今回の場合(t2.micro)、合計のメモリが983であることが確認できる。

“`
$free -m
total used free shared buff/cache available
Mem: 983 101 422 0 458

元記事を表示

AWS Lambdaの書き方まとめ

AWS Lambda使って○○がしたいときってありますよね。

そんなときLambdaやプログラミング言語のスキルが低い私はけっこう苦戦したので、攻略方法を自分のためにも世のためにもまとめます。

なおこの記事で扱う言語はPythonのみです。

# 基本
## 何をしたいのかを整理する

まずLambdaで何をどうしたいのかを整理します。
(他のサービスで実現できないかを考えておくことが前提)

以下、例を挙げていきます。

– **RDSのスナップショットを2時間おきに取りたい**

自動スナップショットは1日1回しかバックアップを取得してくれないため作成する。必要なことは、RDSインスタンスの一覧を取得して、タグのついた対象のRDSインスタンス名を取得、スナップショットを実行する。もしくはRDS名を指定してスナップショットを実行する。

– **EBSをスナップショットしたら別リージョンにコピーしたい**

EBSのスナップショットはAmazon Data Lifecycle Manager (DLM)を用いれば自動化できるが、リージョンコピーまではできないため作成する。必要なこ

元記事を表示

OTHERカテゴリの最新記事