TatsuyaのテクTechブログ

IT技術を中心に勉強したことを書くブログ

EventBridgeのcron式を使ったルールで、Lambda関数へJSONを渡す&一定間隔で起動させてみる

f:id:dolphin-jump1011:20211211205731p:plain

AWSにあるサービスで定刻または一定の時間間隔でジョブ起動をさせたくEventBridgeを使って以下の事を試してみました。 ・cron式を使って、一定間隔でLambda関数を起動させる。 ・Lambda関数にJSONを渡す。

参考ドキュメント

参考にしたEventBridgeの公式ドキュメントのリンクです。 cron式には記述ルールがあり、リンク先を見て設定しました。

スケジュールに従って実行する Amazon EventBridge ルールの作成 - Amazon EventBridge

テストコード

Lambda関数に使うpythonのテストコードです。EventBridgeから受け取ったJSONの一部をlogに出力させています。

def lambda_handler(event, context):
    
    print(event['key1'])
    print(event['key2'])
    return {
        'statusCode': 200,
    }

EventBridge

AWSコンソールからEventBridgeのルールを作成します。

①名前、パターンの設定(cron式の設定) cron式は5分間隔で設定します。 f:id:dolphin-jump1011:20211211212932p:plain

②パターンの設定の続き(タイムゾーンの選択) ローカルのタイムゾーンを選択します。直近10回分の起動時間が表示されるのでcron式が正しそうかここで確認します。 f:id:dolphin-jump1011:20211211213038p:plain

③ターゲットの選択 イベントの送信先となるLambda関数を設定します。Lambda関数に渡すJSONも設定しています。 f:id:dolphin-jump1011:20211211213131p:plain

結果の確認

CloudWatchLogsでLambda関数のログを確認します。"START"と書かれているログの時刻から5分間隔で実行できており、 EventBridgeのJSONに入れた値(test1,test2)も出力されているのでEventBridgeから設定通りに起動できているようです。

f:id:dolphin-jump1011:20211211213951p:plain

LookML Developer合格記録

Lookerの認定資格LookML Developerに合格したので勉強内容を振り返ります。

合格までに3回受験しましたが、合格の決め手になったのは日本語版試験のリリースでした。

LookML Developerとは

Lookerの言語「LookML」を使った開発の知識を持っているか問われる試験です。

試験の詳細は、こちらのリンク先の「LookML開発者」を参照ください。

認定プログラム

受験方法

https://www.webassessor.com/looker/ から試験を申し込めます。日本語版と英語版がありますが、試験概要に「Japanese version」と記載されているのが日本語版です。

f:id:dolphin-jump1011:20210302234101p:plain

また、テストセンターか監視付きのリモートでの受験が可能です。私は3回ともテストセンターで受験しました。

試験前のスキル状況

試験勉強を始める前の私のスキルです。

 Looker:ある程度のダッシュボード作成までは経験あり。Lookerの各BootCampも1回受講済み。

 SQL:Webアプリケーション開発に必要なSQLの知識と実務経験あり。

 BI:実務経験なし。プライベートでは自分用の簡単なダッシュボードを作ったことがある程度。

勉強したこと

 ①各BootCampの再受講

  BootCampはクラスルーム形式の研修です。今のところオンラインで受講できました。

  LookMLの基礎知識を再学習するために再受講しています。実務経験がない場合、Lookerの開発や運用方法を一通り理解するのに必要だと思います。

 ②Looker Universityの受講

  動画やドキュメント形式でのオンライン学習コンテンツです。自宅での復習及び英語に慣れるために使いました。

  https://training.looker.com/

 ③LookMLリファレンスの読み込み

  https://docs.looker.com/reference

  BootCampでカバーできていないLookMLの仕様や細かい挙動について理解するのに大分読み込みました。特にどこを重点した読んでいたか後述しています。

 ④LookMLヘルプセンターの読み込み

  https://help.looker.com/hc/en-us/sections/360000176767-Troubleshooting

LookMLで発生するエラーの対処方法を知るために読んでいます。

