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

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

Amazon Step FunctionsのWorkflow StudioでParallel, Map, Choise状態の入出力を見る

# はじめに
 本記事では、Amazon Step FunctionsのWorkflow StudioでParallel, Map, Choise状態を含むステートマシンを作成し、その入出力を見ていきます。Step Functionsでは、Parallelで静的並列処理、Mapで動的並列処理を実現することができます。

 本記事の特徴は以下です。

* Workflow Studioを使ってグラフィカルに作る
* Parallel, Map, Choise状態とLambda関数を使用
* 実践的な処理というよりは、入出力を明確にするテスト的な処理を作る
* LambdaでPythonを使用しますが、簡単すぎるコードしかないため未経験者でも問題ありません

 以下の内容は含まれません。

* ASL(次節で説明)を使って作る方法

# Step Functionsとは?
 サーバレスオーケストレーションサービスと [公式][1] では言われています。分かり易く言い換えると、サーバレスなAWSサービス(主に [AWS Lambda][2] )をつなげて1つのワークフローを作成できるサービス

元記事を表示

ec2初心者がssh接続するまで

## はじめに
おそらくこの記事を見てくださっている方はec2とは何なのかある程度知っていると思います。
なのでec2についての説明は割愛します。~~(決して説明が面倒だとかそんなことはありません。決して。)~~

この記事ではEC2インスタンスを作成してssh接続するまでの手順を紹介します。
タイトルの通り初心者なので、もっといい手順や設定があればコメントで教えていただければと思います。

## キーペアの作成
キーペアはインスタンスに接続する際に必要になります。
自動生成はされないので自分で作成します。
既にキーペアを作成している方は飛ばしてください。

EC2のダッシュボードから[キーペア]をクリックして一覧画面に遷移します。
![スクリーンショット 2021-11-04 0.20.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/650805/85b272f7-4c37-4790-1f7d-ccd5c539402e.png)

[キーペアを作成]をクリックして作成画面に遷移します。
![スク

元記事を表示

CloudFront+S3構成にLambda@Edgeを挟み込む

CloudFront経由のS3にホスティングしたWebページにLambda@EdgeでBasic認証をかける。
何度か使いそうなので使いまわせるようCDK化(Python)しておく。

# コンソールから作成

## 1. S3バケットの作成

* 任意のS3バケット名を指定。
* パブリックアクセスのブロックのチェックを外し、作成。
* 任意のindex.htmlファイルをアップロード。

## 2. CloudFrontディストリビューションの作成

* オリジンドメインに上記で作成したS3バケット
* 「S3バケットアクセス」 > 「はい、OAI を使用します」 > 「新しいOAIを作成」
* 「バケットポリシー」 > 「はい、バケットポリシーを自動で更新します」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406130/f8226abe-3a7a-7e00-acb3-39191298d997.png)

S3に以下のバケットポリシーが自動で設定される。

