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

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

AWS クラウドプラクティショナー 単語

自己学習用メモ

【ユーザ】

AWS マネジメントコンソール

アカウント登録して最初に利用するGUI

AWSマネジメントコンソールを利用する際に、ユーザーIDとパスワードによるログインを実施

IAM AWS Identity and Access Management

アクセス権限管理を行うサービス

各開発者に対してAWSリソースの利用を制御できるサービス

IAMポリシー

最小限のアクセス権として、タスクの実行に必要なアクセス許可のみ付与

IAMユーザグループ

「1000人などの多数のユーザーがいる会社などで各部署ごとにアクセスする場合に有効」

オンプレミス環境では運用チームがID管理をし、AWSで同じ役割を実行するのに役立つサービス

MFA

多要素認証

「ログインするときに、ユーザー名とパスワードに加えて、高いセキュリティ」

EC2 for MySQL

管理はユーザーにゆだねられる

AMI(Amazon マシンイメージ)

EC2インスタンスのイメージを取得して、そのイメージから新しいインスタンスを作成   

さまざまな設定のインスタン

元記事を表示

AWS認定 ソリューションアーキテクトアソシエイト(SAA)に合格するまで

AWS認定**ソリューションアーキテクトアソシエイト(SAA)**に合格しました。合格までの道のりを記録しておきます。

※この記事ではオンライン試験の詳細など、クラウドプラクティショナーの記事と重複していて、不要な箇所は省略してあります。
https://qiita.com/hiyanger/items/a36c6a20e4a8876b737f

###概要
・AWSの**中級**の試験で、**アーキテクト**の他には**デベロッパー**、**運用**と全3種類ある。
・アーキテクトなので**設計分野**がメインの試験です。
・受験料は**15,000円**
・試験時間は**140分**
・出題数**65問**
・合格は0~1000点間で**720点以上(72%以上)**
・合格率は**50%程度**(実際の数値なしなので噂レベル)
・受験はピアソンかPSI(オンライン受験可能)

###予備知識
AWSへの移行や、既存AWS環境の保守などを片手間レベルでやったりしてたので、若干知識はありました。EC2、RDS、ELB、S3等主要なシステムはざっくり把握していた感じです。また、クラウ

元記事を表示

Serverless入門で作りたいと思っている簡単なサービス

# 書き始め
まず最初に記事にしてしまえば、やるであろうという願望のもと、書き始めています。

# 目標
AWSの以下のブログから、1日に1度、スクレイピングしてきて、新しいブログが発見できたら、そのブログのタイトルとURLを一緒に自分のアカウントにツイートさせる。
https://qiita.com/bakira/items/00743d10ec42993f85eb

以下のアーキテクチャを目指します。
![Architecture.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593337/1c2a8e88-1972-39e8-3bdd-8593148acfa5.png)

# 環境
– MacOS 11.6
– VisualStudio Code
– Python3.9
– Serverless Framework 2.65.0
– エンジニア二年目

# 参考にするサイト
– Tweeter APIの使い方:

https://qiita.com/bakira/items/00743d10ec

元記事を表示

CloudFront単体でレスポンスヘッダを付与できるようになった!!(Lambda@Edgeなしでのレスポンスヘッダ設定)

今までCloudFront+S3で公開しているシステムはレスポンスヘッダを付与したい場合にLambda@Edge等で設定してやる必要がありました。
しかし、今回のリリースでCloudFrontだけでレスポンスを付与できるようなったらしいので、調べてみました。

https://aws.amazon.com/jp/about-aws/whats-new/2021/11/amazon-cloudfront-supports-cors-security-custom-http-response-headers/

# レスポンスヘッダーポリシーについて

ポリシーメニューから`レスポンスヘッダー`を選択します
デフォルトでいくつか登録されているのが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/325108/7f81bc36-4d90-94b8-4b65-cd8272df8455.png)

### デフォルトで登録されているポリシーを開いてみる

デフォルトで登録されているポ

元記事を表示

プライベートなEC2にSSMセッションマネージャーで接続してみた

AWSのセキュリティ関連の話で、
「EC2やRDSはプライベートサブネットに配置しましょう」
という話がよく出てきますが、プライベートなEC2へのアクセスにはプラスαの作業が必要です。
NATゲートウェイを使用するという方法がありますが、今回はSSMセッションマネージャーを使用したプライベート接続をやってみたいと思います。

# 構成図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1162215/b5d43e4f-550a-d039-81dd-37502aa1eb3d.png)

