カテゴリーアーカイブ Cloud

投稿者:kuze_k

English Diary (Air conditioner broken)

Last evening, my air conditioner suddenly broken.

So , last night it was to be difficult to sleep.

I will soon go to an electronics store to look at air conditioners.

the expense is painful.

The Japanease translation is as follows.


昨日の夕方、突然エアコンが壊れました。
そんなわけで、昨夜はなかなか寝付けませんでした。
近々電気屋さんに行って、エアコンを見てこようと思います。

出費が痛い。

投稿者:kuze_k

AWS DB系サービスについて Athena

今後はDB系について触ってみようと思います。RDS,Aurona,ElastiCache,DynamoDBなどありますが、普通に触ってもおもしろくないかなーと思い、今回はAmazon Athenaにしようと思います。

AthenaはS3に保存されているCSV/JSONなどのファイルをそのままAthenaで読み込んでDBとして利用できるものです。

S3をデータレイクとしていろいろデータをため込んでおいて、後からAthenaで分析してみるという使い方ができるなと思いました。

また、AWS GlueはETL機能があり、S3に保存されているデータを加工できるサービスなのでこれと組み合わせることで分析しやすくできるという理解です。

私的には以下サイトが参考にできそうです。


【初心者向け】AWS Athena の 使い方

https://qiita.com/yoshiyama_hana/items/9b2f26b214de92a0f36c


【初心者向け】AthenaからクエリしてS3上のデータを取得してみた

https://dev.classmethod.jp/articles/get_s3data_by_athena/


Amazon AthenaでSQLクエリを実行してみた


S3に置いたCSVをAthena (+Glue) で検索したい

https://dev.classmethod.jp/articles/athena-s3-csv/


実機操作は日を改めて実施してみようと思います。

投稿者:kuze_k

boto3を使ってAWSを触ってみます。②

実機を使いboto3でS3操作を実施してみました。

端末はubuntuで行いました。

IAMでboto3用にユーザを作成。そのユーザのアクセスキーとセキュリティーキーを控える。

これが外部に誤って漏れてしまうと、IAMのアクセス権限次第ではありますがAWSをコントロールできてしまうので要注意ではある。

よってAWS CLI(aws config)でキーを登録する形とした。pythonコードへキーを直接書き込まない形。

あとは、以下サイトの通りpythonを実行して問題なく操作できた。

/https://qiita.com/is_ryo/items/e16527db5800854cd95f

・S3バケットリストを表示

・S3バケットへファイルアップロード

・S3バケットからファイルダウンロード

特に問題なく10分程度で実装できた。

端末をwindows10でやろうとしたが、pipおよびboto3をインストールするところでうまくいかなかった。こちらはまた時間あるときにトライしてみようと思う。


boto3のメーカードキュメントは以下にあるので、必要に応じて確認する。
https://docs.aws.amazon.com/ja_jp/pythonsdk/?id=docs_gateway

今日はこれぐらいにしておきます。

投稿者:kuze_k

boto3を使ってAWSを触ってみます。

今週末はboto3を試してみようと思います。

先週末はlambdaを使ってS3,API Gateway,dynamodbと連携させたりしてましたが、今週末はpythonでboto3ライブラリを使ってコントロールしてみたいと思います。

私のレベル的にはまずは以下を参考にさせていただこうと思います。



コードでAWSをさわってみよう!プログラミング初心者向けAWS SDK(Boto3)の使い方

https://dev.classmethod.jp/articles/how-to-use-awssdk-boto3-for-beginners/


Python boto3 でAWSを自在に操ろう ~入門編~

https://qiita.com/kimihiro_n/items/f3ce86472152b2676004


boto3を使ってS3をごにょごにょする

https://qiita.com/is_ryo/items/e16527db5800854cd95f


これまでマネジメントコンソールはMFA化してセキュアに使ってましたが、boto3の場合はクレデンシャルの扱いなどセキュリティ面は今まで以上に注意したいと思います。

あわせて、自動化・省力化についても検討したいと思います。

今日はこれぐらいにしておきます。

投稿者:kuze_k

API Gateway + Lambdaについて

先日はS3イベントトリガーからLambdaを起動することを試したので、今回はAPI GatewayとLambdaを連携させてみたいと思います。