注力したところ

 LookMLリファレンスでは主に以下の部分を読むのに時間を割き、Notionに整理して知識を体系化していきました。

 ①各フィルターの深い理解

  Lookerには用途に応じた以下のフィルターがありますが、それぞれのユースケースや動き。

  ・access_filter

  ・always_filter

  ・conditionary_filter

  ・sql_always_filter

  ・access_filter

  ・access_grant

  ・fields

 ②PDTとキャッシュ戦略

  Lookerで定義したテーブルを永続化するための各トリガーのユースケースとキャッシュ戦略、キャッシュが切れたときの動きなど。

  ・datagroup

  ・sql_trigger_value

  ・persist_with

  ・max_cache_age

  ・sql_trigger

 ③LookMLの品質向上とエラー対策

  品質の高いLookMLを開発するためのツールの使い方やエラー発生時の対策方法など。

 ④ユーザーエクスペリエンス向上

  ビジネスユーザーやデータ分析者が使いやすいExploerを作るための方法。

英語版と日本語版、両方受験した感想

言うまでもない気がしますが、英語が得意でない人は、理由がない限り日本語版を受験したほうが良いと思います。

不合格となった1回目と2回目ですが、最も大きい原因は英語が読めなくて問題文や回答文を正しく理解できなかったためです。1回目と2回目では勉強したのに点数がほぼ変わらなかったのが、日本語版では勉強以外の要因があったと体感するぐらいには点数が向上して合格しました。

例えば、試験後に分野ごとの正答率を教えてもらえるのですが、Quality分野の正答率は英語版37%→日本語版87%と50%上がってました。

参考ブログ

試験勉強にあたり、以下のブログも参考にしています。

https://dev.classmethod.jp/articles/how-to-pass-lookml-developer-certification/

https://dev.classmethod.jp/articles/lookml-developer-certificate-in-three-weeks/

https://dev.classmethod.jp/articles/be-a-looker-certified-lookml-developer/

最後までお読みいただきありがとうございました。

せっかく試験取ったのでLookerを使う仕事がしたい!

Cloud SchedulerとCloud Workflowsで簡単なワークフロー開発

Cloud Workflowsで簡単なワークフローを開発する機会があったので振り返りかねて仕様や開発したワークフローについて書きます。

Cloud Workflows概要

Cloud Workflowsはサーバレスなワークフローを開発できるサービスです。YAMLJSONで記述をします。公式ドキュメントを読むとGoogleAPI、Cloud FunctionsやCloud Runを実行させるワークフローに最適に感じましたが、HTTPリクエストができればそれ以外でも大丈夫だと思います。

リソース

リージョン

現在は以下3リージョンです。

  • us-central1(lowa)
  • europa-west4(Netherlands)
  • asia-southeast1(Singapore)

料金

Cloud Workflowsのジョブ単位である"ステップ"の実行数(1000単位)で課金されます。課金額は内部ステップと外部ステップで異なり、内部ステップは$0.01/1000ステップ、外部ステップは$0.025/1000ステップです。内部ステップと外部ステップの違いはこちらから。

料金 | Workflows | Google Cloud

Cloud FunctionsとCloud Runの.run.app ドメイン名の呼び出しは内部ステップ扱いですが、Google App Engine(以下、GAE)についての記載がないのでGAEのデフォルトドメイン(~r.appspot.com)は外部ステップ扱いなのか気になったところです。

定義方法

エディタ画面のワークフロー可視化機能が便利だったので、全てGCPコンソールでの説明です。

f:id:dolphin-jump1011:20201228234725p:plain 初めてアクセスしたときはこのような画面が表示されます。「作成」をクリック。

f:id:dolphin-jump1011:20201228234823p:plain ワークフローの名前、リージョンとサービスアカウントを設定します。サービスアカウントにはデフォルトだとGCEの開発サービスアカウントが設定されます。各GCPサービスの認証認可にはこのサービスアカウントが使われるようです。設定したら「次へ」をクリック。

f:id:dolphin-jump1011:20201228234851p:plain ワークフローの定義画面になります。ここでYAMLJSONでワークフローを記述します。右側には編集中の内容に応じて動的にワークフローを可視化してくれます。初めて使うときに意図した通りにワークフローができているかすぐに確認できて便利です。定義が終わったら「デプロイ」をクリック。

f:id:dolphin-jump1011:20201228235002p:plain デプロイが正常終了すると、定義したワークフローのトップ画面が表示されます。さっそく実行するには「実行」をクリック。

f:id:dolphin-jump1011:20201228235029p:plain 実行画面では、引数が必要であれば設定できます。準備が終われば「実行」をクリック。

f:id:dolphin-jump1011:20201228235100p:plain ワークフローの実行が終了すると、実行時間など出力結果が表示されます。

