App Engineerの開発ノート

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

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も機能を利用してませんが、これだけで何かやった気になる笑

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

AWS入門~CLIで使用してDynamoDBを操作する

f:id:Simoroid:20210916230834p:plain
CLIコマンドラインインターフェース)を使用してDynamoDBのテーブルを作成・削除・更新や項目(RDBでいうレコード)
の登録方法のTipsです。CLI自体の導入は下記から行います。
ikoda.shop

また、今回の手順はlocalstackを使用したローカル環境に向けてのものになります。
localstackの導入は下記から行います。
【AWS入門】Javaで始めてのLambdaアプリ開発 - App Engineerの開発ノート

■プロファイルを作成

事前の準備でプロファイルを作ります。
localstackで使用する場合においては"Default output format"以外は任意の値で大丈夫です。
※default以外で認証情報を使いたい場合、profileオプションを使用します

aws configure

AWS Access Key ID [None]: xxx
AWS Secret Access Key [None]: xxx
Default region name [None]: xxx
Default output format [None]: json
■テーブルを作成

※Patition Key、Sort Key以外の項目は作成時には指定できません、非キー属性の項目は項目登録のタイミングで行います。
aws dynamodb create-table --table テーブル名 --attribute-definitions AttributeName=属性名,AttributeType=属性の型 --key-schema AttributeName=Patition Key or
Sort Keyに指定する属性名,KeyType=HASH or Range --provisioned-throughput ReadCapacityUnits=任意の数値,WriteCapacityUnits=任意の数値 --endpoint-url=http://localhost:4566

下記は例です。※ポート番号に注意

aws dynamodb create-table --table-name test --attribute-definitions AttributeName=testId,AttributeType=S --key-schema AttributeName=testId,KeyType=HASH --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1 --endpoint-url=http://localhost:4566
■テーブルに項目を登録

aws dynamodb put-item --table-name テーブル名 --endpoint-url http://localhost:4566 --item 項目情報

下記は例です。

aws dynamodb put-item --table-name "test" --endpoint-url http://localhost:4566 --item '{\"testId\" : {\"S\" : \"test\"},\"name\" : {\"S\" : \"taro\"}}'
■テーブル情報を確認

aws dynamodb scan --table-name テーブル名 --endpoint-url http://localhost:4566

下記は例です。

aws dynamodb scan --table-name "test" --endpoint-url http://localhost:4566
■テーブルにある項目を削除

aws dynamodb delete-item --table-name テーブル名 --endpoint-url http://localhost:4566 --key キー属性

下記は例です。

aws dynamodb delete-item --table-name "test" --endpoint-url http://localhost:4566 --key '{\"testId\" : {\"S\" : \"test\"}}'
■テーブルの一覧を確認

aws dynamodb list-tables --endpoint-url=http://localhost:4566

下記は例です。

aws dynamodb list-tables --endpoint-url=http://localhost:4566

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

【AWS便利ツール】DynamoDBのテーブルをCSVでエクスポートする

f:id:Simoroid:20210906012742p:plain
DynamoDBの内容をエクスポートしたい場合、テーブルの中身を簡易的にエクスポートする方法です。
ツールの開発にはPowerShell を使用します。
DynamoDBの管理コンソールからでもエクスポートは可能ですが、
わざわざログインしたくないときなどに便利です。

■前提条件

AWS CLI が使用できる必要があります。
下記手順からインストールが可能です。
AWS入門~CLIを使用してAWSにアクセス - App Engineerの開発ノート

PowerShellスクリプトファイルを実行できる権限が振られている必要があります。

■ツール準備

下記のソースをコピーして任意のps1ファイルを作成します。
※例:「output-csv.ps1」

# 接続先は適宜切り替え
$ENDPOINT_URL = "http://localhost:4566"
$OUTPUT_FORMAT = "json"

$tableName = Read-Host “テーブル名を入力してください。”
$jsonObj = aws dynamodb scan --table-name "$tableName" --endpoint-url $ENDPOINT_URL --output $OUTPUT_FORMAT
$obj = ($jsonObj | ConvertFrom-Json)
$obj.items | convertto-csv -NoTypeInformation -Delimiter "," | % {$_ -replace '"',''} | out-file "dump_$tableName.csv" -Encoding default

上記ファイルを任意ディレクトリに配置します。

■ツール実行

ツールのテスト用にデータを準備します。
今回は雑に"test"というテーブルに1レコードだけputしてます。
f:id:Simoroid:20210916004706p:plain

準備ができたら、配置したps1ファイルを右クリック -> "Powershellで実行"をクリック
で簡単に実行できます。
実行後はテーブルを名を入力します。
f:id:Simoroid:20210916003952p:plain
f:id:Simoroid:20210916004121p:plain
下記のようにエクスポートできました!
f:id:Simoroid:20210916004231p:plain

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

【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

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