“`
{

元記事を表示

CloudFrontのキャッシュを削除するコンソール画面の作成

#はじめに
Cloudfrontのキャッシュ削除は、AWSコンソールから操作しますが、チームで開発時やお客さんに納品後、お客さん側でキャッシュ削除する場合、キャッシュ削除するためだけにIAMユーザーを作成するのは手間だったり不都合があったため、S3に配置したhtmlでEC2を操作できる仕組みを作成しました。
ただし、メンバー以外に操作されないよう、S3にはCloudfront OAI、CloudFrontとApiGatewayにはBasic認証をかけてます。

#構成図
![スクリーンショット 2021-11-03 23.43.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/7befb5e6-1a3c-d94c-0048-988776e47d3a.png)

CloudFrontのキャッシュ削除のコンソール画面用のhtmlをS3に配置して、CloudFrontで配信し、S3からアクセスできないよう制限します。

#完成ページ

![スクリーンショット 2021-11-03 23.21

元記事を表示

AWS:便利なAutoScalingを設定してみた。

AWS:AutoScaling オートスケーリングについて

オートスケーリングとは

必要に応じてEC2インスタンスを増減してくれる便利な機能。
![IMG_84970B690799-1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1226984/3fa4746b-346f-9da1-88a8-88e487cbe511.jpeg)

まずは起動テンプレートを作成

EC2インスタンス>起動テンプレート>起動テンプレートを作成
それぞれ、必要に応じてカスタマイズをする。

アクションメニューからバージョンをつけて設定の更新ができる。これが最大の特徴。

☆インスタンスのアクションから「イメージ&テンプレート」を選択しても作成可能。

AutoScalingグループを作成

AutoScaling>AutoScalingグループ>AutoScalingグループを作成

名前や作成したテンプレートを選択し、容量を選択。最小、希望、最大の容

元記事を表示

【AWS】AWS Glue + PySparkでお手軽なサーバレス分散処理

# はじめに

数TBクラスの大きなデータを変換してDBへputするような場合、
データをいくつかのグループに分割して、複数台のコンバータで分担して処理したい。
AWS Glueを使えば分散処理ライブラリSparkを利用した並列処理をサーバレスで簡単に実現できる。

サンプルコード↓

https://github.com/uni-ezobafun/ocean_glue_spark_parallel_processing

### AWS Glue + PySparkによる分散処理のメリット

* フルマネージドなサーバレスサービスで、煩雑な保守作業は不要
* データ量や処理の重さに応じて、コンソールから分散処理の台数をいつでも変更できる (2台 〜 299台)
* 利用台数 x 利用時間分のみ課金

公式ドキュメント↓

https://aws.amazon.com/jp/glue/

### やること

* S3に置いたPySparkスクリプトをAWS Glueと紐付けて実行する
* 要素が5000個の整数型リスト1000個用意して、それぞれ(重い処理の疑似として)バブルソートす

元記事を表示

AWSのコンソール画面を英語設定してみた

[zenn](https://zenn.dev/mo_ri_regen/articles/aws-english-setting)のほうでも同じ記事を投稿しています?
[zenn](https://zenn.dev/mo_ri_regen)ではフロントエンドのことも含め、いろいろ投稿しているのでぜひご覧ください?

AWS は日本語のドキュメント [^1]が充実しているので、あまり英語にするメリットがなさそうだと思われるかもしれないのでメリットを考えてみました。

[^1]: 公式ドキュメント以外にもクラスメソッドの[ブログ](https://dev.classmethod.jp/tags/aws/)など企業レベルで発信している会社もある

## 英語にするメリット

– 強制的に英語に触れることができる
これが一番メリットだと思います。
英語を勉強したいなと思っても意識して勉強って難しい ? ので、少しでも英語を使わざるを得ない環境にすることで英語に慣れることができます。

– 日本語訳に振り回されない
Amazon はアメリカの会社なのでどうしても和訳という作業が発生し

元記事を表示

WP Offload Media Liteプラグインを使用して画像をS3に保存できない場合の対処方法

# 背景
EC2上にWordPressを構築し、WP Offload Media Liteプラグインを使用して投稿画像をS3に保存しようとしたところ、画像がS3にアップロードされない現象が発生しました。
私の場合、gdというライブラリをインストールすることで解決しました。

# 症状
サイトヘルスとWP Offload Media Liteプラグインの設定画面にgdがインストールされていないというメッセージが出ていることに気付きました。

## WordPressの管理者画面のサイトヘルス
> 必須モジュール gd がインストールされていないか、無効化されています。

## WP Offload Media Liteプラグインの設定画面
> WP Offload Media Requirement Missing — Looks like you don’t have an image manipulation library installed on this server and configured with PHP. You may run into trouble if yo

元記事を表示

ec2のelasticIPとドメイン名を関連付ける

https://avinton.com/academy/route53-dns-vhost/
この記事が一番わかりやすかったです!

元記事を表示

An error occurred while installing ovirt-engine-sdk(Rails) のエラーについて

久しぶりの投稿なので色々と見にくくなってしまったりしますが、ご容赦ください。

ただいまAWSにて自身のサイトを出すべく、サーバ環境の公開鍵の作成及びGitHubのクローンの最中で起きたエラーです。

#エラー内容
An error occurred while installing ovirt-engine-sdk (バージョン), and Bundler cannot continue.

#結論
こちらのエラーは、下記二つの原因がある可能性があります。

1. RailsにおけるGemfileのパッケージファイルが足りない
2. OS内のインストールするライブラリが足りない

#対処しよう

1. RailsにおけるGemfileのパッケージファイルが足りない

対処その1はRailsのGemfileのパッケージが足りない可能性があります。
下記コマンドを打ち込むことでRailsのGemfileにパッケージが入るので、エラーが解決する可能性があります。

“`
gem install ovirt-engine-sdk -v (バージョン)
“`

対処その2、OS内のイ

元記事を表示

勉強メモ33_ドットインストールでAWSを学ぶ

#00 はじめに
・最近ITの面談行くと、「AWS」、「AWS」、「AWS」としつこい位に耳にしてうるさい。
 AWS登録するにしても、サービスが期間限定無料だったりするので登録はしないが
 ドットインストールの内容を見ながらイメージだけは把握しておく。
 (2012年の内容だからむっちゃ変わってそうだけど。。。)

・勉強したURL(https://dotinstall.com/lessons/basic_aws)

#01 AmazonWebServiceとはなにか

ここでは、以下の内容を実施↓↓↓↓↓↓
Amazon Web Services(AWS)についてその概要、公式サイト、必要となる知識や準備などを解説していきます。またレッスン中に登場する用語について触れています。

・AWSの概要
・公式サイト
・必要となる知識
・必要となる準備
・用語について(EC2、RDS、S3)
↑↑↑↑↑↑↑↑

・AWSは「Amazon Web Services」の略
 Amazon が提供しているクラウドサービスになります。
 今回 AWS の概要、公式サイト、必要となる知識や準備、用語

元記事を表示

ElasticBeanstalk with ALBを簡単に(雑に?)https対応する

## 目的
ElasticBeanstalkが設定してくれるドメイン (*.ap-northeast-1.elasticbeanstalk.com) を、簡単にhttps対応にしたい。

## 結論
自己署名証明書、ACM(AWS certificate manager)を使う

## 手順

### openssl インストール

“`
# Macデフォルトのopensslと、AWSドキュメントで使用されているopenssl差異があるためインストール
brew install openssl
“`

“`
% /usr/local/opt/openssl/bin/openssl version
OpenSSL 3.0.0 7 sep 2021 (Library: OpenSSL 3.0.0 7 sep 2021)
“`

### 自己証明書とプライベートキー生成

“`
# 東京リージョンの場合
# rsa:4096にすると、ALBに載せたときにエラーが起こるので rsa:2048
#
sudo /usr/local/opt/openssl/bin/openssl req