f:id:dolphin-jump1011:20201228235150p:plain また、ワークフローのログタブをクリックすると、デプロイのログやログ出力をワークフローに定義していればそのログも確認できます。

ワークフローのアーキテクチャ

ここからCloud Workflowsを使って開発したワークフローの話に入ります。

f:id:dolphin-jump1011:20201228234554j:plain こちらが構築したアーキテクチャ図です。

選定の背景

サーバーレス前提で開発しているシステムで、GAE上に開発した3ジョブ(それぞれジョブA、ジョブB、ジョブCと呼びます)をスケジューリング起動し、A→B→Cと順次実行するワークフローを開発することになったため、こちらのブログを参考にどのサービスを利用するかまず検討しました(ブログ当時にはCloud Workflowsはまだありません)。

GAEでスケジューリングするのでGoogle App Engine cron サービスが第一候補に挙がりましたが、順次実行ができないのでNG。Cloud Composerも候補に挙がりましたが、やりたいことに対してサービスが過剰かつコスト面でNG*1。GCE上で何かスケジューリングソフトウェアを使うのはサーバーレス前提に沿わないのでNGとなりました。

結果、ちょうど良いのがないとなったのですが、今年の夏にサーバーレスなワークフローサービスがローンチされたことを思い出したので調査したところ、Cloud Schedulerでスケジューリング可能、ジョブの順次実行制御が可能、HTTPリクエストでGAEのジョブが実行できそうだと見込めたのでCloud Workflowsを選定しました。

設定

設定内容について説明していきます。GAEはこちらの公式ドキュメントにあるHellow Worldをデプロイ済み前提としています。

Cloud Schedulerを設定する

こちらの設定に入る前に、前述のCloud Workflowsの定義方法で呼び出すワークフローを先に作成しておきます。

・Cloud Workflowsの実行ロールを持つサービスアカウントを作成する。 f:id:dolphin-jump1011:20201228235407p:plain Cloud SchedulerからCloud Workflowsのワークフローを実行するためのロールを持ったサービスアカウントを作成します。Cloud IAMのサービスアカウント作成画面で「ワークフロー起動元」のロールを割り当てます。

・Cloud Schedulerで設定を行う。 f:id:dolphin-jump1011:20201228235447p:plain Cloud Schedulerはcron形式のスケジューリングの設定を行えるサービスです。「頻度」の項目にcron形式で設定(スクショでは3分毎に実行)、「ターゲット」は"HTTP"、「URL」はCloudWorkflowsのエンドポイント、「HTTPメソッド」には"POST"を設定します。

CloudWorkflowsのエンドポイント
https://workflowexecutions.googleapis.com/v1beta/projects/<PROJECT_NAME>/locations/<REGION_NAME>/workflows/<WORKFLOW_NAME>/executions

エンドポイントは呼び出すワークフローに応じて、以下3点を編集します。

<PROJECT_NAME>:GCPプロジェクトID

<REGION_NAME>:呼び出すワークフローに定義したリージョン名

<WORKFLOW_NAME>:呼び出すワークフロー名

f:id:dolphin-jump1011:20201228235617p:plain 「SHOW MORE」をクリックすると認証設定項目が表れます。

「Authヘッダー」に"OAuthトークンを追加"、「サービスアカウント」にCloud Workflowsの実行ロールを持つサービスアカウントを設定します。

f:id:dolphin-jump1011:20201228235651p:plain 「更新」をクリックし設定を完了させます。Cloud Schedulerのジョブ一覧に遷移しますが、動作をすぐ確認する場合、「今すぐ実行」をクリックし「結果」に”成功”と出力されるのを確認しましょう。

ワークフローをYAMLで定義する

Cloud Workflowsの定義画面でYAMLでワークフローを定義します。

こちらがYAMLです。細かめにコメントいれてます。