## 軽く説明
やることは結構シンプルです。
1. EC2にアタッチするIAMロールを作成する
2. プライベートサブネットにEC2インスタンスを構築する
3. VPCにプライベートリンクを設置する
4. SSMセッションマネージャーでEC2インスタンスに接続する

# 前提
– VPCは`10.0.0.0/16`で作成済み
– DNSホスト名の解決を「有効」に変更しておく(デフォルトでは無効)
![imag

元記事を表示

CloudFormationで出会ったエラー集【随時更新】

###Circular dependency between resources: [xx,yy,zz]

循環依存でループになってしまい発生するエラー。
回避するには下記を追記

“`yml
Transform: AWS::Serverless-2016-10-31
“`

https://aws.amazon.com/jp/premiumsupport/knowledge-center/cloudformation-circular-dependency-sam/

ただ、IAMが関わると少し注意が必要らしい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469267/d71a332f-c29c-1cef-ced8-8379fc7ffcc9.png)

####Template format error: Every Default member must be a string.

パラメータの値として関数は使えないみたいなので、文字列リテラルにし解決。
また、下記の

元記事を表示

はじめてのAWS CloudFormation -S3バケット作成編-

# はじめに
AWSのCloudFormationに対して、なんとなくとっつきにくいイメージを持っていたので、手始めによくある設定のS3バケットをテンプレート化してみました。

# CloudFormationテンプレート作成環境を整える
VScodeでCloudFormationテンプレートを書くにあたって、以下の記事を参考に環境を整えました。