元記事を表示

AWS Day1対応

#はじめに
最近UdemyでAWSの学習を始め、AWSアカウントを作成したのでDay1対応を実施しました。
備忘録として、以下に概要をまとめます。

#Day1対応とは
AWSアカウントを作ったらまずやったほうがいいと推奨されている設定
AWSに足を踏み込んだ者のはじめの一歩

基本的には”セキュリティ”と”請求”についての設定を実施していきます。

#やること
やることは以下の5つ

– MFA(他要素認証)の設定
– パスワードポリシーの設定
– IAMユーザの作成
– CloudTrailの有効化
– 請求アラームの有効化

##MFAの設定
まずは、MFAの設定を実施します。
※MFA = Multi Factor Authentication(他要素認証)

MFAとは、ログイン時にユーザ名・パスワード+αで認証を行う方式のことです。
詳細は割愛します。

AWSではユーザ名・パスワード+ワンタイムパスワードで認証を行います。
ワンタイムパスワードを発行するトークンとしていくつか選択肢がありますが、
Google Authenticatorというアプリを利用できます。
スマホ

元記事を表示

AWS CLIを使ってAMIからEC2をリストアする際に、リストア元のAMIのタグを引き継ぐ方法

#はじめに
今携わっているシステムでは、AWSを使っています。
通常時はEC2インスタンスを東京リージョンで稼働させ、月次でバックアップ(AMI、EBSスナップショット)を取得したうえ大阪リージョンに転送しています。
東京リージョンに大規模災害が発生する際に、大阪リージョンに転送されたAMIから、EC2インスタンスをリストアするためです。

#リストア方法
世の中的にCloudformationやTerraformなどのIaCを活用してリストアする方法が主流になっていますが、おとなの事情により、シェルスクリプトにAWS CLIを叩く処理を記載し、リストア時に実行するというやり方を取っています。
なお、パラメータ等は外部JSONファイルに記載し、AWS CLIコマンドのオプションとして渡すようにしています。