#MainWorkflow
main:
  #メインワークフローのステップを定義
    steps:
    - startlog: #ワークフロー開始ログ出力のステップ
        call: sys.log #callフィールドでsys.logを呼び出すとCloud Loggingへログ出力
        args:
            text: "hello-workflowを開始します" #ログメッセージ
            severity: INFO #ログのステータスをINFOに設定
    - runHello1: #ジョブAの実行ステップ
        try: #エラーハンドリング
            call: http.get #callパラメータにHTTPリクエストを設定
            args:
                url: <GAEジョブAのエンドポイント>
            result: Hello1 #ジョブ実行結果の返り値をHello1に入れる
        except: #エラー発生時の処理
            as: e #エラーメッセージをeに入れる
            call: CloudloggingErrorLog #サブワークフローCloudloggingErrorLogを呼び出す
            args:
                errorlog: ${e} #引数errorlogにeを入れる
    - logStep: #前述ステップの正常終了ログ出力ステップ
        call: sys.log
        args:
            text: "runHello1は正常終了しました"
            severity: INFO
    - runHello2: #ジョブBの実行ステップ
        try:
            call: http.get
            args:
                url:<GAEジョブBのエンドポイント>
            result: Hello2
        except:
            as: e
            call: CloudloggingErrorLog
            args:
                errorlog: ${e}
    - logStep2:
        call: sys.log
        args:
            text: "runHello2は正常終了しました"
            severity: INFO
    - runHello3: #ジョブCの実行ステップ
        try:
            call: http.get
            args:
                url: <GAEジョブCのエンドポイント>
            result: Hello3
        except:
            as: e
            call: CloudloggingErrorLog
            args:
                errorlog: ${e}
    - endlogStep: #ワークフロー終了ログ出力のステップ
        call: sys.log
        args:
            text: "runHello3は正常終了しました。hello-workflowは正常終了しました"
            severity: INFO
    - returnResult: #ワークフローの戻り値設定ステップ
        return: ${ Hello1.body + "," + Hello2.body + "," + Hello3.body}
        #ジョブA,B,Cのbodyを返す。(Hello World!,Hello World!,Hello World!)

#SubWorkflow
#Cloud Loggineへエラーログを出力するサブワークフロー
CloudloggingErrorLog:
    params: [errorlog]
    steps:
    - sendErrorLog: 
        call: sys.log
        args:
            text: ${errorlog} #ログメッセージに引数errologを設定
            severity: CRITICAL #ログレベルをCRITICALを設定

正常処理となるメインワークフローとエラーメッセージを出力する処理をサブワークフローに共通処理として定義しています。

また、監視・運用と検証を兼ねてジョブ実行ごとにログメッセージを出力するステップを設定しましたが、ステップ単位で課金されるため安易にステップは追加しない方がよいように思えます。そのため、ログ出力はCloud Workflowsではなく、ジョブ側に任せるなども検討したほうがよさそうです。

今回は使っていませんが、ループ処理やリトライ処理なども定義できます。 本文末尾にリファレンスのリンクも貼っておきます。

ワークフロー図

f:id:dolphin-jump1011:20201228235808p:plain

YAMLをCloud Workflowsの機能で可視化した図です。

所感

GCPでジョブスケジューリングを開発するときに、やっとちょうど良いサービスが出てきたと思えました。Cloud Composerと比較すると機能不足かもしれませんが、簡単なワークフローや個人開発で使うには充分なのかなと思います。またサーバーレスなので運用が楽で未稼働のときに課金されないのも良いです。

参考

Cloud Schedulerのスケジューラ設定

Scheduling a workflow using Cloud Scheduler | Workflows | Google Cloud

Cloud Loggingへのログ送信設定

Sending logs to Cloud Logging | Workflows | Google Cloud

YAMLJSONの構文リファレンス

Syntax reference | Workflows | Google Cloud

最後までお読みいただきありがとうございます。

*1:コスト度外視ならやりたかったです

Google Cloud認定 Professional Data Enginnerに再認定しました

f:id:dolphin-jump1011:20200906202448j:plain
2020年9月1日にGoogle CloudからProfessional Data Enginnerの再認定を受けました。

約1カ月の勉強期間に何をしていたかブログに残します。

 

目次

 

前提

タイトルにある通り今回は「再認定」になります。私は2018年3月に初認定を受けており、今回は認定期間切れに伴う再受験になります。そのため、GCPのデータエンジニア関連に必要なサービスの知識は一定以上は既にあった状態です。また、数年前ですがBigQueryを使ったシステム開発は業務で経験済みです。

受験理由

前にもある通り、認定期間切れもありますが、この2年間でGCPのサービスが大きく変わっていること、私自身がビックデータ系サービスに強みを持っておきたいことから今の知識体系を知っておきたいのが理由です。

勉強期間