私的には以下サイトが参考にできそうです。


https://qiita.com/baikichiz/items/2de7c4c0dcf9b051037a

【API Gateway】AWS Lambda統合のPythonでHello, world


【AWS】HTTP API+Lambda+DynamoDBのチュートリアルをやってみた


上記”【API Gateway】AWS Lambda統合のPythonでHello, world”を参考にして実行したところ、特に問題なく動作できました。初めてAPI Gatewayを設定しましたが賞味15分程度でできました。

APIに認証が何もないのもよくないので、今度は以下を参考にAPIキーの設定を追加してテストしました。


https://qiita.com/baikichiz/items/ed787c5c79059213401e

【API Gateway】API呼び出しにAPIキーを設定する


こちらも特に問題なく賞味10分ほどで完了できました。

私が少しつまった部分として、windows端末からcurlでテストしたのですが、–headerオプションで付ける”x-api-key:********************”と部分がダブルクォーテーションだと動きますが、シングルクォーテーションではエラーになりました。

なお、

developer associate試験については以下本を読んで勉強中です。

ポケットスタディ AWS認定 デベロッパーアソシエイト [ 山下光洋 ]
価格:2310円(税込、送料無料) (2022/4/12時点)楽天で購入

わかりやすくて良い本だと思いますが、やはり実機触りながらでないとなかなか頭に入らないですね。

読んでるだけだとよくわからないことが、実際にさわってみると結構簡単に動いて理解も早いです。

なんとか4月中に試験申し込みしたいと頑張っています。

今日はこれぐらいにしておきます。

投稿者:kuze_k

S3+lambda+dynamodb+cloudwatch logsについて動作確認

さきの投稿に続いて、週末に動作確認を行いました。

結論としては問題なく動作できました。

具体的な内容は下記サイトを参考にさせてもらいました。

https://atmarkit.itmedia.co.jp/ait/articles/2109/24/news008.html

「Amazon S3」にアップロードしたCSVファイルを「Amazon DynamoDB」に自動登録する「AWS Lambda」関数の作り方

S3,Dynamodbについてはサイトの案内の通り操作するだけなので悩ましいところはなかった。

私が少し詰まったのは、以下2点。

・lamdaに割り当てるユーザー管理ポリシー。

 新規ポリシーとしてdynamodb-put-batchwriteを作成した後で、ロールlambda-import-csv-into-dynamodbへポリシーを割り当てる。

・S3へアップロードするemployee.csv1の形式でエラー。

 最初メモ帳でcsvファイルを作成しs3へアップロードしたらcp932関連でエラー発生。

  UnicodeDecodeError: ‘cp932’ codec can’t decode

作成したCSVファイル形式がよくなかったのが原因。改めてterapadで”文字コード指定再読込”を”SHIFT-JIS”として、CSVデータを保存したところ、エラーはなくなりました(cp932=SHIFT-JISな認識)。

その他は特に止まるところもなく、賞味30分程度で一通り試せました。

S3にファイルアップロードすることで、dynamodbへデータ書き込みおよび更新までできました。cloudwatch logsへもデフォルトのままでlambdaログが記録されました。

肝心なlamdaコードについてもサイト情報そのままで動作できました。

個人的にはpythonスクリプトの部分が一番キモと思いますが、この程度のコード量なら読めば理解できますし、多少の作り変えでいろいろ試せそうに思いました。

今回はS3イベントでキックする形ですが、それ以外にもlambda起動できる条件はいろいろあるので、改めてアイデア考えて別条件でサーバレスを試してみたいと思いました。

今日はこれぐらいにしておきます。

投稿者:kuze_k

S3イベントトリガー+lambda関数実行+dynamodb書き込み

先日AWS DAの資格取得について書きましたが、本だけ読んでいてもだめなので実機触って理解を深めようと思います。

ネットで検索しているとS3+lambda+dynamodbの組み合わせでサーバレスを実現している例を見かけますので、まずはそれにならって試してみようと思います。

私的には以下が参考にできそうです。

「Amazon S3」にアップロードしたCSVファイルを「Amazon DynamoDB」に自動登録する「AWS Lambda」関数の作り方:AWSチートシート – @IT (itmedia.co.jp)

