- 1. AWS Systems Manager、Lambdaを使ってS3のファイルをEC2(Windows)内にダウンロード(同期)してみた。
- 2. AWS CDK テンプレート集
- 3. アルバムコレクションの脆弱性
- 4. AWS認定12種を取得したので勉強法を紹介してみる
- 5. Java で Amazon Product Advertising API 5.0 (PA-API v5) をコールする
- 6. Amazon Product Advertising API 5.0 (PA-API v5) の SDK (paapi5-java-sdk-1.0.0) を使う
- 7. AWS IAMでユーザーを作成しよう
- 8. Pythonで天気予報botもどきを作ってみた。
- 9. 【Athena】既存データをPartition分割する
- 10. AWSのEC2でrootになれなくなった場合の対処方法
- 11. AWS QuickSightに関して
- 12. EBSのファーストタッチペナルティをくらったときに反省したこと
- 13. AWSルートアカウントへMFAを設定する
- 14. AWSって何?
- 15. S3バケットをOrganizations内全アカウントにアクセス許可
- 16. VPC エンドポイントへのアクセス許可は SourceIp ではなく VpcSourceIp を利用する
- 17. CloudFrontとLambdaでBasic認証設定してみた
- 18. EC2上のwebサーバをSSL化対応
- 19. CodeDeployのIn-Place Deploymentでハマったときの対応
- 20. GCPとAWS どっちがいい
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 BeautifulSoupline_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-e5a59812EBSのファーストタッチペナルティをくらったときに反省したこと
小ネタ。
久々に[ファーストタッチペナルティ](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.coEC2上の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 thGCPとAWS どっちがいい
#重要なこと
僕は、インフラメインの人間ではないです。
ポエムだと思ってください#主観の感想
インフラ専門の方はAWSを使われるイメージが強いです
今までの知見とかが溜まっているとかがあるんでしょうか
自分の周りは会社ではAWSを使っているとよく聞く気がします
でも最近GCP勢が増えてきてる気もします
kubernetesとか機械学習が影響しているんでしょうか個人的にはドキュメントと操作性でGCPのが使いやすく感じました
あとCIとの連携もGCPのがやりやすかったです
慣れの問題だと思いますが、、特に機械学習をやるときにSageServerとTensorflow周りが使いにくかった印象です
料金面の優越は正直分かりませんが、ある程度のアクセス数が無い限りはどっちでもいいのではと思える額でした。
個人開発で使う分ではGCPの永久無料枠と最初の3万円無料は大きかったですGCPのai-platformはかなり安いので、colabとか使ってる人は試しに使ってみてもいいかもしれません
僕は最初AWSだったんですけど、機械学習があってGCPに乗り換えました
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた