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

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

AWS Systems Manager、Lambdaを使ってS3のファイルをEC2(Windows)内にダウンロード(同期)してみた。

#概要図
Lambda ⇒ Systems Manager ⇒ EC2 ⇒(同期コマンド)⇒ S3

▼参考(にさせていただきました!)
https://dev.classmethod.jp/articles/lambda-s3-ec2-windows-sync/

#作業ステップ
▼前提
・S3にバケットを作成し、ファイルをアップロード済み
###①IAMロールを作成(EC2用)
AmazonEC2RoleforSSM
※上記権限は範囲が広いため、別のポリシーへの移行が推奨されていますので、
 仕事で使用する場合は下記ページをご確認いただければと思います。
 https://dev.classmethod.jp/articles/check-amazonec2roleforssm-policy/
###②EC2インスタンス作成(windowsサーバ ※ami-038c59e921e8b9c7d 使いました)
ロールに”①”をアタッチ
⇒SystemsManagerでEC2のオペレーションができるようになる
※SSMエージェントはデフォルトでインストールされていました。
###③IA

元記事を表示

AWS CDK テンプレート集

#はじめに
AWS CDKを使ってバックエンドテンプレートを作ったので、備忘を兼ねていくつか紹介をしようと思います。

#目次
– とりあえずAPIを作りたい人用(API Gateway + Lambda)
– プロトタイプを作成したい人用
– 認証機能付きでアプリを作成したい人用
– まとめ

#1. とりあえずAWS上でAPIを作りたい人用(API Gateway + Lambda)
### ソースコード
以下のGitHubのリポジトリに保管してあります。
READMEに従ってデプロイをすれば上のようなリソースがAWS上で立ち上がります。

>>https://github.com/NagataRyuji0630/aws-cdk-create-api

stackファイルの内容だけ見たいという人のために、以下にコードを記載しておきます。