試験勉強期間としたのは、2020年8月1日から受験日の27日までの約1カ月間です。ただ、以前から日常的にGCPのサービスアップデートを勉強会、SNSYouTubeなどでチェックは行ってはいました。

試験概要

こちらから。自分の覚えでは2019年版のため、一部のサービス名が現状と異なっているのには注意です。

cloud.google.com

コロナ禍のため、遠隔監視でオンライン受験も選択できましたが、慣れているのと集中できるためテストセンターで受験してきました。

対象サービス

後述する学習リソースを受けてもらうと分かるのですが、主に下記の分野のサービスが対象となっています。初めて受験したときは、この公式ドキュメントをよく読んでいた覚えがあります。

cloud.google.com

cloud.google.com

cloud.google.com

cloud.google.com

他にも、セキュリティ系のCloud IAMとKMS、監視系のCloud Operation(旧称:Stackdriver)も見ておいたほうが良いと思います。

ここまで読むと気づくかもしれませんが、インフラやネットワーク系のサービスは主対象ではないので、クラウドだけどインフラに強くなくても取れそうな資格だったりします。(もちろん知識として持ってたほうがいいです)

学習リソース

2年前に受験したときは公式ドキュメントと実務経験ぐらいしかなかった覚えがありますが、今は充実しているので上手に活用しています。

オンライン学習

今回私はCourseraとUdemyで学習しました。Courseraはサブスクリプション形式で受講できるオンライン学習サービスでGoogle Cloudがデータエンジニア向けコースを提供しています。

www.coursera.org

GCPでデータエンジニアリングをするために、データ処理システムの基礎から、各サービスの具体的な仕組みまで教えてくれます。試験対策にもなりますし、GCPでデータウェアハウス構築やデータ分析するにはどうすれば良いのか学びたい人にもおすすめです。試験観点で注意をするなら、2020年6月ごろに当コースがアップデートされて一部のサービス名や使い方が試験とずれが出てきているのと、個人的な感想ですが、Bigtableのキーの説明が分かりづらかったです。

www.coursera.org

試験対策のコースです。試験勉強のアプローチから、出題傾向、各サービスの知っておくべきポイントに模擬問題といたせりつくせりな気がしました。GCPのサービスは知ってるから試験対策だけしたい場合は、こっちだけで充分かもしれません。

www.udemy.com

こちらはUdemyの試験問題集です。150問(50×3)あり、時間計測と正答率も出してくれます。一通り解くことで、試験に必要な知識の把握と定着ができるのでやっておいて良かったです。

cloud.google.com

Google Cloudの公式模擬試験です。約30問あります。本試験はこれより少し難しいですが、試験前の理解具合を把握するのに良いと思います。私は試験前は約80%の正答率でした。個人的には、勉強開始時にまず模擬試験で試験範囲のイメージを掴んだ後に、他の学習リソースに着手した方が効率的かなと思っています。

ブログ

試験勉強で参考にしたブログのリンクを貼っておきます。未経験の状態からの勉強方法が載っているので、私のブログより詳しいです。(笑)

[Google 認定資格] GCP Professional Data Engineer の勉強方法と対策 | TRaiNZ

書籍

試験勉強のために読んではいないですが、役に立つ知識があった書籍を紹介します。

データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理

たまたま試験勉強と並行して読んでいた技術書です。先にBigtableのキーの仕組みが分かりにくいと書きましたが、こちらでは分かりやすく書かれている章がたまたまあり参考になりました。(この本で、SSTableとLSMツリーと書かれているのがそれです。)

スケーラブルデータサイエンス データエンジニアのための実践Google Cloud Platform

GCPのデータ分析をするためのシステム構築を実際に触りながら学べる書籍です。試験対策だけなら不要かもしれませんが、構築体験をするなら結構良いと思います。

 図解即戦力 ビッグデータ分析のシステムと開発がこれ1冊でしっかりわかる教科書

そもそもデータウェアハウス?、機械学習?、バッチ/ストリーム?などデータ処理システムを構成する単語や技術について、これから学ぶという初学者におすすめです。システムや技術について図と分かりやすい文章で解説してくれており、それに該当するGCP含む製品・サービス名も載っているので試験勉強にもなります。

試験本番

テストセンターではこのご時世なのでマスク着用が義務付けされていました。試験自体は見直し含めて1時間30分ぐらいで終わっています。GCPの試験は正答率は出ないため、直感ですが75%~80%ぐらいはできたんじゃないかなと感じています。

