App Engineerの開発ノート

AWS、Flutterや開発活動に役立つツール作りなど

【AWS入門】Javaで始めてのLambdaアプリ開発

f:id:Simoroid:20210914010252p:plain
AWSのLambdaアプリをJavaで開発します。
とりあえずシンプルなものを実行できるところまで環境を整える手順です。
統合開発環境Intellijを使用します。

0. JDKをダウンロード

AWSと連携を可能にしたAmazon Corretto(JDK)をダウンロードします。
https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html

下記コマンドで入力されたことを確認

 java -version
openjdk version "11.0.12" 2021-07-20 LTS
OpenJDK Runtime Environment Corretto-11.0.12.7.1 (build 11.0.12+7-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.12.7.1 (build 11.0.12+7-LTS, mixed mode)

1. Gradleをダウンロード

 1. 以下より、binaryファイルをDL
  https://gradle.org/releases/
 2. DLしたファイルを解凍し、任意のディレクトリに配置
 3. 下記例のように環境変数を設定

操作 環境変数 追加・更新パス
追加 GRADLE_HOME C:\gradle-6.9.1
更新 PATH C:\gradle-6.9.1\bin


 4. 確認

gradle --version

2. gitのインストール

 1.以下よりダウンロード
  https://git-scm.com/

 2.確認

git --version

3. AWS CLIのインストール

下記記事の手順にてインストールを行います。
  ikoda.shop

4. IDEのインストール

下記からIntellijのCommunity版をダウンロード、インストールを行います。
https://www.jetbrains.com/ja-jp/idea/download/#section=windows
f:id:Simoroid:20210914001251p:plain

5. IDEプラグインを追加

IDEAWSに関する操作を実施できるプラグインAWS Toolkit for JetBrains」を導入します。
Plugins(プラグイン)でawsで検索し、表示されたAWS Tookitのインストールを実行
f:id:Simoroid:20210914001331p:plain
f:id:Simoroid:20210914001416p:plain

6. gitからソースを取得

下記は公式のドキュメントですが、Javaを使用したLambda開発に関して書かれており、
java-basic」というJavaを使用した最小の機能をもったアプリのソースがあります(Hello Worldレベルのアプリ)
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/java-samples.html

git clone https://github.com/awsdocs/aws-lambda-developer-guide.git

7. IDEで開く

File -> Open から3.で落としてきたフォルダから「aws-lambda-developer-guide/sample-apps/java-basic」
を開きます。
開くときにビルドツールの設定を迫られたら"Gradle project"を選択しましょう。
f:id:Simoroid:20210914001456p:plain

8. ビルド

IDE右側にある、GradleからTasks -> buildを開き「build」をダブルクリックでビルドを実行する。
f:id:Simoroid:20210914001652p:plain
上手くいけば下記のように成功のメッセージが出力されます。
f:id:Simoroid:20210914001719p:plain

9. 実行

Handler.javaを開くとLambdaアイコンが表示されているのでそれをクリックし「Run~~」を選択。
「Modify Run~~」を開きInput のテキストボックスにパラメータが入力できるが今回のサンプルアプリでは、
不要なので空の"{}"を入力しておく。
"AWS Conncection"タブから任意のCredentialsを選択
"OK"ボタンをクリック
f:id:Simoroid:20210914001832p:plain
f:id:Simoroid:20210914001913p:plain
ローカルで動作させる分には”aws configure”で適当な値を入力してプロファイルを作成しておけばよいです。
f:id:Simoroid:20210914002024p:plain
※もしかしたらdockerをインストールしておかなければ実行できない可能性があります。
dockerは下記にてインストール手順を記載しています。
AWS入門~localstackでローカル開発環境を準備する - App Engineerの開発ノート

f:id:Simoroid:20210914002228p:plain
上手くいけばログや実行結果がコンソールに表示されます。

これで実際のサーバーにアップしなくてもある程度の開発できそう。

ここまで 読んで頂きありがとうございました。
よければフォローお願いします!

AWS入門~CLIを使用してAWSにアクセス

f:id:Simoroid:20210910002135p:plain

コンソール上でコマンドを叩いてAWSのサービスにアクセスする方法です。
DBへのデータ登録等、開発を行う上で必要になるはずです。

尚、AWSのアカウント準備自体は下記から実施できます。
ikoda.shop

■インストール

AWS CLIAWS SAM CLIの二種類をインストールします。

  画面右側にインストーラーのリンクがあります。
  https://aws.amazon.com/jp/cli/
  ちなみにバージョン2と1があります。
  ・version2(https://awscli.amazonaws.com/AWSCLIV2.msi)
  ・version1(https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-windows.html)
  

  下記でインストール可能です。
  https://github.com/aws/aws-sam-cli/releases/latest/download/AWS_SAM_CLI_64_PY3.msi

■確認

下記でインストールされたことを確認可能です。

aws --version
aws-cli/1.16.188 Python/3.6.0 Windows/10 botocore/1.12.178
sam --version
SAM CLI, version 1.31.0
■プロファイル作成

下記にAWS上アクセスしてプロフィールを作ります。
https://console.aws.amazon.com/iam/

 1."ユーザーを追加"をクリック
 2."ユーザー名"に任意の名前を入れて"プログラムによるアクセス"にチェックを入れる
 3."ユーザーの作成"をクリック
 4.アクセスキーとシークレットキーをメモする
f:id:Simoroid:20210906233655p:plainf:id:Simoroid:20210906233738p:plain
f:id:Simoroid:20210906233815p:plainf:id:Simoroid:20210909233259p:plain
 5. 4でメモした設定値を用いて下記コマンドの実行します。
  またリージョン名は存在するリージョンであれば何でも構いませんので"us-west-2"を設定します。出力形式はjson や textをお好みで設定可能です※"test"の部分は任意で構いません。

aws configure --profile test
AWS Access Key ID [None]: XXXX
AWS Secret Access Key [None]: YYYY
Default region name [None]: us-west-2
Default output format [None]: json
■確認

サンプルコマンドを使用してインストールされたことを確認します。

aws s3 ls --profile test

すると下記のエラーに遭遇してしましました、、

An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied

どうやら追加したユーザーに権限が足りていなかったようです。
権限の付与を行います。
1.作成したユーザーをクリック
2."アクセス権限の追加"をクリック
f:id:Simoroid:20210906233950p:plainf:id:Simoroid:20210906234046p:plain
3."グループの作成"をクリック
4."AdministratorAccess"をチェック※これは権限が強すぎるので実際に使う際は要注意
f:id:Simoroid:20210906234116p:plainf:id:Simoroid:20210906234149p:plain
5."グループの作成"をクリック
6."アクセス権限の追加"をクリック
f:id:Simoroid:20210906234230p:plainf:id:Simoroid:20210906234310p:plain
⇒権限の付与に成功しました。

再度挑戦します。

aws s3 ls --profile test
2021-07-23 11:56:30 elasticbeanstalk-us-east-2-575855985359

無事にCLIが使用したAWSへのアクセスに成功しました。

■参考サイト

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-quickstart.html
https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config

ここまで 読んで頂きありがとうございました。
よければフォローお願いします!

AWS入門~localstackでローカル開発環境を準備する

f:id:Simoroid:20210902234753p:plain
AWS開発の必須ツールといっても過言ではないlocalstack
を使用することでローカル環境でdynamoDBやLambdaなど様々なサービスの
開発を行うことが出来ます。


1.PC上の設定変更
タスクバーの検索ボックスに「Windowsの機能の有効化または無効化」と入力しメニューを開き"Hyper-V"にチェックを付ける。
Windows 10 Pro の時のみ必要な手順

2.Dockerをインストール
下記の"Get Docker"をクリックします。
https://hub.docker.com/editions/community/docker-ce-desktop-windows/?tab=reviews

3.インストール
基本的にインストーラーを開き「Insall required Windows components for WSL2」にチェックが入ってることを確認し、
ボタンを押し進めていき、言われるがままにPC再起動していくだけです。
※再起動後、Linux カーネル更新プログラム パッケージのダウンロードを促されることがあるので、案内に従い更新を行う。

f:id:Simoroid:20210825005530p:plainf:id:Simoroid:20210825005141p:plain

4.確認
Powershellコマンドプロンプトでも可)で下記コマンドを使用してバージョン情報の確認。

docker --version
docker-compose --version

5.localstackのDockerイメージをダウンロード
dockerのイメージをダウンロードする必要があります。
ダウンロード方法は色々あり、docker hub ※1 というものを利用して導入することも可能ですが、
gitからcloneしてくるのが個人的には楽に感じます。
※1 docker hubを利用した方法(https://dev.classmethod.jp/articles/stepfunctionslocal-localstack/)

git clone https://github.com/localstack/localstack.git

起動するイメージのバージョンを固定したい場合は"docker-compose.yml "というファイルを下記のように書き換え。
image: localstack/localstack → image: localstack/localstack:0.12.17

6.起動
cloneしてきたディレクトリ内の"docker-compose.yml"というファイルが
あるディレクトリへ移動し、Powershellで以下のコマンド実行。

docker-compose up

f:id:Simoroid:20210825005057p:plain
赤枠に記載されたポートを確認し、
任意ブラウザで「http://localhost:XXXX/」にアクセス。
無事に起動できたことが確認できます。
f:id:Simoroid:20210825005108p:plain

7.終了
Ctrl + C で終了します。焦って連続で押すと強制終了みたいになってあまりよくないかもです。

これ以降はlocalstackを使用した開発もやりたいと思います。


ここまで 読んで頂きありがとうございました。
よければフォローお願いします!

AWS入門~誤って課金してしまわないよう気を付ける

f:id:Simoroid:20210901010233p:plain

 

 

アカウント作成して僅か半月で誤って課金する結果となってしまったので、
自戒をこめて、課金状況の確認手順です。

◇現在の課金額を知る
AWS マネジメントコンソール(ログイン後のトップページ)から
"マイ請求ダッシュボード"をクリック
⇒ページ遷移後、現在の利用料が分かります、またページ下部に各サービスの利用状況が分かります。

f:id:Simoroid:20210820001215p:plain

f:id:Simoroid:20210820001219p:plain

f:id:Simoroid:20210820001211p:plain


今回はEC2を誤って2つ起動していた為、EC2の無料枠750時間を超えてしまったことが課金の原因でした。。
不要なインスタンスは切っておきましょう。。
※1つのインスタンスのみを起動していれば24h * 31日 = 744時間で無料枠は超えません。

◇アラートを設定しておく
左側に表示された"請求設定"をクリック。
"無料利用枠の使用アラートを受信する"にチェックを入れます。

f:id:Simoroid:20210820001312p:plain

f:id:Simoroid:20210820001317p:plain

 

無料枠超えそうなタイミングでメールが来ます。
f:id:Simoroid:20210820001321p:plain

ここまで 読んで頂きありがとうございました。 よければフォローお願いします!

AWS入門~とりあえずWebアプリケーションが公開されるまで

f:id:Simoroid:20210818013157p:plain
AWSを勉強したい・導入したいという場合の
とりあえず最初のWebアプリが公開されるまでの手順です。
所要時間は最速だと20分くらいです。

◇アカウント作成
まずは下記でアカウントを作成します。
https://aws.amazon.com/jp/try-cloud/

個人情報として住所や携帯電話番号、
クレジットカードを差し出す必要があります。
ただし利用に必ずお金が掛かるという訳ではありません。
無料でどこまで使用できるかという情報は下記のサイトにて公開されています。
AWS クラウド無料利用枠 | AWS

あとは住所が英語表記で記載しなければなりませんので、下記のサイトなどを利用すれば楽です。
https://kimini.jp/

◇EC2を起動
AWS マネジメントコンソール(ログイン後のトップページ)から
"仮想マシンの起動"をクリック
基本的には"無料利用枠の対象"の記載がある項目を選択して次へと設定を進めていけば問題無いかと思います。
※本格的にサービスを立ち上げる際は目的に応じたインスタンスタイプの選定が必要です。
f:id:Simoroid:20210818004831p:plainf:id:Simoroid:20210818004835p:plain

◇Elastic Beanstalkを起動
前段と同様にAWS マネジメントコンソールから
"ウェブアプリケーションの構築"をクリック。
任意のアプリケーション名、プラットフォーム情報を入れて、
アプリケーションコードを"サンプルアプリケーション"に設定して、
「アプリケーションの作成」をクリック。
f:id:Simoroid:20210819003013p:plainf:id:Simoroid:20210819003009p:plain

ちなみにEC2などの環境のお金が掛かるため、
Elastic Beanstalk自体にはお金が掛からないようです。
https://aws.amazon.com/jp/elasticbeanstalk/pricing/

その後、Elastic Beanstalk -> アプリケーションから
URLをクリックします。
f:id:Simoroid:20210819003309p:plain
無事にサーバーにアプリが公開されていることが確認できます。
f:id:Simoroid:20210818013400p:plain
以上でAWSを始めてとりあえずアプリを公開になります。
これ以降は独自のアプリ開発やサーバーレスコンピューティングに触れていきたいと思います。
まだAWSの1000分の1も機能を利用してませんが、これだけで何かやった気になる笑

ここまで 読んで頂きありがとうございました。
よければフォローお願いします!

Android Studio で git を使う ~ある時点のバージョンに戻す~

f:id:Simoroid:20210527011101p:plain
Androidアプリ開発で障害調査や開発が上手くいかず、ソースコードを一旦Gitのあるバージョンに戻したい。
そう思った時のAndroid Studioでの操作方法の紹介です。

◇手順

1.対象ファイル右クリック→Git->show history
f:id:Simoroid:20210527011424p:plain
2. Historyタブで戻したいコミットの行を右クリック→Show in Git Log
⇒Logタブが表示される
f:id:Simoroid:20210527011521p:plain
3. Logタブで戻したいコミットの行を右クリック→Checkout Revision
f:id:Simoroid:20210527011707p:plain

上記手順で指定したリビジョンにソースコードの状態を戻すことができます。

ここまで 読んで頂きありがとうございました。
よければフォローお願いします!

【Python】はてなブログの注目記事の一覧を抽出する

f:id:Simoroid:20210510013203p:plain
はてなブログの注目記事の一覧をスクレイピングするプログラムをPythonで実装してみます。
f:id:Simoroid:20210510013544p:plain
Pythonスクレイピングするための環境準備は下記に記載しています。
ikoda.shop

◇処理の流れは
1.はてなブログのトップページへのリンクを変数定義
2.ヘッドレスブラウザ(GUI表示無しのブラウザ)にページを読み込む
3.「注目」の領域をクラス名で検索し、html形式の情報を取得
4.複数存在するh3タグを全て取得することですべての注目記事のタイトルとリンクを取得
5.ブラウザオブジェクトの後始末

#!/usr/bin/env python3

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import selenium
from bs4 import BeautifulSoup

# はてなブログのトップページへのリンクを変数定義
TARGET_URL = "https://hatenablog.com/"

# ヘッドレスブラウザ(GUI表示無しのブラウザ)にページを読み込む
options = Options()
options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=options)
browser.get(TARGET_URL)

# 「注目」の領域をクラス名で検索し、html形式の情報を取得
html = browser.execute_script("return document.getElementsByClassName('serviceTop-recommend')[0].outerHTML")
soup = BeautifulSoup(html,"html.parser")

# 複数存在するh3タグを全て取得することですべての注目記事のタイトルとリンクを取得
article_list = soup.find_all("h3")
for article in article_list :
     print(article.a.get_text() + ":" + article.a["href"])

# ブラウザオブジェクトの後始末
browser.quit()

下記のように記事のタイトルとリンクが一覧で抽出できました!
f:id:Simoroid:20210508093404p:plain

よんで頂きありがとうございます。
良ければフォローお願いします!