“`aws-cdk-create-api-stack.ts
import * as cdk from ‘@aws-cdk/core’;
import { Function, As

元記事を表示

アルバムコレクションの脆弱性

# 執筆背景
アルバムコレクションという画像共有サイトがあるのだが恐らく作者の意図に反して、__誰でも(ユーザ登録していなくても)__ファイルをダウンロードできてしまう。
AWSの認証周りが問題なのだが、勉強する上で良い題材なので何がまずいのかを解説する。
※執筆時点9/20の状況です
# 記事の中身
– 認証なしでファイルをダウンロードする手順の解説
– 何がまずかったのかの解説
– 改善案の提示

# 認証なしでファイルをダウンロードする手順の解説
### 想定環境
windows10
### 使うツール
– git for windows (https://gitforwindows.org/)
– Google Chrome(ブラウザhttps://www.google.co.jp/chrome/)

### 手順
1. git for windowsをインストールする(選択肢は全てデフォルトでOK)
2. Google Chromeをインストールする
3. Google Chromeでアルバムコレクションにアクセスする
4. ログインせずに受け取る画面でIDを入力して受け取る

元記事を表示

AWS認定12種を取得したので勉強法を紹介してみる

# はじめに

先日、2020年9月時点で受験できる AWS 認定の12冠を達成したので、自分も勉強法を紹介してみることにしました。

勉強法を調べてみると、Black Belt やホワイトペーパー、公式クラスルームトレーニング、AWS パートナーのトレーニング、書籍など、多くの方法が出てきます。選択肢が多いのはありがたいですが、それはそれで、どれから始めればいいのかとか、どこまでやればいいのかとかを考えると、なんとなく面倒になってしまう人もいるのではないでしょうか。

私自身、アソシエイト系を取得したところで勉強法に困り中断していましたが、[Whizlabs](https://www.whizlabs.com/) というサイトに全認定の問題集があることを知り、主にこれと Black Belt を使って勉強を再開してみることにしました。結果的に良いペースで認定の取得ができたので、この問題集と勉強法を紹介してみようと思います。

# 対象者
AWS をそれなりに使っていて、これから認定試験を受けようと考えている方が対象です。

なお、紹介する Whizlabs の問題集はすべて英語なので

元記事を表示

Java で Amazon Product Advertising API 5.0 (PA-API v5) をコールする

## 概要

– Java で Amazon Product Advertising API 5.0 (PA-API v5) をコールする
– AWS が提供している公式の SDK を使わず API を直接コールする
– AWS 署名バージョン 4 (AWS Signature Version 4) の処理を Java 標準ライブラリのみで実装する
– 今回の実行環境: macOS Catalina + Java 15 (AdoptOpenJDK 15) + Jackson Databind 2.11.1 + Gradle 6.6.1

## サンプルコード

### ファイル一覧

“`
├── build.gradle
└── src
└── main
└── java
├── AwsSignature4.java
├── JsonUtil.java
├── MyApp.java
└── PaApi5Wrapper.java
“`

### build.gra

元記事を表示

Amazon Product Advertising API 5.0 (PA-API v5) の SDK (paapi5-java-sdk-1.0.0) を使う

## 概要

– Java から Amazon Product Advertising API 5.0 (PA-API v5) を使用する
– API を直接コールせず AWS が提供している公式の SDK (paapi5-java-sdk-1.0.0) を使用する
– 今回の実行環境: macOS Catalina + Java 8 + Gradle 6.1

## paapi5-java-sdk-1.0.0 のダウンロード

paapi5-java-sdk-1.0.0 は Maven Central Repository などで配布されていないため、 jar ファイルをダウンロードして使う。

[Using SDK · Product Advertising API 5\.0](https://webservices.amazon.com/paapi5/documentation/quick-start/using-sdk.html) から paapi5-java-sdk-example.zip をダウンロードして展開する。

sdk ディレクトリには paapi5-java-sd

元記事を表示

AWS IAMでユーザーを作成しよう

[AWSのアカウントを作ろう](https://qiita.com/hagaji/items/31717950902c2d8477e4)でアカウント作成するとルートアカウントだけ作成されます。ここでは、作成したAWSアカウントのIAMでユーザーを作成してみましょう。

# IAMユーザーをなぜ作成するのか
別な記事にも書きましたが、ルートアカウントは、Administrator権限を有する非常に強力なアカウントであるため、開発や運用時には制限したIAMユーザーアカウントで操作することが推奨されます。
誤操作することを防ぐ目的があり、また、操作する人やプログラムへユーザーやロールを割り当てることで誰が操作をおこなったのか?という証跡を残す目的もあります。
(と書いたけど、少し雑な言い方かもしれない。あとで書き直す)

# この記事で行うこと
AWSのIAMユーザーを追加する。

# 事前に決めておくこと
AWSでは、ユーザーへ様々な権限を付与することができます。そのため、ユーザーへ付与する権限を事前に決めておく必要があります。

#### 権限付与でオススメする方法
IAMでグループを作

元記事を表示

Pythonで天気予報botもどきを作ってみた。

#Pythonで天気予報botもどきを作ってみた。
タイトル通りPythonで天気予報botもどきを作ってみました(botではないです)。
天気予報を確認することすらめんどくさがってしまう性格で「LINEで送れたらなー」と思っていた所、既に先人の方達がやっていたので、知恵を借りながら(ほぼパクリながら)作ってみました。
##やったこと
・スクレイピングでYahooの天気情報を取得
・スクレイピングで取得した情報をLINE Notifyで表示
##準備
###必要なライブラリのインストール
“`
$pip install beautifulsoup4
$pip install requests
“`
###トークンの取得
[LINENotify](https://notify-bot.line.me/ja/)でトークンを発行しておきます。
##コード
“`Python
import urllib.request
import requests
from bs4 import BeautifulSoup

line_notify_token = ‘xxxxxxxxxxxxxxxxxx