認定記念ノベルティ

f:id:dolphin-jump1011:20200907002747j:plain

認定されると認定ロゴ入りのノベルティを1個選べます。資格によって種類が異なるのですが、Data Enginnerは現状この6点でした。新しいタンブラーが欲しいと思っていたので右上の「タンブラー、フレーム、キーボードリフトサポートセット」を申し込みました。今から届くのが楽しみです。(前はリュックを選んで今も使っています。)

このブログを見てくれた方の参考になれば幸いです。

AWS S3をコマンドプロンプトとAWS CLIで操作するときの備忘録

 最近、仕事でWindows環境からS3をAWS CLIで作業することが多かったので、今後のための備忘録です。

 

 

1.AWS CLIインストール

下記リンクからWindowsインストーラーをダウンロードして、インストールする。

AWS コマンドラインインターフェイス(CLI: AWSサービスを管理する統合ツール)| AWS

 

2.準備

AWSアカウント接続

AWSアカウントへ接続するための方法は色々ありますが、一時的な操作だったり、バッチファイルを作る場合は環境変数を使って接続する方法がある。

 コマンド

 SET AWS_ACCESS_KEY_ID=アクセスキーID

 SET AWS_SECRET_ACCESS_KEY=シークレットアクセスキー

 SET AWS_DEFAULT_REGION=リージョン

 

バケットの準備

以下の構成のフォルダとファイルを準備

 フォルダ数:2

 ファイル数:5

 オブジェクト数:7

具体的な構成

>aws s3 ls s3://test-cli-upload-1011 --recursive --human-readable --summarize
2019-12-31 22:45:35 0 Bytes test-folder1/
2019-12-31 22:46:37 0 Bytes test-folder1/test-doc1.txt
2019-12-31 22:46:37 0 Bytes test-folder1/test-doc2.txt
2019-12-31 22:45:45 0 Bytes test-folder2/
2019-05-16 11:33:41 12 Bytes test.txt
2019-05-16 12:34:47 11 Bytes testupload.txt
2019-05-16 14:52:09 11 Bytes testupload2.txt

Total Objects: 7
Total Size: 34 Bytes

 

3.S3からコマンドプロンプトのコマンドと組み合わせて何かを取得する

バケット内のフォルダのみ一覧を取得する

aws s3 ls s3://バケット名 --recursive | findstr /R "\/\">"

サンプル:

>aws s3 ls s3://test-cli-upload-1011 --recursive | findstr /R "\/\>"
2019-12-31 22:45:35 0 test-folder1/
2019-12-31 22:45:45 0 test-folder2/

 

バケット内のファイルのみ一覧を取得する

aws s3 ls s3://バケット名 --recursive | findstr /R "\....\">"

サンプル:

>aws s3 ls s3://test-cli-upload-1011 --recursive | findstr /R "\....\>"
2019-12-31 22:46:37 0 test-folder1/test-doc1.txt
2019-12-31 22:46:37 0 test-folder1/test-doc2.txt
2019-05-16 11:33:41 12 test.txt
2019-05-16 12:34:47 11 testupload.txt
2019-05-16 14:52:09 11 testupload2.txt

 

バケット内のフォルダ or ファイルの総数を取得する

aws s3 ls s3://バケット名 --recursive | findstr /R "正規表現" | find /v /c ""

サンプル

フォルダ数>aws s3 ls s3://test-cli-upload-1011 --recursive | findstr /R "\/\>" | find /v /c ""

2

ファイル数>aws s3 ls s3://test-cli-upload-1011 --recursive | findstr /R "\....\>" | find /v /c ""
5

 

参考

https://docs.aws.amazon.com/cli/index.html

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-services-s3.html

私家版AWS CLI S3チートシート - Qiita

file — S3バケットに保存したオブジェクトの数を確認するにはどうすればよいですか?

findstr | Microsoft Docs

Windowsのfindstrで正規表現を検索する:Tech TIPS - @IT

コマンドプロンプト findstr - [文字列や正規表現を使って文字列を検索する]

コマンドプロンプト/テキストの行数を調べる方法・find - Windowsと暮らす

 

 

 

Google Cloudの無料トレーニングラボの雑感

 久しぶりのブログです。仕事が忙しくなり帰宅が遅いため、プライベートでの勉強時間確保が難しくなってます。

 

 社内で初めてGCPのレクチャーを近々する必要があり、教材ないかと教えていただいたのが無料のトレーニングラボ。Google Cloudのプロダクトのハンズオンが無料でできるようです。