Lambdaを使ってS3に上げたログをDynamoDBに自動登録 – Qiita

S3をトリガーとするLambdaの冪等性をDynamoDBで実現してみた | DevelopersIO (classmethod.jp)

lambdaのランタイムはpythonにしようと思います。

上記を参考に見る限り簡単にできそうではありますが、週末に試してみてはまりポイントなどを後日記載しようと思います。

今回はS3からのイベントトリガーでlambda起動させる流れで考えていますが、ほかにもいろいろ連携できるようです。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-services.html

一つ連携できればそれ以外もある程度イメージできるようになるかなと思うのでまずは試してみます。

今日はこれぐらいにしておきます。

投稿者:kuze_k

lightsail + cloudwatch agentについて

wordpressを動作させているlightsailインスタンスへcloudwatch agentをインストールし、リソース監視・ログ監視できるようにしました。

参考にしたサイトは以下。

https://gattino.jp/cloudwatch-agentlightsail/

ほぼこのサイトの通りで設定・動作確認ができました。賞味15分ほどで完了。

一部異なった点としては、

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

でcloudwatch agentの設定ウィザードでいろいろ質問されますが、内容が少しだけ追加されていました。

あと、cloudwatch上でアラートおよびトピックの設定をした際に、通知先のメールアドレスを登録する場合は、以下のようなメールが届くので、承認処理が必要ですね。

—————————–


AWS Notification – Subscription Confirmation
You have chosen to subscribe to the topic:
arn:aws:sns:ap-northeast-1:**********:cloudwatch_alarms_topic

To confirm this subscription, click or visit the link below (If this was in error no action is necessary):
Confirm subscription

—————————–

Disk使用率・CPU使用率・ネットワーク使用率などのカスタム属性がCloudWatch上でグラフ表示できました。Lightsailのダッシュボード上ではDisk使用率は見えないのでこの辺りの設定は必要だと思います。

wordpressのログとして、/opt/bitnami/apache/logs/access_logをcloudwatch logsへ飛ばすようにしました。とりあえずログ参照できるところまで。

cloudwatch logs insightでログ分析できるようなので、後日試してみようと思います。

今日はこれくらいにしておきます。

投稿者:kuze_k

AWS Budgetsで予算管理

最近AWSを触る機会が増えてきたので、コストが高くなってびっくりしないようにするためにAWS Budjetsを設定してみました。

設定は至って簡単で登録名や予算額・閾値(%)・メール通知先などを設定するだけで簡単に設定できました。設定時間は数分あれば完了。

実際に閾値まではまだ達してないのでアラート来てないですが、今後様子見して動作確認しようと思います。

なお、通知方法はメール以外にもslackへもできそうでした。また通知だけでなくアクションも自動起動できるようです。詳細は未調査ですが、予算超過したら指定サービスを自動停止させるようなイメージかなと考えています。時間あるときに確認してみようと思います。

調べていてびっくりしたのはAWS Budgets自体が必ずしも無料ではないことですw。

2アラーム設定までは無料でいけるようですが、それ以上アラーム設定する場合は、課金されるそうです。。


Your first two action-enabled budgets are free (regardless of the number of actions you configure per budget) per month. Afterwards each subsequent action-enabled budget will incur a $0.10 daily cost.


AWS Cloud Financial Management | Pricing | Amazon Web Services

今日はこれぐらいにしておきます。

投稿者:kuze_k

AWSとのVPN接続

自宅環境とAWSとの間をVPN接続することを試してみました。

結論から言うと問題なくVPN接続はできたのですが、AWSのVPNは現状アグレッシブモードに対応していないため、長期運用する場合は自宅側に固定グローバルIPが必須になります。私の場合は固定ではなく動的グローバルIPなため、テスト的にVPN接続することはできた・・というものになります。よって自宅機器のグローバルIPが変更になったらVPNも当然切れてしまいます。あくまでお試しというレベル。

実施したことは至ってシンプルですが、メモとして記載しておきます。

<AWS側の作業>

・VPCを作成

 →AWS上で使用するCIDRを指定

・subnetを作成

 →上記CIDRから今回使用するサブネットとして切り出し

・EC2を作成

 →自宅=AWSとの疎通確認用に準備 上記サブネットへ接続する

  セキュリティグループ設定でPING応用するようにルール追加