#AMIのタグが引き継がれない問題
AMIからEC2をリストアするには、以下のようにrun-instancesコマンドにAMI IDを渡すという方法を取りますが、このまま実行してもAMIに含まれるタグが引き継がれないので、リストア後に手動でタグを付与するという手間が発生する(一部

元記事を表示

AWS VPCをプライベートサブネットか判定して作成するスクリプト

#普通にVPC作成すると、プライベートサブネットかどうかをバリデーションしてくれない
Amazon VPCはAWS上に構築するプライベートなネットワーク空間のことです。
ですが作成時にプライベートサブネットかどうかをバリデーションしてくれません。:weary:
意図せずパブリックなIPレンジでもVPCを作れてしまいます。
そのためプライベートサブネットか判定して作成するスクリプトを作成してみました。

python3の標準モジュールであるipaddressモジュールが凄く便利です!

# 開発環境
Python3.8.7
#実装
(IAMユーザー作成、aws configureは割愛します)
例:VPCのCIDR 172.32.0.0/24 をboto3testのNameタグで作成しようとするとき

“`python
import boto3
import ipaddress

CIDR = ‘172.32.0.0/24’

def create_vpc(CIDR):
client = boto3.client(‘ec2’)
response = client.c

元記事を表示

【サービス比較】AWSとOCIの主要機能比較

普段私はAWSを中心に開発を担当しているのですが、Oracle DBAということでOCIについて、様々な質問をいただく機会があります。
その中で「OCIってSaaSじゃないの?」、「AWSと同じような使い方はできるの?」といった質問をいただくことがありました。
今回は自身の備忘録も兼ねて、OCIの立ち位置とAWSとのサービス比較を記載させていただきます。

## OCIはOracle CloudサービスにおけるPaas・IaaS
まず、「OCIってSaaSじゃないの」と言った質問についての回答です。
私の認識ではPaaS、IaaSに該当するものと考えています。
元々Oracle CloudとしてはSaaSサービス(Oracle Cloud Applications)が先行していたため
SaaSの認識をもたれている方もいるかと思います。
一般的に現在のOCIは、Gen2と呼ばれる2018年にアーキテクトを一新して新規構築されたPaaS/IaaSサービスのことを指すケースが多いです。

![OCI-XaaS.png](https://qiita-image-store.s3.ap-nort

元記事を表示

Github Actions(IAMロール認証)を使ったLambdaへのデプロイ

#  はじめに
これまでGit ActionsでAWSサービスと連携する場合は、アクセスキーとシークレットキーといったクレデンシャル情報を使っていたが、IAMロール認証で行えるようになったとのこと。

https://dev.classmethod.jp/articles/github-actions-without-permanent-credential/

ということで、IAMロール認証を用いたGithub ActionsのLambda関数デプロイの方法をまとめてみた。

# IAMロールの作成
– 最初に認証に必要なIAMロールの作成を行う。
– 下記のように進めていく。

## IAMポリシーの作成

– IAMポリシーを作成。

“`json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“s3:PutObject”,
“ia

元記事を表示

ControlTower①マルチアカウント環境をセットアップする

案件でControlTowerの検証を行う機会があったので、確認できたことやControlTowerの挙動などについて記事を書こうと思います。マルチアカウントの検証は個人だとハードルが高いので勉強になりました。この記事に添付した画像はは2021年9月時点のコンソールの物となります。タイミングによっては画面のレイアウトや設定項目等変更となっている可能性がある点にご留意ください。

##ControlTowerとは
AWSのベストプラクティスに従ってOUやアカウントを一括設定・管理できるサービスです。
ControlTowerを使用する事で、マルチアカウントへのCloudTrail・Configの有効化やログの集約設定・権限回り・SSOなどが短時間で設定できます。セットアップ後はOUへのアカウントの追加や「ガードレール」と呼ばれる権限や検知などのルール設定も一括で管理できるので、マルチアカウント環境を新規で構築したい場合には活用できるかと思います。
[参考][https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/wh

元記事を表示

Terraformを用いた個人開発環境構築について

# Terraformを用いた個人開発環境構築について

## 前提

・私が担当しているサービスでは、バックエンドにAWSを利用している
・Terraformについてどういったものなのか理解している

## 概要

・サービスの個人開発環境を構築する際に使用しているTerraformについて記載をしています

## 利用することのメリット
* Terraformを用いてIaCを実現しており、他メンバーが改修する際にすぐに対応できるようにもしています
* 新たに開発メンバーが増えた時も構築したソースコードを再利用することで、素早く個人開発環境を構築することができるようになりました
* Terraformを利用する前は構築ドキュメントもなく、もともと作成されていた個人開発環境を確認しながら作成をしていましたが、構築時間の短縮が実現できました

## 利用することのデメリット

* Terraformの知識が必要になるため、環境を構築できるメンバーが偏ってしまいます

* AWSの構築するという作業、プラスTerraformの構築作業が発生するので初期構築時間は増大します。

ただ、個

元記事を表示

AWS LambdaにPythonサードパーティ製ライブラリを入れる

# はじめに

AWS Lambda はサーバレスでイベント駆動型のコンピューティングサービスであり、非常に手軽に使えるサービスとなっている。Amazon S3 のような AWS の他サービスから Lambda をトリガーすることもでき、使い勝手が良いのだがサードパーティ製ライブラリを扱う際にはひと手間かかってしまう。そこで本記事では、Python のサードパーティ製ライブラリを Lambda で扱うための方法を紹介する。[How to use external libraries in Lambda Function](https://wakeupcoders.medium.com/how-to-use-external-libraries-in-lambda-function-df1cee4a7c3a)、[Managing external libraries in AWS lambda functions](https://dev.to/alim1496/managing-external-libraries-in-aws-lambda-functions-1g0m) を参考にし

元記事を表示

OTHERカテゴリの最新記事