cloud.google.com

GCPを中心に、Googleアシスタント、FirebaseにG Suiteのハンズオンがあります。隙間時間で初めて触ってみるきっかけとして良さそうです。

 

料金

各トレーニングは無料なのですが、現状(2019/12/01)一部は有料(1クレジット)みたいです。随時変わっていくのかもしれないです。

 

有料のトレーニン

App Engine: Qwik Start - Python

App Engine: Qwik Start - Go

Cloud Security Scanner: Qwik Start

 

(App EngineのJavaPHPは無料なのに、言語によって違うのはなぜ?)

 

個人的なトレーニングラボのおすすめな進め方

 一部やってみたり、一通りトレーニング内容を読んでみて、自分なら、GCP初学者にこの順序でトレーニングラボを実施させようと考えました。

1.Qwiklabs と Google Cloud Platform の概要

  このトレーニングラボを実施するうえで必要なQwiklabsの説明とGCPを触るためのコンソールやCloudShellの説明があります。トレーニングラボで常に触るものなので、まず操作を覚えてもらう必要がありますね。

 

次からは学ぶ人が何のエンジニアをやるのかで分かれると思います。GCPだと「クラウド インフラストラクチャ」「アプリケーション開発」「データと機械学習」のカテゴリから、目的にあったものを選んで進めればよいと思います。

 

2.「クラウド インフラストラクチャ」

 インフラ(クラウド)エンジニアならこのカテゴリだと思いますが、用意されているのがCloud Pub/Subのトレーニングラボ。。。いきなりメッセージングサービスは違うかと思いましたので、有料になりますがまず以下のトレーニングラボを実施するのが良いと思います。

 ・Cloud Shell と gcloud のスタートガイド

 ・仮想マシンの作成

 

また、以下のコースを受講するとGCPのインフラ基礎機能を一通り触れそうです。前述したトレーニングラボも一部含まれています。

 ・GCP Essentials | Qwiklabs

       GCP概要に加えて、仮想マシン作成、GKEにロードバランサのトレーニングラボがあります。

 ・Baseline: Infrastructure | Qwiklabs

  Cloud Storage,Cloud IAM,Stackdriver,Cloud Functions,Cloud Pub/Subのトレーニングラボがあります。

 

3.「アプリケーション開発」

 App Engineによるアプリ開発に加えて、GCP以外のアプリ開発のハンズオンもありますが、GCPアプリ開発をするなら以下のトレーニングラボを実施すると良いと思います。

 ・App Engine: Qwik Start

  各言語からいずれか一つ。

 ・Datastore: Qwik Start

  App Engineと共に使う機能になることも多いので実施しておいて良いと思います。

 ・Cloud Security Scanner: Qwik Start

  App Engineアプリケーションの脆弱性検知の手段を知っておくために。

 ・Stackdriver Profiler: Qwik Start

  App Engineアプリケーションのパフォーマンスの計測手段を知っておくために。

 

また、上記のトレーニングラボを一部含んでいる以下のコースを受講するとソース管理の方法も知ることができて良いと思います。

 ・Baseline: Deploy & Develop | Qwiklabs

 

4.「データと機械学習

 BigQueryを使う人向けのトレーニングラボになっています。

 一通り実施すると良いと思います。

 ・BigQuery: Qwik Start - コマンドライン

 ・データポータルを使ったデータ探索とレポート作成

 ・BigQuery ウェブ UI の使用

 ・Google BigQuery で SQL を使用して e コマース データセットを探索する

 ・BigQuery でのよくある SQL エラーのトラブルシューティング

 

その他:

 ページ下部にCourseraの1カ月無料のコースも載っています。オンデマンドトレーニングに慣れている人はこちらを受講してみるのも良いと思います。

  

以上。

 

 

医療情報技師能力検定試験を受験した


f:id:dolphin-jump1011:20190825212521j:image

前の日曜日(2019年8月25)に初めての試験を受験したので感想を記録します。

2019/10/12 追記

10/10に試験結果が発表されたので、文末に結果を追記しました。

 

 

医療情報技師能力検定試験とは?

 一般社団法人 日本医療情報学会医療情報技師育成部会が運営している検定試験で、医療情報技師として3領域(情報処理技術・医学情報システム・医学医療)の知識・技能が一定のレベルに達しているか判定するための試験です。