★ここから今回メインのVPNに必要な作業

・カスタマーゲートウェイを作成

 →VPN接続先を指定する設定 自宅グローバルIPを指定する

・仮想プライベートゲートウェイを作成

 →AWS側の仮想VPN装置を作成 作成した後に、VPCにアタッチする必要あり

・サイト間のVPN接続の作成

 →上記で作成したカスタマーゲートウェイ・仮想プライベートゲートウェイなどを結びつける設定

 →静的IPプレフィックスには自宅のローカルサブネットを指定●

・設定のダウンロード

 →AWS上で自宅機器向けの設定サンプルをダウンロード 私はCisco設定をダウンロード

<自宅側の作業>

・作業前確認として、自宅側ルータからAWSのVPN接続先IPへPingで疎通確認

 →Pingが飛ばない場合は、ACLの設定やルーティングなどを確認 疎通性がないとVPN張れないため

・ダウンロードしたCisco設定を実施へ投入

 →ダウンロードした設定ファイルにはTunnelインタフェースが2つあったが、今回はテストなため1つのみ投入

 →ダウンロードした設定ファイルにはoption設定があったが、今回はテストなため一旦無視

 →自宅ルータにはACLを設定しているため、VPN接続用の許可ACLを追加●

 →設定したtunnelインタフェースをno shutdownし、ステータスがUpになることを確認する。

  (自宅環境はそれぞれ構成差異があると思うので、必要に応じて追加/修正は必要と思います)

・自宅PCからAWS上に作っておいたEC2へPingで疎通確認

 →Ping問題なし tracertで経路確認

私がハマったポイントは●をつけた2箇所。

・はじめてVPN設定したときは、静的IPプレフィックスに何を書くべきなのかよくわからなかった。

・自宅ルータのACLでdropされていて、ISAKAMP/IPSECのやりとりができず、tunnelインタフェースがUPにならなかった。

もともとオンプレ機器でIPSECは使ったことがあるので基本的な理解はありましたが、AWS用語が最初よくわからず悩みましたが、賞味半日ぐらいで無事にVPNつなげることができました。

なお、自宅で固定グローバルIPを取得しようとすると1IPで月額5000ほどするので高額。

アグレッシブモードに対応したVPN装置をEC2で立てることで対応できそうだが、EC2x1台分のコストが余計に発生する。AWSさんが動的グローバルIPでもVPN接続に対応できるようになってくれるのを期待!です。

今後AWSおよびVPN接続をどうするかは別途検討。。。

なお、請求ダッシュボードで確認したところVPN費用は以下でした。

 $0.048 per VPN Connection-Hour

0.048*119yen*24h*31d = 4249.728 月額4250円は個人で払うにはちょっと高いですね。。

今日はこれぐらいにします。

参考にさせていただいたサイト

https://infrastructure-engineer.com/tcpip-advanced-0003/

VPNのアグレッシブモードについて

https://www.infraexpert.com/study/ipsec24.html


2022/3/21追記

上記はテスト的にVPN接続していたということもあり、後日AWSから下記のメールが届きました。

参考までに内容記載しておきます。

表題 : Important notice about your AWS Account regarding VPN connections

内容:You’re receiving this message because you have at least one VPN Connection in the ap-northeast-1 Region, for which your VPN Customer Gateway is not using both tunnels. This mode of operation is not recommended as you may experience connectivity issues if your active tunnel fails.

・・・

For Static VPNs, enabling both tunnels may lead to asymmetric routing, which will need to be permitted by your Customer Gateway Device. For configuration options, please refer to your vendor specific documentation.

上記はメール抜粋ですが、要するに1つだけVPN接続しているけど、耐障害性を上げるために2つのVPN接続してね!ということです。

また、2つVPN接続する際は、非対称ルーティングになる可能性があるので注意してね!ということです。


2022/3/22追記

VPN接続ですが通信有無にかかわらず課金されますのでご注意ください。

試しに、オンプレのCiscoルータ側でVPN用インタフェース(tunnel)をshutdownさせておいたのですが、課金は継続していました。

AWSの請求書にて、$0.048 per VPN Connection-Hourの時間がカウントアップしていました。。