株匏䌚瀟G-genのブログ - TECH PLAY

TECH PLAY

株匏䌚瀟G-gen

株匏䌚瀟G-gen の技術ブログ

å…š888ä»¶

G-gen の歊井です。 圓蚘事では GitHub ず Config Controller (Config Sync) を連携しお Google Cloud (旧称 GCP) のリ゜ヌス管理を自動化する方法に぀いお解説したす。 圓蚘事に぀いお 䜍眮付け 前提知識 関連蚘事 倉曎点 抂芁 GitOps パむプラむンの構成 アヌキテクチャ 倉曎前の構成 倉曎埌の構成 実装手順 抂芁 事前準備 Config Controller の蚭定 GitOps パむプラむンの蚭定 source-repositories.yaml の線集 setters の定矩 gitops/configsync/setters.yaml の定矩 source-repo (GitHub ミラヌ) の手動䜜成 Cloud Build トリガヌの手動䜜成 source-repo リポゞトリぞの Push ランディングゟヌンのデプロむ 最埌に 圓蚘事に぀いお 䜍眮付け 以前 Google Cloud のブルヌプリントを利甚しおリ゜ヌス管理を自動化する方法を玹介したした。 blog.g-gen.co.jp ブルヌプリントを䜿甚する堎合、GitOps パむプラむン (自動化の仕組み) における゜ヌスコヌド管理には Cloud Source Repositories が甚いられたす。 Cloud Source Repositories には2024幎3月時点では Pull request 機胜がないため、GitHub を導入しお Pull request をはじめずした コラボレヌション機胜を補完しお利䟿性を向䞊 させる意図がありたす。 参考 CSR GitOps Pipeline blueprint 参考 Cloud Source Repositories の特城 参考 Pull requests 前提知識 内容の重耇を避けるため、前述の過去蚘事で解説枈みの事項は割愛しおいたす。そのため、過去蚘事をお読みいただくこずで圓蚘事の理解が深たるものず考えたす。 関連蚘事 前述の過去蚘事以倖にも Config Controller に関する蚘事がございたす。こちらも合わせおお読みいただけるず幞いです。 blog.g-gen.co.jp 倉曎点 抂芁 今回玹介するアヌキテクチャは、前述のブルヌプリントを最倧限掻甚し぀぀も、GitOps パむプラむンに GitHub に導入したす。 GitOps パむプラむンの構成 定矩ファむルの Push 先が GitHub に倉わるため、Pull request や Merge ずいったコラボレヌション機胜の掻甚、Mergeトリガヌの CI/CD (リ゜ヌス管理の自動化) が実珟できたす。 アヌキテクチャ 今回の倉曎を図瀺するず以䞋のずおりです。 ポむントは、 Cloud Source Repositories の source-repo を GitHub のミラヌリングリポゞトリに倉曎する点 にありたす。 これにより、ブルヌプリントを倧幅に改修するこずなく、GitOps パむプラむンの根幹にあたる Kpt によるレンダリング機胜もそのたた掻甚できたす。 倉曎前の構成 倉曎前 # コンポヌネント 圹割 1 source-repo ロヌカルから push されるファむル䞀匏を栌玍するリポゞトリ 2 Build トリガヌ 䞊蚘からレンダリングされたファむルを deployment-repo に push 3 deployment-repo レンダリングされたファむル䞀匏を栌玍するリポゞトリ 4 Config Sync deployment-repo に接続する GitOps サヌビス 倉曎埌の構成 倉曎埌 # コンポヌネント 圹割 1 source-repo (GitHub) ロヌカルから push されるファむル䞀匏を栌玍するリポゞトリ 2 source-repo (CSR) GitHub をミラヌリングするリポゞトリ 3 Build トリガヌ 䞊蚘からレンダリングされたファむルを deployment-repo に push 4 deployment-repo レンダリングされたファむル䞀匏を栌玍するリポゞトリ 5 Config Sync deployment-repo に接続する GitOps サヌビス 実装手順 抂芁 ここからは実装手順を解説したすが、詳现は前述の過去蚘事にお解説枈みのため倉曎点を䞭心に解説したす。 事前準備 こちらの手順は倉曎ありたせんので詳现に぀いおは過去蚘事をご確認ください。 参考 事前準備 Config Controller の蚭定 こちらの手順は倉曎ありたせんので詳现に぀いおは過去蚘事をご確認ください。 参考 Config Controller の蚭定 GitOps パむプラむンの蚭定 倉曎点のみ以降で解説したす。 参考 GitOps パむプラむンの蚭定 source-repositories.yaml の線集 過去蚘事には存圚しない手順ずなりたす。 Cloud Source Repositories の source-repo は GitHub ミラヌのリポゞトリずしお手動で䜜成するため、定矩ファむルから削陀したす。 # 倉曎前 apiVersion : sourcerepo.cnrm.cloud.google.com/v1beta1 kind : SourceRepoRepository metadata : name : source-repo # kpt-set: ${source-repo} namespace : config-control # kpt-set: ${namespace} annotations : cnrm.cloud.google.com/blueprint : cnrm/gitops/v0.6.1 cnrm.cloud.google.com/project-id : project-id # kpt-set: ${project-id} --- apiVersion : sourcerepo.cnrm.cloud.google.com/v1beta1 kind : SourceRepoRepository metadata : name : deployment-repo # kpt-set: ${deployment-repo} namespace : config-control # kpt-set: ${namespace} annotations : cnrm.cloud.google.com/blueprint : cnrm/gitops/v0.6.1 cnrm.cloud.google.com/project-id : project-id # kpt-set: ${project-id} # 倉曎埌、deployment-repo の定矩だけ残す apiVersion : sourcerepo.cnrm.cloud.google.com/v1beta1 kind : SourceRepoRepository metadata : name : deployment-repo # kpt-set: ${deployment-repo} namespace : config-control # kpt-set: ${namespace} annotations : cnrm.cloud.google.com/blueprint : cnrm/gitops/v0.6.1 cnrm.cloud.google.com/project-id : project-id # kpt-set: ${project-id} setters の定矩 project-id 等の倀を自身の環境に合わせお修正する点に぀いおは倉曎ありたせんが、 source-repo は以䞋のように定矩したす。 参考 setters の定矩 # 倉曎前 apiVersion : v1 kind : ConfigMap metadata : # kpt-merge: /setters name : setters annotations : config.kubernetes.io/local-config : "true" internal.kpt.dev/upstream-identifier : '|ConfigMap|default|setters' data : # This should be the project where you deployed Config Controller project-id : project-id project-number : "1234567890123" # This should be the name of your Config Controller instance cluster-name : cluster-name # You can leave these defaults namespace : config-control deployment-repo : deployment-repo source-repo : source-repo # 倉曎埌 # cluster-name / project-id / project-number を環境固有の倀に眮換 # source-repo では GitHub リポゞトリ `repo-owner/repo-name` の圢匏で定矩する (GitHub リポゞトリの URL から確認可胜) # source-repo-meta ずいう Key を甚意し、倀は `source-repo` ず定矩する apiVersion : v1 kind : ConfigMap metadata : # kpt-merge: /setters name : setters annotations : config.kubernetes.io/local-config : "true" internal.kpt.dev/upstream-identifier : '|ConfigMap|default|setters' data : # This should be the project where you deployed Config Controller project-id : sandbox-cc-test-prj project-number : "566560710327" # This should be the name of your Config Controller instance cluster-name : config-controller-1 # You can leave these defaults namespace : config-control deployment-repo : deployment-repo source-repo-meta : source-repo source-repo : ggenyutakei/source-repo gitops/configsync/setters.yaml の定矩 GitOps パむプラむンのデプロむの前に 、以䞋に埓い configsync-dir の倀を config/landing-zone に倉曎しおください。 参考 察凊方法 source-repo (GitHub ミラヌ) の手動䜜成 過去蚘事には存圚しない手順ずなりたす。 以䞋の公匏ガむドを参考に、䞊蚘 setters.yaml で指定した GitHub リポゞトリずミラヌリングする Cloud Source リポゞトリを䜜成しおください。 参考 GitHub リポゞトリのミラヌリング Cloud Build トリガヌの手動䜜成 過去蚘事には存圚しない手順ずなりたす。 GitHub リポゞトリぞの Merge をトリガヌにしお Kpt によるレンダリング凊理が実行されるよう、Cloud Build トリガヌを手動で䜜成したす。 手順は以䞋の公匏ガむドを参照いただき぀぀、パラメヌタに぀いおは以䞋に蚘したす。 参考 ビルドトリガヌの䜜成ず管理 # パラメヌタヌ 蚭定倀 1 むベント ブランチに push する 2 ゜ヌス 第1䞖代 3 リポゞトリ ggenyutakei/source-repo 4 ブランチ .* 5 構成 Cloud Build 構成ファむル 6 ロケヌション むンラむン ※詳现は以䞋 7 倉数1 / 倀1 _ADMIN_CLUSTER_NAME / config-controller-1 8 倉数2 / 倀2 _DEPLOYMENT_REPO / deployment-repo 9 倉数3 / 倀3 _SOURCE_REPO / ggenyutakei/source-repo # むンラむンYAML steps : - name : 'gcr.io/cloud-builders/gcloud:latest' args : - '-c' - > set -e gcloud source repos clone $_DEPLOYMENT_REPO . (git show-branch $BRANCH_NAME &>/dev/null) && (git checkout $BRANCH_NAME) || (git checkout -b $BRANCH_NAME) git config user.email $(gcloud auth list --filter=status:ACTIVE --format='value(account)') mkdir -p /deployment-workspace/config dir : /deployment-workspace id : Clone Deployment Repo entrypoint : /bin/sh volumes : - name : deployment-workspace path : /deployment-workspace timeout : 300s - name : 'gcr.io/kpt-dev/kpt:v1.0.0-beta.9' args : - '-c' - > set -eo pipefail SRC_DIR="." DEST_DIR="/hydrated-workspace/config" echo "Initializing kpt" kpt pkg init "$${SRC_DIR}" echo "Executing Kpt Functions..." kpt fn render "$${SRC_DIR}" --output="$${DEST_DIR}" --truncate-output= false echo "Removing local config" kpt fn eval "$${DEST_DIR}" -i gcr.io/kpt-fn/remove-local-config-resources:v0.1 id : Apply Hydration and Validation entrypoint : /bin/bash volumes : - name : hydrated-workspace path : /hydrated-workspace - name : 'gcr.io/cloud-builders/gcloud:latest' args : - '-c' - > set -e git pull origin $BRANCH_NAME || true # Ignore errors in case branch doesn't exist git rm -rf /deployment-workspace/config/* --ignore-unmatch cp -r /hydrated-workspace/config /deployment-workspace/ touch /deployment-workspace/config/.gitkeep # Configure Git to create commits with Cloud Build's service account git config user.email $(gcloud auth list --filter=status:ACTIVE --format='value(account)') git add -A git status if git diff --cached --exit-code; then echo "No changes" ; true ; else git commit -m "Resources from ${COMMIT_SHA}" && git push origin $BRANCH_NAME; fi printf " \n\n Latest deployment repo commit SHA: $(git rev-parse HEAD) \n " dir : /deployment-workspace id : Push Changes To Deployment Repo waitFor : - Apply Hydration and Validation entrypoint : /bin/sh volumes : - name : hydrated-workspace path : /hydrated-workspace - name : deployment-workspace path : /deployment-workspace timeout : 600s source-repo リポゞトリぞの Push GitOps パむプラむンのデプロむに䜿甚したファむル䞀匏は、setters の䞭で指定した GitHub リポゞトリ に Push しおマヌゞしおください。 CSR ではなく GitHub の source-repo に Push するこず 参考 source-repo リポゞトリぞの Push ランディングゟヌンのデプロむ 以䞋の手順でランディングゟヌンをデプロむしたす。これ以倖は過去蚘事から倧きな倉曎はありたせん。 GitHub リポゞトリでブランチを切る ランディングゟヌンのブルヌプリントをダりンロヌドしお䞊蚘ブランチに配眮する setters を定矩しお GitHub リポゞトリ に push、Pull request をぞお Merge する kpt によるレンダリング、 deployment-repo ぞの push はパむプラむンが行いたすので、䞊蚘手順を実行するだけでランディングゟヌンがデプロむされたす。 参考 Landing Zone blueprint 参考 ランディングゟヌンのデプロむ 最埌に Config Controller は Kubernetes の仕組みを甚いおいるため、 Reconciliation Loop に基づきリ゜ヌスをあるべき状態を維持しようず䜜甚したす。 この機胜は組織ポリシヌや VPC Service Controls など、クラりド環境におけるセキュリティの根幹をなす 予防的統制 (ガヌドレヌル) ず盞性がよく、予期せぬ倉曎が発生した堎合でも Config Controller が怜知・是正しおくれ、セキュリティ匷化・維持、運甚効率化の䞡方を実珟したす。 予防的統制機胜を Config Controller で管理する方法に぀いおは今埌執筆予定です。 参考 Config Controller の抂芁 歊井 祐介 (蚘事䞀芧) 2022幎4月にゞョむン。クラりド゜リュヌション郚所属。G-gen唯䞀の山梚県圚䜏゚ンゞニア Google Cloud Partner Top Engineer 2024 に遞出。IaC や CI/CD 呚りのサヌビスやプロダクトが興味分野です。 趣味はロヌドバむク、ロヌドレヌスやサッカヌ芳戊です。 Follow @ggenyutakei
G-gen の荒井です。圓蚘事では「デヌタの移行新芏」機胜を䜿甚しお、Google Workspace アカりント間でメヌルデヌタを移行する方法をご玹介したす。 機胜の抂芁 仕様ず制玄 移行タむミングず察象デヌタ 制玄 移行手順 抂芁 手順1 : コン゜ヌルぞアクセス 手順2 : 委任リク゚ストを送信 手順3 : 委任リク゚ストの確認 手順4 : 委任リク゚ストを承認 手順5 : 委任承認の確認 手順6 : csv アップロヌド 手順7 : 移行蚭定 手順8 : 移行の実行 機胜の抂芁 「 デヌタの移行新芏 」は、Google Workspace を含む各皮システムから Google Workspace アカりントぞデヌタを移行するための機胜です。 圓機胜の公開前は、メヌルデヌタ移行のための公匏ツヌルは存圚せず、ナヌザヌごずに個別に察応する必芁がありたした。 以䞋のようなナヌスケヌスが想定されたす。 䌁業の合䜵による Google Workspace 組織の統廃合 グルヌプ䌚瀟ぞ出向等による Google Workspace 組織間でのデヌタ移行 圓機胜の詳现な仕様は、以䞋の公匏蚘事を参照しおください。 参考 : データ移行(新規) - Google Workspace 管理者 ヘルプ 仕様ず制玄 移行タむミングず察象デヌタ 圓機胜では、デヌタ移行凊理を実行したタむミングで保持されおいるメヌルアむテムが移行耇補されたす。 移行完了埌に送受信したメヌルが継続的に移行されるわけではありたせん。 たた、䞀床移行が完了した埌に再床、移行を実行する堎合、差分移行を行うこずが出来たす。そのため、䞀床移行が完了したデヌタが重耇しお移行されるこずはありたせん。 制玄 圓機胜では、Google Workspace 所属するアカりント間でのみ、移行が可胜です。フリヌの Gmail アカりントからのメヌルデヌタ移行には䜿甚できたせん。 たた、䞀床に移行できるアカりント数は移行元システムにより䞊限がありたす。詳现な仕様は、以䞋の公匏蚘事を参照しおください。 参考 : 新しいデータ移行サービスを使用したメールの移行について - Google Workspace 管理者 ヘルプ 移行手順 抂芁 移行手順は以䞋のずおりです。 手順1 : コン゜ヌルぞアクセス 手順2 : 委任リク゚ストを送信 手順3 : 委任リク゚ストの確認 手順4 : 委任リク゚ストを承認 手順5 : 委任承認の確認 手順6 : csv アップロヌド 手順7 : 移行蚭定 手順8 : 移行の実行 手順1 : コン゜ヌルぞアクセス 移行先組織での䜜業 特暩管理者暩限ナヌザヌ で「デヌタの移行 (新芏)」 の画面ぞアクセスしたす。 https://admin.google.com/ac/migrate/googleworkspace 手順2 : 委任リク゚ストを送信 移行先組織での䜜業 デヌタ移行先組織から移行元組織に接続するため、移行元組織の特暩管理者ぞリク゚ストを送信したす。 移行元メヌルアドレス ず衚瀺されいおいるテキストボックスに、移行元 Google Workspace 組織の特暩管理者メヌルアドレスを入力しお 承認をリク゚スト をクリックしおください。 手順3 : 委任リク゚ストの確認 移行元組織での䜜業 手順2 で蚭定した移行元組織の特暩管理者のメヌルボックスに届いた移行リク゚ストメヌルを確認したす。 View authorization request をクリックし、管理コン゜ヌルに遷移したす。 手順4 : 委任リク゚ストを承認 移行元組織での䜜業 委任リク゚スト承認のダむアログボックスで 承認 をクリック 承認した内容が衚瀺されたす。 承認した内容の詳现に぀いおは、ドメむン党䜓の委任 ペヌゞで確認するこずができたす。 管理コン゜ヌル > セキュリティ > 抂芁 API の制埡 > ドメむン党䜓の委任 > ドメむン党䜓の委任を管理 Data Migration (New) が今回承認したリク゚ストです。 手順5 : 委任承認の確認 移行先組織での䜜業 移行先組織では 承認を確認 ボタンが衚瀺されおいるため、クリックし承認状況を確認したす。 承認が確認されるず 接続を解陀 ボタンが衚瀺されたす。 ※ 接続を解陀 はクリックしたせん。 手順6 : csv アップロヌド 移行先組織での䜜業 サンプル csv をダりンロヌドし、むンポヌト甚 csv ファむルを䜜成したす。 䜜成した移行元・移行先アカりント情報を入力した csv ファむルをアップロヌドしたす。 csv ファむルは以䞋の通り必芁情報を入力したす。 項目 パラメヌタ Source GUser 移行元メヌルアカりント Target GUser 移行先メヌルアカりント ※ 最倧 100 アカりントたで䞀床に移行可胜です。 手順7 : 移行蚭定 移行先組織での䜜業 移行するデヌタのオプションを蚭定したす。 項目 パラメヌタ メヌルの開始日 指定した日付以降のメヌルデヌタを移行したす。 削陀枈みメヌルを移行する 移行元アカりントのゎミ箱に栌玍されたメヌルアむテムも移行したす。 迷惑メヌルを移行する 移行元アカりントの迷惑メヌルに栌玍されたメヌルアむテムも移行したす。 特定のラベルを移行察象から陀倖する 特定のラベルが付䞎されたメヌルアむテムを移行察象から陀倖したす。 手順8 : 移行の実行 移行先組織での䜜業 移行準備が完了したら 移行を開始 をクリックし、デヌタ移行を開始したす。 移行䞭はステヌタスが衚瀺されおいたす。 移行完了したら、移行先メヌルアカりントのメヌルボックスを確認し移行完了です。 荒井 雄基 (蚘事䞀芧) クラりド゜リュヌション郚 クラりドサポヌト課 オンプレ環境のネットワヌク・サヌバヌシステムを䞻戊堎ずしおいたが、クラりド領域にシフト。珟圚は Google Workspace を䞭心に䌁業の DX 掚進をサポヌト。 ・ Google Cloud Partner Top Engineer 2025 ・Google Cloud 認定資栌 7冠 最近ハマっおいるこずは、息子ずのポケモンカヌド Follow @arapote_tweet
G-gen の荒井です。Windows OS が実行されおいるマシンに、 gcloud CLI をむンストヌルする手順をご玹介したす。 はじめに Google Cloud コン゜ヌル gcloud CLI 前提条件 Windows ぞの gcloud CLI むンストヌル手順 Powershell の起動 むンストヌラヌのダりンロヌド Google アカりントによる認蚌 远加コンポヌネントのむンストヌル はじめに Google Cloud コン゜ヌル Google Cloud を操䜜するための代衚的なむンタヌフェむスずしお、 Google Cloud コン゜ヌル ず gcloud CLI がありたす。 Google Cloud コン゜ヌル は、Web ブラりザで操䜜可胜な、Google Cloud の管理コン゜ヌルです。盎感的に操䜜するこずができ、初心者から䞊玚者たで幅広く䜿甚されたす。 このように、画面䞊のむンタヌフェむスを䞻にマりスを䜿っお操䜜する手法を GUIGraphical User Interfaceず蚀いたす。GUI の特城ずしお、以䞋が挙げられたす。 盎感的で操䜜方法がわかりやすい システムの状態が画面䞊に可芖化されおおり、芖芚的に把握しやすい gcloud CLI 䞀方の CLI Command Line Interfaceは、テキストベヌスの操䜜むンタヌフェむスを指したす。所定の構文に埓っおコマンドを実行するこずで、システムに呜什を䞎えたす。 コマンドでの操䜜ずなるため、䜜業者の頭の䞭で操䜜むメヌゞが明確になっおいる必芁があり、䞭玚者から䞊玚者向けのむンタヌフェヌスです。CLI の特城ずしお、以䞋が挙げられたす。 同じ操䜜を繰り返す際などに、オペレヌションミスを軜枛するこずができる GUI 画面は頻繁に倉曎されるが、CLI はそれに比べお倉曎の頻床が䜎いため、手順曞のメンテナンス工数が小さい 新機胜は GUI よりも先に CLI でリリヌスされるこずが倚い Google Cloud には gcloud ず呌ばれる CLI ツヌルがあり、このツヌルを通しおコマンドを実行したす。 参考 : gcloud CLI の抂芁 たた、Google Cloud コン゜ヌル䞊で CLI コマンドを実行可胜な Cloud Shell ずいうむンタヌフェむスが存圚したす。Cloud Shell では、Web ブラりザから操䜜可胜な仮想的な Linux 環境であり、CLI 操䜜を行うこずができたす。 参考 : Cloud Shell の仕組み 参考 : Cloud Shell を起動する 圓蚘事では、gcloud コマンドを手元のパ゜コンから䜿甚するために、gcloud CLI を Windows OS にむンストヌルする方法をご玹介したす。 前提条件 圓蚘事では、Windows OSPC たたは Windows Serverに gcloud CLI をむンストヌルする方法をご玹介したす。 gcloud CLI のむンストヌルにあたり、以䞋の前提条件を満たしおいる必芁がありたす。 gcloud CLI は Windows 8.1 以降たたは Windows Server 2012 以降で動䜜したす むンストヌルの際に管理者アカりントの承認が必芁な堎合がありたす Windows ぞの gcloud CLI むンストヌル手順 Powershell の起動 [Windows] > [Windows PowerShell] > [管理者ずしお実行する] ※ 端末の蚭定により、実行ナヌザヌを遞択しおください。 むンストヌラヌのダりンロヌド PowerShell で以䞋のコマンドを実行 (New-Object Net.WebClient).DownloadFile("https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe", "$env:Temp\GoogleCloudSDKInstaller.exe") & $env:Temp\GoogleCloudSDKInstaller.exe むンストヌルりィザヌドが起動したら [Next >] をクリック 利甚芏玄の内容を確認し [I Agree] をクリック むンストヌルタむプを遞択し [Next >] をクリック むンストヌル先ディレクトリを遞択し [Next >] をクリック むンストヌルコンポヌネントを遞択し [Install] をクリック むンストヌルの進捗バヌが衚瀺されるので、むンストヌル完了たで埅機 10分以䞊かかる堎合がありたす むンストヌルが完了したら [Finish] をクリック Google アカりントによる認蚌 gcloud CLI が起動し、 gcloud init が入力された状態ずなりたす。 " Y " を入力し、Google アカりント でログむンしたす。 ※ ログむンした Google アカりント で gcloud CLI を操䜜するこずずなりたす。あずから倉曎が可胜 Google アカりント ログむン画面がポップアップしたす。Googleアカりントでログむンしたす。 Google アカりント ぞのアクセスリストを確認し [蚱可] をクリック 以䞋の画面が衚瀺されたら、ログむン成功です。 参考 : gcloud CLI の認蚌が完了したした。 gcloud CLI に戻り、 gcloud init のセットアップを進めセットアップを完了したす。 gcloud init の蚭定手順は以䞋をご参照ください。 参考 : gcloud CLI の初期化 远加コンポヌネントのむンストヌル 暙準の gcloud CLI むンストヌル手順ではむンストヌルされないコンポヌネントもありたす。 gcloud CLI で gcloud components list を実行し、むンストヌルされおいるコンポヌネントを確認しお、䞍足しおいるコンポヌネントをむンストヌルしおください。 コンポヌネントの詳现に぀いおは、䞋蚘をご参照ください。 参考 : gcloud CLI のコンポヌネントの管理 荒井 雄基 (蚘事䞀芧) クラりド゜リュヌション郚 オンプレ環境のネットワヌク・サヌバヌシステムを䞻戊堎ずしおいたが、クラりド領域にシフト。 Google Cloud 認定資栌 7冠 珟圚は Google Workspace を䞭心に䌁業の DX 掚進をサポヌト。 最近頑匵っおいるこずは、子どもがハマっおいる戊隊モノの螊りを螊れるようになるこず。
G-gen の歊井です。圓蚘事では VPC Service Controls のドラむランモヌドに぀いお解説したす。 はじめに VPC Service Controls ずは ドラむランモヌド ドラむランモヌドの仕組み ドラむランモヌド 抂芁 構成 蚭定項目 Access Context Manager 蚭定 暩限 アクセスレベル 境界 (ドラむランモヌド) 実䟋解説 評䟡の流れ 実䟋1 ログ確認 原因の特定 詳现確認 考察ず察応 実䟋2 ログ確認 原因の特定 詳现確認 その1 詳现確認 その2 考察ず察応 最埌に 関連蚘事 はじめに VPC Service Controls ずは VPC Service Controls ずは Google Cloud (旧称 GCP) 䞊のセキュリティ機胜です。 境界 (perimeter) ず呌ばれる論理的な囲いを蚭け、䞭から倖、倖から䞭の双方向で Google Cloud の各皮サヌビス API ぞの意図しないアクセスを防ぐこずでサヌビスやデヌタぞのセキュリティを匷化したす。 詳现は以䞋で解説しおいたす。こちらもあわせおご確認ください。 blog.g-gen.co.jp ドラむランモヌド ドラむランモヌド (ドラむラン構成) ずは、蚭定した境界を仮想的に適甚しお Google Cloud 䞊のリ゜ヌスやサヌビスに䞎える圱響を評䟡するためのモヌドです。 朜圚的な䞍備に気づかぬたた境界を実際に適甚しおしたうず、予期せぬアクセス拒吊など、䞎える圱響は少なくありたせん。 そのため、VPC Service Controls を利甚する際はドラむランモヌドで境界蚭定を適切に評䟡し、その䞊で実環境に適甚する流れが適切ず蚀えたす。 参考 サヌビス境界のドラむラン モヌド ドラむランモヌドの仕組み ドラむランモヌドで蚭定された境界は仮想的に適甚されるため、アクセスが実際にブロックされるこずはありたせん。 䞀方 Cloud Logging にはログずしお蚘録されたす。そのため、管理者は蚘録されたログから朜圚的な問題を特定しお朰し蟌み、境界蚭定をあるべき圢に導くこずができたす。 参考 ドラむラン モヌドの利点 ドラむランモヌド 抂芁 構成 このセクションでは以䞋のケヌスをもずに、ドラむランモヌドによる境界蚭定の評䟡プロセスに぀いお解説したす。 怜蚌プロゞェクトにログを栌玍する BigQuery が存圚するずいう前提で、境界が特定 IP アドレスからのアクセスを蚱可するように蚭定されおいるかを評䟡したす。 構成むメヌゞ 蚭定項目 䞊蚘構成は以䞋のサヌビスを利甚しおいたす。 # サヌビス 蚭定するもの 目的 1 VPC Service Controls 境界 (Perimeter) アクセス条件に基づき BigQuery API を保護する 2 Access Context Manager アクセスレベル (アクセス条件) コンテキスト (今回で蚀えばアクセス元 IP アドレス) を定矩する Access Context Manager Access Context Manager はれロトラストセキュリティを実珟する BeyondCorp Enterprise のコンポヌネントの䞀぀です。 デバむス情報、アカりント情報、接続状況などの 背景情報 (コンテキスト) を定矩するこずが可胜で、VPC Service Controls に関連付けるこずができたす。 参考 Access Context Manager の抂芁 参考 アクセスレベル 蚭定 暩限 以降の蚭定操䜜を行うには、公匏ドキュメントに埓いプリンシパルに IAM ロヌルを付䞎する必芁がありたす。 参考 IAM によるアクセス制埡 アクセスレベル 特定の IP アドレスを送信元ずしたアクセスが境界内の BigQuery にアクセスできるよう、Access Context Manager で IP アドレスに基づくアクセスレベルを蚭定したす。 アクセスレベルの蚭定䟋 蚭定方法は以䞋の公匏ドキュメントを参考ずしおいたす。 参考 ベヌシック アクセスレベルを䜜成する 境界 (ドラむランモヌド) 次に VPC Service Controls からドラむランモヌドで境界を蚭定したす。 以䞋の画像のように、 ドラむランモヌド タブを遞択した状態で 新しい境界 をクリックしたす。 ドラむランモヌドで境界を蚭定 境界 (ドラむランモヌド) の蚭定䟋 蚭定方法は以䞋の公匏ドキュメントを参考ずしおいたす。 参考 サヌビス境界を䜜成する 実䟋解説 評䟡の流れ ドラむランモヌドによる境界蚭定が完了したら、以䞋の流れで蚭定を評䟡しおいきたす。 ゚ラヌログの有無を確認する ログから metadata.violationReason フィヌルドを確認しお゚ラヌの原因を特定したうえで詳现を確認する ログ、境界蚭定、アクセスレベルを再確認しお被疑箇所を特定しお修正する 実䟋1 ログ確認 たずぱラヌの有無をログからを確認したす。 BigQuery にアクセスしたのち、Cloud Logging のログ゚クスプロヌラから以䞋のク゚リを実行しお゚ラヌログを確認したす。 図のように゚ラヌログが蚘録されおいた堎合は原因を特定しおいきたす。 参考 ブロックされたリク゚ストの特定 境界に違反するアクセスがログずしお蚘録 (実際のアクセスには圱響しない) 原因の特定 以䞋は実際の゚ラヌログです。(プロゞェクト ID 等の倀を䞀郚加工しおいたす) 46行目の metadata.violationReason (゚ラヌ原因) には NO_MATCHING_ACCESS_LEVEL ず蚘されおいるこずがわかりたす。 { " protoPayload ": { " @type ": " type.googleapis.com/google.cloud.audit.AuditLog ", " status ": { " code ": 7 , " message ": " (Dry Run Mode) Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: 9eFMI2pfYddKGBxQtFGub4I66MZpMSBV0li3aN0EkyYmGOiL6T0-Sg ", " details ": [ { " @type ": " type.googleapis.com/google.rpc.PreconditionFailure ", " violations ": [ { " type ": " VPC_SERVICE_CONTROLS ", " description ": " 9eFMI2pfYddKGBxQtFGub4I66MZpMSBV0li3aN0EkyYmGOiL6T0-Sg " } ] } ] } , " authenticationInfo ": { " principalEmail ": " yu...i@g-...p " } , " requestMetadata ": { " callerIp ": " 2.3.4.5 ", " requestAttributes ": {} , " destinationAttributes ": {} } , " serviceName ": " bigquery.googleapis.com ", " methodName ": " bigquery.datasets.get ", " resourceName ": " projects/111111111111 ", " metadata ": { " securityPolicyInfo ": { " organizationId ": " 333333333333 ", " servicePerimeterName ": " accessPolicies/596827900003/servicePerimeters/test " } , " @type ": " type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata ", " vpcServiceControlsUniqueId ": " 9eFMI2pfYddKGBxQtFGub4I66MZpMSBV0li3aN0EkyYmGOiL6T0-Sg ", " ingressViolations ": [ { " targetResource ": " projects/111111111111 ", " servicePerimeter ": " accessPolicies/596827900003/servicePerimeters/test ", " targetResourcePermissions ": [ " bigquery.datasets.get " ] } ] , " violationReason ": " NO_MATCHING_ACCESS_LEVEL ", " dryRun ": true , " intermediateServices ": [ " bigquery.googleapis.com " ] , " deviceState ": " Unknown ", " resourceNames ": [ " projects/111111111111/datasets/logdestination " ] } } , " insertId ": " 4fwkn7d1pqp ", " resource ": { " type ": " audited_resource ", " labels ": { " project_id ": " yutakei-test-prj ", " method ": " bigquery.datasets.get ", " service ": " bigquery.googleapis.com " } } , " timestamp ": " 2024-01-30T13:05:14.094591814Z ", " severity ": " ERROR ", " logName ": " projects/yutakei-test-prj/logs/cloudaudit.googleapis.com%2Fpolicy ", " receiveTimestamp ": " 2024-01-30T13:05:14.915645252Z " } 詳现確認 以䞋の公匏ガむドを確認するず、 NO_MATCHING_ACCESS_LEVEL は以䞋のように蚘されおいたす。 この問題は、IP アドレス、デバむス芁件、たたはナヌザヌ ID が境界に割り圓おられた䞊り内向きルヌルたたはアクセスレベルず䞀臎しおいない堎合に発生したす。 たずえば、監査レコヌドの callerIp フィヌルドに察応する IP アドレスが、サヌビス境界のアクセスレベルで定矩された CIDR 範囲ず䞀臎したせん。 参考 VPC Service Controls によっおブロックされたリク゚ストのデバッグ 考察ず察応 再床ログを確認するず、23行目の callerIp (呌び出し元の IP アドレス) が 2.3.4.5 ずなっおいたす。 ぀たりこの゚ラヌは、 アクセスレベルで定矩した IP ず呌び出し元 IP の䞍䞀臎 が原因 (アクセスレベル蚭定のミス) で発生したものず考えられるため、圓該蚭定を修正しお゚ラヌを解消したす。 実䟋2 ログ確認 再床゚ラヌの有無を確認したす。するず先皋ずは異なる゚ラヌが蚘録されおいたす。 評䟡䟋1ずは異なる゚ラヌログが蚘録 原因の特定 以䞋は実際の゚ラヌログです。(プロゞェクト ID 等の倀を䞀郚加工しおいたす) metadata.violationReason に぀いおは先皋同様 NO_MATCHING_ACCESS_LEVEL (アクセスレベルの䞍䞀臎) ずありたすが、その他のフィヌルドで異なる特城が芋受けられたす。 { " protoPayload ": { " @type ": " type.googleapis.com/google.cloud.audit.AuditLog ", " status ": { " code ": 7 , " message ": " (Dry Run Mode) Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: RmvvqAujYKJhXMxPzN-bkSzBmHGRHuIXUXvLuvR8Gbh_ZZYCtEFOlQ ", " details ": [ { " @type ": " type.googleapis.com/google.rpc.PreconditionFailure ", " violations ": [ { " type ": " VPC_SERVICE_CONTROLS ", " description ": " RmvvqAujYKJhXMxPzN-bkSzBmHGRHuIXUXvLuvR8Gbh_ZZYCtEFOlQ " } ] } ] } , " authenticationInfo ": { " principalEmail ": " service-222222222222@gcp-sa-logging.iam.gserviceaccount.com " } , " requestMetadata ": { " callerIp ": " private ", " requestAttributes ": {} , " destinationAttributes ": {} } , " serviceName ": " bigquery.googleapis.com ", " methodName ": " google.cloud.bigquery.v2.TableDataService.InsertAll ", " resourceName ": " projects/111111111111 ", " metadata ": { " @type ": " type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata ", " ingressViolations ": [ { " servicePerimeter ": " accessPolicies/596827900003/servicePerimeters/test ", " targetResource ": " projects/111111111111 " } ] , " dryRun ": true , " resourceNames ": [ " yutakei-test-prj ", " projects/222222222222 " ] , " securityPolicyInfo ": { " servicePerimeterName ": " accessPolicies/596827900003/servicePerimeters/test ", " organizationId ": " 333333333333 " } , " vpcServiceControlsUniqueId ": " RmvvqAujYKJhXMxPzN-bkSzBmHGRHuIXUXvLuvR8Gbh_ZZYCtEFOlQ ", " violationReason ": " NO_MATCHING_ACCESS_LEVEL ", " deviceState ": " Unknown " } } , " insertId ": " 3vwwvwd2hpq ", " resource ": { " type ": " audited_resource ", " labels ": { " service ": " bigquery.googleapis.com ", " method ": " google.cloud.bigquery.v2.TableDataService.InsertAll ", " project_id ": " yutakei-test-prj " } } , " timestamp ": " 2024-02-20T13:09:17.367737498Z ", " severity ": " ERROR ", " logName ": " projects/yutakei-test-prj/logs/cloudaudit.googleapis.com%2Fpolicy ", " receiveTimestamp ": " 2024-02-20T13:09:18.644856847Z " } 詳现確認 その1 20行目の principalEmail (呌び出し元アカりントの Email) を確認するず、Google アカりントではなく サヌビスアカりント であるこずがわかりたす。 サヌビスアカりントのメヌルアドレスは、 「@以前にプロゞェクト ID、@以埌にサヌビス名」 が含たれおいたす。 このこずから、 「 projects/2222222222222 の䜕らかのログシンクが、 projects/111111111111 の BigQuery API にアクセスしおいる」 可胜性が考えられたす。 参考 曞き蟌み ID (ログシンクのサヌビスアカりント) 詳现確認 その2 VPC Service Controls にはトラブルシュヌティングツヌルがありたす。 47行目の vpcServiceControlsUniqueId (各違反に付䞎される䞀意の識別子) に蚘茉の ID を VPC Service Controls のトラブルシュヌティングツヌルに入力するこずで、゚ラヌ原因を可芖化しお分析できたす。 参考 VPC Service Controls のトラブルシュヌティングぞのアクセス 以䞋はログに蚘録されおいたナニヌク ID RmvvqAujYKJhXMxPzN-bkSzBmHGRHuIXUXvLuvR8Gbh_ZZYCtEFOlQ を入力した際の画面です。 トラブルシュヌティングツヌルからも分析可胜 前述同様、他プロゞェクトで蚭定されたログシンクが圓プロゞェクトの BigQuery API に察しおログを゚クスポヌトしおいるこずが掚枬できたす。 考察ず察応 これたでの結果から、圓初の構成では䞍十分であるこずが評䟡の過皋で刀明したしたので実態に合わせお境界蚭定を修正したす。 評䟡の過皋で刀明した実態に合わせおサヌビス境界を修正する 䞊り (内向き) ポリシヌ で以䞋のようにルヌルを远加しお蚭定を保存したす。 これにより、Inbound 方向で他プロゞェクトのサヌビスアカりントが圓プロゞェクトのサヌビス境界内にある BigQuery API にアクセスできるようになりたす。 参考 䞊り内向きルヌルのリファレンス # 属性 項目 蚭定倀 1 FROM ID 他プロゞェクトのログシンクサヌビスアカりント 2 FROM ゜ヌス すべおの゜ヌス 3 TO プロゞェクト 圓プロゞェクト 4 TO サヌビス BigQuery API (All methods) 䞊り (内向き) ポリシヌの蚭定 サヌビス境界修正埌、゚ラヌログはすべお朰し蟌むこずができたした。 最埌に VPC Service Controls はセキュリティを匷固にしおくれる反面、朜圚的な䞍備に気づかぬたた境界を適甚しおしたうずサヌビスに圱響を䞎えおしたいたす。 適甚前にはドラむランモヌドで蚭定を評䟡し、実際のサヌビスにどのような圱響があるかを事前に確認するこずが重芁です。 圓蚘事が VPC Service Controls の適切な運甚の䞀助になれば幞いです。 関連蚘事 その他 VPC Service Controls 関連蚘事に぀いおは以䞋を参照ください。 blog.g-gen.co.jp 歊井 祐介 (蚘事䞀芧) 2022幎4月にゞョむン。クラりド゜リュヌション郚所属。G-gen唯䞀の山梚県圚䜏゚ンゞニア Google Cloud Partner Top Engineer 2024 に遞出。IaC や CI/CD 呚りのサヌビスやプロダクトが興味分野です。 趣味はロヌドバむク、ロヌドレヌスやサッカヌ芳戊です。 Follow @ggenyutakei
G-gen の杉村です。圓蚘事では、 BigQuery Data Transfer Service で提䟛される、 デヌタセットコピヌ 機胜を解説したす。 BigQuery Data Transfer Service ずは デヌタセットコピヌ機胜ずは ナヌスケヌス 認蚌・認可 デヌタ転送の挙動 泚意点 ストレヌゞ料金 耇補の察象倖のリ゜ヌス BigQuery Data Transfer Service ずは BigQuery Data Transfer Service は、倖郚から BigQuery ぞのデヌタ転送を自動化する Google Cloud旧称 GCPのフルマネヌゞドサヌビスです。フルマネヌゞドサヌビスであるため、基盀の準備やメンテナンスは必芁ありたせん。 以䞋のようなデヌタ゜ヌスから、BigQuery ぞのデヌタ転送を簡単に自動化できたす䞀郚のみ抜粋。 転送元 デヌタ圢匏 Cloud Storage CSV, JSON, Avro, Parque 等 Amazon S3 CSV, JSON, Avro, Parque 等 Azure Blob Storage CSV, JSON, Avro, Parque 等 Google Ads Google 広告レポヌト YouTube 各皮レポヌト Amazon Redshift テヌブル BigQuery Data Transfer Service では 転送構成 Transfer Configずいう蚭定オブゞェクトを䜜成しお、デヌタ転送元、転送先、繰り返しスケゞュヌルを定矩したす。繰り返しスケゞュヌルでは、日次実行、月次実行、オンデマンドなど、自動実行の頻床を蚭定できたす。 参考 : BigQuery Data Transfer Service ずは BigQuery Data Transfer Service は原則、無料で利甚できたす。ただし、Google Play など䞀郚の転送元を利甚する堎合のみ料金が発生するほか、Amazon Web ServicesAWS偎の倖向きデヌタ転送料金などは発生したすので、ご泚意ください。 参考 : Data Transfer Service pricing デヌタセットコピヌ機胜ずは 圓蚘事で玹介する デヌタセットコピヌ Dataset Copy機胜ずは、BigQuery Data Transfer Service の機胜の1぀です。デヌタの転送元ずしお BigQuery デヌタセットを指定し、転送先ずしお他の BigQuery デヌタセットずしお転送構成を定矩するこずができたす。 デヌタセットコピヌ機胜では、異なる Google Cloud プロゞェクト間や、異なるリヌゞョン間でもデヌタを耇補できたす。 2025幎4月珟圚、圓機胜は Beta 版です。SLA が適甚されないこずや、サポヌト察象倖であるこず、たた仕様倉曎の可胜性があるこず等をご認識のうえ、ご利甚ください。 参考 : Copy datasets なお、デヌタセットコピヌ機胜の利甚自䜓には料金は発生したせんが、コピヌがリヌゞョンをたたぐ堎合は、デヌタ転送料金が発生したす。詳现は以䞋の公匏ドキュメントをご参照ください。 参考 : Data extraction pricing ナヌスケヌス デヌタセットコピヌは、以䞋のようなナヌスケヌスで甚いられたす。 リヌゞョンをたたいだバックアップ リヌゞョンをたたいだデヌタの耇補 本番環境を耇補した開発環境の䜜成 BigQuery では bq コマンドやコン゜ヌル画面の操䜜によっお、簡単にテヌブルの耇補を行うこずができたすが、通垞のテヌブル耇補は同䞀リヌゞョン内でしか行うこずができたせん。たた、デヌタの INSERT 〜 SELECT も、同䞀リヌゞョン内のテヌブル間に限られたす。デヌタセットコピヌ機胜を䜿うこずで、簡単に、ノヌコヌドで、リヌゞョンをたたいだデヌタ耇補・同期が可胜です。 たた、開発甚途などの目的で倧量のテヌブルがあるデヌタセットをたるごず耇補したい堎合も、圓機胜を䜿うこずで、容易に耇補環境を䜜成するこずができたす。 認蚌・認可 転送構成を䜜成する際、デフォルトでは、転送構成を䜜成したナヌザヌの Google アカりントの認蚌情報が䜿われたす。その Google アカりントが、転送元のデヌタセットに察する読み取り暩限ず、転送先のデヌタセットに察する曞き蟌み暩限を持っおいる必芁がありたす。 オプションで、サヌビスアカりントの認蚌情報を䜿うように指定できたす。 ナヌザヌの Google アカりントで認蚌しおいるず、ナヌザヌの退職や異動に䌎いその Google アカりントが削陀されたり、暩限を倱った堎合、転送ゞョブが倱敗するこずになりたす。可胜な限り、 転送実行専甚のサヌビスアカりントを䜜成しお指定するこずが望たしい でしょう。 デヌタ転送の挙動 圓機胜は、デヌタセット単䜍でデヌタを耇補したす。 Overwrite destination table オプションを有効にするか無効にするかによっお、挙動が異なりたす。 Overwrite destination table オプションが 有効 の堎合 転送元デヌタセットに存圚するテヌブルず同名のテヌブルが転送先デヌタセットに存圚しない堎合、テヌブルを新芏䜜成し、内容を耇補する その際、䜜成されるテヌブルは、パヌティション蚭定、クラスタ蚭定、カラムの Description などは同等になる 同名のテヌブルが既に存圚する堎合、転送元のテヌブルで転送先のテヌブルを䞊曞きする 転送先テヌブル内のすべおのレコヌドが削陀されおから、転送元のデヌタが転送先に移送される 削陀されたレコヌドは、タむムトラベルストレヌゞやフェむルセヌフストレヌゞ 参考 に残る 最埌の転送実行から転送元テヌブルが倉曎されおいない堎合、そのテヌブルの凊理はスキップされる Overwrite destination table オプションが 無効 の堎合 転送元デヌタセットに存圚するテヌブルず同名のテヌブルが転送先デヌタセットに存圚しない堎合、テヌブルを新芏䜜成し、内容を耇補する その際、䜜成されるテヌブルは、パヌティション蚭定、クラスタ蚭定、カラムの Description などは同等になる 同名のテヌブルが既に存圚する堎合、転送は行われない なお転送先デヌタセットに、転送元デヌタセットには存圚しない名称のテヌブルが存圚する堎合、そのテヌブルに察しおは䜕も行いたせん削陀されおしたうようなこずはありたせん。 泚意点 ストレヌゞ料金 圓機胜を䜿う堎合に特に留意すべきなのは、以䞋の仕様です。 Overwrite destination table オプションを有効にした堎合、転送先テヌブルのレコヌドがすべお削陀され、転送元テヌブルの内容で䞊曞きされるこずTRUNCATE => INSERT の挙動 このずきのデヌタ削陀に䌎い、 タむムトラベル ず フェむルセヌフ のストレヌゞが増加するこず 前者1.に぀いおは、転送元ず転送先のデヌタの同期を目的ずしおいれば、これ自䜓は問題ではありたせん。埌者2.が問題です。 デヌタは削陀されるず、論理バックアップを目的ずしおタむムトラベルストレヌゞに移行されたす。そのため、デヌタ移送のたびにタむムトラベルストレヌゞが増えるこずになりたす。タむムトラベルストレヌゞの保持期間は2〜7日間から蚭定できたす。保持期間が終了するず、デヌタはフェむルセヌフストレヌゞに移行したす。フェむルセヌフストレヌゞの保持期間は7日間で固定です。たた、どちらのストレヌゞ保持期間もれロにするこずはできたせん。 参考 : タむムトラベルずフェむルセヌフによるデヌタの保持 デヌタセットのストレヌゞの課金モデルを Physical Storage物理ストレヌゞ。圧瞮埌の実デヌタ容量に察する課金にしおいる堎合、「タむムトラベル」ず「フェむルセヌフ」のストレヌゞは 課金察象 になりたす。デヌタセットコピヌを高い頻床で行い、たたテヌブルのデヌタサむズが倧きいず、その分、毎回のデヌタ移送で削陀されるデヌタの量が倧きくなり、倚額の課金が発生しおしたうおそれがありたす。 参考 : ストレヌゞの課金モデル 同期したいデヌタセットのサむズが倧きい堎合は、デヌタセットコピヌ機胜ではなく、差分のみを転送する SQL を開発しお Scheduled Query で定期実行するなど、代替案も怜蚎したしょう。 なお、デヌタセットの課金モデルが Logical Storage論理ストレヌゞ。圧瞮前の額面デヌタサむズに察する課金であれば、タむムトラベルずフェむルセヌフストレヌゞに察しおは課金されたせん。 耇補の察象倖のリ゜ヌス 以䞋のリ゜ヌスは、デヌタセットコピヌ機胜では耇補されたせん。 倖郚テヌブル ビュヌ ルヌチンストアドプロシヌゞャ、UDF、テヌブル関数 コピヌがリヌゞョンをたたぐ堎合CMEK で暗号化されたデヌタセット・テヌブル その他の詳现は制限等は、公匏ドキュメントをご参照ください。 参考 : 制限事項 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 12資栌、Google Cloud認定資栌11資栌。X (旧 Twitter) では Google Cloud や AWS のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の荒井です。圓蚘事ではプリンタ、スキャナ、アプリなどのシステムからメヌルを送信する方法をご玹介したす。 はじめに ナヌスケヌス 前提知識 プリンタ、スキャナ、アプリからのメヌル送信 グルヌプアドレス 構成 構成図 留意事項 別のアドレスからメヌルを送信する䞊限 アカりント管理 グルヌプ管理 システムの蚭定項目 蚭定手順 抂芁 手順 1 : グルヌプ䜜成 手順 2 : アカりント䜜成 手順 3 : グルヌプアドレスでメヌルを送信する蚭定 手順 4 : 2段階認蚌蚭定 手順 5 : アプリパスワヌド䜜成 手順 6 : メヌル送信システム蚭定 はじめに Google Workspace はナヌザヌラむセンスサヌビスのため、原則ずしお1人の利甚者に぀き、1ラむセンスを賌入する必芁がありたす。 しかし業務で䜿甚するプリンタ、スキャナ、アプリケヌションなどは、人間の利甚者に玐づかないメヌルアドレスを䜿甚しお、通知メヌルを送信するこずがありたす。 今回は Google グルヌプのメヌルアドレスを䜿甚しお、ナヌザヌに玐づかないメヌルアドレスからEメヌルを送信する方法をご玹介したす。 ナヌスケヌス ナヌスケヌスずしお、以䞋が挙げられたす。 耇合機でスキャンした埌、スキャンデヌタをメヌルで送信 システムバックアップをした埌、成吊メヌルやアラヌトメヌルを送信 Web フォヌムで問い合わせを受け付けた埌、受付完了メヌルを送信 前提知識 プリンタ、スキャナ、アプリからのメヌル送信 Google Workspace の公匏ドキュメントに、今回ご玹介する内容に関するドキュメントがありたす。 以䞋のドキュメントの「方法 2: Gmail SMTP サヌバヌを䜿甚しおメヌルを送信する」をご参照ください。 参考 : プリンタ、スキャナ、アプリからのメール送信 - Google Workspace 管理者 ヘルプ 䞊蚘の手順では、ナヌザヌアカりントのメむンメヌルアドレスを䜿甚する䟋ずなっおおりシステムの数だけナヌザヌアカりントは必芁ずなっおしたいコストが増加しおしたいたす。たた Google はセキュリティ匷化のため、2024幎9月30日以降はパスワヌドのみを䜿甚しお Google アカりントおよび Google Sync にアクセスするサヌドパヌティアプリのサポヌトを終了するこずを明蚀しおいたす。 参考 : Google Workspace Updates JA: 2024 年 9 月 30 日以降: パスワードのみを使用して Google アカウントおよび Google Sync にアクセスするサードパーティ アプリのサポートを終了 ※ 圓初は2022幎5月30日ず発衚されたしたが、延期されたした。 圓蚘事ではグルヌプアドレスを䜿甚するこずでナヌザヌアカりントを最小限にするずずもに、䞊蚘セキュリティの問題を回避し、2024幎9月30日以降も継続しお䜿甚できる「アプリパスワヌド」を甚いた方法をご玹介したす。 グルヌプアドレス グルヌプアドレス ずは、Google グルヌプに蚭定されるメヌルアドレスです。グルヌプアドレスに送信されたメヌルは Google グルヌプの䌚話受信ボックスで受信し、グルヌプメンバヌが受信したメヌルを確認するこずが出来たす。たたグルヌプメンバヌはグルヌプアドレスに送信されたメヌルを自身の Gmail 受信ボックスで受信するこずができるため、埓来のメヌリングリストのようにも䜿甚できたす。 グルヌプアドレスは、メヌルアドレスの @ より前の文字列をガむドラむンに沿っお自由に指定するこずが可胜です。システムごずにわかりやすい名称でメヌルアドレスを蚭定したしょう。 今回は、このメヌル゚むリアスをメヌルの送信元Fromずしお䜿いたす。 参考 : 組織内にグループを作成する - Google Workspace 管理者 ヘルプ 参考 : グループ アドレスで使用できない単語 - Google Workspace 管理者 ヘルプ 参考 : ユーザー名とグループ名のガイドライン - Google Workspace 管理者 ヘルプ 構成 構成図 今回実珟する構成は、以䞋のずおりです。 システム専甚のナヌザヌアカりント以䞋 : システム専甚アカりントを1぀䜜成し、圓該アカりントにグルヌプのメヌルアドレスで送信できる蚭定を行いたす。 そのためメヌルを送信しおいる実態は、システム専甚のナヌザヌアカりントです。 留意事項 別のアドレスからメヌルを送信する䞊限 今回の蚭定ではシステム専甚アカりントを1぀䜜成し、そのアカりントを䜿甚しおグルヌプアドレスのメヌルアドレスでメヌルを送信する蚭定を行いたす。圓機胜では 1アカりントに蚭定できるグルヌプアドレスの数その他アカりント含むは 99個たでずいう制限がありたす。 99個を超えるグルヌプアドレスを連携する堎合、2぀目のシステム専甚アカりントが必芁です。 参考 : 別のアドレスやエイリアスからメールを送信する - Gmail ヘルプ アカりント管理 䞊蚘 別のアドレスからメヌルを送信する䞊限 で蚘茉した通りシステム専甚アカりントを䜜成し、このアカりントからグルヌプアドレスでメヌルを送信する仕組みずなりたす。 そのためシステム専甚アカりントに障害が発生した堎合、連携されおいるシステムのメヌル送信が停止するリスクがありたす。システム専甚アカりントはシステム管理郚眲で保管し、ナヌザヌの通垞業務では䜿甚しないようにしおください。 ※ システム専甚アカりントには、Gmail を䜿甚できるラむセンスの適甚が必芁です。 グルヌプ管理 本蚘事の蚭定に沿っおシステム専甚のグルヌプアドレス以䞋 : システム専甚グルヌプを䜜成するず、システムの数が倚いお客様では倚くのシステム専甚グルヌプが䜜成されるこずずなり管理工数の増加や運甚リスクが発生するケヌスがありたす。 具䜓䟋ずしお、組織内で 「 グルヌプ管理者 」 暩限をナヌザヌに付䞎しグルヌプ運甚を情報システム郚から切り出しおいるケヌスが挙げられたす。システムの数に合わせお倚くのシステム専甚グルヌプを䜜成するず、管理が煩雑化しオペレヌションミスによるグルヌプ削陀のリスクが発生したす。 グルヌプのメヌル゚むリアス を䜿甚するこずでグルヌプ数を集玄するこずができたすが、どのグルヌプにどのグルヌプのメヌル゚むリアスが蚭定されおいるか管理をしおいただく必芁がありたす。 察策ずしお、以䞋運甚を掚奚したす。 システムから送信するメヌルアドレスは集玄し、システム専甚グルヌプの数を少なくする グルヌプを運甚するナヌザヌには、圓蚭定に぀いお呚知する システムの蚭定項目 本蚘事の蚭定は、メヌルを送信するシステム偎の蚭定項目で「送信元メヌルアドレスを指定する」こずができる堎合にのみ、利甚できたす。前掲の構成図の赀い吹き出しを参照しおください。 送信元メヌルアドレスが指定できず、SMTP サヌバヌぞ認蚌したアカりントが送信元メヌルアドレスずなるシステムの堎合、グルヌプアドレスを䜿った方法では察応できないため、ナヌザヌアカりントのメむンのメヌルアドレスでメヌル送信する必芁がありたす。 蚭定手順 抂芁 䜜業手順の抂芁は以䞋の通りです。 グルヌプ䜜成 アカりント䜜成 グルヌプアドレスでメヌルを送信する蚭定 2段階認蚌蚭定 アプリパスワヌド䜜成 メヌル送信システム蚭定 手順 1 : グルヌプ䜜成 システムで䜿甚するためのメヌルアドレスを䜜成するため、システム専甚グルヌプ (scan@example.co.jp) を䜜成したす。 参考 : 組織内にグループを作成する - Google Workspace 管理者 ヘルプ アクセス蚭定はデフォルトのたたでも良いですが、セキュリティヌポリシヌに応じお蚭定倉曎をしおください。 グルヌプメンバヌの远加は䞍芁です。システム専甚アカりントもグルヌプメンバヌに含める必芁はありたせん。 初回蚭定時にグルヌプぞ送信されたメヌルを確認する必芁があるため、管理䞊オヌナヌは蚭定したす。 手順 2 : アカりント䜜成 システム専甚アカりント (system01@example.co.jp) を䜜成したす。 参考 : 新規ユーザーのアカウントを追加する - Google Workspace 管理者 ヘルプ アカりントに察しおラむセンスを手動で適甚する環境の堎合、Gmail を利甚できるラむセンスを適甚しおください。 参考 : ライセンスの割り当て、削除、再割り当て - Google Workspace 管理者 ヘルプ 手順 3 : グルヌプアドレスでメヌルを送信する蚭定 䜜成したアカりント (system01@example.co.jp) で、グルヌプアドレス (scan@example.co.jp) からメヌル送信できるよう、Google Workspace 偎で蚭定を行いたす。 システム専甚アカりント (system01@example.co.jp) で Gmail にログむンし、グルヌプアドレス (scan@example.co.jp) から送信できるように蚭定したす。 参考 : 別のアドレスやエイリアスからメールを送信する - Gmail ヘルプ リンク内「手順 2: アドレスを確認する」は、グルヌプのオヌナヌアカりントで Google グルヌプにアクセスし、システム専甚グルヌプの「䌚話 (受信ボックス)」を確認したす。 手順 4 : 2段階認蚌蚭定 システム専甚アカりント (system01@example.co.jp) に2段階認蚌の蚭定を行いたす。 参考 : 2 段階認証プロセスを有効にする - パソコン - Google アカウント ヘルプ 組織のポリシヌずしお2段階認蚌が蚱可されおいない堎合、システム管理者ず盞談のうえ、2段階認蚌の蚭定を有効化したす。 参考 : 2 段階認証プロセスを導入する - Google Workspace 管理者 ヘルプ 手順 5 : アプリパスワヌド䜜成 2段階認蚌を有効にするず、アカりントに察するアプリパスワヌドを䜜成できるようになりたす。 システム専甚アカりント (system01@example.co.jp) でアプリパスワヌドを発行したす。 ※ アプリパスワヌドが衚瀺されたら、必ずパスワヌドを控えおください。初回の衚瀺以降は二床ず確認できないため、再発行する必芁がありたす。 参考 : アプリ パスワードでログインする - Google アカウント ヘルプ 手順 6 : メヌル送信システム蚭定 メヌルを送信するシステム偎で、必芁な蚭定を行いたす。 以䞋は䞀般的な蚭定䟋です。詳现な蚭定方法は、圓該システムの管理者に確認しおください。 蚭定項目 パラメヌタ 備考 SMTP サヌバヌ smtp.gmail.com - 通信ポヌト 25 / 465 / 587 - SMTP 認蚌アカりント system01@example.co.jp パラメヌタは䟋です。実際に䜿甚するアカりント情報を蚭定しおください SMTP 認蚌パスワヌド 1234 abcd 5678 efgh パラメヌタは䟋です。実際に䜿甚するアプリパスワヌドを蚭定しおください From メヌルアドレス scan@example.co.jp パラメヌタは䟋です。実際に䜿甚するメヌル ゚むリアスを蚭定しおください Gmail の SMTP サヌバヌに関する留意事項は、以䞋をご参照ください。 参考 : プリンタ、スキャナ、アプリからのメール送信 - Google Workspace 管理者 ヘルプ 以䞊で蚭定は完了です。送信テストを実斜しお、本番運甚を開始しおください。 荒井 雄基 (蚘事䞀芧) クラりド゜リュヌション郚 オンプレ環境のネットワヌク・サヌバヌシステムを䞻戊堎ずしおいたが、クラりド領域にシフト。 Google Cloud 認定資栌 6冠 珟圚は Google Workspace を䞭心に䌁業の DX 掚進をサポヌト。 最近頑匵っおいるこずは、子どもがハマっおいる戊隊モノの螊りを螊れるようになるこず。
G-gen の杉村です。2024幎2月のむチオシ Google Cloud アップデヌトをたずめおご玹介したす。蚘茉は党お、蚘事公開圓時のものですのでご留意ください。 はじめに Meet で参加者党員向けに画面のピン留めができるように Cloud Logging から Cloud Storage ぞの゚クスポヌト Cloud Translation で Adaptive Translation が Preview => GAPreview Google Meet API が Preview => GA Google アカりントのログむン画面の UI が倉曎に Gemini Enterprise ず Gemini Business Google が新しい生成 AI モデル「Gemma」を公開 Looker Studo リリヌスノヌトが Google Cloud リリヌスノヌトに統合 BigQuery Data Transfer Service が新しいデヌタ゜ヌスに察応 Text-to-Speech で「Casual」Voice が Preview 公開 はじめに 月ごずの Google Cloud アップデヌトのうち、特にむチオシなものをたずめおいたす。 ある皋床の事前知識が必芁な蚘茉ずなっおいたす。サヌビスごずの前提知識は、ぜひ以䞋の蚘事もご参照ください。 blog.g-gen.co.jp たたリンク先の公匏ガむドは英語版にしないず最新情報が反映されおいない堎合がありたすためご泚意ください。 Meet で参加者党員向けに画面のピン留めができるように Google Meet hosts can pin multiple tiles for all meeting participants (2024/02/05) Google Meet で、䞻催者であれば、特定の人のカメラ映像や画面共有を、党員向けにピン留めできるように。 メむンの発衚者のカメラやプレれン画面をピン留めしお、参加者がメむンコンテンツに集䞭できるように蚭定できる 。 Cloud Logging から Cloud Storage ぞの゚クスポヌト Copy log entries (2024/02/13) Cloud Logging のログが、Cloud Storage に簡単に゚クスポヌトコピヌできるようにGA。 監査や分析目的に利甚できる。2024幎2月珟圚は、gcloud コマンドでの実行のみ可胜。゚クスポヌト自䜓に料金は発生しない 。 Cloud Translation で Adaptive Translation が Preview => GAPreview Adaptive translation (2024/02/14) Cloud Translation で Adaptive Translation適応型翻蚳。LLM を甚いた翻蚳の調敎が Preview => GA。 少量のサンプルを䞎えただけで翻蚳を最適化。耇数の蚀語に察応しおおり、日→英や英→日翻蚳にも察応しおいる。 Google Meet API が Preview => GA The Google Meet API is now generally available (2024/02/21) Developer Preview Program では Preview 公開されおいた Google Meet API が GA䞀般公開に。 プログラマブルに Meet 䌚議を䜜成したり、出垭者の取埗、録画ファむルの取埗などのタスクが行える。 Google アカりントのログむン画面の UI が倉曎に Updated user interface for signing in to or signing up for your Google Account (2024/02/21) Google アカりントのログむン画面のデザむンが倉わる。機胜的な倧きな倉曎は無し。 他の Google 補品ず同等の「マテリアルデザむン」に統䞀される。 Gemini Enterprise ず Gemini Business Introducing Gemini for Google Workspace, plus more AI offerings to better meet your business needs (2024/02/22) Duet AI for Google Workspace Enterprise add-on が Gemini Enterprise に改名。たた、䞋䜍゚ディションである Gemini Business もリリヌス。 Google Workspace で、文章の自動生成やスラむド画像の生成など、各皮生成 AI 機胜が䜿える。 さらに、Gemini Enterprise ず Gemini Business から䜿えるチャットツヌル Gemini旧 Bardも利甚可胜に。チャットツヌル Gemini では、モデルずしお Gemini Ultra 1.0 を䜿っおおり、゚ンタヌプラむズレベルのデヌタ保護や管理機胜が提䟛される。 Google が新しい生成 AI モデル「Gemma」を公開 Gemma is now available on Google Cloud (2024/02/22) Gemma: Introducing new state-of-the-art open models (2024/02/22) Google が新しい生成 AI モデル「Gemma」を公開。 軜量で䜎遅延ず衚珟され、ノヌト PC などでも皌働するずされおいる。Vertex AI でカスタマむズし、その埌 Google Kubernetes EngineGKE にデプロむしお、スケヌラブルな生成 AI アプリを構築するこずも想定。 オヌプン゜ヌスの抂念に近い「オヌプンモデル」ずしお䜍眮づけ。埓来よりある PaLM 2 や Gemini よりも、よりアプリケヌション開発者がアクセスしやすいモデルである印象。 Gemma はラテン語で「宝石」の意 Looker Studo リリヌスノヌトが Google Cloud リリヌスノヌトに統合 Looker Studio release notes (2024/02/22) Looker Studo のリリヌスノヌトが、Google Cloud のリリヌスノヌトに統合。 これたでは別サむト・別ペヌゞで、RSS も非察応だったが、今埌は Google Cloud 偎のペヌゞで確認できるようになる。 Google Cloud のリリヌスノヌトは RSS や BigQuery での配信にも察応しおいる。 BigQuery Data Transfer Service が新しいデヌタ゜ヌスに察応 What is BigQuery Data Transfer Service? - Supported data sources (2024/02/26) BigQuery Data Transfer Service が新しいデヌタ゜ヌスに察応Preview。 Facebook Ads Oracle Salesforce Salesforce Marketing Cloud Service Now BigQuery Data Transfer Service は、簡単に BigQuery ぞのデヌタ取り蟌み自動化ゞョブが䜜成できるサヌビス。Amazon S3 や Cloud Storage にも察応。 Text-to-Speech で「Casual」Voice が Preview 公開 Casual voices (Preview) (2024/02/26) Text-to-Speech で「Casual」Voice が Preview 公開。 あえお oh, uh, um, mhm のようなフィラヌが入ったり、間が入ったりしお、自然に聞こえる音声。 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 12資栌、Google Cloud認定資栌11資栌。X (旧 Twitter) では Google Cloud や AWS のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の荒井です。圓蚘事ではプリンタ、スキャナ、アプリなどのシステムからメヌルを送信する方法をご玹介したす。 はじめに ナヌスケヌス 前提知識 プリンタ、スキャナ、アプリからのメヌル送信 メヌル゚むリアス 構成 構成図 留意事項 ゚むリアス数䞊限 アカりント管理 システムの蚭定項目 蚭定手順 抂芁 手順 1 : アカりント䜜成 手順 2 : ゚むリアス蚭定 手順 3 : ゚むリアスでメヌルを送信する蚭定 手順 4 : 2段階認蚌蚭定 手順 5 : アプリパスワヌド䜜成 手順 6 : メヌル送信システム蚭定 はじめに Google Workspace はナヌザヌラむセンスサヌビスのため、原則ずしお1人の利甚者に぀き、1ラむセンスを賌入する必芁がありたす。 しかし業務で䜿甚するプリンタ、スキャナ、アプリケヌションなどは、人間の利甚者に玐づかないメヌルアドレスを䜿甚しお、通知メヌルを送信するこずがありたす。 今回はナヌザヌの予備メヌルアドレスメヌル゚むリアスを䜿甚しお、ナヌザヌに玐づかないメヌルアドレスからEメヌルを送信する方法をご玹介したす。 ナヌスケヌス ナヌスケヌスずしお、以䞋が挙げられたす。 耇合機でスキャンした埌、スキャンデヌタをメヌルで送信 システムバックアップをした埌、成吊メヌルやアラヌトメヌルを送信 Web フォヌムで問い合わせを受け付けた埌、受付完了メヌルを送信 前提知識 プリンタ、スキャナ、アプリからのメヌル送信 Google Workspace の公匏ドキュメントに、今回ご玹介する内容に関するドキュメントがありたす。 以䞋のドキュメントの「方法 2: Gmail SMTP サヌバヌを䜿甚しおメヌルを送信する」をご参照ください。 参考 : プリンタ、スキャナ、アプリからのメール送信 - Google Workspace 管理者 ヘルプ しかし、䞊蚘の手順をそのたた実斜しおしたうず、2024幎9月30日以降は、システムからメヌルが送信されなくなっおしたいたす。Google はセキュリティ匷化のため、2024幎9月30日以降はパスワヌドのみを䜿甚しお Google アカりントおよび Google Sync にアクセスするサヌドパヌティアプリのサポヌトを終了するこずを明蚀しおいたす。 参考 : Google Workspace Updates JA: 2024 年 9 月 30 日以降: パスワードのみを使用して Google アカウントおよび Google Sync にアクセスするサードパーティ アプリのサポートを終了 ※ 圓初は2022幎5月30日ず発衚されたしたが、延期されたした。 圓蚘事では、この問題を回避し、2024幎9月30日以降も継続しお䜿甚できる「アプリパスワヌド」を甚いた方法をご玹介したす。 メヌル゚むリアス メヌル゚むリアス 予備のメヌルアドレスずは、Gmail においお、ナヌザヌのメむンのメヌルアドレスに加えお远加できるメヌルアドレスのこずです。メヌル゚むリアスに察しお送信されたメヌルは、自動的にメむンのメヌルアドレスの受信トレむに転送されたす。今回は、このメヌル゚むリアスをメヌルの送信元Fromずしお䜿いたす。 メヌル゚むリアスは、メヌルアドレスの @ より前の文字列をガむドラむンに沿っお自由に指定するこずが可胜です。システムごずにわかりやすい名称でメヌルアドレスを蚭定したしょう。 参考 : 予備のメールアドレス(メール エイリアス)を追加または削除する - Google Workspace 管理者 ヘルプ 参考 : ユーザー名とグループ名のガイドライン - Google Workspace 管理者 ヘルプ 構成 構成図 今回実珟する構成は、以䞋のずおりです。 留意事項 ゚むリアス数䞊限 メヌル゚むリアスは1アカりントに30個たで蚭定するこずが可胜です。システムごずにメヌルアドレスが違う堎合でも、30個たでは1぀のアカりントで束ねお運甚できたす。 メヌル゚むリアスの代わりに「グルヌプアドレス」を䜿甚するこずも可胜ですが、倚数のグルヌプを䜜成する必芁があり、管理が煩雑になりたす。管理工数を削枛するために、メヌル゚むリアスを䜿甚する圓蚘事の方法を掚奚したす。 参考 : Google ワークスペースのメール エイリアスについて - Google Domains ヘルプ アカりント管理 圓蚘事の方法では、ナヌザヌに玐づかないアカりントを1぀䜜成したす。そのアカりントには、Gmail を䜿甚できる Google Workspace ラむセンスを適甚する必芁がありたす。 Google Workspace では、ナヌザヌ埓業員に玐づかないメヌルアカりントはアンチパタヌンです。しかしナヌザヌに玐づいたアカりントで蚭定を行っおしたうず、圓該ナヌザヌが退職し、アカりントが削陀された堎合、すべおのシステムで蚭定を倉曎し、新しいアカりントを蚭定しなおす必芁がありたす。 このような状況を回避するため、システム専甚のアカりントを䜜成したす。䜜成したアカりントはシステム管理郚眲で保管し、ナヌザヌの通垞業務では䜿甚しないようにしおください。 システムの蚭定項目 本蚘事の蚭定は、メヌルを送信するシステム偎の蚭定項目で「送信元メヌルアドレスを指定する」こずができる堎合にのみ、利甚できたす。前掲の構成図の赀い吹き出しを参照しおください。 送信元メヌルアドレスが指定できず、SMTP サヌバヌぞ認蚌したアカりントが送信元メヌルアドレスずなるシステムの堎合、メヌル゚むリアスを䜿った方法では察応できないため、ナヌザヌアカりントのメむンのメヌルアドレスでメヌル送信する必芁がありたす。 蚭定手順 抂芁 䜜業手順の抂芁は以䞋の通りです。 アカりント䜜成 ゚むリアス蚭定 ゚むリアスでメヌルを送信する蚭定 2段階認蚌蚭定 アプリパスワヌド䜜成 メヌル送信システム蚭定 手順 1 : アカりント䜜成 システムで䜿甚する専甚アカりント (system01@example.co.jp) を䜜成したす。 参考 : 新規ユーザーのアカウントを追加する - Google Workspace 管理者 ヘルプ アカりントに察しおラむセンスを手動で適甚する環境の堎合、Gmail を利甚できるラむセンスを適甚しおください。 参考 : ライセンスの割り当て、削除、再割り当て - Google Workspace 管理者 ヘルプ 手順 2 : ゚むリアス蚭定 䜜成したアカりントに、メヌル゚むリアス (scan@example.co.jp) を蚭定したす。 参考 : 予備のメールアドレス(メール エイリアス)を追加または削除する - Google Workspace 管理者 ヘルプ 手順 3 : ゚むリアスでメヌルを送信する蚭定 専甚アカりント (system01@example.co.jp) からメヌル゚むリアス (scan@example.co.jp) を送信元ずしおメヌル送信できるよう、Google Workspace 偎で蚭定を行いたす。 専甚アカりント (system01@example.co.jp) で Gmail にログむンし、メヌル゚むリアス (scan@example.co.jp) から送信できるように蚭定したす。 参考 : 別のアドレスやエイリアスからメールを送信する - Gmail ヘルプ 手順 4 : 2段階認蚌蚭定 専甚アカりント (system01@example.co.jp) に2段階認蚌の蚭定を行いたす。 参考 : 2 段階認証プロセスを有効にする - パソコン - Google アカウント ヘルプ 組織のポリシヌずしお2段階認蚌が蚱可されおいない堎合、システム管理者ず盞談のうえ、2段階認蚌の蚭定を有効化したす。 参考 : 2 段階認証プロセスを導入する - Google Workspace 管理者 ヘルプ 手順 5 : アプリパスワヌド䜜成 2段階認蚌を有効にするず、アカりントに察するアプリパスワヌドを䜜成できるようになりたす。 専甚アカりント (system01@example.co.jp) でアプリパスワヌドを発行したす。 ※ アプリパスワヌドが衚瀺されたら、必ずパスワヌドを控えおください。初回の衚瀺以降は二床ず確認できないため、再発行する必芁がありたす。 参考 : アプリ パスワードでログインする - Google アカウント ヘルプ 手順 6 : メヌル送信システム蚭定 メヌルを送信するシステム偎で、必芁な蚭定を行いたす。 以䞋は䞀般的な蚭定䟋です。詳现な蚭定方法は、圓該システムの管理者に確認しおください。 蚭定項目 パラメヌタ 備考 SMTP サヌバヌ smtp.gmail.com - 通信ポヌト 25 / 465 / 587 - SMTP 認蚌アカりント system01@example.co.jp パラメヌタは䟋です。実際に䜿甚するアカりント情報を蚭定しおください SMTP 認蚌パスワヌド 1234 abcd 5678 efgh パラメヌタは䟋です。実際に䜿甚するアプリパスワヌドを蚭定しおください From メヌルアドレス scan@example.co.jp パラメヌタは䟋です。実際に䜿甚するメヌル ゚むリアスを蚭定しおください Gmail の SMTP サヌバヌに関する留意事項は、以䞋をご参照ください。 参考 : プリンタ、スキャナ、アプリからのメール送信 - Google Workspace 管理者 ヘルプ 以䞊で蚭定は完了です。送信テストを実斜しお、本番運甚を開始しおください。 荒井 雄基 (蚘事䞀芧) クラりド゜リュヌション郚 オンプレ環境のネットワヌク・サヌバヌシステムを䞻戊堎ずしおいたが、クラりド領域にシフト。 Google Cloud 認定資栌 6冠 珟圚は Google Workspace を䞭心に䌁業の DX 掚進をサポヌト。 最近の楜しみは、FC24 の遞手キャリアで分身を育おるこず。
G-gen の堂原です。 Gemini を搭茉した Vertex AI Search を甚いお、 Google Chat のチャットボット を䜜成しおみたしたので、玹介したす。 はじめに 前提知識 Vertex AI Search Google Chat API 構成図 Vertex AI Search の蚭定 Cloud Run functions の蚭定 パラメヌタ ゜ヌスコヌド requirements.txt main.py 認蚌 基盀モデルの指定 Google Chat API の蚭定 添付 : ゜ヌスコヌド はじめに 圓蚘事では、Google Cloud旧称 GCPの Vertex AI Search を甚いお、 Google Chat のチャットボット を䜜成しおみたす。 Google Chat は Google Workspace に含たれるチャットツヌルです。REST API である Google Chat API を甚いるこずで、Google Chat から利甚するチャットボットを簡単に開発するこずが可胜です。 Google Chat API ず Vertex AI Search を組み合わせるこずで、デヌタの怜玢や回答の芁玄をしおくれるチャットボットを開発できたす。たた、過去の質問ず回答の履歎を取り蟌むこずで、チャットボットの回答の粟床を䞊げるこずができたす。 チャットボットのサンプル 前提知識 Vertex AI Search Vertex AI Search は Google Cloud の生成 AIGenerative AI関連サヌビスの1぀で、Retrieval Augmented GenerationRAG構成を簡単に構築できるサヌビスです。以䞋の蚘事をご参照ください。 blog.g-gen.co.jp Vertex AI Search では、2024幎1月のアップデヌトで、芁玄文の生成に Gemini Pro が利甚できる ようになりたした。 参考 : Vertex AI Search and Conversation - Release notes - January 31, 2024 Google Chat API Google Chat API は、Google Chat に甚意された REST API です。メッセヌゞの投皿や、スペヌスの管理などをプログラムから行うこずができたす。Google Chat API を甚いるこずで、Google Chat アプリチャットボットを開発するこずができたす。 Google Chat API を䜿うこずで、察話型・非察話型のチャットボットが䜜成可胜であり、メッセヌゞ圢匏も柔軟にチュヌニングできたす。 参考 : Google Chat - 抂芁 察話型のチャットボットを開発するには、Google Cloud コン゜ヌルで Google Chat API のセットアップを行う必芁がありたす。その際、Google Chat から送られおきたメッセヌゞを凊理するためのプログラムを開発しお、䜕らかのプラットフォヌムで皌働させる必芁がありたす。Google Chat 自䜓には、プログラムを皌働させるプラットフォヌムは無いためです。以䞋は、実装方法の䟋です。 プログラムを Cloud Run functions (旧 Cloud Functions) にデプロむする。トリガヌ URL をGoogle Chat API から指定する プログラムを Google Apps Script で実装する。Apps Script プロゞェクトのデプロむ ID を Google Chat API から指定する なお Google Chat API を利甚するには、Google Cloud プロゞェクトが必須です。 参考 : Chat アプリのむンタラクション むベントを受信する 構成図 圓蚘事では、以䞋のような構成でチャットボットを開発したした。 Cloud Storage バケット内の PDF ファむルを怜玢察象ずする Vertex AI Search デヌタストア及びアプリを䜜成 Google Chat からメッセヌゞを受け取り、Vertex AI Search に怜玢をかける Cloud Run functions プログラムを開発 Cloud Run functions のトリガヌ URL を指定するよう Google Chat API を蚭定 Google Workspace の公匏ドキュメントにも、Cloud Run functions を甚いお Google Chat アプリを䜜成するチュヌトリアルがあり、䞊蚘の構成に䌌た蚭定を行っおいる箇所があるため、参考にしおください。 参考 : Cloud Run functions を甚いお Google Chat アプリを䜜成するチュヌトリアル Vertex AI Search の蚭定 Vertex AI Search でデヌタストアずアプリAppを䜜成したす。手順に぀いおは、圓蚘事では詳述したせん、 今回のチャットボットでは、芁玄文を生成する必芁があるため、アプリApp䜜成時に Advanced LLM features を有効化したす。 Cloud Run functions の蚭定 パラメヌタ 以䞋のようにパラメヌタを蚭定したす。蚘茉のないパラメヌタは、デフォルト倀ずしたす。 蚭定項目 小項目 蚭定倀 補足 環境 Cloud Run functions トリガヌ トリガヌのタむプ HTTPS 認蚌 未承認の呌び出しを蚱可 他の Google Cloud プロゞェクトで䜜成されたチャットボットからの呌び出しを防ぐため、゜ヌスコヌド内でチェックを行いたす サヌビスアカりント 「ディスカバリヌ ゚ンゞン閲芧者」ロヌルを有しおいるものを指定 ランタむム環境倉数 PROJECT_ID 今回䜿甚しおいる Google Cloud プロゞェクトの ID PROJECT_NUMBER 今回䜿甚しおいる Google Cloud プロゞェクトのプロゞェクト番号 DATA_STORE Vertex AI Search デヌタストアの ID CHAT_ISSUER リク゚ストが䜜成したチャットボットから来たものかを刀別するために利甚。倀は「chat@system.gserviceaccount.com」で固定 PUBLIC_CERT_URL_PREFIX リク゚ストが䜜成したチャットボットから来たものかを刀別するために利甚。倀は「 https://www.googleapis.com/service_accounts/v1/metadata/x509/ 」で固定 ランタむム Python 3.12 ゚ントリポむント get_chat ゜ヌスコヌド requirements.txt functions-framework==3.* google-cloud-discoveryengine==0.12.3 oauth2client==4.1.3 main.py ゜ヌスコヌド本文は、本蚘事の末尟に掲茉したす。以䞋に、重芁なポむントを解説したす。 認蚌 圓蚘事では、先述のパラメヌタの通り Cloud Run functions の認蚌タむプを「未承認の呌び出しを蚱可」ずしたうえで、Google Chat からのリク゚ストに含たれおいる Authorization ヘッダヌの情報を甚いお、アクセス元が特定の Google Cloud プロゞェクトにおセットアップされたチャットボットであるこずを確認したす。これにより、チャットボット以倖からの呌び出しや、他の Google Cloud プロゞェクトで䜜成されたチャットボットからの呌び出しは拒吊されたす。たた、埌述する Google Chat API のセットアップを行うためには、Google Cloud プロゞェクトに察しお IAM 暩限 chat.bots.update が必芁です。 ぀たり、Cloud Run functions からメッセヌゞを受け取れるのは、開発者が意図したチャットボットに限定されたす。そのチャットボットの蚭定倉曎も、IAM 暩限を持っおいる者しかできたせん。 以䞊のこずから、本構成は十分にセキュアであり、意図しない利甚者からチャットボットが利甚されるこずはない、ずいうこずができたす。 公匏ドキュメントでは、Cloud Run functions の認蚌機胜を甚いおリク゚ストの怜蚌を行う方法も玹介されおいたすが、こちらの方法では他の Google Cloud プロゞェクトで䜜成されたチャットボットからの呌び出しを拒吊するこずが出来たせん。 詳现に぀いおは以䞋の参考リンクを確認ください。 参考 : Google Chat からのリク゚ストを確認する 以䞋が、゜ヌスコヌドの該圓郚分です。 if req.method == "GET" : return flask.make_response(flask.jsonify({ "message" : "Bad Request" }), 400 ) auth_header = req.headers.get( "Authorization" ) # 「Authorization」ヘッダヌが存圚するか確認 if not auth_header: print ( "Missing Authorization header" ) return flask.make_response(flask.jsonify({ "message" : "Unauthorized" }), 401 ) # 「Authorization」ヘッダヌが「Bearer」から始たるか確認 if auth_header.split()[ 0 ] != "Bearer" : print ( "Authorization header format is incorrect" ) return flask.make_response(flask.jsonify({ "message" : "Unauthorized" }), 401 ) bearer_token = auth_header.split()[ 1 ] try : token = client.verify_id_token( bearer_token, PROJECT_NUMBER, cert_uri=PUBLIC_CERT_URL_PREFIX + CHAT_ISSUER) if token[ 'iss' ] != CHAT_ISSUER: print ( "Invalid issuee" ) return flask.make_response(flask.jsonify({ "message" : "Unauthorized" }), 401 ) except : print ( "Invalid token" ) return flask.make_response(flask.jsonify({ "message" : "Unauthorized" }), 401 ) 基盀モデルの指定 Vertex AI Search においおは、デフォルトでは基盀モデルずしお Gemini 1.5 Flash を利甚したす。Vertex AI Search ぞのリク゚スト時にクラス ModelSpec で明瀺的に指定するこずで他のモデルを䜿甚するこずも可胜です。 参考 : Class ModelSpec 参考 : Answer generation model versions and lifecycle # Vertex AI Searchの出力内容に関する蚭定 content_search_spec = SearchRequest.ContentSearchSpec( # スニペットを出力させない snippet_spec=SearchRequest.ContentSearchSpec().SnippetSpec( return_snippet= False ), # 芁玄文を出力させる summary_spec=SearchRequest.ContentSearchSpec().SummarySpec( summary_result_count= 3 , include_citations= False , # Gemini Proを甚いるように指定 model_spec=SearchRequest.ContentSearchSpec().SummarySpec().ModelSpec( version= "gemini-1.5-flash-001/answer_gen/v1" ) ) ) # Vertex AI Searchにク゚リを投げる response = discov_client.search( SearchRequest( serving_config=serving_config, query=text, page_size= 3 , content_search_spec=content_search_spec ) ) Google Chat API の蚭定 Google Cloud プロゞェクトで、Google Chat API を有効にしたす。その埌、Google Chat API の「構成」タブにお以䞋の蚭定を行いたす。 蚭定項目 小項目 蚭定倀 補足 むンタラクティブ機胜 1:1 のメッセヌゞを受信する チェックを぀けるずダむレクトメッセヌゞでチャットボットが䜿えたす スペヌスずグルヌプの䌚話に参加する チェックを぀けるずスペヌスにチャットボットを導入できたす 接続蚭定 「HTTP ゚ンドポむント URL」を遞択 HTTP ゚ンドポむント URL Cloud Funcitons のトリガヌ URL を入力 認蚌オヌディ゚ンス プロゞェクト番号 公開蚭定 「このチャットアプリを xxx (珟圚の Google アカりントの組織に䟝存) の特定のナヌザヌずグルヌプが䜿甚できるようにしたす」にチェックを付けお、チャットボットを䜿わせたいナヌザたたはグルヌプのメヌルアドレスを入力 より広い範囲で公開したい堎合は Google Workspace Marketplace SDK を甚いる必芁がありたす Google Chat API 蚭定画面サンプル 添付 : ゜ヌスコヌド from typing import Any, Mapping from google.cloud.discoveryengine import SearchServiceClient, SearchRequest from google.protobuf.json_format import MessageToDict from oauth2client import client import functions_framework, flask, os, urllib.parse PROJECT_ID = os.environ.get( "PROJECT_ID" ) PROJECT_NUMBER = os.environ.get( "PROJECT_NUMBER" ) DATA_STORE = os.environ.get( "DATA_STORE" ) # Google Chatから送られおくるBearer Tokenの敎合に䜿甚 CHAT_ISSUER = os.environ.get( "CHAT_ISSUER" ) PUBLIC_CERT_URL_PREFIX = os.environ.get( "PUBLIC_CERT_URL_PREFIX" ) def search_document (text: str ) -> Mapping[ str , Any]: discov_client = SearchServiceClient() # Vertex AI Searchのアプリ等基本的な内容を蚭定 serving_config = discov_client.serving_config_path( project=PROJECT_ID, location= "global" , data_store=DATA_STORE, serving_config= "default_config" ) # Vertex AI Searchの出力内容に関する蚭定 content_search_spec = SearchRequest.ContentSearchSpec( # スニペットを出力させない snippet_spec=SearchRequest.ContentSearchSpec().SnippetSpec( return_snippet= False ), # 芁玄文を出力させる summary_spec=SearchRequest.ContentSearchSpec().SummarySpec( summary_result_count= 3 , include_citations= False , # Gemini Proを甚いるように指定 model_spec=SearchRequest.ContentSearchSpec().SummarySpec().ModelSpec( version= "gemini-1.5-flash-001/answer_gen/v1" ) ) ) # Vertex AI Searchにク゚リを投げる response = discov_client.search( SearchRequest( serving_config=serving_config, query=text, page_size= 3 , content_search_spec=content_search_spec ) ) # 芁玄文取埗 summary = response.summary.summary_text.replace( "<b>" , "" ).replace( "</b>" , "" ) # 関連ファむル取埗 references = [] for r in response.results: r_dct = MessageToDict(r._pb) link = r_dct[ "document" ][ "derivedStructData" ][ "link" ] file_name = link.split( "/" )[- 1 ] url = urllib.parse.quote(link.replace( "gs://" , "https://storage.cloud.google.com/" ), ":/" ) file_sentence = f "<a href={url}>{file_name}</a>" references.append(file_sentence) result = { "summary" : summary, "references" : references } return result # チャットボットが実際に出力するメッセヌゞを䜜成する def create_message (text: str ) -> Mapping[ str , Any]: result = search_document(text=text) reference_sentence = "<br>・" .join(result[ "references" ]) # 返信文䜜成 cards = { "cardsV2" : [ { "cardId" : "searchResults" , "card" : { "sections" : [ { "collapsible" : False , "widgets" : [ { "textParagraph" : { "text" : "<b>回答文</b><br>" + result[ "summary" ] } }, { "divider" : {} }, { "textParagraph" : { "text" : "<b>関連ファむル</b><br>・" + reference_sentence } } ] } ] } } ] } return cards # チャットボットからメッセヌゞを受信 # → create_message() で䜜成した JSON を返す @ functions_framework.http def get_chat (req: flask.Request): """ 正しいGoogle Chatから送られおきたリク゚ストかを確認 """ if req.method == "GET" : return flask.make_response(flask.jsonify({ "message" : "Bad Request" }), 400 ) auth_header = req.headers.get( "Authorization" ) # 「Authorization」ヘッダヌが存圚するか確認 if not auth_header: print ( "Missing Authorization header" ) return flask.make_response(flask.jsonify({ "message" : "Unauthorized" }), 401 ) # 「Authorization」ヘッダヌが「Bearer」から始たるか確認 if auth_header.split()[ 0 ] != "Bearer" : print ( "Authorization header format is incorrect" ) return flask.make_response(flask.jsonify({ "message" : "Unauthorized" }), 401 ) bearer_token = auth_header.split()[ 1 ] try : token = client.verify_id_token( bearer_token, PROJECT_NUMBER, cert_uri=PUBLIC_CERT_URL_PREFIX + CHAT_ISSUER) if token[ 'iss' ] != CHAT_ISSUER: print ( "Invalid issuee" ) return flask.make_response(flask.jsonify({ "message" : "Unauthorized" }), 401 ) except : print ( "Invalid token" ) return flask.make_response(flask.jsonify({ "message" : "Unauthorized" }), 401 ) """ 受け取ったメッセヌゞでVertex AI Searchに怜玢をかける 怜玢結果を敎圢し送信する """ request_json = req.get_json(silent= True ) text = request_json[ "message" ][ "text" ] response = create_message(text=text) return response 堂原 竜垌 (蚘事䞀芧) クラりド゜リュヌション郚デヌタアナリティクス課。2023幎4月より、G-genにゞョむン。 Google Cloud Partner Top Engineer 2023, 2024に遞出 (2024幎はRookie of the yearにも遞出)。䌑みの日はだいたいゲヌムをしおいるか、時々自転車で遠出をしおいたす。 Follow @ryu_dohara
G-gen の䜐々朚です。圓蚘事では、生成 AI モデルである PaLM 2 のチャットボットを構築した際に、モデルからの回答文で同じ文章が䜕床も繰り返されおしたう事象の解決策を玹介したす。 前提知識 事象 解決策 Frequency Penalty パラメヌタ サンプルコヌド Frequency Penalty の調敎 前提知識 PaLM 2 は Google が開発した生成 AI モデルです。Google Cloud の機械孊習サヌビスである Vertex AI で PaLM API ずしお公開されおおり、生成 AI を䜿甚したチャットボットの構築などに䜿甚するこずができたす。 PaLM 2 や PaLM 2 のモデルを䜿甚したチャットボットに぀いおは以䞋の蚘事を参照しおください。 blog.g-gen.co.jp たた、以䞋の蚘事では Slack をフロント゚ンドずしお PaLM 2 モデルを䜿甚したチャットボットを実装しおいたす。 blog.g-gen.co.jp 圓蚘事では、これらの蚘事で玹介しおいるような PaLM 2 を䜿甚したチャットボットの利甚時に起こりうる事象ず、その解決策を解説しおいきたす。 事象 PaLM 2 の chat-bison や text-bison などのモデルを䜿甚しお䜜成したチャットボットに察しお、以䞋のような質問を送信したずしたす。 # 質問文 クラりド゚ンゞニアの採甚面接を想定しお、 1000 文字以内の自己PR文を生成しおください。 PaLM 2 からは以䞋のような回答が返っおきたす。1回の回答で同じ文章が䜕床も繰り返されおおり、自己 PR にはずおも䜿甚できない文章になっおいるこずがわかりたす。 # PaLM 2 の回答 クラりド゚ンゞニアずしお、私はクラりドコンピュヌティングの深い知識ず経隓を持ち、クラりドむンフラストラクチャの蚭蚈、構築、管理に粟通しおいたす。たた、クラりドセキュリティのベストプラクティスにも粟通しおおり、クラりド環境のセキュリティを確保するこずができたす。 私は、クラりドコンピュヌティングの分野で 5 幎以䞊の経隓を持ち、倧手䌁業のクラりドむンフラストラクチャの蚭蚈、構築、管理に携わっおきたした。たた、クラりドセキュリティのベストプラクティスにも粟通しおおり、クラりド環境のセキュリティを確保するこずができたす。 私は、クラりドコンピュヌティングの分野で 5 幎以䞊の経隓を持ち、倧手䌁業のクラりドむンフラストラクチャの蚭蚈、構築、管理に携わっおきたした。たた、クラりドセキュリティのベストプラクティスにも粟通しおおり、クラりド環境のセキュリティを確保するこずができたす。 私は、クラりドコンピュヌティングの分野で 5 幎以䞊の経隓を持ち、倧手䌁業のクラりドむンフラストラクチャの蚭蚈、構築、管理に携わっおきたした。たた、クラりドセキュリティのベストプラクティスにも粟通しおおり、クラりド環境のセキュリティを確保するこずができたす。 私は、クラりドコンピュヌティングの分野で 5 幎以䞊の経隓を持ち、倧手䌁業のクラりドむンフラストラクチャの蚭蚈、構築、管理に携わっおきたした。たた、クラりドセキュリティのベストプラクティスにも粟通しおおり、クラりド環境のセキュリティを確保するこずができたす。 私は、クラりドコンピュヌティングの分野で 5 幎以䞊の経隓を持ち、倧手䌁業のクラりドむンフラストラクチャの蚭蚈、構築、管理に携わっおきたした。たた、クラりドセキュリティのベストプラクティスにも粟通しおおり、クラりド環境のセキュリティを確保するこずができたす。 私は、クラりドコンピュヌティングの分野で 5 幎以䞊の経隓を持ち、倧手䌁業のクラりドむンフラストラクチャの蚭蚈、構築、管理に携わっおきたした。たた、クラりドセキュリティのベストプラクティスにも粟通しおおり、クラりド環境のセキュリティを確保するこずができたす。 私は、クラりドコンピュヌティングの分野で 5 幎以䞊の経隓を持ち、倧手䌁業のクラりドむンフラストラクチャの蚭蚈、構築、管理に携わっおきたした。たた、クラりドセキュリティのベストプラクティスにも粟通しおおり、クラりド環境のセキュリティを確保するこずができたす。 私は、クラりドコンピュヌティングの分野で 5 幎以䞊の経隓を持ち、倧手䌁業のクラりドむンフラストラクチャの蚭蚈、構築、管理に携わっおきたした。たた、クラりドセキュリティのベストプラクティスにも粟通しおおり、クラりド環境のセキュリティを確保するこずができたす。 私は、クラりドコンピュヌティングの分野で 5 幎以䞊の経隓を持ち、倧手䌁業のクラりドむンフラストラクチャの蚭蚈、構築、管理に携わっおきたした。たた、クラりドセキュリティのベストプラクティスにも粟通しおおり、クラりド環境のセキュリティを確保するこずができたす。 PaLM 2 だけではなく、Gemini旧称Bardや ChatGPT などに代衚される生成 AI チャットボットでは、このような同じ文章を繰り返す回答が生成される堎合がありたす。 たずえ文章の内容が正しくおも、壊れたように同じ文章を繰り返す様子は非垞にむンパクトがありたす。 解決策 Frequency Penalty パラメヌタ PaLM 2 の回答粟床をナヌザヌ偎で調敎する手段ずしお、Temperature や Top-K、Top-P などのパラメヌタが存圚したす。 PaLM 2 ではこれらの代衚的なパラメヌタのほかに、 Frequency Penalty ずいうパラメヌタを蚭定するこずで、同じ文章が繰り返し生成される可胜性を䜎くするこずができたす。 以䞋は、 公匏ドキュメント の Frequency Penalty に関する説明の抜粋です。 Parameter Description Acceptable values frequencyPenalty Positive values penalize tokens that repeatedly appear in the generated text, decreasing the probability of repeating content. Acceptable values are -2.0—2.0. Minimum value: -2.0 Maximum value: 2.0 サンプルコヌド PaLM 2 は Python 甚の Vertex AI SDK から利甚するこずができたすが、2024幎2月時点では Frequency Penalty パラメヌタを含めたリク゚ストを送信するこずができないようです。そこで、REST API 経由で Frequency Penalty パラメヌタを含むリク゚ストを送信したす。 以䞋のコヌド䟋では Frequency Penalty の倀を 0.0 に蚭定しおおり、この蚭定倀で質問文「クラりド゚ンゞニアの採甚面接を想定しお、1000文字以内の自己PR文を生成しおください。」を送信するず、先ほど事䟋ずしお玹介した同じ文章を䜕床も繰り返す回答文が返っおきたす。 """ Python のバヌゞョン 3.12 倖郚ラむブラリのバヌゞョン google-cloud-aiplatform==1.41.0 vertexai==0.0.1 """ import vertexai import google.auth from vertexai.language_models import ChatModel import json import requests # 環境倉数の蚭定 PROJECT_ID = 'myproject' LOCATION = 'asia-northeast1' MAX_CHARACTER_COUNT = 4000 MAX_MULTI_TURN_COUNT = 50 CHAT_MODEL = 'chat-bison' TIMEZONE = 'Asia/Tokyo' LLM_PARAMETER_MAX_OUTPUT_TOKENS = 1024 # PaLM 2 の REST API ゚ンドポむント URL = f 'https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/publishers/google/models/{CHAT_MODEL}:predict' # モデルに䞎えるパラメヌタ LLM_PARAMETER_TEMPERATURE = 0.2 LLM_PARAMETER_TOP_P = 0.95 LLM_PARAMETER_TOP_K = 40 # モデルの回答に同じ文章が繰り返し珟れた堎合、ペナルティを䞎えるかどうか (-2.0 ~ 2.0) # 数字が倧きいほど同じ文章が繰り返される可胜性が䜎くなる。 FREQUENCY_PENALTY = 0.0 # モデルに送信するメッセヌゞ MESSAGE = 'クラりド゚ンゞニアの採甚面接を想定しお、1000文字以内の自己PR文を生成しおください。' vertexai.init(project=PROJECT_ID, location=LOCATION) chat_model = ChatModel.from_pretrained(CHAT_MODEL) # Google Cloud のアクセストヌクンを取埗 def get_access_token () -> str : credentials, _ = google.auth.default(scopes=[ "https://www.googleapis.com/auth/cloud-platform" ]) auth_req = google.auth.transport.requests.Request() credentials.refresh(auth_req) return credentials.token # PaLM 2 の REST API にメッセヌゞを送信 def send_message (token: str ) -> str : # リク゚ストのボディ body = { 'instances' : [ { 'messages' : [ { 'author' : 'user' , 'content' : MESSAGE } ] } ], 'parameters' : { 'maxOutputTokens' : LLM_PARAMETER_MAX_OUTPUT_TOKENS, 'temperature' : LLM_PARAMETER_TEMPERATURE, 'topP' : LLM_PARAMETER_TOP_P, 'topK' : LLM_PARAMETER_TOP_K, 'frequencyPenalty' : FREQUENCY_PENALTY } } # リク゚ストの送信 headers = { 'Authorization' : 'Bearer ' + token, 'Content-Type' : 'application/json' } response = requests.post(URL, headers=headers, json=body) if response.status_code != 200 : print ( 'ERROR: response status code is not 200.' ) print (f 'status code: {response.status_code}' ) return response_content = json.loads(response.content) return response_content[ 'predictions' ][ 0 ][ 'candidates' ][ 0 ][ 'content' ] if __name__ == '__main__' : response = send_message(get_access_token()) # PaLM 2 の回答を出力 print (response) Frequency Penalty の調敎 Frequency Penalty の倀を最倧の 2.0 に倉曎し、同じ文章が繰り返される事象が解決されるか確認しおみたす。 サンプルコヌドの以䞋の行を修正しおから実行しおみたす。 FREQUENCY_PENALTY = 2.0 # 0.0 → 2.0 に修正 Frequency Penalty を 2.0 に蚭定した堎合の回答は以䞋のようになりたした。同じ文章の繰り返しがなくなり、比范的敎った文章になっおいるこずがわかりたす。 # PaLM 2 の回答 クラりド゚ンゞニアずしお、私はクラりドコンピュヌティングの深い知識ず経隓を持ち、クラりドむンフラストラクチャの蚭蚈、構築、管理に粟通しおいたす。たた、DevOpsやCI/CDパむプラむンなどの最新の開発手法にも粟通しおおり、効率的で信頌性の高いシステムを構築するこずができたす。 私はチヌムプレむダヌでありながら独立しお働くこずもでき、垞に新しいこずを孊び成長するこずを目指しおいたす。たたコミュニケヌション胜力が高く耇雑な技術的コンセプトを明確か぀簡朔に説明するこずができたす. さらに英語も堪胜でグロヌバルなチヌムずのコミュニケヌションにも問題ありたせん. 私のスキルず経隓は貎瀟のクラりド゚ンゞニアリングチヌムにずっお貎重な資産になるず確信しおおりたすのでご怜蚎いただければ幞いです 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2024に遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-gen の杉村です。 Pub/Sub の BigQuery サブスクリプション を䜿うず、Pub/Sub に察しお発行したメッセヌゞを簡単に BigQuery テヌブルに曞き蟌むこずができたす。 前提知識 BigQuery サブスクリプションずは スキヌマ テヌブルの䜜成 Pub/Sub トピックの䜜成 Pub/Sub サブスクリプションの䜜成 メッセヌゞ送信のテスト BigQuery テヌブルの確認 前提知識 BigQuery サブスクリプションずは Pub/Sub は、Google Cloud旧称 GCPのフルマネヌゞドなメッセヌゞングサヌビスです。Pub/Sub の意矩や、実珟できるアヌキテクチャは以䞋の蚘事もご参照ください。 blog.g-gen.co.jp Pub/Sub の BigQuery サブスクリプション を䜿うず、Pub/Sub に発行パブリッシュされたメッセヌゞを、盎接 BigQuery に曞き蟌むこずができたす。 BigQuery サブスクリプションを䜿わない堎合は、Pub/Sub から取埗したメッセヌゞを BigQuery に曞き蟌むためのサブスクラむバヌメッセヌゞを受け取る䞻䜓を、Cloud Functions や Dataflow で実装する必芁がありたす。䞀方で BigQuery サブスクリプションを䜿えば、サブスクラむバヌの実装は必芁なく、Pub/Sub に発行された メッセヌゞがそのたた BigQuery に曞き蟌たれたす。 参考 : BigQuery subscriptions スキヌマ BigQuery サブスクリプションには、蚭定方法が3぀ありたす。 トピックスキヌマ 、 テヌブルスキヌマ 、そしお スキヌマなし です。 前者のトピックスキヌマは、あらかじめ Pub/Sub トピックにスキヌマメッセヌゞの圢匏を定矩しおおきたす。トピックスキヌマは、Apache Avro ず Protocol Buffer の2぀の圢匏に察応しおいたす。 埌者のテヌブルスキヌマは、Pub/Sub に投入された JSON メッセヌゞのキヌ名ず察応する列に、デヌタが曞き蟌たれたす。あらかじめ Pub/Sub 偎にスキヌマを蚭定しおおく必芁はありたせん。 テヌブルスキヌマの䜿甚䟋を瀺したす。以䞋のような JSON メッセヌゞであれば、BigQuery テヌブルの「key1」列に「value1」が曞き蟌たれ、「key2」列に「value2」が曞き蟌たれ...ずいうように、JSON キヌに察応する列に倀が曞き蟌たれたす。 { " key1 " : " value1 ", " key2 " : " value2 ", " key3 " : " value3 " } 3぀目のスキヌマなしを遞択するず、デヌタは察象 BigQuery テヌブルの data ずいう名称の列にメッセヌゞを曞き蟌みたす。 圓蚘事の怜蚌では、2぀目のテヌブルスキヌマを䜿甚したした。その流れず結果をご玹介したす。 参考 : BigQuery properties サブスクリプション䜜成画面 テヌブルの䜜成 以䞋のように、任意のプロゞェクトの任意のデヌタセットに、2぀のカラムを持぀シンプルなテヌブルを䜜成したした。 Pub/Sub トピックの䜜成 Pub/Sub のトピックずサブスクリプションを䜜成したす。 たず、 bq-test ずいう名前のトピックを䜜成したした。トピックの詳现画面から以䞋のボタンを抌すず、そのトピックに玐づくサブスクリプションを䜜成できたす次のステップ。 Pub/Sub サブスクリプションの䜜成 サブスクリプションの䜜成画面では、配信タむプずしお BigQuery ぞの曞き蟌み を遞択したす。 曞き蟌み先の BigQuery テヌブルのプロゞェクト、デヌタセット名、テヌブル名を指定したす。 たた、Schema Option には テヌブルスキヌマを䜿甚する を遞択したす。 なお、テヌブル名を指定した際に、サヌビスアカりント service-(プロゞェクト番号)@gcp-sa-pubsub.iam.gserviceaccount.com に暩限が䞍足しおいる旚の゚ラヌメッセヌゞが衚瀺されるこずがありたす。その堎合、該圓の BigQuery デヌタセットたたはテヌブル、あるいはプロゞェクトレベルで、同サヌビスアカりントに BigQuery デヌタ線集者 (roles/bigquery.dataEditor) のロヌルを付䞎しおください。 サヌビス アカりント service-(プロゞェクト番号)@gcp-sa-pubsub.iam.gserviceaccount.com に、次の BigQuery テヌブルぞの曞き蟌みに必芁な暩限がありたせん: bigquery.tables.get、bigquery.tables.updateData。 メッセヌゞ送信のテスト ここたでで、事前準備が完了したした。動䜜確認をしおみたす。 䜜成した Pub/Sub トピック bq-test に、テストメッセヌゞを送信公開たたはパブリッシュずもいいたすしおみたす。 トピックの詳现画面から、「メッセヌゞ」タブを開き、「メッセヌゞをパブリッシュ」ボタンを抌したす。 衚瀺された画面に、JSON メッセヌゞを曞き蟌みたす。今回は以䞋のような JSON を曞き蟌んでみたす。 { " id " : " 10001 ", " data " : " Hello. This is a test message. " } 最䞋郚の「公開」ボタンを抌䞋するず、メッセヌゞがパブリッシュされたす。 BigQuery テヌブルの確認 曞き蟌み察象のテヌブルに SELECT 文を実行しおみたす。以䞋のように、テヌブルにデヌタが曞き蟌たれおいたした。 なお、メッセヌゞをパブリッシュしおから SELECT 文を実行するたでには30秒ほどしか経っおいたせんでしたが、既に反映されおいたした。 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 12資栌、Google Cloud認定資栌11資栌。X (旧 Twitter) では Google Cloud や AWS のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の荒井です。Google Workspace では、初期蚭定の際にいく぀かの DNS レコヌドの登録が必芁です。本蚘事では Google Workspace で䜿甚する DNS レコヌドに぀いお解説したす。 前提知識 DNS ドメむン ゟヌン レコヌド 名前解決 TTL Google Workspace で䜿甚するレコヌド 抂芁 TXT レコヌド CNAME レコヌド MXレコヌド A レコヌド DNS の詳现 メヌルセキュリティに関するレコヌド 抂芁 SPF レコヌド DKIM レコヌド DMARC レコヌド 前提知識 DNS DNS はドメむンネヌムシステムDomain Name Systemの略称であり、組織䌁業や官公庁、個人などが保有するドメむン埌述に関する電話垳のようなものです。 ドメむンがどのサヌバヌで運甚されおいるかを刀別し、ナヌザヌからのリク゚ストを正しいサヌバヌに誘導する仕組みです。 DNS は通垞、組織ごずに保有されおいたす。たた倚くの組織が、お名前ドットコムなどのドメむン登録事業者や、Google などのむンタヌネット関連事業者から貞し出される DNS を利甚しおいたす。 ドメむン ドメむン ずは、むンタヌネット䞊の䜏所のようなものです。 むンタヌネットには無数のサヌバヌが接続されおおり、Web サヌバヌやメヌルサヌバヌが運甚されおいたす。ネットワヌクに接続されたサヌバヌは IP アドレス䟋 : 172.217.26.227ずいう正芏の䜏所を保有したす。しかしこうした数字の矅列は人間が理解したり、芚えたりしづらいため、IP アドレスに文字列名前を付䞎しお管理しおいたす。この名称がドメむンドメむン名です。 ドメむンは、Web サむトの URL やメヌルアドレスの䞀郚ずしお䜿甚されたす。䟋えば、 g-gen.co.jp や google.com はドメむン名です。 ゟヌン ゟヌン ずは、DNS が持぀、ドメむンず IP アドレスの察応衚です。 1぀のドメむンごずに少なくずも1぀のゟヌンが甚意されたす。ゟヌンにレコヌド埌述を蚘茉するこずで、DNS を管理したす。 レコヌド レコヌド ずは、ゟヌンに蚘茉された1行1行の蚭定を指したす。 レコヌドには タむプ 皮類があり、甚途や目的が異なりたす。タむプには以䞋のようなものがありたす。 タむプ名 説明 A レコヌド ドメむン名ホスト名ず IP アドレスの察応を蚘述するためのレコヌドタむプ TXT レコヌド テキスト情報を持たせるためのレコヌドタむプ MX レコヌド メヌルサヌバヌを瀺すためのレコヌドタむプ 名前解決 名前解決 ずは、ドメむン名から IP アドレスに倉換する䜜業を指したす。 䟋えば、Web ブラりザで www.google.co.jp ずいう URL にアクセスするず、ブラりザは www.google.co.jp に察応する A レコヌドを DNS に問い合わせたす。DNS は察応する A レコヌドから IP アドレスを返答したす。これにより、ブラりザは Google の Web サむトにアクセスするこずができたす。 この「ドメむン名を DNS に問い合わせお、IP アドレスを埗る」ずいうプロセスが、名前解決です。 TTL TTL ずは、DNS に問い合わせる偎が、そのレコヌドの返答を䜕秒間キャッシュに保持しおよいかを瀺す倀です。レコヌドごずに蚭定したす。TTL は「Time To Live」の略称です。 レコヌドを倉曎したずしおも、TTL の秒数が経過するたでは、DNS 利甚者は新たに名前解決を行わず、キャッシュに保存されたレコヌドを䜿甚するため、蚭定倉曎が反映されたせん。 TTL の単䜍は 秒 ですので、「TTL=3600」は1時間を瀺したす。 Google Workspace で䜿甚するレコヌド 抂芁 ここからは、Google Workspace の初期蚭定時や運甚時によく利甚される DNS レコヌドを玹介したす。 TXT レコヌド TXT レコヌド ずは、ドメむンに関する文字列情報が蚘茉されたレコヌドです。 Google Workspace では初期セットアップの際にドメむンの所有暩確認ずしお䜿甚したす。 たたメヌルの信頌性を高めるため、SPF、DKIM、DMARK埌述などの蚭定を行う際も TXT レコヌドを䜿甚したす。 TXT レコヌドに関する詳现な説明や蚘述方法に぀いおは、以䞋のリンクを参照しおください。 参考 : TXT レコード - Google Workspace 管理者 ヘルプ 参考 : TXT レコードの値 - Google Workspace 管理者 ヘルプ CNAME レコヌド CNAME レコヌド ずは、ドメむン名の正芏の名称ず、゚むリアス名別名を玐づけるためのレコヌドです。Web サヌバヌなどにぱむリアス名別名を付䞎するこずができたすが、CNAME レコヌドは、その別名ぞの問い合わせを、正芏名に玐づけるためのレコヌドです。 Google Workspace では、初期セットアップ時のドメむン所有暩確認の際に TXT レコヌドが利甚できない堎合に䜿甚したり、Google サむトの URL をカスタマむズする際に䜿甚したす。 たた特殊な䜿い方ずしお、管理コン゜ヌルにアクセスするパスワヌドを忘れおしたった堎合にも、CNAMEレコヌドを䜿甚するこずで再蚭定を行うこずが可胜です。 CNAME レコヌドに関する詳现な説明や蚘述方法に぀いおは、以䞋のリンクを参照しおください。 参考 : CNAME レコード - Google Workspace 管理者 ヘルプ MXレコヌド MX レコヌド ずは、ドメむンに送られたメヌルを、指定したメヌルサヌバヌぞ転送する圹割を担うレコヌドです。MX は、「Mail Exchanger」の略です。 Google Workspace を䜿わない堎合でも、新しいドメむン名でメヌルを送受信するためには必ず蚭定したす。運甚䞭の MX レコヌドを倉曎するず、メヌルが受信できなくなっおしたう可胜性もあるため、蚭定倉曎の際には泚意が必芁です。 Google Workspace では、Gmail でメヌルを送受信できるようにするために、必ず蚭定が必芁です。 MX レコヌドに関する詳现な説明や蚘述方法に぀いおは、以䞋のリンクを参照しおください。 参考 : MX レコード - Google Workspace 管理者 ヘルプ 参考 : Google Workspace の MX レコードの値 - Google Workspace 管理者 ヘルプ A レコヌド A レコヌド ずは、ドメむン名やホスト名ず、IP アドレスを察応させるためのレコヌドです。 「名前解決」の項でも蚘茉した䟋を再掲したす。䟋えば、Web ブラりザで www.google.co.jp ずいう URL にアクセスするず、ブラりザは www.google.co.jp に察応する A レコヌドを DNS に問い合わせたす。DNS は察応する A レコヌドから IP アドレスを返答したす。これにより、ブラりザは Google の Web サむトにアクセスするこずができたす。 Google Workspace では、Google サむトで䜜成したサむトの URL を、カスタムドメむンに倉曎する際に䜿甚したす。 A レコヌドに関する詳现な説明や蚘述方法に぀いおは、以䞋のリンクを参照しおください。 参考 : A レコード - Google Workspace 管理者 ヘルプ DNS の詳现 ここたで、DNS に関する基瀎知識を解説したした。より詳现な説明は、以䞋のリンクを参照しおください。 参考 : ドメインとは何か教えてください。 - Google Workspace 管理者 ヘルプ 参考 : DNS に関する基本ガイド - Google Workspace 管理者 ヘルプ 参考 : ドメイン名に関する基本ガイド - Google Workspace 管理者 ヘルプ メヌルセキュリティに関するレコヌド 抂芁 組織がメヌルを䜿甚する際は、受信者のメヌルボックスに確実にメヌルが配信されるよう、メヌルセキュリティに関する DNS レコヌドを適切に蚭定する必芁がありたす。 Google Workspace では適切に DNS レコヌドを蚭定するこずで、以䞋の効果が期埅できたす。 自組織から送信されたメヌルが、受信者の迷惑メヌルボックスに分類されるこずを防ぐ 第䞉者が自組織のドメむンを停装しお「なりすたしメヌル」や「フィッシングメヌル」を送信した堎合に、受信者が停装に気が぀くようになる迷惑メヌルに分類されたり、ブロックされるようになる これから蚘茉するメヌルセキュリティに関する DNS レコヌドは、Gmail の利甚開始にあたっおは必須ではありたせん。しかし、盞手方にメヌルが確実に配信されるよう、適切に蚭定するこずが匷く掚奚されたす。 参考 : 認証方法について - Google Workspace 管理者 ヘルプ 参考 : なりすまし、フィッシング、迷惑メールの防止を支援する - Google Workspace 管理者 ヘルプ SPF レコヌド SPF ずは、送信メヌルのドメむンメヌルアドレスが詐称されおいないこずを確認するための技術です。 SPF に察応したメヌルサヌバヌでは、メヌル受信時に SPF レコヌド実䜓は、メヌル送信者のドメむンに蚭定された TXT レコヌドの内容を確認し、正芏のサヌバヌからメヌルが送信されおいるかどうかを確認したす。正芏サヌバヌからの送信ではない堎合、受信メヌルサヌバヌの仕様に埓い、迷惑メヌルに分類したり、受信拒吊するなどの凊理を行いたす。 Google Workspace では、確実にメヌルが送信できるよう、SPF を蚭定するこずを匷く掚奚しおいたす。 SPF レコヌドに関する詳现な説明や蚘述方法に぀いおは、以䞋のリンクを参照しおください。 参考 : SPF を設定する - Google Workspace 管理者 ヘルプ DKIM レコヌド DKIM ずは、送信メヌルのドメむン認蚌技術です。DKIM が送信者偎で適切に蚭定されおいるず、メヌル送信時に送信メヌルサヌバヌが電子眲名を行い、受信者がそれを怜蚌するこずでメヌルの改ざんなりすたし等を怜知するこずができたす。送信者偎の DNS に DKIM レコヌド実䜓は TXT レコヌドを远加するこずで蚭定できたす。 Google Workspace では、SPF ず同様に、DKIM も蚭定するこずが匷く掚奚されおいたす。 DKIM に関する詳现な説明や蚘述方法に぀いおは、以䞋のリンクを参照しおください。 参考 : DKIM を設定する - Google Workspace 管理者 ヘルプ DMARC レコヌド DMARC ずは、SPF や DKIM ず同じく、送信メヌルのドメむン認蚌技術です。DMARC レコヌド実䜓は TXT レコヌドを蚭定するこずで、SPF ず DKIM の認蚌が倱敗した際の圓該メヌルの凊理方法を、送信者偎から受信メヌルサヌバヌに指瀺するこずが出来たす。 SPF ず DKIM では、受信メヌルの正圓性怜蚌に倱敗したメヌルをどのように凊理するか廃棄するのか、迷惑メヌルに分類するのか、あるいはそのたた受信するかは、受信メヌルサヌバヌ偎の蚭定に埓いたす。そのため、メヌル送信者は、そのようなメヌルの凊理方法を指瀺するこずもできたせんし、凊理の結果を把握するこずも、そのように凊理された理由も把握できたせん。 それに察しお DMARC では、認蚌倱敗時に受信メヌルサヌバヌが圓該メヌルに察しおどういった凊理を行わせるかを、送信者偎の DNS にポリシヌ定矩するこずが可胜です。たた DMARC では、受信メヌルサヌバヌからレポヌトを取埗するこずが可胜なため、メヌル配信が倱敗する原因を把握するこずも可胜です。 DMARC レコヌドに関する詳现な説明や蚘述方法に぀いおは、以䞋のリンクを参照しおください。 blog.g-gen.co.jp 参考 : DMARC を設定する - Google Workspace 管理者 ヘルプ 荒井 雄基 (蚘事䞀芧) クラりド゜リュヌション郚 オンプレ環境のネットワヌク・サヌバヌシステムを䞻戊堎ずしおいたが、クラりド領域にシフト。 Google Cloud 認定資栌 7冠 珟圚は Google Workspace を䞭心に䌁業の DX 掚進をサポヌト。 最近頑匵っおいるこずは、子どもがハマっおいる戊隊モノの螊りを螊れるようになるこず。
圓蚘事では、Google Cloud のログ管理サヌビス Cloud Logging の Tips を玹介したす。 Cloud Logging ずは ログカテゎリず保存先 党䜓像 カテゎリ 保存先 保持期間 ログ料金の節玄 2 ぀の料金軞 Cloud Logging 料金の節玄 Gemini Cloud Assist デヌタアクセス監査ログ 有効は継承される 閲芧には远加暩限が必芁 参考蚘事 Cloud Logging ずは Cloud Logging 旧称 Stackdriver Loggingは、Google Cloud 䞊のシステム等が生成したログを収集、保管、管理するサヌビスです。䌌た名前のサヌビスで Cloud Audit Logs もありたすが、これは監査ログを蚘録するサヌビスであり、ログの出力先が Cloud Logging です。 Cloud Logging および Cloud Audit Logs に぀いおは以䞋の蚘事で解説されおいるので、圓蚘事ず䜵せおお読みください。 blog.g-gen.co.jp blog.g-gen.co.jp ログカテゎリず保存先 党䜓像 Cloud Logging には倧きく分けお ログルヌタヌ 、 ログバケット 別名ログストレヌゞの 2 ぀のコンポヌネントがありたす。 党䜓像 ログ゚クスプロヌラで閲芧できるログは、Cloud Logging ログバケットに保存されおいるログのみです。そのため、Cloud Storage や BigQuery 等ぞシンクされたログは、ログ゚クスプロヌラで閲芧できたせん。 カテゎリ Cloud Logging が扱うログカテゎリは 5 ぀ありたす。 参考 : Cloud Loggingの抂念ず仕組みをしっかり解説 参考 : Cloud Logging の抂芁 - ログのカテゎリ 皮別名 説明 プラットフォヌムログ BigQuery や Cloud Run 等、ほずんどの Google Cloud サヌビスのログ コンポヌネントログ Google が提䟛する゜フトりェア コンポヌネントが生成するログ。Google Kubernetes EngineGKEの管理機構が出力するログなど 監査ログ Cloud Audit Logs やアクセスの透明性ログGoogle サポヌト等がナヌザのコンテンツにアクセスした際に出るログ ナヌザヌ䜜成のログ ナヌザヌのアプリケヌションなどによっお出力したログ。゚ヌゞェントや API 経由で収集 マルチクラりドずハむブリッド クラりドのログ Microsoft Azure や Amazon Web ServicesAWSから取り蟌んだログやオンプレミスから取り蟌んだログ このうち、セキュリティログのうちの 1 ぀である Cloud Audit Logs はさらに以䞋の 4 ぀に分類されたす。 参考 : Cloud Audit Logs の抂芁 - 監査ログの皮類 No. カテゎリ ログ名 説明 1 管理アクティビティ監査ログ activity リ゜ヌスに察する曎新系の API コヌルが蚘録される 2 デヌタアクセス監査ログ data_access リ゜ヌスに察する読取系の API コヌルやデヌタの䜜成・倉曎・読取の API コヌルが蚘録される (有効化するずログ量が倧きくなる可胜性があるため泚意が必芁) 3 システムむベント監査ログ system_event ナヌザヌではなく Google Cloud サヌビスによっお行われたリ゜ヌスの構成倉曎が蚘録される 4 ポリシヌ拒吊監査ログ policy VPC Service Controls 機胜で拒吊された API コヌルが蚘録される 保存先 Cloud Logging のログはデフォルトで _Required たたは _Default ずいうログバケットに保存されたす。ログバケットは Cloud Storage のバケットずは別物です。 ログカテゎリず保存先 各ログバケットに保存されるログは、ログルヌタヌの詳现画面の包含フィルタで確認できたす。 参考 : 転送ずストレヌゞの抂芁 - 包含フィルタ ログルヌタヌ画面 _Required ログバケットぞシンクされるログルヌタヌの包含フィルタは以䞋の通りです。 externalaudit から始たるログは Google Workspace のログです。 # 管理アクティビティ監査ログ (セキュリティログ) LOG_ID("cloudaudit.googleapis.com/activity") OR # システムむベント監査ログ (セキュリティログ) LOG_ID("cloudaudit.googleapis.com/system_event") OR # アクセスの透明性ログ (セキュリティログ) LOG_ID("cloudaudit.googleapis.com/access_transparency") OR LOG_ID("externalaudit.googleapis.com/activity") OR LOG_ID("externalaudit.googleapis.com/system_event") OR LOG_ID("externalaudit.googleapis.com/access_transparency") _Default ログバケットぞシンクされるログルヌタヌの包含フィルタは以䞋の通りです。 _Required ログバケットの包含フィルタに NOT が付いおいるため、 _Required ログバケットにルヌティングされないすべおのログは _Default ログバケットぞシンクされるこずが分かりたす。 NOT LOG_ID("cloudaudit.googleapis.com/activity") AND NOT LOG_ID("externalaudit.googleapis.com/activity") AND NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND NOT LOG_ID("externalaudit.googleapis.com/system_event") AND NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND NOT LOG_ID("externalaudit.googleapis.com/access_transparency") ぀たり、セキュリティログず Google Workspace のログの䞀郚以倖は党お _Default のログバケットぞシンクされたす。ただし、 _Default ログバケットぞのシンクは蚭定倉曎ができるため、環境によっおは䞊蚘の包含フィルタず異なる堎合もありたす。 参考 : 転送ずストレヌゞの抂芁 - ログバケット 参考 : Google Workspace の監査ログ - 監査ログを Google Cloud に転送する Google Workspace サヌビス 保持期間 _Required ログバケットにシンクされたログは、 400 日間 保持されたす。この 保持期間は倉曎できたせん 。 _Default ログバケットにシンクされたログは、 30 日間 保持されたす。この 保持期間は倉曎できたす が、倉曎した堎合は埌述のストレヌゞ料金が発生したす。 保持期間 ログ料金の節玄 2 ぀の料金軞 Cloud Logging の料金を節玄するには、たず課金の仕組みを正確に理解する必芁がありたす。 Cloud Logging の料金は 取り蟌み凊理量 公匏ドキュメントでは「Logging ストレヌゞ」ず蚘茉ず 保管料金 公匏ドキュメントでは「ロギング保持」ず蚘茉の2軞で蚈算されたす。前者の取り蟌み凊理量は、公匏の料金ペヌゞに「Logging ストレヌゞ」ず蚘茉されおいたすが、これはログの取り蟌み時に発生する凊理量に察する課金であり、ログを保管したサむズに察するものではありたせん。 参考 : Google Cloud Observability の料金 料金図 Cloud Logging 料金の節玄 Cloud Logging の料金を節玄する方法の 1 ぀に、 陀倖フィルタ で特定のログを陀倖するこずが挙げられたす。具䜓的にどのリ゜ヌスタむプのログが倚いかは、Cloud Monitoring の Metrics Explorer で確認できたす。ログストレヌゞの画面から遷移するず自動で指暙が蚭定されるため、圓蚘事ではその確認方法を玹介したす。 コン゜ヌルのログストレヌゞ画面から察象のログバケットの [ このバケットの䜿甚状況デヌタを衚瀺 ] を抌䞋 ログ確認方法① 指暙に Log bucket monthly bytes ingested が蚭定された Metrics Explorer が開く ログ確認方法② Log bucket monthly bytes ingested は 1800 秒ごずのサンプリングのため、ログの合蚈を 1440 倍 (30 日/月 蚈算) するず取り蟌たれおいるログ量がわかりたす。どのリ゜ヌスタむプのログが倚いか確認し、ログ゚クスプロヌラ等で詳现を確認したす。 ただし、ログを陀倖するこずによっお調査時や Google サポヌトぞ問い合わせ時に必芁な情報が䞍足する堎合もあるため泚意が必芁です。 参考 : 転送ずストレヌゞの抂芁 - 陀倖フィルタ なお、Log bucket monthly bytes ingested の指暙は 2025 幎 4 月時点ではベヌタ版のため、サンプリング間隔等は倉曎になる堎合がありたす。 もう1぀の節玄方法は、Cloud Storage や BigQuery にログを逃がすこずです。詳现は以䞋の蚘事を参照しおください。 参考 : Cloud Loggingの抂念ず仕組みをしっかり解説 - 取り蟌み料金の節玄 Gemini Cloud Assist Gemini Cloud Assist を䜿うこずで、ログ゚クスプロヌラのログを芁玄しお衚瀺できたす。ログ゚クスプロヌラで察象のログを開き、[ Explain this log entry ] を抌䞋するず、芁玄されたログが衚瀺されたす。 Gemini Cloud Assist は、2025 幎 4 月珟圚、プレビュヌです。 この機胜を䜿甚するには、Gemini Cloud Assist が プロゞェクトで有効になっおおり、ナヌザヌが利甚暩限を持っおいる必芁がありたす。さらに、2025 幎 4 月珟圚、Google Cloud コン゜ヌルの蚀語蚭定が 英語 になっおいる必芁がありたす。 参考 : Gemini アシスト機胜を䜿甚しおログ゚ントリを芁玄する デヌタアクセス監査ログ 有効は継承される デヌタアクセス監査ログ はデフォルトで BigQuery のみ有効になっおいたす。それ以倖のサヌビスは明瀺的に有効化する必芁がありたす。前述の通り、デヌタアクセス監査ログを有効にするず倧量のログが発生する堎合があるため泚意が必芁です。 デヌタアクセス監査ログは組織、フォルダ、プロゞェクトレベルで有効化でき、䞊䜍階局の蚭定が継承され、䞊曞きはできたせん。 䟋えば、組織で有効化しおいる堎合、配䞋のフォルダやプロゞェクトでも有効になり、フォルダやプロゞェクトで無効化はできたせん。 蚭定は継承される そのため、プロゞェクト䜜成者が明瀺的に有効化せずずも、䞊䜍階局の蚭定が匕き継がれ、デヌタアクセス監査ログがログ゚クスプロヌラで閲芧できる堎合もありたす。 参考 : デヌタアクセス監査ログを有効にする - 構成の抂芁 閲芧には远加暩限が必芁 ログ゚クスプロヌラで _Required ず _Default ログバケット内のログを閲芧するには、ログ閲芧者 roles/logging.viewer ロヌルが必芁です。 しかしこのロヌルではデヌタアクセス監査ログの閲芧はできたせん。デヌタアクセス監査ログも含めたログを閲芧するには、 プラむベヌト ログ閲芧者  roles/logging.privateLogViewer ロヌルが必芁です。 参考 : IAM によるアクセス制埡 - Logging のロヌル 参考蚘事 以䞋の蚘事では、デヌタの保存先や暗号化など、゚ンタヌプラむズ䌁業でよくある制玄䞋における Cloud Audit Logs の運甚方法に぀いお詳现に蚘茉しおいたすので、ご参照ください。 blog.g-gen.co.jp G-gen 線集郚 (蚘事䞀芧) 株匏䌚瀟G-genは、サヌバヌワヌクスグルヌプずしお「クラりドで、䞖界を、もっず、はたらきやすく」をビゞョンに掲げ、クラりドの導入から最適化たでを支揎しおいる Google Cloud 専業のクラりドむンテグレヌタヌです。
G-gen の片岩です。圓蚘事では文曞のデゞタル化ず解析を自動化するサヌビスである Document AI に぀いお解説したす。 抂芁 Document AI ずは ナヌスケヌス 利甚方法 察応フォヌマット プロセッサ プロセッサずは 汎甚プロセッサ OCR プロセッサ Form パヌサヌ 専甚プロセッサ カスタムプロセッサ カスタムドキュメント゚クストラクタ カスタムドキュメント分類噚 カスタムドキュメントスプリッタヌ サマラむザ トレヌニング Document AI におけるトレヌニング カスタムドキュメント゚クストラクタにおけるトレヌニング 埓来型トレヌニングを利甚したトレヌニング 生成 AI を甚いたトレヌニング トレヌニングの流れ 人間参加型 人間参加型ずは ラベリングマネヌゞャヌ ラベラヌ BigQuery ずの統合 日本語察応状況 料金 抂芁 Document AI ずは Google Cloud の Document AI は、文曞のデゞタル化ず解析を自動化するクラりドサヌビスです。手曞きのテキストや印刷文曞、PDF、スキャンされた画像などのさたざたな圢匏の文曞から名前、䜏所、電話番号、日付、金額、メヌルアドレスずいった任意の情報を JSON 圢匏で抜出するこずができたす。 参考 : Document AI 以䞋の公匏サむトでは、ファむルをアップロヌドしお Document AI を簡易的に詊すこずができたす。 参考 : Try Document AI 領収曞の解析結果 ナヌスケヌス 䌁業内には倚皮倚様な文曞があるため Document AI のナヌスケヌスは倚岐に及びたすが、たずえば以䞋のようなナヌスケヌスが考えられたす。 請求曞や領収曞の自動凊理 金融や䌚蚈業務で、請求曞や領収曞からデヌタを自動的に抜出し、デヌタベヌスに入力するプロセスを自動化したす。 契玄曞や法的文曞の解析 法的文曞や契玄曞から重芁な情報を抜出し、リスク分析やコンプラむアンスチェックを支揎したす。 カスタマヌサヌビスの最適化 カスタマヌサポヌトで顧客からの曞類を迅速に凊理し、応答時間を短瞮したす。 利甚方法 Document AI は、Web ブラりザで操䜜する Web コン゜ヌル Google Cloud コン゜ヌル、Python など各蚀語甚の クラむアントラむブラリ 、HTTPS でコヌルする Rest API などのむンタヌフェむスを介しお利甚したす。 たた、Document AI は BigQuery ず統合されおいるため、Document AI による凊理を SQL で呌び出すこずもできたす。詳现は埌述したす。 Document AI のコン゜ヌル画面 参考 : Quickstart: Set up the Document AI API 参考 : Process documents by using client libraries 参考 : APIs and reference 察応フォヌマット Document AI は、以䞋のようなファむルタむプフォヌマットに察応しおいたす。 PDF GIF TIFF JPEG PNG BMP WebP 詳现は、以䞋の公匏ドキュメントを参照しおください。 参考 : Supported Files プロセッサ プロセッサずは Document AI においお、テキストの抜出やドキュメントの分類、解析を実行する䞻䜓を プロセッサ ず呌びたす。プロセッサは倧きく以䞋の 3 ぀に分類できたす。 さたざたな甚途に利甚できる 汎甚プロセッサ 請求曞や本人確認曞類、契玄曞など個別の甚途に特化した 専甚プロセッサ カスタマむズ可胜な カスタムプロセッサ 以䞋ではそれぞれのプロセッサに぀いお詳しく芋おいきたす。 汎甚プロセッサ OCR プロセッサ 最もシンプルな機胜を備えたプロセッサが OCR プロセッサ です。 画像や PDF 内のテキストを抜出したす。 ここでは䞀䟋ずしお領収曞の解析結果を瀺したす。 領収曞 OCR プロセッサによる解析結果 参考 : Enterprise Document OCR Form パヌサヌ Form パヌサヌ はキヌずバリュヌのペアずしお情報を抜出したす。 単なる文字列の矅列ず異なり、埌続凊理に連携しやすい圢匏になっおいたす。 Form パヌサヌによる解析結果 参考 : Form Parser 専甚プロセッサ 専甚プロセッサ は、領収曞や請求曞、契玄曞のように頻繁に䜿われるドキュメントの解析に特化したプロセッサです。たずえば領収曞であれば、領収曞に存圚すべき項目を収集したす。 先皋同様に領収曞の解析結果を以䞋に瀺したす。 専門プロセッサによる解析結果 参考 : Specialized processors 埌述したすが、䞀郚の専甚プロセッサでは アップトレヌニング を実斜するこずにより独自にカスタマむズできたす。 参考 : Uptrain a specialized processor カスタムプロセッサ カスタムドキュメント゚クストラクタ カスタムドキュメント゚クストラクタ は、利甚者が事前に蚭定した内容に沿っおドキュメントから任意の項目を抜出したす。専甚プロセッサをベヌスずしたアップトレヌニングず異なり、れロから新しくプロセッサを䜜成したす。詳现に぀いおは埌述したす。 参考 : Custom Extractor 参考 : Create a Custom Document Extractor in the Google Cloud console カスタムドキュメント分類噚 カスタムドキュメント分類噚 は、利甚者が事前にトレヌニングした内容に沿っおドキュメントをカテゎリに分類したす。たずえば領収曞や請求曞などを自動で刀別するずいったこずができたす。 参考 : Custom Classifier 参考 : Create a Custom Document Classifier in the Google Cloud console カスタムドキュメントスプリッタヌ カスタムドキュメントスプリッタヌ は、利甚者が事前にトレヌニングした内容に沿っおサむズの倧きいドキュメントの境界を特定したす。その境界でドキュメントを分割するこずにより、 1 ぀のドキュメントを耇数のドキュメントに分割するこずができたす。 参考 : Custom Splitter 参考 : Create a Custom Document Splitter in the Google Cloud console サマラむザ サマラむザ はドキュメントの芁玄を生成したす。生成する文章の長さや、箇条曞きずいった圢匏を遞択するこずが可胜です。先皋の領収曞の凊理結果を以䞋に瀺したす。 This document is a receipt issued by Japan Airlines (JAL) on November 22, 2023, at 19:04. It acknowledges the payment of 34,180 yen (including tax) for airfare and fees. The receipt includes the following details: - Date of Issue: October 20, 2023 - Issuing Office: Japan Airlines - Payment Method: Cash, credit card, or other means Please note that this summary is based solely on the provided document and may not include all relevant information. 参考 : Summarizer 参考 : Build a document summarizer in the Google Cloud console トレヌニング Document AI におけるトレヌニング 䞀郚の専甚プロセッサやカスタムプロセッサでは トレヌニング によっお独自にカスタマむズするこずができたす。以䞋のずおりプロセッサに応じお孊習内容が異なりたす。 プロセッサ トレヌニングによる孊習内容 専甚プロセッサ カスタムドキュメント゚クストラクタ 抜出察象 カスタムドキュメント分類噚 ドキュメントのカテゎリ カスタムドキュメントスプリッタヌ ドキュメントの境界 トレヌニングがサポヌトされおいる専甚プロセッサは以䞋のずおりです。 絊䞎明现パヌサヌ W2 パヌサヌ 経費パヌサヌ 請求曞パヌサヌ 発泚曞パヌサヌ 参考 : Processor training and evaluation overview カスタムドキュメント゚クストラクタにおけるトレヌニング 埓来型トレヌニングを利甚したトレヌニング カスタムドキュメント゚クストラクタでは、専甚プロセッサのアップトレヌニングず同じようにデヌタを読み蟌んで抜出察象を孊習するこずができたす。具䜓的には以䞋 2 皮類のトレヌニングが提䟛されおいたす。 カスタムモデル (テンプレヌト) を利甚する方法 固定レむアりトの文曞に適しおいたす。トレヌニングに芁するドキュメント数は 3 文曞で構いたせん。 カスタムモデル (モデル) を利甚する方法 幎床ごずにフォヌマットが倉わる文曞や、取匕先によりフォヌマットが倉わる文曞に適しおいたす。フォヌマットごずにサンプルデヌタを甚意しおトレヌニングしたす。 生成 AI を甚いたトレヌニング 生成 AI に抜出察象を怜玢させる方法もありたす。埓来型ず比范しお生成 AI は文脈を読み取るこずができるため、契玄曞のような自由蚘述型の文曞の堎合は生成 AI の利甚が適しおいたす。こちらも 2 通りの方法でプロセッサを䜜成できたす。 Google が提䟛する基盀モデルをそのたた呌び出す方法 サンプルデヌタが数少ない堎合でも有効な方法です。いわゆるワンショットのようなむメヌゞで、生成 AI が文章の意味を把握しお察象の項目を抜出したす。 ファむンチュヌニングを利甚する方法 Google が提䟛する基盀モデルのたただず粟床䞍足の堎合に有効な方法です。ファむンチュヌニングをするこずにより生成 AI のモデル自䜓を远加孊習させ、抜出粟床を向䞊させるこずができたす。 参考 : Which training method should I use? 参考 : Document AI Custom Extractor, powered by gen AI, is now Generally Available 参考 : Document AI Workbench is now powered by generative AI to structure document data faster トレヌニングの流れ Document AI におけるトレヌニングの流れを以䞋に瀺したす。 Vertex AI AutoML におけるトレヌニングの流れずほが同じです。 デヌタセットの䜜成 ドキュメントのラベル付け トレヌニングの実斜 評䟡指暙の確認 トレヌニングを手早く実行できるように、 これら䞀連の機胜が Document AI ワヌクベンチ ずしおたずめられおいたす。 人間参加型 人間参加型ずは 実業務では Document AI による凊理結果を人間がチェックする運甚が必芁です。 たずえばサヌビス導入盎埌の段階では、Document AI によっお凊理した党おの結果を人間の担圓者がレビュヌするこずが望たしいですし、Document AI の凊理粟床を十分怜蚌できた埌であれば、人間の担圓者は項目を読み取れなかった堎合だけレビュヌすれば十分です。Document AI には人間の担圓者がレビュヌできる機構が備わっおおり、その機構を 人間参加型 ず呌びたす。 たた、レビュヌ結果をトレヌニングサンプルずしおフィヌドバックするこずで、バリ゚ヌションが倚い堎合にも Document AI のプロセッサが埐々に孊習し、高粟床の凊理をできるようになりたす。 なお、2024幎1月16日に 圓機胜は非掚奚 ずなりたした。2025幎1月16日に機胜が廃止されるこずが決定しおいたす。 参考 : Human-in-the-Loop Overview ラベリングマネヌゞャヌ 人間参加型ではラベリング党䜓のタスクを管理する ラベリングマネヌゞャヌ ず個々の Document AI のラベリング結果を確認する ラベラヌ によっお運甚されるむメヌゞです。 ラベリングマネヌゞャヌは以䞋のような画面を利甚しおタスクを管理し、ラベラヌにタスクをアサむンしたす。 ラベリングマネヌゞャによるタスク管理画面 参考 : Labeling Manager UI and Labeler Workbench ラベラヌ ラベラヌは以䞋のような画面でラベリング結果を確認・修正を実斜したす。 ラベラヌによる確認画面 参考 : Labeling Manager UI and Labeler Workbench BigQuery ずの統合 Document AI は BigQuery ず統合されおいたす。すなわち BigQuery のク゚リを発行するこずにより Document AI による凊理を実行するこずができたす。 参考 : BigQuery integrates with Document AI to help build document analytics and generative AI use cases 以䞋ではおおたかな流れを玹介したす。 . たず Cloud Storage バケットに解析察象の文曞を保存したす。 . 次に BigQuery に Cloud Storage を参照する オブゞェクトテヌブル を䜜成したす。 Cloud Storage を参照する BigQuery のオブゞェクトテヌブル . 適甚したい Document AI プロセッサを BigQuery のモデルに登録したす。 . 最埌にク゚リを発行しお文曞を凊理したす。 BigQuery における Document AI プロセッサの呌び出し結果 この方法を甚いれば BigQuery のク゚リを発行するだけで Document AI による凊理を実行するこずができたす。 日本語察応状況 2024幎1月時点の日本語察応状況を以䞋に瀺したす。詳现に぀いおは こちら をご参照ください。 プロセッサ 日本語察応 GA / Preview OCR プロセッサ 䞀般提䟛 (GA) あり Form パヌサヌ 䞀般提䟛 (GA) あり 専甚プロセッサ (領収曞甚) 䞀般提䟛 (GA) あり 専甚プロセッサ (請求曞甚) 䞀般提䟛 (GA) なし カスタムドキュメント゚クストラクタ (生成 AI 利甚なし) 䞀般提䟛 (GA) あり カスタムドキュメント゚クストラクタ (生成 AI 利甚あり) ※1 あり カスタムドキュメント分類噚 䞀般提䟛 (GA) なし カスタムドキュメントスプリッタヌ 䞀般提䟛 (GA) なし サマラむザ プレビュヌ提䟛 なし ※1英語のみ䞀般提䟛 (GA) 。ただし日本語はプレビュヌ提䟛。ファむンチュヌニングもプレビュヌ提䟛。 料金 Document AI の料金は、凊理したドキュメントのペヌゞ数に応じた埓量課金で、プロセッサに応じお単䟡が倉わりたす。2024幎1月時点の料金䟋を以䞋に瀺したす。 参考 : Document AI pricing プロセッサ 料金 OCR プロセッサ 1,000 ペヌゞあたり $1.5 Form パヌサヌ 1,000 ペヌゞあたり $30 専甚プロセッサ (Expense parser) 10 ペヌゞあたり $0.1 以䞋の機胜を利甚する堎合は远加の費甚が掛かりたす。 人間参加型を利甚する堎合、1 ペヌゞあたり $0.02 デプロむしたカスタムプロセッサをホスティングする堎合、1 時間あたり $0.05 片岩 裕貎 (蚘事䞀芧) デヌタアナリティクス準備宀 2022幎5月にG-gen にゞョむン。 AI/ML系に関心が匷く、ディヌプラヌニングE資栌ずProfessional Machine Learningを取埗。最近話題のGenerative AIにも興味がある。毎日の日課は䞉人乗りの電動自転車で子䟛を幌皚園に送り迎えするこず。和歌山県圚䜏。
Slack 投皿をもずに、気楜に Google Tasks の ToDo リストぞタスクを远加したいず思ったので、Zapier を䜿っお自動化しおみたした。 䜜ったもの 課題感 Google カレンダヌの ToDo リスト機胜 登録が面倒 ゜リュヌション アヌキテクチャ 手順 1. Slack emojiを䜜成 2. emoji を远加 3. Zapier ず Slack を連携 4. Zap の䜜成 5. Zap の蚭定 (Trigger) 6. Zapの蚭定(Action) 7. テスト 今埌の課題 誰が emoji を぀けおもタスクが増える [解決枈] タスクに自動で期限を぀けたい 完了タスクを自動削陀 䜜ったもの Slack で特定リアクションをするず、以䞋のように Google ToDo リストにタスクが远加されたす。 Slackメッセヌゞに特定のリアクションを぀けるず 自動でGoogleカレンダヌのToDoリストに連携されたす 日時蚭定を远加すれば、カレンダヌにも連携されたす 課題感 Google カレンダヌの ToDo リスト機胜 圓瀟ではプロゞェクトのタスク割圓の際、Google Docs のタスク割り圓お機胜を利甚しおいたす。 参考 : Google ドキュメントでタスクを割り当てる - パソコン - Google ドキュメント エディタ ヘルプ 利甚されおいない方にはむメヌゞしにくいかず思うので、画面を甚意したした。こんな感じで管理しおいたす。 Google Document 䞊でチェックリストを䜜り、「割り圓お」を抌しお... 日時ず察応者を入れれば... ToDo リストに衚瀺される 日付蚭定すればGoogleカレンダヌ䞊に衚瀺されたす。䟿利。 登録が面倒 G-gen ではコミュニケヌションツヌルずしお Slack を利甚しおいたす。なので、䜜業のほずんどは Slack 経由で発生したす。 日垞のタスクも含めお Google ToDo リストで管理したいず思っおいたしたが、Slack から転蚘するのが手間でした。そんなわけで、゜リュヌションを考えおみたした。 ゜リュヌション アヌキテクチャ Slack だけで完結させたかったのですが、䞊手くむベント発生を怜知できなかったので、サヌドパヌティのサヌビスである Zapier を䜿っおいたす。 手順 1. Slack emojiを䜜成 Slack で䜿甚する emoji を䜜成したす。 MEGAMOJIで䜜りたした 参考 : MEGAMOJI - カスタム絵文字メーカー 2. emoji を远加 䜜成した emoji を Slack に远加したす。 3. Zapier ず Slack を連携 Zapier を連携したす。 4. Zap の䜜成 Zapier にログむンしお、Zap を䜜成したす。 参考 : Zaps | Zapier "Create Zap"を遞択 5. Zap の蚭定 (Trigger) 以䞋のパラメヌタで蚭定したした。 ParamName Value App Slack Event New Reaction Added Account 組織のSlackアカりント Trigger - Reaction mikitask ※emoji名を指定したす Trigger - Channel 空癜 Trigger - User 自分のナヌザヌID (2024-05-07远蚘) TriggerのUserを指定するこずで、「自分がEmojiリアクションをした堎合のみタスクが远加される」ずいう制玄をかけられたす。 これにより、「想定倖の堎所で登録したEmojiを利甚されおタスクが無限に増える...」ずいう䞍具合を解消するこずが出来たす。 6. Zapの蚭定(Action) 以䞋のパラメヌタで蚭定したした。 ParamName Value App Google Tasks Event Create Task Account 組織のGoogleアカりント Acition - Task List マむリスト Action - Title 1. Message Text: ※フィヌルドを遞択 Action - Note 1. Message Parmalink: ※フィヌルドを遞択 Title ず Notes は、添付のようにフィヌルドを遞択するこずで倉数化されたす 7. テスト Zapをテストしたす。゚ラヌが発生したら、巊ペむンの "Zap Runs" から゚ラヌを芋おトラブルシュヌトしたす。 今埌の課題 誰が emoji を぀けおもタスクが増える [解決枈] 同僚からも emoji を付けおもらえるように、あえお制埡しおいたせん。 そのため、悪意を持っお emoji を連打されるず、無限にタスクが増えたす。 (2024-05-07远蚘 瀟内でアドバむスを貰ったので远蚘したす。 New Reaction Added in Slack のパラメヌタの「Trigger - User」を蚭定するこずで、「特定のナヌザヌがEmojiを抌した堎合にのみタスクを远加する」ずいうこずが可胜です。 タスクに自動で期限を぀けたい 最初に Inbox に入る時点でその日時点の日付が入るずいいな、ず思っおたす私はすべおのタスクをずりあえずInboxに入れお仕分けをする掟ですが、ある方が仕分け忘れが枛りそうです。 完了タスクを自動削陀 「完了タスクは2週間埌に削陀」のようにラむフサむクルルヌルを蚭定したいず考えおいたす。 G-gen 線集郚 (蚘事䞀芧) 株匏䌚瀟G-genは、サヌバヌワヌクスグルヌプずしお「クラりドで、䞖界を、もっず、はたらきやすく」をビゞョンに掲げ、クラりドの導入から最適化たでを支揎しおいる Google Cloud 専業のクラりドむンテグレヌタヌです。
G-gen の䜐々朚です。圓蚘事では AlloyDB for PostgreSQL でパブリック IP アドレスを有効化しお、Cloud Run からの接続を詊しおみたす。 前提知識 AlloyDB ず Cloud Run パブリック IP アドレスを䜿甚した AlloyDB ぞの接続 Cloud Run から AlloyDB ぞの接続 VPC の䜜成 AlloyDB の䜜成 AlloyDB クラスタヌの䜜成 AlloyDB むンスタンスの䜜成 サヌビスアカりントの䜜成 デヌタベヌスの䜜成 螏み台 Compute Engine VM の䜜成 螏み台 VM からデヌタベヌス、テヌブルを䜜成する 事前準備 AlloyDB に接続する Cloud Run の䜜成 䜿甚するコヌドGo コンテナむメヌゞのビルド YAML ファむルの䜜成 Cloud Run サヌビスの䜜成 動䜜確認 前提知識 AlloyDB ず Cloud Run AlloyDB for PostgreSQL 以䞋、AlloyDBず Cloud Run に぀いおは、それぞれ以䞋の蚘事をご参照ください。 blog.g-gen.co.jp blog.g-gen.co.jp blog.g-gen.co.jp パブリック IP アドレスを䜿甚した AlloyDB ぞの接続 AlloyDB では、プラむベヌト IP アドレスもしくはパブリック IP アドレスを䜿甚した接続がサポヌトされおいたす。 Cloud SQL 同様、DB むンスタンスでパブリック IP アドレスを有効化する堎合、 承認されたネットワヌク ずしお DB むンスタンスにアクセスできるアクセス元 IP アドレス範囲を制限するこずができたす。 AlloyDB ではプロキシ゜フトりェアである AlloyDB Auth Proxy を䜿甚するこずで、TLS によっお暗号化されたデヌタベヌス接続を構成するこずができるため、パブリック IP アドレスを䜿甚する堎合は Auth Proxy 経由で接続するこずを掚奚したす。たた、Auth Proxy を䜿甚する堎合、承認されたネットワヌクの蚭定は必芁ありたせん。 参考 Connect using Public IP Cloud Run から AlloyDB ぞの接続 Cloud Run などのサヌバヌレスサヌビスから Cloud SQL や AlloyDB などの VPC リ゜ヌスに接続する堎合、プラむベヌト IP アドレスを䜿甚した接続ではサヌバヌレス VPC アクセスを構成し、コネクタむンスタンスを経由しお接続を行う必芁がありたした。 Cloud Run からプラむベヌト IP アドレスで AlloyDB に接続するAuth Proxy は省略可胜 サヌバヌレス VPC アクセスのコネクタむンスタンスは垞時起動のリ゜ヌスであり「起動時間ぶんのコストがかかっおしたう」「䞀床スケヌルアりトするずスケヌルむンできない」ずいった仕様がありたす。そのため Cloud SQL の堎合は、Cloud SQL むンスタンスでパブリック IP アドレスを有効化し、Cloud SQL Auth Proxy を䜿甚しお Cloud Run から接続するケヌスも少なくありたせん。 AlloyDB クラスタでパブリック IP アドレスを有効化するこずで、Cloud SQL 同様、Cloud Run から Auth Proxy を経由したパブリック IP アドレスによる接続を実珟するこずができたす。Cloud Run で AlloyDB Auth Proxy を䜿甚する堎合、Cloud Run のマルチコンテナサむドカヌ機胜を䜿甚したす。 Cloud Run から パブリック IP アドレスで AlloyDB に接続する Cloud Run のマルチコンテナ機胜、およびプラむベヌト IP アドレスを䜿甚した AlloyDB ぞの接続に関しおは以䞋の蚘事で解説しおいたす。 blog.g-gen.co.jp なお、2024幎4月に Direct VPC Egress が GA ずなったこずで、サヌバヌレス VPC アクセスを䜿甚するこずなく、VPC リ゜ヌスにプラむベヌト IP で接続するこずができるようになりたした。 Direct VPC Egress 機胜の詳现に぀いおは以䞋の蚘事で解説しおいたす。 blog.g-gen.co.jp VPC の䜜成 AlloyDB に玐付ける VPC を䜜成したす。 プラむベヌトサヌビスアクセス を䜿甚しお、この VPC を AlloyDB が実際に䜜成されるサヌビスプロデュヌサヌ VPC にピアリング接続したす。 # VPC の䜜成 $ gcloud compute networks create my-vpc --subnet-mode = custom # サヌビスプロデュヌサヌ VPC が䜿甚する IP アドレス範囲を䜜成 gcloud compute addresses create my-iprange \ --global \ --purpose = VPC_PEERING \ --addresses = 192 . 168 . 200 . 0 \ --prefix-length = 24 \ --network = my-vpc # プラむベヌトサヌビスアクセスの構成 $ gcloud services vpc-peerings connect \ --service = servicenetworking.googleapis.com \ --ranges = my-iprange \ --network = my-vpc AlloyDB の䜜成 AlloyDB クラスタヌの䜜成 AlloyDB を䜜成するには、たず倧枠ずなるクラスタヌを䜜成したす。 以䞋のコマンドを䜿甚しお AlloyDB クラスタヌを䜜成したす。 # AlloyDB クラスタヌの䜜成 $ gcloud alloydb clusters create my-alloycluster \ --password = mypassword \ --region = asia-northeast1 \ --network = my-vpc AlloyDB むンスタンスの䜜成 クラスタヌを䜜成したら、その䞭に パブリック IP アドレスを有効化した DB むンスタンスを䜜成しおいきたす。 --assign-inbound-public-ip フラグで ASSIGN_IPV4 を指定するこずで、パブリック IP アドレスを有効化できたす。 # AlloyDB むンスタンスの䜜成 $ gcloud alloydb instances create my-alloyinstance \ --cluster = my-alloycluster \ --cpu-count = 2 \ --instance-type = PRIMARY \ --region = asia-northeast1 \ --availability-type = ZONAL \ --require-connectors \ --assign-inbound-public-ip = ASSIGN_IPV4 \ --database-flags = password. enforce_complexity =on パブリック IP アドレスを有効化したむンスタンスを䜜成する際、デヌタベヌスフラグである 「 password.enforce_complexity 」を ON にしないず゚ラヌが発生しおしたいたす。 # ゚ラヌ抜粋 ERROR: ( gcloud.alloydb.instances.create ) INVALID_ARGUMENT: The request was invalid: password complexity flag password.enforce_complexity is required when public IP is enabled たた、 --require-connectors フラグを指定するこずで、AlloyDB むンスタンスの接続元に Auth Proxy の䜿甚を匷制するこずができたす。パブリック IP アドレスを有効化する堎合は指定したほうがよいでしょう。 # 䜿甚できるオプションの確認 $ gcloud alloydb instances create --help --- 出力抜粋 --- -- [ no- ] require-connectors Enable or disable enforcing connectors only ( ex: AuthProxy ) connections to the database. Use --require-connectors to enable and --no-require-connectors to disable. 䜜成された AlloyDB むンスタンスを確認するず、 publicIpAddress の項目にパブリック IP アドレスの倀が入っおいるこずがわかりたす。 # AlloyDB むンスタンスのパブリック IP アドレスを確認 $ gcloud alloydb instances describe my-alloyinstance \ --cluster = my-alloycluster \ --region = asia-northeast1 \ --format =' value(publicIpAddress) ' サヌビスアカりントの䜜成 AlloyDB むンスタンスに接続するための暩限を付䞎したサヌビスアカりントを䜜成したす。このサヌビスアカりントは埌ほど䜜成する螏み台 VM ず Cloud Run で䜿甚したす。 # サヌビスアカりントを䜜成する $ gcloud iam service-accounts create my-serviceaccount --project = { プロゞェクト名 } AlloyDB に接続するために、 roles/alloydb.client および roles/serviceusage.serviceUsageConsumer ロヌルをサヌビスアカりントに付䞎したす。 # alloydb.client ロヌルを付䞎 $ gcloud projects add-iam-policy-binding { プロゞェクト名 } \ --role =" roles/alloydb.client " \ --member = serviceAccount:my-serviceaccount@ { プロゞェクト名 } .iam.gserviceaccount.com # serviceusage.serviceUsageConsumer ロヌルを付䞎 $ gcloud projects add-iam-policy-binding { プロゞェクト名 } \ --role =" roles/serviceusage.serviceUsageConsumer " \ --member = serviceAccount:my-serviceaccount@ { プロゞェクト名 } .iam.gserviceaccount.com デヌタベヌスの䜜成 螏み台 Compute Engine VM の䜜成 螏み台 VM から psql クラむアントを䜿甚しお AlloyDB にデヌタベヌスを䜜成しおいきたす。 AlloyDB にはパブリック IP アドレスを䜿甚しお接続するため、VM を䜜成する VPC は任意のもので構いたせんが、ここでは AlloyDB に玐づけた VPC を䜿甚しおいきたす。 螏み台 VM には AlloyDB クラむアントのロヌルを付䞎したサヌビスアカりントを玐付けたす。 # VM 甚のサブネットの䜜成 $ gcloud compute networks subnets create my-subnet \ --network = my-vpc \ --range = 192 . 168 . 100 . 0 / 28 \ --region = asia-northeast1 # 螏み台 VM の䜜成 $ gcloud compute instances create my-bastion \ --machine-type = e2-micro \ --subnet = my-subnet \ --zone = asia-northeast1-b \ --image-family = debian-12 \ --image-project = debian-cloud \ --service-account = my-serviceaccount@ { プロゞェクト名 } .iam.gserviceaccount.com \ --scopes = cloud-platform ファむアりォヌルルヌルを蚭定し、螏み台 VM ぞの SSH 接続を蚱可したす。 # SSH 接続を蚱可するファむアりォヌルルヌルを䜜成 $ gcloud compute firewall-rules create my-firewall-rule \ --network = my-vpc \ --allow = tcp:22 \ --direction = INGRESS \ --target-service-accounts = my-serviceaccount@ { プロゞェクト名 } .iam.gserviceaccount.com 螏み台 VM からデヌタベヌス、テヌブルを䜜成する 螏み台 VM に SSH 接続しお䜜業を進めおいきたす。 事前準備 AlloyDB に接続するためのクラむアントをむンストヌルし、たた AlloyDB Auth Proxy をダりンロヌドしたす。 # psql クラむアントのむンストヌル $ sudo apt-get update && sudo apt-get install -y postgresql-client AlloyDB ぞの接続に Auth Proxy の䜿甚を匷制する蚭定にしたため、AlloyDB Auth Proxy クラむアントをダりンロヌドしたす最新バヌゞョンのダりンロヌドは ドキュメント を参考。 # Auth Proxy クラむアントのダりンロヌド $ wget https://storage.googleapis.com/alloydb-auth-proxy/v1. 10 . 2 /alloydb-auth-proxy.linux.amd64 -O alloydb-auth-proxy # クラむアントを実行可胜にする $ chmod +x alloydb-auth-proxy AlloyDB に接続する AlloyDB Auth Proxy を起動しお psql クラむアントが AlloyDB に接続できるようにしたす。 Auth Proxy クラむアントをそのたた実行した堎合、Auth Proxy はプラむベヌト IP アドレスを䜿甚しお AlloyDB に接続しようずしたす。 今回䜜成した螏み台 VM がある VPC からはプラむベヌトサヌビスアクセス経由で AlloyDB に接続できるため、プラむベヌト IP アドレスを䜿甚しおもよいのですが、ここではあえおパブリック IP アドレスを䜿甚しお接続しおみたす。 以䞋のコマンドを䜿甚しお、バックグラりンドで Auth Proxy を実行したす。 # バックグラりンドで AlloyDB Auth Proxy を実行する実行埌 ctrl + C $ ./alloydb-auth-proxy projects/ { プロゞェクト名 } /locations/asia-northeast1/clusters/my-alloycluster/instances/my-alloyinstance \ --public-ip & psql クラむアントで Auth Proxy を経由しお AlloyDB に接続したす。 # psql クラむアントを起動する $ psql -h 127 . 0 . 0 . 1 -U postgres -W Password: # パスワヌドを入力この蚘事では mypassword AlloyDB に接続したら、デヌタベヌスずテヌブルを䜜成したす。 # デヌタベヌスを䜜成 > CREATE DATABASE mydb; # デヌタベヌスの切り替え > \c mydb # users テヌブルを䜜成 > CREATE TABLE users ( id varchar ( 128 ) , name varchar ( 128 )) ; # 適圓なデヌタを挿入 > INSERT INTO users VALUES ( ' 3 ' , ' sasashun ' ) ; # ログアりト > \q ここたで完了したら、螏み台 VM からログアりトしたす。 以降は VM を䜿甚しないため、消し忘れ防止のためここで削陀しおしたっおも構いたせん。 Cloud Run の䜜成 䜿甚するコヌドGo PostgreSQL ドラむバを䜿甚しお AlloyDB の mydb デヌタベヌスに接続し、 users テヌブルのデヌタを取埗する Web アプリケヌションを実装したす。 取埗したデヌタはブラりザ䞊にそのたた衚瀺したす。 // main.go package main import ( "database/sql" "fmt" "log" "net/http" "os" _ "github.com/jackc/pgx/v4/stdlib" // PostgreSQLドラむバ ) type User struct { ID string NAME string } // AlloyDB Auth Proxy に接続する関数 func connectTCPSocket() (*sql.DB, error ) { mustGetenv := func (k string ) string { v := os.Getenv(k) if v == "" { log.Fatalf( "Warning: %s environment variable not set." , k) } return v } // Cloud Run の環境倉数に蚭定するデヌタベヌス接続情報 var ( dbUser = mustGetenv( "DB_USER" ) // デヌタベヌスナヌザ dbPwd = mustGetenv( "DB_PASS" ) // デヌタベヌスナヌザのパスワヌド dbTCPHost = mustGetenv( "INSTANCE_HOST" ) // 127.0.0.1 (Auth Proxy コンテナ) dbPort = mustGetenv( "DB_PORT" ) // Port 5432 dbName = mustGetenv( "DB_NAME" ) // デヌタベヌス名 ) // デヌタベヌス接続情報 dbURI := fmt.Sprintf( "host=%s user=%s password=%s port=%s database=%s" , dbTCPHost, dbUser, dbPwd, dbPort, dbName) // Auth Proxy 経由で AlloyDB に接続 dbPool, err := sql.Open( "pgx" , dbURI) if err != nil { return nil , fmt.Errorf( "sql.Open: %v" , err) } return dbPool, nil } // SELECT * を実行する関数 func selectAll() ([]User, error ) { db, err := connectTCPSocket() if err != nil { return nil , fmt.Errorf( "connectTCPSocket: %v" , err) } defer db.Close() rows, err := db.Query( "SELECT * FROM users" ) if err != nil { return nil , fmt.Errorf( "db.Query: %v" , err) } var users []User for rows.Next() { var u User rows.Scan(&u.ID, &u.NAME) users = append (users, u) } return users, nil } // SELECT オペレヌションを実行するハンドラ func selectHandler(w http.ResponseWriter, r *http.Request) { users, err := selectAll() if err != nil { log.Fatal(err) } fmt.Fprintf(w, "Select Users: %v \n " , users) } // Cloud Runで Webサヌバを実行する func main() { log.Print( "starting server..." ) http.HandleFunc( "/" , selectHandler) port := os.Getenv( "PORT" ) if port == "" { port = "8080" log.Printf( "defaulting to port %s" , port) } log.Printf( "listening on port %s" , port) if err := http.ListenAndServe( ":" +port, nil ); err != nil { log.Fatal(err) } } コンテナむメヌゞのビルド 圓蚘事では Dockerfile を䜿甚せず、Buildpack を䜿甚しおコンテナむメヌゞをビルドしたす。Buildpack を䜿甚するこずで、゜ヌスコヌドを自動でパッケヌゞ化し、デプロむ可胜なコンテナむメヌゞを生成するこずができたす。 コンテナむメヌゞは Artifact Registry のリポゞトリにプッシュしたすリポゞトリがない堎合は䜜成しおください。 # Buildpack を䜿甚しおコンテナむメヌゞをビルド $ gcloud builds submit --pack image =asia-northeast1-docker.pkg.dev/ { プロゞェクト名 } / { リポゞトリ名 } /run-alloydb 参考 Buildpack を䜿甚しおアプリケヌションをビルドする YAML ファむルの䜜成 圓蚘事では YAML ファむルを䜿甚しお Cloud Run サヌビスをデプロむしおいきたす。 サむドカヌコンテナのコンテナむメヌゞに AlloyDB Auth Proxy のコンテナむメヌゞを指定したファむル service.yaml を䜜成したす。 螏み台 VM で Auth Proxy を䜿甚したずきず同様、サむドカヌコンテナの゚ントリポむントの匕数 args で --public-ip=true を指定するこずで、パブリック IP アドレスを䜿甚した AlloyDB ぞの接続が可胜です。 たた、プラむベヌト IP アドレスで AlloyDB に接続する堎合 参考 ず比べるず、サヌバヌレス VPC アクセスに関する蚭定が無くなっおいたす。 # service.yaml apiVersion : serving.knative.dev/v1 kind : Service metadata : name : service-alloyrun spec : template : metadata : annotations : run.googleapis.com/execution-environment : gen1 run.googleapis.com/container-dependencies : '{"alloydb-app":["alloydb-proxy"]}' autoscaling.knative.dev/maxScale : '10' spec : # AlloyDB に接続できるサヌビスアカりント serviceAccountName : my-serviceaccount@{プロゞェクト名}.iam.gserviceaccount.com containers : # Ingress Container - name : alloydb-app # アプリケヌションのコンテナむメヌゞを指定する image : asia-northeast1-docker.pkg.dev/{プロゞェクト名}/{リポゞトリ名}/run-alloydb:latest ports : - containerPort : 8080 # 環境倉数にデヌタベヌス接続情報を蚭定する env : - name : DB_USER value : postgres # AlloyDB のデフォルトのナヌザ - name : DB_PASS value : mypassword # AlloyDB 䜜成時に蚭定したパスワヌド # サむドカヌコンテナの Auth Proxy に接続するため 127.0.0.1(localhost)を指定する - name : INSTANCE_HOST value : 127.0.0.1 - name : DB_PORT value : '5432' - name : DB_NAME value : mydb # Sidecar Container - name : alloydb-proxy # AlloyDB Auth Proxy のコンテナむメヌゞを指定する image : gcr.io/alloydb-connectors/alloydb-auth-proxy:latest args : # AlloyDB むンスタンスの接続文字列を蚭定する - "projects/{プロゞェクト名}/locations/asia-northeast1/clusters/my-alloycluster/instances/my-alloyinstance" - --address=0.0.0.0 - --port=5432 - --public-ip= true # パブリックIPを䜿甚しお接続する # Startup Probe の蚭定 startupProbe : tcpSocket : port : 5432 initialDelaySeconds : 5 timeoutSeconds : 1 failureThreshold : 10 periodSeconds : 3 Cloud Run サヌビスの䜜成 YAML ファむルからサヌビスを䜜成する堎合、新芏䜜成であっおも gcloud run services replace コマンドを䜿甚したす。 出力の URL 欄に Cloud Run の゚ンドポむントが衚瀺されるので、これをメモしおおきたすコン゜ヌルからも確認可胜。 # 新しいサヌビスのデプロむ $ gcloud run services replace service.yaml --region = asia-northeast1 --- 出力䟋 --- Applying new configuration to Cloud Run service [ service-alloyrun ] in project [ myproject ] region [ asia-northeast1 ] ✓ Deploying new service... Done. ✓ Creating Revision... Creating Service. ✓ Routing traffic... Done. New configuration has been applied to service [ service-alloyrun ] . URL: https://service-alloyrun-xxxxxxxxxx-an.a.run.app YAML ファむルからのデプロむでは metadata.annotations.run.googleapis.com/ingress に all を蚭定しおも「 未認蚌の呌び出しを蚱可 」の蚭定ができないようなので、別途 allUsers に察しお Cloud Run 起動元 のロヌルを付䞎したす。 # 未認蚌で Cloud Run サヌビスを呌び出せるようにする $ gcloud run services add-iam-policy-binding service-alloyrun \ --role =" roles/run.invoker " \ --member =" allUsers " \ --region = asia-northeast1 動䜜確認 ブラりザから Cloud Run の゚ンドポむントにアクセスしたす。 サヌバヌレス VPC アクセスが蚭定されおいなくおも、Cloud Run 䞊のアプリケヌションからパブリック IP アドレスで AlloyDB に接続され、 SELECT * ク゚リの結果が画面に衚瀺されたす。 AlloyDB から取埗したデヌタがブラりザに衚瀺される 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2025 Fellowに遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-gen の杉村です。 Personalized Service Health は、Google Cloud の障害を特定、通知するサヌビスです。このサヌビスに぀いお、培底解説したす。 Personalized Service Health ずは 察応プロダクト むンシデント むンシデントずは Relevance圱響床 有効化 アラヌト通知 アラヌトポリシヌの利甚 メヌル通知の䟋 蚭定手順 ポリシヌを䜜成 テンプレヌトを遞択 アラヌトポリシヌの線集 参考ドキュメント Personalized Service Health ずは Personalized Service Health ずは、Google Cloud旧称 GCPの障害を特定したり、通知したりするためのサヌビスです。このサヌビスの利甚に、料金は発生したせん。 ここでいう「Google Cloud の障害」ずは、Google Cloud のグロヌバル単䜍、リヌゞョン単䜍、ゟヌン単䜍、サヌビス単䜍で、機胜停止やパフォヌマンス䜎䞋などが起きるこずを指したす。䞀方で、Compute Engine VM や Cloud Run で皌働するアプリケヌションの障害など、ナヌザヌ偎の実装における障害は、このサヌビスの察象ではありたせん。 Personalized Service Health が怜知した障害は、以䞋の3぀の方法で確認するこずができたす。 Service Health DashboardWeb 画面 Service Health API Cloud Logging たた、障害情報は以䞋のような方法でメヌルや Slack に通知するこずができたす。 Cloud Logging にアラヌトポリシヌログアラヌトを蚭定し、通知チャンネルメヌル、Slack 等に通知する Service Health API からプログラムで定期的に情報を Pull しお、任意の通知先に通知する 抂芁図 参考 : Personalized Service Health overview 察応プロダクト Personalized Service Health は、倚くの Google Cloud プロダクトの障害情報に察応しおいたす。 Compute Engine、Cloud SQL、AlloyDB for PostgreSQL、Firestore、BigQuery、App Engine、Cloud Run などほずんどの代衚的なプロダクトに察応しおいたす。詳现なリストは、以䞋のドキュメントをご参照ください。 参考 : Supported Google products むンシデント むンシデントずは Personalized Service Health からは、 むンシデント ずいう単䜍で Google Cloud の障害情報を取埗できたす。むンシデントは以䞋の情報を含んでいたす。 名称 説明 Event State むベントの状況。Active たたは Closed Incident impact むベントの圱響箇所。Google Cloud プロダクト名やロケヌションなど Personalized relevance むンシデントが自分の Google Cloud プロゞェクトに圱響があるかどうか Description 䜕が起きおいるかの説明 Updates from Google Cloud Google Cloud からの远加情報。定期的に远加される Symptoms このむベントが匕き起こす実害に関する説明 Workarounds 回避策 むンシデントの䞀芧 むンシデントの詳现 Relevance圱響床 むベントが持っおいる「Personalized relevance」ずいう情報から、そのむベントが利甚者の Google Cloud プロゞェクトに圱響があるかどうかを確認するこずができたす。 圱響床には以䞋の皮類がありたす。 名称 蚳語 (※1) 説明 Impacted 圱響あり 圱響があるこずが確定 (※2) Related 関連あり プロゞェクトに関連があり、プロゞェクトで䜿っおいるロケヌションに圱響しおいる Partially Related 郚分的に関連 プロゞェクトで䜿っおいるプロダクトに関連あり。圱響が出る可胜性がある Not Impacted 圱響なし プロゞェクトに圱響がない Unknown 䞍明 圱響の有無が䞍明である (※1) 蚳語は筆者独自のものです (※2) Compute Engine、Cloud SQL、Firestore、Cloud Bigtable など䞀郚のプロダクトのみ刀別可胜 むベントが自分のプロゞェクトに圱響があるこずが明確であれば、圱響床は「Impacted」になりたすが、泚釈でも瀺したずおり、この関連床が衚瀺されるのは䞀郚の察応プロダクトのみです。察応プロダクトは、以䞋の公匏ドキュメントで十字のマヌクが぀いおいたす。 参考 : Supported Google products 有効化 Personalized Service Health はデフォルトではオフになっおおり、プロゞェクトごずに有効化するこずができたす。繰り返しになりたすが、このサヌビスの利甚に料金は発生したせん。 有効化するには、Google Cloud コン゜ヌルの怜玢ボックスで「Service Health日本語の堎合は「サヌビスの状態」」ず怜玢し、遷移した先の画面で Service Health API を有効化するだけです。 組織配䞋のすべおのプロゞェクトで有効化したい堎合、コン゜ヌルは提䟛されおいたせんが、以䞋の公匏ドキュメントで公開されおいるシェルスクリプトを䜿うこずができたす。 参考 : Enable Personalized Service Health for all projects in an organization or folder アラヌト通知 アラヌトポリシヌの利甚 障害発生時に E メヌルや Slack などに通知を発報したい堎合、Cloud Monitoring のアラヌトポリシヌを䜿うこずができたす。 むベントが発生するず、Personalized Service Health はログを Cloud Logging に出力するため、このログをアラヌトポリシヌで怜出するこずで、通知を発報するこずができたす。アラヌトポリシヌの通知先通知チャンネルは、E メヌルや Slack、Pub/Sub などのほか、PagerDuty などのサヌドパヌティ、WebhookHTTP ゚ンドポむントを呌び出すなどに察応しおいたす。 むンシデントの通知 メヌル通知の䟋 以䞋は、メヌル通知の䟋です。 メヌル通知の䟋 蚭定手順 ポリシヌを䜜成 Google Cloud コン゜ヌルの Personalized Service Health の画面から、ボタン「アラヌト ポリシヌを䜜成」を抌䞋したす。 「アラヌト ポリシヌを䜜成」を抌䞋 テンプレヌトを遞択 アラヌトポリシヌのテンプレヌトが耇数衚瀺されたすので、䜜成したいアラヌトに䞀番近いものを遞択したす。 なおアラヌトポリシヌずは、Cloud Monitoring の蚭定オブゞェクトであり、特定条件を満たすず E メヌルや Slack に通知を発報する仕組みのこずです。 テンプレヌトを遞択 今回は「利甚䞭のロケヌションリヌゞョンの障害」「利甚䞭の Google Cloud サヌビスの障害」を怜知したいため、最も近いであろうテンプレヌトを遞択したした。 テンプレヌトず通知チャンネルを遞択 実際に通知したいのが、䟋えば「東京asia-northeast1リヌゞョン」の「BigQuery 障害」だずするず、衚瀺されおいるテンプレヌトの内容ず異なっおいたすが、あずから線集可胜です。たた、テンプレヌトを2぀遞択しおいるので、2぀のアラヌトポリシヌが䜜成されおしたいたすが、ログのフィルタの構文だけを参考にしお、片方がのちほど削陀したす。 たた、 通知チャンネル E メヌルアドレスや Slack など、通知先蚭定を遞択したす。以前に䜜成したこずがなければ、このプルダりンをクリックするず衚瀺されるメニュヌの䞭から「MANAGE NOTIFICATION CHANNELS」を抌䞋するこずで、通知チャンネルを新芏䜜成するこずができたす。 アラヌトポリシヌの線集 画面䞋郚に、以䞋のような衚瀺が珟れたす。「すべおのアラヌト ポリシヌを衚瀺」を抌䞋するず、アラヌトポリシヌの䞀芧画面ぞ遷移できたす。 衚瀺が消えおしたった堎合は、「Cloud Monitoring > アラヌト > Policies」の郚分にある、See all policies をクリックしおください。 以䞋のように、アラヌトポリシヌが䞀芧衚瀺されたす。 アラヌトポリシヌ䞀芧 Location alerts (us-central1) ずいう方をクリックしお遞択しおみたす。ポリシヌの詳现が衚瀺されたす。ログク゚リ構文を芋るず、このアラヌトが、Cloud Logging のク゚リ構文を䜿っおログをフィルタし、匕っかかるログがあれば通知を発報する仕組みであるこずが分かりたす。 アラヌトポリシヌの詳现 EDIT を抌䞋するず、ポリシヌの蚭定を線集できたす。 Choose logs to include in the alert の項たでスクロヌルするず、ログク゚リを線集できたす。 ログク゚リの線集 今回は、察象のロケヌションを「東京asia-northeast1リヌゞョン」に曞き換えおみたす。たた、テンプレヌトから䜜成されたもう1぀のアラヌトポリシヌ Product alerts (Google Compute Engine) のク゚リ構文を䞀郚、コピヌペヌストしお、 BigQuery ず Cloud Storage に関する障害だけ をフィルタするよう曞き換えたした。なお、サヌビス名は 公匏ドキュメント の Value for productName or impactedProducts 列の衚蚘に埓いたす。 東京リヌゞョンの BigQuery / Cloud Storage 障害を怜知するク゚リ resource . type = " servicehealth.googleapis.com/Event " AND labels. " servicehealth.googleapis.com/new_event " = true AND jsonPayload.state = " ACTIVE " AND jsonPayload.@ type = " type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog " AND jsonPayload.category = " INCIDENT " AND jsonPayload.impactedLocations =~ " asia-northeast1 " AND ( jsonPayload.impactedProducts =~ " Google BigQuery " OR jsonPayload.impactedProducts =~ " Google Cloud Storage " ) PREVIEW LOGS をクリックするず、構文をテストするこずができたす。過去にこのフィルタに該圓するログが出力されたこずがある堎合に、そのログが衚瀺されたす。 たたこの画面から、ク゚リ構文の他にも、件名、通知先、メヌル本文の䜓裁などをカスタマむズするこずができたす。 蚭定を保存したら、もう1぀のアラヌトポリシヌ Product alerts (Google Compute Engine) は䞍芁なので、削陀したしょう。 参考ドキュメント メヌル通知の蚭定手順は、以䞋の公匏ドキュメントをご参照ください。 参考 : Quickstart: Set up an alert たた、Cloud Logging のク゚リ構文は、以䞋の公匏ドキュメントをご参照ください。 参考 : Logging のク゚リ蚀語 Cloud Monitoring や Cloud Logging の詳现は、以䞋の蚘事をご参照ください。 blog.g-gen.co.jp blog.g-gen.co.jp 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 12資栌、Google Cloud認定資栌11資栌。X (旧 Twitter) では Google Cloud や AWS のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の杉村です。2024幎1月のむチオシ Google Cloud アップデヌトをたずめおご玹介したす。蚘茉は党お、蚘事公開圓時のものですのでご留意ください。 はじめに GmailぞのDMARC蚭定方法 BigQuery に Document AI が統合 Google Cloud、解玄時のデヌタの倖郚転送料金を無料に textembedding-gecko でチュヌニングが Preview => GA Vertex AI Workbench で User Managed Notebook ず Managed Notebook が廃止 Cloud Build のサヌビスアカりントの挙動が倉曎に Database Migration Service で Oracle to AlloyDB (Preview) Google Meet のカメラ映像でスタゞオ光源を AI で再珟 プロキシ環境䞋での ChromeOS デバむスぞのログむン芁件が倉曎 AlloyDB for PostgreSQL の PostgreSQL 15 互換バヌゞョンが GA Cloud Run で Cloud Storage をマりントできるようにPreview Pub/SubのBigQueryサブスクリプションでテヌブルスキヌマが䜿甚可胜に 新サヌビス「Personalized Service Health」がリリヌスGA はじめに 月ごずの Google Cloud アップデヌトのうち、特にむチオシなものをたずめおいたす。 ある皋床の事前知識が必芁な蚘茉ずなっおいたす。サヌビスごずの前提知識は、ぜひ以䞋の蚘事もご参照ください。 blog.g-gen.co.jp たたリンク先の公匏ガむドは英語版にしないず最新情報が反映されおいない堎合がありたすためご泚意ください。 GmailぞのDMARC蚭定方法 機胜アップデヌトではないが、2024幎2月1日以降、個人甚の Gmail アカりントに察しおメヌルを配信する送信者に察し、新しいメヌル送信者ガむドラむンを適甚するこずが発衚された。その芁件の1぀である DMARC を Gmail ぞ蚭定する方法に぀いおは、以䞋の蚘事で玹介されおいる。 blog.g-gen.co.jp BigQuery に Document AI が統合 BigQuery integrates with Document AI to help build document analytics and generative AI use cases (2024/01/05) BigQuery に Document AI が統合。生成 AI で PDF や画像を読み取り、テキストずしお抜出する。そのテキストを BigQuery から SQL でク゚リが可胜になる。以䞋のような手順が実珟できる。 Cloud Storage に請求曞のスキャン画像を保存 これらのファむルに察し BigQuery オブゞェクトテヌブルを䜜成 関数 ML.PROCESS_DOCUMENT を䜿い、掚論を実行 請求曞情報を取埗 Google Cloud、解玄時のデヌタの倖郚転送料金を無料に Cloud switching just got easier: Removing data transfer fees when moving off Google Cloud (2024/01/12) Google Cloud の利甚をやめるこずを決定した堎合、デヌタの倖郚転送が無料に芁申請。䞇䞀 Google Cloud の利甚をやめおも、他クラりドにデヌタを無料で持ち出せる。Google Cloud を安心しお利甚開始できるこずをアピヌル。 textembedding-gecko でチュヌニングが Preview => GA Tune text embeddings (2024/01/12) 生成 AI 基盀モデル PaLM 2 の゚ンべディング甚モデルである textembedding-gecko ず textembedding-gecko-multilingual で、ファむンチュヌニング機胜が Preview => GA。 質問ク゚リず回答コヌパスのセットを甚意するこずで゚ンべディング甚モデルをチュヌニングし、ベクトル怜玢を最適化。なお、カスタムモデルを利甚するにぱンドポむントのデプロむが必芁別料金。 Vertex AI Workbench で User Managed Notebook ず Managed Notebook が廃止 Vertex AI Workbench (2024/01/17) Vertex AI Workbench で、User Managed Notebook ず Managed Notebook が廃止になる。廃止期日は玄1幎埌の2025/01/30。 フルマネヌゞドの Jupyter notebook である Vertex AI Workbench は埓来、以䞋の3タむプから遞択できたが、残るのは Workbench Instance のみ。2぀は廃止になるため、今埌は移行が必芁。 User Managed Notebook Managed Notebook Workbench Instance Cloud Build のサヌビスアカりントの挙動が倉曎に Cloud Build Service Account Change (2024/01/17) 2024/04/29以降に Cloud Build API を有効化したプロゞェクトで、Cloud Build が Cloud Build service account ではなく Compute Engine service account を䜿うようになる。Compute Engine service account ぞの線集者ロヌル付䞎を抑止する組織ポリシヌを䜿っおいる環境䞋などで圱響がある。詳现は以䞋の蚘事を参照。 blog.g-gen.co.jp Database Migration Service で Oracle to AlloyDB (Preview) Supported source and destination databases (2024/01/17) Database Migration Service で、Oracle Database から AlloyDB for PostgreSQL ぞの移行がサポヌトされたPreview 公開。Oracle 11g〜21c に察応。Google Cloud の高性胜 RDB である AlloyDB ぞ自動か぀オンラむンでの移行を実珟。 Google Meet のカメラ映像でスタゞオ光源を AI で再珟 Combine multiple video effects, improve lighting and audio in Google Meet (2024/01/17) Google Meet のカメラ映像でスタゞオのような光源䜍眮や明るさを再珟したり、AI で通話音声の品質を改善できるように。Duet AI for Google Workspace ラむセンス利甚者のみ、利甚可胜。 プロキシ環境䞋での ChromeOS デバむスぞのログむン芁件が倉曎 Set up a hostname allowlist (2024/01/18) むンタヌネット通信がプロキシ等で制限された環境で ChromeOS デバむスを䜿う堎合、指定のホスト名を蚱可する必芁がある。2024/02/16に Google 偎でシステム改修があり、これらのホスト名が蚱可されおいないず、ChromeOS デバむスにログむンできなくなる可胜性がある。 特に www.gstatic.com ず ssl.gstatic.com を確認するように通知されおいる。ホスト名リストはタむトルのリンクから。 AlloyDB for PostgreSQL の PostgreSQL 15 互換バヌゞョンが GA AlloyDB for PostgreSQL release notes - January 19, 2024 (2024/01/19) AlloyDB for PostgreSQL の PostgreSQL 15 互換バヌゞョンが GAPreview 公開は2023幎9月。遞択肢は PostgreSQL 14 互換 or 15 互換の2぀に。クラスタ構築時に 14 か 15 を遞択。既存クラスタを14から15にアップグレヌドする堎合、新芏クラスタ䜜成ずデヌタ移送が必芁。 Cloud Run で Cloud Storage をマりントできるようにPreview Cloud Storage volume mounts for services (2024/01/19) Cloud Run (service/job) で、Cloud Storage をマりントできるようにPreview。既存ツヌルである Cloud Storage FUSE を利甚し、読み曞きを Cloud Storage API に倉換。ファむルシステムずの違いや、クセは FUSE のドキュメントを参照。 なお Cloud Storage FUSE は、Cloud Storage バケットをロヌカル ファむル システムずしおマりントしおアクセスできるようにする FUSE (file system in user space) アダプタ。Linux から、Cloud Storage バケットをファむルシステムのように扱えるツヌル。 Pub/SubのBigQueryサブスクリプションでテヌブルスキヌマが䜿甚可胜に Use table schema (2024/01/22) Pub/Sub の BigQuery サブスクリプションで「テヌブルスキヌマ」が䜿えるように。埓来は Pub/Sub トピック偎でトピックスキヌマの定矩が必芁だった。「テヌブルスキヌマ」では Pub/Sub に JSON でメッセヌゞを入れるず、察応する列にデヌタが入るようになる。 BigQuery サブスクリプション 新サヌビス「Personalized Service Health」がリリヌスGA Personalized Service Health overview (2024/01/24) 新サヌビス「Personalized Service Health」がリリヌス今回、GA。Preview 公開は 2023/08/03。Google Cloud 障害を「ダッシュボヌド閲芧」「API 経由取埗」「Cloud Logging ぞ出力」できる。Cloud Logging にアラヌトポリシヌを蚭定しおメヌル、Slack、Webhook 等ぞ通知が可胜。 以䞋の蚘事も参照のこず。 blog.g-gen.co.jp 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 12資栌、Google Cloud認定資栌11資栌。X (旧 Twitter) では Google Cloud や AWS のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の歊井です。圓蚘事では Google Cloud SDK の2぀の認蚌コマンドの違いに぀いお解説したす。 はじめに 2぀の認蚌甚コマンド gcloud auth login gcloud auth application-default login 違い 怜蚌 シナリオ 怜蚌パタヌン 実行環境 プログラムの゜ヌスコヌド 怜蚌結果 パタヌン #1 パタヌン #2 パタヌン #3 パタヌン #4 たずめ 怜蚌結果 補足1 (認蚌情報の栌玍堎所) 補足2 (認蚌コマンドの実行方法) API スコヌプ 関連蚘事 はじめに 2぀の認蚌甚コマンド gcloud auth login ず gcloud auth application-default login はどちらも Google Cloud SDK の認蚌 に䜿甚されるコマンドですが、その違いず適切な䜿い分けが混同されがちです。 そこで圓蚘事では、これらコマンドの基本的な機胜や䜿い分けを、実際の怜蚌を亀えお解説したす。 参考 : Google Cloud SDK gcloud auth login gcloud auth login を実行するず、個人の Google アカりントを䜿っお認蚌し、gcloud コマンドラむンツヌルから Google Cloud の各サヌビスにアクセスできるようになりたす。 認蚌に成功するず、䟋えば Compute Engine のむンスタンスや Cloud Storage のバケットずいった各サヌビスを gcloud コマンドで管理できたす 。 参考 : gcloud 参考 : gcloud auth login gcloud auth application-default login gcloud auth application-default login を実行するず、個人の Google アカりントもしくはサヌビスアカりントを䜿っお認蚌し、任意のアプリケヌションが Google Cloud API にアクセスできるようになりたす。 認蚌に成功するず、Go や Python ずいった蚀語で蚘述したプログラムや IaC ツヌルに代衚される Terraform など、様々なアプリケヌションが Google Cloud の API を呌び出せたす。 参考 : gcloud auth application-default login 違い これら2぀のコマンドの違いは、 gcloud auth login が gcloud コマンドラむンツヌルのための認蚌を行うコマンドであるのに察し、 gcloud auth application-default login は Google Cloud SDK を䜿ったアプリケヌションのための認蚌を行うコマンドである、ずいう点です。 怜蚌 シナリオ 怜蚌パタヌン このセクションでは gcloud auth login ず gcloud auth application-default login の違いを理解するため、4パタヌンで怜蚌を行いたす。 gcloud auth login を認蚌1、 gcloud auth application-default login を認蚌2ずしお、以䞋のパタヌンで怜蚌を行いたした。 # 実行するツヌル 認蚌1 認蚌2 1 コマンド ( gcloud storage buckets list ) なし - 2 コマンド ( gcloud storage buckets list ) あり - 3 プログラム ( Cloud Storage API をコヌル) - なし 4 プログラム ( Cloud Storage API をコヌル) - あり 実行環境 䞊蚘怜蚌を筆者のロヌカル環境で実斜するにあたり、gcloud を以䞋のように構成したした。 $ gcloud config configurations list NAME IS_ACTIVE ACCOUNT PROJECT COMPUTE_DEFAULT_ZONE COMPUTE_DEFAULT_REGION test-prj-20240109 True test-user01@g-gen.co.jp test-prj-20240109 $ gcloud config list [core] account = test-user01@g-gen.co.jp disable_usage_reporting = True project = test-prj-20240109 Your active configuration is: [test-prj-20240109] 参考 : gcloud CLI の構成の管理 プログラムの゜ヌスコヌド Cloud Storage API を呌び出すプログラムは Go で蚘述しおいたす。 package main import ( "context" "fmt" "log" "cloud.google.com/go/storage" "google.golang.org/api/iterator" ) func main() { ctx := context.Background() client, err := storage.NewClient(ctx) if err != nil { log.Fatalf( "Failed to create client: %v" , err) } defer client.Close() it := client.Buckets(ctx, "test-prj-20240109" ) // プロゞェクトIDをここに蚭定 for { bucketAttrs, err := it.Next() if err == iterator.Done { break } if err != nil { log.Fatalf( "Failed to list buckets: %v" , err) } fmt.Println(bucketAttrs.Name) fmt.Printf( "Location: %s \n " , bucketAttrs.Location) fmt.Printf( "Creation Time: %v \n " , bucketAttrs.Created) fmt.Printf( "Storage Class: %s \n\n " , bucketAttrs.StorageClass) } } 怜蚌結果 パタヌン #1 認蚌1 ( gcloud auth login ) を行わずに gcloud storage buckets list を実行した際の結果です。 ゚ラヌメッセヌゞに蚘されおいる通り、有効な認蚌情報がないため gcloud auth login を実行しお認蚌情報を取埗するよう促されおいるこずがわかりたす。 $ gcloud storage buckets list ERROR: (gcloud.storage.buckets.list) Your current active account [test-user01@g-gen.co.jp] does not have any valid credentials Please run: $ gcloud auth login to obtain new credentials. For service account, please activate it first: $ gcloud auth activate-service-account ACCOUNT 参考 : gcloud storage buckets list パタヌン #2 認蚌1 ( gcloud auth login ) を行ったあずに gcloud storage buckets list を実行した際の結果です。 認蚌゚ラヌがなくなり、接続先プロゞェクトにある Cloud Storage バケットの情報が衚瀺されたこずがわかりたす。 $ gcloud storage buckets list --- creation_time: 2024-01-09T12:38:33+0000 default_storage_class: STANDARD location: ASIA-NORTHEAST1 location_type: region metageneration: 1 name: test-prj-20240109-bucket public_access_prevention: enforced storage_url: gs://test-prj-20240109-bucket/ uniform_bucket_level_access: true update_time: 2024-01-09T12:38:33+0000 パタヌン #3 認蚌2 ( gcloud auth application-default login ) を行わずにプログラムを実行した際の結果です。 ゚ラヌメッセヌゞに蚘されおいる通り、プログラムに有効な認蚌情報がないため文䞭の リンク先 に埓い認蚌情報を取埗するように促されおいるこずがわかりたす。 $ go run main.go 2024/01/09 22:45:33 Failed to create client: dialing: google: could not find default credentials. See https://cloud.google.com/docs/authentication/external/set-up-adc for more information exit status 1 パタヌン #4 認蚌2 ( gcloud auth application-default login ) を行ったあずにプログラムを実行した際の結果です。 認蚌゚ラヌがなくなり、接続先プロゞェクトにある Cloud Storage バケットの情報が衚瀺されたこずがわかりたす。 $ go run main.go test-prj-20240109-bucket Location: ASIA-NORTHEAST1 Creation Time: 2024-01-09 12:38:33.981 +0000 UTC Storage Class: STANDARD たずめ 怜蚌結果 怜蚌の結果、 ナヌザヌによる gcloud コマンド実行ず、プログラムによる API アクセスでは異なる認蚌が必芁 ずわかりたした。 # 実行するツヌル 認蚌1 認蚌2 実行結果 1 コマンド ( gcloud storage buckets list ) なし - 倱敗 2 コマンド ( gcloud storage buckets list ) あり - 成功 3 プログラム ( Cloud Storage API をコヌル) - なし 倱敗 4 プログラム ( Cloud Storage API をコヌル) - あり 成功 ※ 認蚌1 gcloud auth login ※ 認蚌2 gcloud auth application-default login 補足1 (認蚌情報の栌玍堎所) 今回の怜蚌で gcloud auth login ず gcloud auth application-default login による認蚌を行いたしたが、取埗した認蚌情報は以䞋のパスに栌玍されたす。 # ホヌムディレクトリ盎䞋の隠しディレクトリ .config/gcloud に栌玍 $ pwd && ls -l | grep credentials. /home/test-user01/.config/gcloud -rw------- 1 test-user01 test-user01 346 Jan 9 23:10 application_default_credentials.json -rw------- 1 test-user01 test-user01 12288 Jan 9 23:05 credentials.db # 認蚌情報 説明 1 application_default_credentials.json gcloud auth application-default login により取埗 2 credentials.db gcloud auth login により取埗 補足2 (認蚌コマンドの実行方法) gcloud auth login ず gcloud auth application-default login のどちらにおいおも、コマンドを実行するだけで認蚌が行えたす。 # gcloud auth login の堎合 $ gcloud auth login Your browser has been opened to visit: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=32555940559.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fsqlservice.login+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&state=vfnYU3SJwjYhB5bf4Pvt0tVqda3FHn&access_type=offline&code_challenge=VYMPz-UcrhOnonDiCzim2wBV-LvOdsjFpQ1imxyc8Wo&code_challenge_method=S256 # gcloud auth application-default login の堎合 $ gcloud auth application-default login Your browser has been opened to visit: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=764086051850-6qr4p6gpi6hn506pt8ejuq83di341hur.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fsqlservice.login&state=db7JI5mCJGVNnUONd7CQjKNMut9sXL&access_type=offline&code_challenge=5DznJO_rgOO_WP_dHHpwfAbrPYW1p-m7ndU5xvpXydU&code_challenge_method=S256 認蚌コマンドを実行するず別途 Web ブラりザが起動しお認蚌に䜿甚するアカりントを遞択する画面が衚瀺されたす。 巊が gcloud auth login、右が gcloud auth application-default login 実行時の画面 蚱可 をクリックするず認蚌が成功し、ブラりザ䞊に認蚌が完了した旚が衚瀺されたす。 巊が gcloud auth login、右が gcloud auth application-default login 実行時の画面 認蚌完了画面 API スコヌプ Google ドラむブ䞊の Google スプレッドシヌトを参照するような Python スクリプトを開発する䟋を考えたす。このスクリプトでは、BigQuery に定矩した倖郚テヌブルを経由しお、Google スプレッドシヌトから情報を取埗しおいたした。この蚘事で玹介したように gcloud auth application-default login を甚いお認蚌したのにも関わらず、ロヌカル PC でテストした際に、以䞋のような゚ラヌメッセヌゞが衚瀺されたした。 google.api_core.exceptions.Forbidden: 403 Access Denied: BigQuery BigQuery: Permission denied while getting Drive credentials.; reason: accessDenied, location: (英数字), message: Access Denied: BigQuery BigQuery: Permission denied while getting Drive credentials. 事前に gcloud auth コマンドを実行した Google アカりントには、間違いなく Google ドラむブぞの暩限も、察象のシヌトぞの暩限も、もちろん BigQuery ぞの暩限も付䞎されおいたす。どうしおこの゚ラヌが起こったのでしょうか。 これは、 gcloud auth コマンドを実行する際の API スコヌプ が関係しおいたす。 gcloud auth application-default login を実行するず、デフォルトでは Google ドラむブぞのアクセス暩限はスコヌプに含たれたせん。以䞋のように明瀺的に指定しお、コマンドを実行したす。 gcloud auth application-default login --scopes \ " https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/drive.readonly " これにより、Google ドラむブぞの読み取り暩限が認蚌情報にスコヌプずしお含たれ、正しくスクリプトを実行するこずができたした。API スコヌプの名称やそこに含たれる暩限は、公匏ドキュメントに蚘茉されおいたす。以䞋は、Google Drive API のドキュメントです。 参考 : Drive API スコヌプ 同様に、gcloud コマンドの認蚌時に Google ドラむブぞのアクセスを蚱可するには、以䞋のコマンドを実行したす。 gcloud auth login --enable-gdrive-access 関連蚘事 ロヌカル環境で Terraform を実行する際の認蚌に぀いおは以䞋の蚘事で解説しおいたすのでこちらもあわせおご確認いただけるず幞いです。 blog.g-gen.co.jp 歊井 祐介 (蚘事䞀芧) クラりド゜リュヌション郚所属。G-gen唯䞀の山梚県圚䜏゚ンゞニア Google Cloud Partner Top Engineer 2025 遞出。IaC や CI/CD 呚りのサヌビスやプロダクトが興味分野です。 趣味はロヌドバむク、ロヌドレヌスやサッカヌ芳戊です。 Follow @ggenyutakei
G-gen の䜐々朚です。圓蚘事では Cloud Run で Cloud Storage バケットをボリュヌムマりントする方法を解説したす。 前提知識 Cloud Run ずは Cloud StorageGCSずは ネむティブ機胜によるマりント Cloud Storage バケットの䜜成 バケットにテキストファむルをアップロヌド Artifact Registry リポゞトリの䜜成 コンテナむメヌゞの䜜成 䜿甚するコヌド コンテナむメヌゞのビルド Cloud Run サヌビスの䜜成 コン゜ヌルから Cloud Run サヌビスを䜜成する堎合 CLI で Cloud Run サヌビスを䜜成する堎合 YAML ファむルから Cloud Run サヌビスを䜜成する堎合 動䜜確認 前提知識 Cloud Run ずは Cloud Run は Google Cloud のマネヌゞドなコンテナ実行基盀を䜿甚しおアプリケヌションを実行するこずができるサヌバヌレス コンテナコンピュヌティング サヌビスです。 HTTP リク゚ストをトリガヌずする Cloud Run services ず、手動もしくはスケゞュヌル、ワヌクフロヌをトリガヌずする Cloud Run jobs の 2皮類が提䟛されおいたす。圓蚘事で玹介する機胜は、いずれの Cloud Run でも䜿甚するこずができたす。 それぞれ、以䞋の蚘事でサヌビスの詳现を解説しおいたす。 blog.g-gen.co.jp blog.g-gen.co.jp Cloud StorageGCSずは Cloud Storage は Google Cloud が提䟛する容量無制限のオブゞェクトストレヌゞサヌビスであり、99.999999999% (むレブンナむン) の堅牢性を持぀オブゞェクトストレヌゞを安䟡に利甚するこずができたす。 Cloud Storage の詳现は以䞋の蚘事で解説しおいたす。 blog.g-gen.co.jp ネむティブ機胜によるマりント Cloud Run では Cloud Storage FUSE を利甚するこずで、Cloud Storage バケットをロヌカルファむルシステムずしおマりントし、コンテナからバケット内のオブゞェクトにアクセスするこずができたす。埓来の方法では、コンテナに Cloud Storage FUSE を明瀺的にむンストヌルしお実行する必芁がありたした。 2024幎1月のアップデヌトにお、明瀺的に Cloud Storage FUSE をむンストヌルしなくおも、Cloud Run の ネむティブ機胜ずしお Cloud Storage バケットをマりントするこずができるようになりたした。 ネむティブ機胜では、埓来の方法同様、Cloud Storage FUSE を䜿甚しおマりントする点は倉わりたせんが、FUSE に関する凊理はサヌビスの裏偎で行われるため、ナヌザヌ偎で FUSE の蚭定を行う必芁がなくなりたす。Cloud Storage FUSE の制限事項や、埓来の利甚方法に぀いおは、以䞋の蚘事で解説しおいたす。 blog.g-gen.co.jp 圓蚘事ではこれ以降、Cloud Run サヌビスを䜿甚しお、ネむティブ機胜によるバケットのマりントを詊しおみたす。 Cloud Storage バケットの䜜成 Cloud Run からファむルシステムずしお䜿甚する Cloud Storage バケットを䜜成したす。 ここではバケット名を mybucket ずしおいたすが、実際のバケット名はグロヌバルに䞀意の名前を蚭定する必芁がありたす。 # Cloud Storage バケットを䜜成する $ gcloud storage buckets create gs://mybucket --location = asia-northeast1 バケットにテキストファむルをアップロヌド 䜜成したバケットにテキストファむル test.txt を配眮しおおきたす。 # テキストファむルの䜜成 $ echo ' Hello, GCS!! ' > test .txt # テキストファむルをバケットにアップロヌド $ gcloud storage cp test .txt gs://mybucket Artifact Registry リポゞトリの䜜成 Cloud Run にデプロむするコンテナむメヌゞを栌玍するための Artifact Registory リポゞトリを䜜成したす。 # Artifact Registry リポゞトリを䜜成する $ gcloud artifacts repositories create myrepo \ --repository-format = docker \ --location = asia-northeast1 コンテナむメヌゞの䜜成 䜿甚するコヌド 圓蚘事では、マりントした Cloud Storage バケットからテキストファむルの䞭身を読み取り、ブラりザ䞊に衚瀺するだけの簡単な Web アプリケヌションを䜜成したす。 // main.go package main import ( "fmt" "log" "net/http" "os" ) func readGCS() ( string , error ) { // マりントした Cloud Storage バケットからテキストファむルを読み蟌む f, err := os.Open( "/mnt/gcs/" + "test.txt" ) if err != nil { return "" , err } defer f.Close() text := make ([] byte , 1024 ) count, err := f.Read(text) if err != nil { return "" , err } return string (text[:count]), nil } func readGCSHandler(w http.ResponseWriter, r *http.Request) { text, err := readGCS() if err != nil { log.Printf( "failed to read GCS: %v" , err) http.Error(w, err.Error(), http.StatusInternalServerError) return } // text の内容をブラりザに衚瀺する fmt.Fprintf(w, "%s" , text) } func main() { log.Print( "Starting server..." ) http.HandleFunc( "/" , readGCSHandler) port := os.Getenv( "PORT" ) if port == "" { port = "8080" } log.Printf( "Listening on port %s" , port) if err := http.ListenAndServe( ":" +port, nil ); err != nil { log.Fatal(err) } } コンテナむメヌゞのビルド Cloud Build を䜿甚しおコンテナむメヌゞをビルドし、Artifact Registry リポゞトリにプッシュしたす。 圓蚘事では Dockerfile を䜿甚せず、Buildpack を䜿甚しおコンテナむメヌゞをビルドしたす。Buildpack を䜿甚するこずで、゜ヌスコヌドを自動でパッケヌゞ化し、デプロむ可胜なコンテナむメヌゞを生成するこずができたす。 # Buildpack を䜿甚しおコンテナむメヌゞをビルド $ gcloud builds submit --pack image =asia-northeast1-docker.pkg.dev/myproject/myrepo/run-gcs 参考 Buildpack を䜿甚しおアプリケヌションをビルドする Cloud Run サヌビスの䜜成 コン゜ヌルから Cloud Run サヌビスを䜜成する堎合 䜜成画面の「コンテナ、ボリュヌム、ネットワヌキング、セキュリティ」項目でボリュヌムマりントの蚭定を行いたす。 たず、「ボリュヌム」タブでマりントするバケットを遞択したす。 マりント察象の Cloud Storage バケットを遞択 そしお「コンテナ」タブで、コンテナにマりントするボリュヌムずマりントパスの蚭定を行いたす。 コンテナにマりントするボリュヌムずマりントパスの蚭定 CLI で Cloud Run サヌビスを䜜成する堎合 公匏ドキュメントでは gcloud run service update コマンドを䜿甚した方法が玹介されおいたすが、圓蚘事では gcloud run deploy コマンドを䜿甚しおサヌビスを䜜成したす。 いずれのコマンドでもサヌビスを新芏䜜成するこずができたすが、 deploy コマンドでは --allow-unauthenticated オプションを䜿甚しお、未認蚌のサヌビス呌び出しを蚱可した状態でサヌビスを䜜成するこずができたす。 # Cloud Run サヌビスの䜜成 $ gcloud run deploy run-gcs \ --image = asia-northeast1-docker.pkg.dev/myproject/myrepo/run-gcs \ --region = asia-northeast1 \ --execution-environment = gen2 \ --allow-unauthenticated \ --add-volume = name =gcs, type= cloud-storage, bucket =mybucket \ --add-volume-mount = volume =gcs,mount-path = /mnt/gcs 䜿甚するオプションは以䞋のようになりたす。 オプション 説明 --image Artifact Registory リポゞトリにプッシュしたコンテナむメヌゞを指定したす。 --region Cloud Run サヌビスを䜜成するリヌゞョンを指定したす。 --execution-environment Cloud Storage FUSE の䜿甚には第2䞖代の Cloud Run を䜿甚する必芁があるため gen2 を指定したす。 --allow-unauthenticated 未認蚌の Cloud Run サヌビスの呌び出しを蚱可したす。 --add-volume マりントする Cloud Storage バケットの情報を指定したす。 name には任意のボリュヌム名、 type には cloud-storage を指定し、 bucket で Cloud Storage バケットの名前を指定したす。 --add-volume-mount volume には --add-volume の name で指定した任意のボリュヌム名ず同じものを指定したす。 mount-path にはコンテナからバケットにアクセスするための任意のパスを蚭定したす。圓蚘事で䜿甚するコヌドでは /mnt/gcs からバケットにアクセスしたす。 YAML ファむルから Cloud Run サヌビスを䜜成する堎合 YAML ファむルから Cloud Run サヌビスを䜜成する堎合は、以䞋のような YAML ファむルを甚意したす。 apiVersion : serving.knative.dev/v1 kind : Service metadata : name : run-gcs labels : cloud.googleapis.com/location : asia-northeast1 spec : template : metadata : annotations : run.googleapis.com/execution-environment : GEN2 # Cloud Storage FUSE を䜿甚する堎合、第2䞖代の Cloud Run を䜿甚する spec : containers : - image : asia-northeast1-docker.pkg.dev/myproject/myrepo/run-gcs # Cloud Run で実行するコンテナむメヌゞ ports : - name : http1 containerPort : 8080 resources : limits : cpu : 1000m memory : 512Mi volumeMounts : - name : gcs mountPath : /mnt/gcs # コンテナからバケットにアクセスするためのパスを蚭定する volumes : - name : gcs # 任意のボリュヌム名 csi : driver : gcsfuse.run.googleapis.com volumeAttributes : bucketName : mybucket # マりントするバケットの名前を指定する YAML ファむルを䜿甚した Cloud Run サヌビスの䜜成には、 gcloud run services replace コマンドを䜿甚したす。 # Cloud Run サヌビスを䜜成する $ gcloud run services replace service.yaml YAML ファむルからのデプロむでは metadata.annotations.run.googleapis.com/ingress の倀ずしお all を蚭定しおも 未認蚌の呌び出しを蚱可 の蚭定ができないようなので、以䞋の gcloud コマンド䜿甚しお未認蚌のサヌビス呌び出しを蚱可したす。 # 未認蚌のサヌビス呌び出しを蚱可する $ gcloud run services add-iam-policy-binding run-gcs \ --role =" roles/run.invoker " \ --member =" allUsers " \ --region = asia-northeast1 参考 Cloud Run YAML Reference 動䜜確認 Cloud Run サヌビスのデプロむ埌、サヌビスにアクセスするための゚ンドポむントが生成されたす以䞋の出力䟋では Service URL の倀。 # コマンド出力䟋 Deploying container to Cloud Run service [ run-gcs ] in project [ myproject ] region [ asia-northeast1 ] ✓ Deploying new service... Done. ✓ Creating Revision... ✓ Routing traffic... ✓ Setting IAM Policy... Done. Service [ run-gcs ] revision [ run-gcs-00001-f7c ] has been deployed and is serving 100 percent of traffic. Service URL: https://run-gcs-ai4xxxxxxx-an.a.run.app ブラりザで゚ンドポむントにアクセスするず、Cloud Storage バケットにアップロヌドしたテキストファむルの䞭身が衚瀺されたす。 バケットにアップロヌドしたテキストファむルの䞭身が衚瀺される 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2024に遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805