医療情報技師育成部会

以下、3領域の説明および主観的な出題範囲です。

  • 情報処理技術:IT技術の知識を持っているか求められます。知識のレベルとしてはIPA基本情報処理技術者試験と同程度か少し簡単な範囲です。午前I&Ⅱを想像してもらえると良いと思います。
  • 医療情報システム:病院などの福祉医療施設で稼働する医療情報システムに関する知識を持っているか求められます。業務部門ごとに稼働している業務システムの知識、保健医療福祉で扱うデータの標準規格の知識、システムの企画運用の知識など出題されます。
  • 医学医療:医学および国内の保健医療福祉制度の一般的な知識を持っているか求められます。国内の保健医療福祉に関する法律・制度、医学、病院経営、医学研究の知識など出題されます。本職がITエンジニアの方にとって、最も難しい領域になると思います。私はそうでした。

医療情報技師育成部会 試験実施概要

試験の実施方法や日程はこちらを見てください。1年に1回しかないのがなかなか厳しいです。

動機

 普段関わっている病院でどのようなシステムが稼働しているのか裏側を患者としてシステムエンジニアとして知りたくなったからです。新卒1年目で病気を患い、ずっと病院に通院しているのですが、その過程で診察や請求支払の方法が電子カルテや料金支払い機の導入が病院で行われているのをリアルタイムで観ていて関心があったのと、普段お世話になっている医学医療について基礎知識を持っておくと治療の幅が広がることを感じていました。

勉強方法

 2つの方法をとりました。問題集を解く、参考書を読むです。

医療情報技師能力検定試験過去問題・解説集2019: 書籍/南江堂

タイトルで分かりますが、この試験のための過去問題集です。過去5年分の問題・解説が載っています。書籍と電子版がありますが自分の勉強スタイルに合わせて買ってよいと思います。私は外出先でも手軽に見たかったので電子版を買い、3領域を3年分解いたあと、正答率の悪い医療情報システムと医学医療に絞って繰り返し解きました。

 

医療情報の基礎知識: 書籍/南江堂

過去問題を解いていて医学医療の知識がなさすぎて合格点届かないと分かったので追加で購入しました。主題範囲を網羅できてはいませんが、全体を俯瞰して知るのに良い書籍です。最初からこの書籍を買って勉強しておくべきだったなと反省しています。

 

また、受験するならこの書籍を買って一通り知識を着けておかないといけないと感がています。

書籍情報 医学医療編

試験当日

 会場である池袋サンシャインシティ文化会館で3領域全て受験してきました。

会場の雰囲気は情報処理技術者試験TOEICと同じ雰囲気で、部屋に時計もあり用意しなくてよかったのが便利です。試験の方は情報処理技術は大丈夫で、医療情報システムはそこそこ解くことができました。ただ、医学医療だけはダメな感じです。体の構造や病気とその治療に関する問題が全くダメで、合格点に届いていない気がします。

感想

 結果は10月中旬に発表される予定ですが、合格は無理かなと思っています。でも、日本の医療福祉保健がどの様に成り立っているのか知れたのと、病院の医療システムについても知ることで自分の見識が広がったのは良かったと思います。今後、通院するとにはここで得た知識を活かすこともあれば良いかな。

 

追記:試験結果発表

 10月10日に試験結果が発表されました。

 医療情報技師育成部会 試験結果

期待しないで認定者一覧を見ていたら...

ありました!!受験番号が!!

というわけで合格です。医療情報技師に認定されました!

各領域の試験結果ですが、以下の通りです。

まずは今回の合格判定基準点。先ほどのリンクから引用。

 各科目の合格判定基準点は、「情報処理技術系」60点(100点満点)以上、「医療情報システム系」74点(120点満点)以上、「医学・医療系」58点(100点満点)以上としました。

私の結果は以下の通り。

  • 情報処理技術系:88点(50問中44問正解)
  • 医療情報システム系:80点(60問中40問正解)
  • 医学医療系:60点(50問中30問正解)

ダメだと思っていた医学医療系がギリギリでした。でも、合格できたので嬉しいです。合格発表日の翌日からは早速医療情報技師向けのセミナー案内が届くようになりました。費用的に個人で行くには厳しいセミナーですが、新しい世界が知ることができて面白いです。