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

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

Terraform + S3 + CloudFrontで静的サイトを簡単構築

AWSで静的サイトを構築する時は基本的にS3の静的Webサイトホスティング + CloudFrontを使って構成すると思います。
このときGUIでやると少し手間なのでTerraformで一気に構築できる手順をまとめました。

# 構成
今回は最も単純な構成で下記を構築します。

## S3
バケット名:test-static-web-site
静的Webサイトホスティング
インデックスドキュメント:index.html
エラードキュメント:index.html (実際はエラー用のページを用意するといいと思います)

## CloudFront
ディストリビューション名:test-static-web-site-dst
基本的な構成でオリジンをS3バケットに向ける
`OriginAccessIdentity` を使ってS3バケットへのアクセス権限をバケットポリシーに設定
今回SSLはCloudFrontデフォルトのもの。独自ドメインを持っている場合はACMの証明書もTerraformで作成することで `acm_certificate_arn` で指定でき、簡単です。

# Terrafo

元記事を表示

【初学者】AWS Elastic IPで課金が発生した話

#はじめに
私はプログラミングスクール生で、カリキュラム上AWSを使用したデプロイを行っていました。
無料枠内の使用だと思っていたら、請求書を見ると僅かながら課金が発生していて驚いたのでここに原因と対策を書き留めておきます。
Elastic IPは料金が発生する可能性があることは確かにカリキュラムには載っていたのでスクール側は何も悪くありません!私の勉強不足でした!
#Elastic IPとは
EIP(Elastic IP)は、EC2インスタンスにパブリックIPアドレスを紐付けることができるサービスです。
EC2インスタンスは再起動すると、パブリックIPアドレスが変わってしまいます。
EC2インスタンスとEIPを関連づけることで、同じパブリックIPアドレスを継続して利用することができます。
#結論
・使用していないElastic IP アドレスがあった。
・Elastic IP アドレスに関連付けられているインスタンスが停止中だった。
#行ったこと
まず料金明細をクリックし、料金の発生源を確認。
$0.005 per Elastic IP address not attached to

元記事を表示

AWSクラウドプラクティショナー試験に1度落ちてその後合格した話