元記事を表示

【Athena】既存データをPartition分割する

## 今使っているデータをPartition分割したい
Athenaで利用しているデータが拡大していき、費用削減・速度向上を狙ってPartitionでデータを分割したくなることがあると思います。
初期からデータを分けていた場合は問題がないのですが、何も考えていなかった場合、1ファイルまたは1ディレクトリ(S3にディレクトリはありませんが便宜上ディレクトリと表現します)に全てのデータが入っていることがあります。
この際、CTAS(CREATE TABLE AS SELECT)クエリで分割、というかデータを再構築します。

## 分割例
少し長いですが以下のようなデータを用意します。

| id | name | team_id |year|
|:———–|:————|:————|:————|
|1|佐藤|2|2019|
|2|高橋|2|2019|
|3|近藤|3|2019|
|4|田中|1|2019|
|5|山田|2|2019|
|6|野村|4|2019|
|7|河合|2|2019|
|8|五十嵐|1|2019|
|9|川端|

元記事を表示

AWSのEC2でrootになれなくなった場合の対処方法

ubuntuユーザーのsudoers設定を変更してしまい、スーパーユーザーになれなくなった場合の対処法

1. AWSマネジメントコンソールにログインする
2. EC2を開く
3. インスタンスを選択する
4. インスタンスを停止する(停止時に削除されないように注意)
5. 「アクションメニュー」の「インスタンスの設定」→「ユーザーデータの表示/変更」を選ぶ
6. ユーザーデータに下記を記入

#cloud-config
bootcmd:
– echo “ubuntu ALL=(ALL:ALL) NOPASSWD:ALL” >> /etc/sudoers
7. 「保存」を押した後、インスタンスを起動する
8. ubuntuユーザーで、パスワードなしで「sudo su -」が出来るか確認
9. 出来ることが確認出来たら、インスタンスを停止し、ユーザーデータに記述したものを削除
10. インスタンスを起動

以上。

元記事を表示

AWS QuickSightに関して

### AWS QuickSightとは?
AWS QuickSightとはサーバーレスでフルマネージドなBIサービスになります。S3にあるデータはもちろんのことRDS,Athena,Redshift、オンプレミスにあるJDBC接続(JDBC:javaで書かれたプログラムとデータベースの仲立ちをするもの)可能なデータベースのデータなどと連携して可視化を行うことが出来る。SPICEというインメモリ型の高速データベースが内蔵されており、そこにデータを取り込んでおくとデータソースに負荷をかけることなく高速なクエリが可能になる。