– 参考記事:[DevelopersIO:VS Code拡張機能を追加してCloudFormation開発環境をレベルアップする](https://dev.classmethod.jp/articles/20211008-vscode-extention-settings/)

拡張は”CloudFormation support for Visual Studio Code”と”cfn-lint”のみ導入しました。”pydot”と”indent-rainbow”は現状必要なさそうだったので導入していません。

# S3バケットのパラメータ設計
作成するバケットのパラメータを一度GUIベースで考えてみます。
AWSインフラ環境を新規構築する

元記事を表示

terraform でVPCなどを作る

参考

https://qiita.com/gogo-muscle/items/58fee5760400ff1bc602

【Terraform】awsのprofileの認証情報で403エラーが出る

前提

Windows10 WSL Ubuntu
terraform
aws cli
導入済み

手順

①作業ディレクトリを作成する。参考サイトのようにファイルやフォルダを作成する
②treeコマンドを入っていなかったらインストールする
③terraform.tfvars を作成する
④main.tf を編集する
⑤terraform init
⑥terraform plan
⑦terraform apply

AWSコンソール上で作成されていること確認する

元記事を表示

Amazon Redshift Data APIを使ったETL

# はじめに
始めまして、株式会社ジールの@KimiyukiMuramatsuです。
AWSを使ったデータ分析基盤の構築を業務としております。
その中で得たノウハウをQiitaを通して発信していきたいと思います。

Lambdaを使って、S3上のファイルに対してETL処理を行い、Redshiftにロードする方法を検討しておりました。

Redshift Data APIを使って実現できると考え、検証してみました。

Redshift Data APIを使うことで、LambdaからRedshiftのSQLを呼び出すことができます。
SQLを使えれば、Redshift Spectrumにより、S3上のファイルをETL処理してからRedshiftのテーブルにロードできます。
(Insert Into Select From ~ )
# 検証したいこと
* Redshift Data APIを使って、LambdaからRedshif

元記事を表示

[aws,alb]Health checks failed with these codes: [500] の解決例

## 何があった?

ecs(fargate)をalbで負荷分散させるようなアーキテクチャ設計での環境構築をした際、何度ECSをたててもALBがタイトルのエラー文でunhealthyになってしまう現象が起きていました。

## 原因
albの設定ではなく、laravelのAPP_KEYの登録ミスでした。

具体的には`base64:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=`と登録しなければいけないのに`XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=`と登録しておりました。

結果phpのコンテナが立ち上がってすぐもエラーで削除されてしまい、結果としてロードバランサーの方でエラーとなって現れておりました。

## 解決策
環境変数の部分を修正することで解決しました。(筆者はSystemManagerのParameteStoreに保存していたのでその中の値を修正しました。)

## 類似エラー解決の考察
エラー文が500やTarget.FailedHealthChecksのように具体的な原因が出てい

元記事を表示

CdkPipelineで静的Webホスティング環境(CloudFront/S3)を構築。

# CdkPipeline

## CdkPipeline is 何?

CDKの登場によりコードベースでAWSリソースを管理できるようになった。
しかもCloudFormationのような形式ではなく、typescrictやpythonなどの慣れ親しんだ言語でそれらを記述できるためメンテナンスコストを抑えられる。
コードベースで管理できるというとこは、git管理が効くということであり、そうなると人はCICDパイプラインに乗せ込みたくなるものである。
しかし、CdkPipelineのGA以前にCodePipelineでそれをやろうとすると、CodeBuildの中で自前で色々しないといけなかったり、そもそもそのPipeline自体はCICDに載せられないので別管理になる等課題があった。

## 触ってみる

2021/7にGAしたCdkPipelineを使って、以下の超入門構成を管理してみる。

https://dev.classmethod.jp/articles/aws-cdk-101-typescript/

その上で最終的にはCloudFront-S3のあるあるな静的Webホステ

元記事を表示

小ネタ/Flutter で AWS S3 へのアクセスに minio を使う

Flutter で AWS のサービス・リソースにアクセスするときに使うライブラリは、公式には Amplify Flutter に集約されてきており、S3 へのアクセスも **[amplify_storage_s3](https://pub.dev/packages/amplify_storage_s3)** を使うのがスタンダードです。

ただ、アプリケーションで内部的なデータバックアップ目的に S3 を使うなど、

– Cognito の認証は必要ない
– かといってゲストアクセス可能な状態では使いたくない
– アクセスキー・シークレットアクセスキーで手軽に使いたい

というニーズには合いません。

そのような場合に使える Flutter のライブラリもいくつかあるようですが、今回は S3 互換ストレージとして有名な Minio の非公式クライアントライブラリ **[minio](https://pub.dev/packages/minio)**(3.0.0)を使ってみました。

※こちらのアプリケーションに組み込んで使っています。

– **[hmatsu47/map

元記事を表示

AWS CloudFormationのテンプレートを作成する時はAWS CLIのdescribeを使う

# はじめに

AWS CloudFormationのテンプレートを作成する時はAWS CLIのdescribeを使うととても作業が捗る。

普段、コンソールでリソースを作成するとテンプレートの引数で何を与えればよいか分からないが、AWS CLIで既存リソースに対しdescribeすると一発でテンプレートの引数が分かる。

# やり方

1. AWS CloudShell を開く。AWS Console(トップページ)の右上 `>_` を四角で囲んだマークをクリック。
1. 作成したいリソースに対して、`aws xx describe-xx –output yaml`
1. CloudFormationのリファレンスを見ながら、出力されたyamlのうち必要なものを抽出する。引数の先頭が大文字でない場合があるため注意する。

CloudFormationのリファレンス

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html

AWS CLIの

元記事を表示

AWS DNS の基本

DNS(Domain Name System)
==========
ここでは AWS ではなく、一般的なDNSの役割を記載します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597898/3b628e46-3ad7-6516-cefc-334a17532f74.png)

– ***Name Server***
クライアントから FQDN を探索し、自身が名前解決を行うサーバーを示します。

– ***Full Serivice Resolver***
ネームサーバーからの応答をクライアントに返す役割を示します。

– ***Stub Resolver***
フルサービスリゾルバーに名前解決の実行を委ねるリゾルバーです。
DNSクライアントとして名前解決を要求する側に位置しており、要求に対して応答を受けます。

– ***Forwarder***
要求を受け取った際に、ルールに沿って、中継する役割を示します。
ネームサーバーへ辿る反復問合せの機能を持たないため、常に再帰的問

元記事を表示

AWS CloudWatch Logsのput log eventsとメトリクスフィルターで簡易的な監視

# はじめに
AWS CloudWatch Logsのput-log-eventsでCloudWatch Logsへログを送り、メトリクスフィルターでログの内容を監視します。

CloudWatch Agentでログを送信した方が素直な実装です。

# put-log-events

参考

https://dev.classmethod.jp/articles/put-cloudwatchlogs/

`put-log-events` を行う時のBashスクリプト

“`bash
#!/bin/bash –

readonly PROCNAME=${0##*/}
function log() {
local fname=${BASH_SOURCE[1]##*/}
echo “$(date ‘+%Y-%m-%dT%H:%M:%S’) ${PROCNAME} (${fname}:${BASH_LINENO[0]}:${FUNCNAME[1]}) $@”
}

export SERVICE_NAME=$1 # hello_world.service
# CloudWatchLo

元記事を表示

【最速?】GoとEC2で「Hello, World!」

## やりたいこと
GoとEC2を使って、ブラウザでHello, World!するだけです。
こちらの記事を大変参考にしました。
https://qiita.com/Dragon-taro/items/09a67b93093770348ce5

ローカルにGoは既にインストールされている前提です。
ちなみに、僕のGoのバージョンは1.16.6でした。

## Goアプリの作成
ファイル構成

“`
.
└── main.go
“`

“`go:main.go
package main

import (
“fmt”
“log”
“net/http”
)

func main() {
http.HandleFunc(“/”, func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, “Hello, World!”)
})

log.Fatal(http.ListenAndServe(“:8080”, nil))
}
“`
## EC2の作成
以下、コンソール画面をポチポチしてEC2を作成する。

|

元記事を表示

【超初心者向け】5分でAWS Lambda + API Gateway でRest APIを作る

# 作ったもの

![](https://github.com/nmasashi/qiita/blob/main/lambda/apigateway_lambada/images/lambda.png?raw=true)

ただ、以下の json を返すだけの RestAPI です。
AWSを最近勉強し始めたよちよち歩きのエンジニアの第一歩です:v:

“`json
{
“statusCode”: 200,
“body”: “\”Hello from Lambda!\””
}
“`

# 手順

用意するもの

– AWS アカウント

## lambda 関数作成

1. 任意のアカウントでログイン
1. [Lambda 関数一覧](https://ap-northeast-1.console.aws.amazon.com/lambda/home?region=ap-northeast-1#/functions)にアクセス
1. 「関数の作成」をクリック
![](https://github.com/nmasashi/qiita/blob/main/lambda/api

元記事を表示

AWS CLIの設定の仕方(アクセスキーIDとシークレットアクセスキーの取得編)

AWSにポートフォリオをデプロイするためにCLIの設定を行いました。

AWSのconfigure(設定)には
・アクセスキーID
・シークレットアクセスキー
・AWSリージョン
・出力形式
上記の4つの情報を入力しなければなりません。

まずIAMのIdentify and Access Manegementのユーザーを開き、ユーザを選択して、認証情報のタブを選択し、アクセスキーを作成のボタンをクリックします。そしてMFAデバイスの割り当ての管理をクリック。
MFAデバイスの管理で仮装MFAデバイスにチェック入れ、続行。

そうするとQRコードを表示することができるので、それをスマホのauthenticator (googleの認証システムなど)を使って読み取ります。

そうすると6桁の数字が一定時間おきに表示されるので、そのコードをMFAコードに入力します。(入力するMFAコード欄は二つあるのですが、同じコードは打ち込まないでください。)

元記事を表示

Cloud9環境へDockerのインストール方法 コンテナ起動

## 概要

前回作成したCloud9の環境でとりあえずdockerをインストールしてコンテナを起動してみます。コンテナは[こちら](https://qiita.com/mongamae-nioh/items/7525be957f4e5e10d403)のAdventCalendarを作成してみます。

## Dockerインストール
### Cloud9へのDockerインストール
* 以下のコマンドでDockerをインストールします。
* インストールされていた場合はスキップします。

“` shell
docker -v
sudo yum install -y docker
“`
* 以下のコマンドでdocker composeもインストールしておきます。

“` shell
sudo curl -L “https://github.com/docker/compose/releases/download/1.27.0/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
sudo c

元記事を表示

ポートスキャンサンプル(python 3.8 on aws-λ )

メモリは1GB推奨。がっつりスキャンするので、要チューニングして利用のこと。

“`python
import json
import socket
import random
from multiprocessing import Process, Pipe
import urllib.request

#向き先
TARGET_HOST=’hogehoge.com’

#通知先WEBHOOK
webhook = “https://discord.com/api/webhooks/9999999999999999/hogehoge”

#生成するスレッド数:CONNECTION多重度と同義。400辺りでファイルディスクリプタ関連エラー
THREAD_MAX=300
#検査レート:何%のポートを検査対象とするか。0.3の場合、検査ポートの30%をScan対象とする
#TODO:アホほど回るのでチューニングすること
SCAN_RATE=0.3
#タイムアウト:socketのタイムアウト時間(秒)。0.3くらいで検査できそう
SOCK_TIMEOUT=0.3

def portscan(

元記事を表示

OTHERカテゴリの最新記事