本記事は[サムザップ #1 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/sumzap1) の12/24の記事となります。
昨日の記事は@kojima_akiraさんの[mysqlのタイムアウトをPHPクライアント側でハンドリングする](https://qiita.com/kojima_akira/items/cd6651787b0a2d565a3e)でした。

#はじめに
Sumzapでサーバエンジニアをしています@chrno001です。

弊社では現在複数のプロジェクトが動いていますがAWSをメインとして使用するプロジェクトが増えており今後も継続的に利用していくかと思います。
その為、数か月前にエンジニアの技術力・知識の向上を目指して、AWS資格を社

元記事を表示

CodeDeployでデプロイ時にApplicationStopでエラーが出る件

# 解決方法

パブリックIPの自動割り当てを有効にしたらなおりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103853/aec31d8e-798f-74e9-dbe9-248a392a2240.png)

こんなところいじったかな?
他のインスタンスと見比べてパブリックIPが割り当てられていないことにもっと早く気づくべきでした?

デーモンを再起動することで解決するケースもあるらしいです。
[CodeDeployで、EC2へのデプロイ時にApplicationStopが0秒間でエラーになる問題の対処方法](https://zenn.dev/snicmakino/articles/b8523ca8aef37c403b45)

元記事を表示

AWS CloudShellをzsh化する

## CloudShellとは
Azureとかにはあった、Webコンソールでターミナルを使えるやつです。
簡単なコマンドを叩くだけならいちいちCloud9環境やEC2をセットアップしなくてもよくなりました。
公式の紹介記事:https://aws.amazon.com/jp/blogs/news/aws-cloudshell-command-line-access-to-aws-resources/

## zsh化の手順
0.`.bashrc` のバックアップを作成します。(バックアップファイル名は任意)

“`
$ cp .bashrc .bashrc.org
“`

1.`.bashrc` を開きます。

“`
$ vim .bashrc
“`
2.最終行に以下を追記します。

“`
zsh
“`
(↓全体)

“`..bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# Uncomment the follo

元記事を表示

副業×AWSでわりと人生変わったエンジニアの話

# はじめに
何を書こうか迷ってたんですが、ちょうど副業始めて1年ほどたったので、どういうきっかけで始めたか、何をしてるのか、やってみたメリットなどを書いていこうと思います。
なぜ**副業×AWS**なのかというと、自分が副業をやっていく中で普段AWSに触れていることが強みになっていたので、単に副業だけじゃなく**AWS**も混ぜてみました。
これから副業を始めようと思っている人、特に本業で役割が変わってあまりコード書けなくなった人に参考になれば。

# 自己紹介
本業ではSREという部署でCloud Architecture Grpというチームを持っており、自社サービスである[COMPANY](https://www.works-hi.co.jp/products)のクラウドネイティブ化を推進しています。
主にクラウドプラットフォームとしてはAWSを利用しているため、日常的にAWSのサービスに触れる機会が多いです。
そんな本業の傍ら、3社で副業やってます。(20名規模ぐらいのベンチャー)
それぞれ

– 介護事業所向けSaaS
– 外食向けSaaS
– 会議改善SaaS

なので会社

元記事を表示

オレのブログを安く運用したい。(aws から Oracle Cloud へ移行(その4))

#はじめに
この記事は「Oracle Cloud Infrastructure(その2) Advent Calendar 2020」の12月24日の記事として投稿です。

メリークリスマス!!(イブッ):christmas_tree:ついに残すところ、あと1回。とりあえず、3日坊主にはならなかったです:sweat:そもそも無事に移行させることができるか…。今日の作業で準備ができるかにかかっています:muscle:。

さて、昨日からの続きです。今日から読む人たちのために、改めて、記載すると「今あるaws上のブログで使っているインスタンス2つをOCIへ移行させよう!そして、その先に待っているランニングコスト軽減を得るために!!」が目的になります。:sparkles:

今日は早速、移行先(OCI)にインスタンスを用意しようと思います。

#AWSからOCIへ移行をしてみる
昨日、計画した移行ステップは、下記の通り。

>1. OCI上でAWS同様の構成を用意する
>2. AWS と OCI を接続する(データ移行の経路を確保する)
>3. AWS上で稼働しているインスタンスのデータ抽出

元記事を表示

APIGateway BlackBelt に物申す! ~RESTとWebSocketの理解を深めよう~

#REST-APIとWebsocket
AWSのサーバレスアーキテクチャを構築する上で欠かせないAPIGatewayのBlackBeltを読んで、APIGatewayの2大主要機能であるREST APIとWebsocketについて理解を深めてみようと思う。APIGatewayのBlackBeltを読んで「REST」と「Websocket」が2つ比較で並べられて説明されており、少し違和感を覚えたので、ちょっと記事を書いている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409437/582d7624-dfc1-9087-f670-2919b41223c8.png)
###:shamrock:REST-APIとは?
APIGatewayは「REST API」を作成することできる。REST-APIとは、**Restfulな設計原則に基づいている**APIだよ!ということだ。Restfulって何って話だが、下記を満たす設計原則のことだ。プログラムを書くときにリターンコードに無意識に200とし

元記事を表示

Jenkins+Ansible+CloudFormationでインフラ構築の自動化やってみた

JenkinsとAnsibleを使ったインフラ構築の自動化についてメモしたものをまとめました。

スタックの構成図は以下となります。RDSとEC2はミニマム構成にしており、スタックを追加することで以下の冗長構成となります。

![Untitled (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/1a12bc41-9ff3-3941-5b1d-abb2e4fe4d47.png)

###PC環境
– Windows10
– Tera Term

###準備
– 紐づいてないElasticIP1個
– VPCとサブネット作ってIGWを通しておく

##Jenkins用のEC2セットアップ

①Linux2AMIを選択します。
![jenkins1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/d6af660c-e2f4-a027-fff4-9c4d2e2aff3d.png)

②t2.mi

元記事を表示

EC2と関連付けてざっくり理解するFargate

[弁護士ドットコム](https://corporate.bengo4.com/)という会社で[税理士ドットコム](https://www.zeiri4.com/)というサービスの開発をしています @ug23 です。

この記事は[弁護士ドットコム Advent Calendar 2020](https://qiita.com/advent-calendar/2020/bengo4com) の23日目の記事です。祝日じゃないイブイブに違和感ありまくりですね。

`PHPのテスティングフレームワークを比較してみたい` という意気込みを書いていましたが最近PHPを書くよりもDockerやAWSに関係する業務が多かったので、最近やったことを中心に整理しつつまとめました。

EC2しか触ったことがないけどFargateを触る必要が出てきた方や、ECSは使っていないけどFargateを使ったことのない方の理解の一助となれば幸いです。

**Fargateのベストプラクティスや構築方法については触れません。**

# Fargateと私

先日税理士ドットコムはEC2をベースにした構成から[Far

元記事を表示

コンテナ運用におけるログ基盤設計のベストプラクティス

# 課題

数年前と比較すると、GKEやECSを始めとするコンテナ実行環境でのアプリケーション運用を行うサービスはかなり増えてきた印象があります。
コンテナを運用する上では、アプリケーションのイベントを追跡する上でログをどう扱うかが課題になります。今までのように古いログを定期的にローテートして別のストレージに転送するといった手法はクラウドネイティブなアーキテクチャには最適とは言えません。
アプリケーション開発の方法論として、[Twelve Factor App](https://12factor.net/ja/logs) ではログをイベントストリームとして扱うためのガイドラインが示されていますが、近年のWebアプリケーションではシステムを疎結合に連携するマイクロサービスという考え方が主流になりつつあります。
アプリケーションログはサービスごとにフォーマットを整形した上で、ログ収集サービスに配送。必要に応じてリアルタイム分析や異常データの通知、そしてデータの可視化といった要件が求められます。
ここではメタップスにおいて過去数年に渡って本番環境のコンテナ運用やログ基盤を設計した知見を元に、

元記事を表示

CodeBuildのビルド環境にSessionManagerで入ってみた

CircleCIだとSSHを使用してビルド コンテナにアクセスできますが
CodeBuildも 2020年07月からSessionManagerを使って中に入れるようになっていたので使ってみました。
https://aws.amazon.com/jp/about-aws/whats-new/2020/07/aws-codebuild-now-supports-accessing-build-environments-with-aws-session-manager/

# やりかた

[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/session-manager.html) に書いてある通りですが。

## 1. BuildProjectのサービスロールに権限を追加

“`
{
“Effect”: “Allow”,
“Action”: [
“ssmmessages:CreateControlChannel”,
“ssmmessages:CreateDataChann

元記事を表示

CloudFormationでACMを使用し, 外部で作成したSSL証明書をインポートすることはできない.

タイトルのままです。

CloudFormationはYAML形式で記述することが可能です。
※下記のコードは一例です。

“`yaml

AWSTemplateFormatVersion: ‘2010-09-09’
Description: ACM
mycert:
Type: AWS::CertificateManager::Certificate
Properties:
DomainName: example.com
DomainValidationOptions:
– DomainName: example.com
ValidationDomain: example.com
“`

ですが、筆者の執筆時点では、CloudFormationのACMをYAML形式で記述し、外部からSSL証明書をインポートすることはできませんでした。

ACMに外部で作成したSSL証明書をインポートする際には、AWS CLI を使用してインポートすることをおすすめします。
#参考記事
・[AWS::CertificateManag

元記事を表示

[AWS] re:Invent2020自分まとめ

# re:Invent とは

– AWSの年末恒例イベント
– AWS のクラウドサービスに関わる技術的なセミナー・ハンズオンセッションなど、 2,500 を超えるセッション(2019 年実績)を提供しており、お客様が主体的に体験できる、学習機会が豊富なグローバルカンファレンス
– 今回は 11/30 (月) ~ 12/18 (金) 、1/12 (火) ~ 1/14 (木) にて完全オンライン、無料で開催

# 数多ある発表から個人的超抜粋

– 大量のアップデートがありました
– その中から「これは!」を厳選

## コンピューティング

### Amazon EC2 Mac Instance

– 今回の re:Invent の最初で最大の話題となったといっても過言ではない
– ほんまに Mac mini が裏で動いてるみたいですよ
– https://www.publickey1.jp/blog/20/macawsmac_minithunderboltaws_reinvent_2020.html

### Amazon ECS Anywhere

– ECS をオンプ

元記事を表示

AWS Data PipelineのShellCommandActivityでDockerイメージを(暫定的に)動かす

# 背景・目的

我々のチームでは、以前から[AWS Data Pipeline](https://aws.amazon.com/jp/datapipeline/)を利用して、次のような形でETLのプログラムを管理していました。

* RubyやPythonや必要なツールが入ったAMIを用意する
* ETLプログラムはチーム管理サーバーのGitlabで管理し、masterブランチへのpush時にJenkinsでzipで固めてS3にアップロードする
* Data Pipelineの[ShellCommandActivity](https://docs.aws.amazon.com/ja_jp/datapipeline/latest/DeveloperGuide/dp-object-shellcommandactivity.html)でEC2サーバーを立ち上げ、S3からソースコードをダウンロードして実行する

ただ、数年間の運用を経て、以下のような問題点が出てきています。

* AMIのバージョンアップが面倒で、できればコンテナ化してDockerfileで管理したいこと。Data Pipe

元記事を表示

Docker + DynamoDB local + C++ の環境構築と実践まで

#環境構築
今回使うものはこちら

– Docker
– Dynamodb local
– AWS CLI バージョン 2
– vcpkg
– AWS SDK for C++

また、C++ のビルド環境には VC++ を使用します。

##Docker の導入
>Docker は、コンテナを用いてアプリケーションをすばやく構築、テスト、デプロイできるソフトウェアプラットフォームです。

https://www.docker.com/

###ダウンロード
Docker のサイトからインストーラをダウンロードしましょう。
※この記事では、Docker Desktop for Windows を使用します。

###インストール
`Docker Desktop requires Windows 10 Pro/Enterprise (16299+) or Windows 10 Home (18362.1040+).`
インストール中に、上のようなエラーメッセージが出る場合は、Windows Update を確認してみてください。アップデート後に、もう一度インストールを試してみましょう。

元記事を表示

EC2 (Amazon Linux 2 ) にPHP7.2 をインストールし、php.ini を設定するまでのまとめ

Amazon Linux は2020/12/31 でサポートが終了してしまうため、
後継のOS であるAmazon Linux 2 への移行が必要になりました。

単純にOS アップデートできないようだったので、
新たにAmazon Linux 2 のインスタンスを作ってミドルウェアを入れ直しました。

後々同じことをやる方のググる手間を省ければと思い、まとめました。
「とりあえずEC2でPHPを動かしたいぞ!!!」というあなたのお役に立てれば幸いです:pray:

# 前提
■ 先にVPCやサブネットの用意を終わらせておくとスムーズです。
  (ECインスタンス作成時に紐付けられるため)

  もしよろしければ、以下の記事を参考になさってみてください!
  ・[VPC作成 〜 パブリック・プライベートサブネットを作るまでの手順①](https://qiita.com/kanadeee/items/527e7ea4daed36b396fe)
  ・[VPC作成 〜 パブリック・プライベートサブネットを作るまでの手順②](https://qiita.com/kanadeee/items/

元記事を表示

「OpenSSH keys only supported if ED25519 is available」のエラーの解決方法

# 目標

エラーを解決してデプロイを完了させる。
# 本番環境
・Ruby: 2.5.7
・Rails: 5.2.4
・AWS:EC2
・OS: macOS Catalina

#解決方法
開発環境にてGemを追加

###1.`Gem`を追加

“`ruby:Gemfile
gem ‘ed25519’
gem ‘bcrypt_pbkdf’
“`

bundleインストールを行い、再度capistranoの自動デプロイコマンドを実行する

“`java:ターミナル
$ bundle install
$ bundle exec cap production deploy
“`

エラー文にもこのgemファイルを入れろという指示があったので試してみたら治りました。

元記事を表示

[Rails]本番環境のデータベースをリセットする方法(Capistrano版)

## はじめに
####前提
・Railsを使用してアプリケーションを開発
・Capistranoでの自動デプロイを実装している
・AWSのEC2にてサーバーを構築している
・RDSでMySQLを使用している

## 背景
私は開発環境では、rails db:migrate:resetにていつもデータベースを作り直していましたが、本番環境ではどのようにすればいいのかという疑問から実装しました。

### 本番環境のデータベースをリセットする
まずはターミナルを用いてEC2で自分のアプリケーションフォルダの階層まで進む。
Capistranoでの実装をしているのでミスをしないように基本的にはcurrentディレクトリで作業するようにする。

“`ruby:terminal
[ec2-user@ip-222-22-2-222 アプリ名]cd current
“`

“`java:current
RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rails db:drop
“`
これでデータベー

元記事を表示

【AWS】Lambdaの実行ログから指定した文字列を検知してslackに通知

今回は自分が触れる機会の多いAWSのサービスを使用して運用の際などで利用できる通知方法の一つをご紹介します。

#使用サービス
+ Lambda
+ CloudWatch
+ Slack

#実装フロー
1.Lambda関数からCloudWatch Logsへログを出力
2.CloudWatch Logsから指定した文字列を検知
3.検知された文字列をトリガーにSlack通知用のLambda関数を発火
4.通知用LambdaでSlackへ文字列を通知

#フロー詳細
実際に上記のフローで実装していきます。

__手順1__

今回は「test」という文字列でCloudWatch Logsへ出力します。
![スクリーンショット 2020-12-23 16.14.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404045/b67ff6df-0bcf-b9d5-c88e-d034741ec338.png)

__手順2__

文字列検知にCloudWatch Logsのサブスクリプションフィルター(La

元記事を表示

OTHERカテゴリの最新記事