### QuickSightを実際に使用してみた。
まずはCSVファイルをアップロードします。新しい分析というところをクリックし「新しいデータセット」→「ファイルのアップロード」を選択し分析したいデータをアップロードします。
![2020-09-25 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676443/7935f18e-623c-970d-6fbe-e5a59812

元記事を表示

EBSのファーストタッチペナルティをくらったときに反省したこと

小ネタ。

久々に[ファーストタッチペナルティ](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-initialize.html#ebs-initialize-linux)をくらって反省したので、
ポストモーテム的なものをまとめます。
出せる部分だけ。

## 発生事象

#### 概要

ファーストタッチペナルティによるレスポンスの遅延及びエラーの発生

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143313/c2cea9c9-c2d8-9ff7-c026-bb4b95c6071e.png)

ELBの平均レスポンスタイムとパーセンタイルのグラフ。
紫の線がレスポンスタイム。
ほとんどのリクエストのレスポンスタイムが悪化している。

#### 詳細

1. あるwebサーバのネットワークの帯域が不足し始めたので、スケールアウトすることで対処しようとした。
2. ディスクの高IOが必要で、オートスケールは設定

元記事を表示

AWSルートアカウントへMFAを設定する

[AWSのアカウントを作ろう](https://qiita.com/hagaji/items/31717950902c2d8477e4)で作成したルートアカウントへMFAを設定します。

# なぜMFAをおこなうのか
ルートアカウントは、Administrator権限を有する非常に強力なアカウントなので、セキュリティを向上させるためにMFAを設定することが推奨されています。

# ここで行うこと
AWSのルートアカウントの多要素認証へ`仮想MFAデバイス`を設定する。

# MFAを設定する手順
1. AWSコンソールへログイン
2. `マイセキュリティ資格情報`へアクセス
3. `セキュリティ認証情報`で多要素認証(MFA)を有効化する
4. 設定するMFAデバイスを選択する
5. `仮想MFAデバイスの設定`をおこなう
6. `セキュリティ認証情報`で多要素認証(MFA)が有効化されたことを確認する

## AWSコンソールへログイン
ルートアカウントへログインし、AWSコンソールを表示します

![スクリーンショット 2020-09-25 11.51.45.png](https:

元記事を表示

AWSって何?

生徒 ジョン:relaxed:
講師 先輩:frowning2:
  

ここで登場するのは、

プログラミング歴なしのジョン(主人公)。

AWS講師の先輩。

ジョンが一人前のAWSエンジニアになる物語です。

インフラって何??それ美味しいの???

って方に向けて、極力わかりやすくAWSを紹介していきます。
____________________________________________

ジョン
「インフラって言葉聞いたことあるんだけど、ネットにおけるインフラってなんっすか?」

先輩
「そんなの自分で調べろ。ググったら出てくる」

ジョン
「え?わからないんですか?www」

先輩
怒。。
「生活や仕事などを営む上で不可欠なものあるだろ(公共の福祉のため整備・提供される施設)。水道とか道路とか」
「ネットでもこの土台部分が整備されてないとコンテンツすら見れないって訳だ」
「だからネットにおけるインフラとは、主にサーバーやストレージやネットワークのことを指すんだ」

ジョン
「おお。わかりやすい。」
「じゃあ。クラウドってなんですか?」

先輩
「雲だよ!!!!!

元記事を表示

S3バケットをOrganizations内全アカウントにアクセス許可

S3バケットをAWSアカウントを超えて共有したい、Organizatins内の全AWSアカウントに共有できるとなおよいとおもったので、方法を確認してみました。

# S3バケットのクロスアカウントアクセス

まず別のAWSアカウントの特定のIAMユーザーにアクセスを許すところから。

ここでは簡単な「[別の AWS アカウントのユーザーに、オブジェクトを S3 バケットにアップロードするアクセス権を与える](https://aws.amazon.com/jp/premiumsupport/knowledge-center/s3-cross-account-upload-access/?nc1=h_ls)」を試します。このドキュメントは下図のように、S3アクセスを実現するためにIAMポリシーとバケットポリシーを設定する、という内容になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55718/f707c90d-963e-e3d4-76db-ab39f1ee35a8.png)

元記事を表示

VPC エンドポイントへのアクセス許可は SourceIp ではなく VpcSourceIp を利用する

# 概要
VPC エンドポイントを設定した AWS サービスへの IP アドレスによるアクセス許可は SourceIp ではなく、VpcSourceIp を利用する必要があります。

# 詳細
## 前提条件
S3 の特定のバケットに対して VPC エンドポイントを利用していると仮定します。

その S3 に対しては次のようにパブリックなアクセス許可を与えています。

“`json
{
“Version”: “2012-10-17”,
“Id”: “Policy156583539788”,
“Statement”: [
{
“Sid”: “Stmt156583536527”,
“Effect”: “Allow”,
“Principal”: “*”,
“Action”: “s3:GetObject”,
“Resource”: “arn:aws:s3:::bucket/*”,
“Condition”: {

元記事を表示

CloudFrontとLambdaでBasic認証設定してみた

こんにちは
「あつまれどうぶつの森」のためにswitchの販売抽選に応募するが当たらず「あつもり」ブームも過ぎていたことに最近気付いたstreampackのrisakoです:girl_tone1::koala:
そして9月も後半!だんだん涼しくなってきて過ごしやすくなってきましたね!

今回のテーマは「Basic認証」です:dizzy:
これまでなかなか触れることがなかったので、初めて設定してみた記念にQiitaに残そうと思います。
#Basic認証とは?
Web上で利用できる認証システムのことです。
Basic認証が設定されているページにアクセスすると、ブラウザ上に**ユーザー名とパスワード**を入力するポップアップが表示されます。
私はBasic認証を意識する前に数回web上でみたことがあるので、多くの人が見たことがあるのではないでしょうか?

Safariだとこのようなポップアップが出てきます!
![スクリーンショット 2020-09-16 13.17.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co

元記事を表示

EC2上のwebサーバをSSL化対応

## 今までの準備

– [Route53でホストゾーンの作成](https://qiita.com/miyuki_samitani/items/0d595ea63b805de1ffa1)
– [EC2インスタンス作成~ログインまで(画像つき)](https://qiita.com/miyuki_samitani/items/2ace2bb5d7874f919676)
– [EC2インスタンス(CensOS7)をwebサーバとして起動しドメインで表示させる](https://qiita.com/miyuki_samitani/items/01d5865864c0f7d5b723)
– [EC2インスタンスのIPアドレスを固定させる](https://qiita.com/miyuki_samitani/items/d9aa05ca8f72a013ce57)

## 今まではSSL化対応していなかった?

以下の画像を見ていただければわかると思いますが、
鍵のマークに赤い斜線がひかれています。
これは安全ではない通信、いわゆるSSL化対応が出来ていないということになります。

![無題 –

元記事を表示

CodeDeployのIn-Place Deploymentでハマったときの対応

# はじめに
AWSを使っているとCodeDeployを利用してデプロイすることがあると思います。
CodeDeployのIn-Place Deploymentでデプロイしたときにハマった点がありましたので、ハマった内容と対処方法を紹介します。

# ハマった内容
In-Place Deploymentは、稼働中サーバーに対して直接新しいアプリケーションをデプロイする方法です。
デプロイ先のサーバーのストレージ容量によりますが、何度かデプロイを行っているとストレージ容量を使い切ってしまい、デプロイを行っても失敗を繰り返しました。

# 原因
CodeDeployエージェントは、**/opt/codedeploy-agent/deployment-root/**配下にリビジョン、デプロイメント履歴、デプロイメントスクリプトを保存していました。そのため、デプロイを何度も行うと過去のデプロイメント履歴が残りストレージ容量を使い切っていました。
**/opt/codedeploy-agent/deployment-root/**配下のディレクトリ構成については、[Working with th

元記事を表示

GCPとAWS どっちがいい

#重要なこと
僕は、インフラメインの人間ではないです。
ポエムだと思ってください

#主観の感想
インフラ専門の方はAWSを使われるイメージが強いです
今までの知見とかが溜まっているとかがあるんでしょうか
自分の周りは会社ではAWSを使っているとよく聞く気がします
でも最近GCP勢が増えてきてる気もします
kubernetesとか機械学習が影響しているんでしょうか

個人的にはドキュメントと操作性でGCPのが使いやすく感じました
あとCIとの連携もGCPのがやりやすかったです
慣れの問題だと思いますが、、

特に機械学習をやるときにSageServerとTensorflow周りが使いにくかった印象です
料金面の優越は正直分かりませんが、ある程度のアクセス数が無い限りはどっちでもいいのではと思える額でした。
個人開発で使う分ではGCPの永久無料枠と最初の3万円無料は大きかったです

GCPのai-platformはかなり安いので、colabとか使ってる人は試しに使ってみてもいいかもしれません

僕は最初AWSだったんですけど、機械学習があってGCPに乗り換えました

元記事を表示

OTHERカテゴリの最新記事