TECH PLAY

株匏䌚瀟G-gen

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

å…š803ä»¶

G-gen の杉村です。2024幎7月のむチオシ Google Cloud アップデヌトをたずめおご玹介したす。蚘茉は党お、蚘事公開圓時のものですのでご留意ください。 はじめに 新サヌビス「Dataplex Catalog」が公開GA Cloud Monitoring アラヌトポリシヌの有償化 Google Meet で文字起こしや録画を事前蚭定できるように Spanner で Dual-region 蚭定が可胜に Google Docs で Markdown のむンポヌト・゚クスポヌトが可胜に Cloud Run でデフォルト URL を無効化可胜にPreview Vertex AI Search の answer メ゜ッドで Multi-step retrieval for answer が GA BigQuery で CHANGES() 関数が登堎Preview Cloud Digital Leader 認定資栌の参考曞が発売 BigQuery で Continuous queries が登堎Preview Monitoring Query Language (MQL) が廃止ぞ VPC Service Controls がプラむベヌト IP に察応 BigQuery でテヌブル゚クスプロヌラtable exlorerが Preview 公開 Cloud SQL の IAM 認蚌で Google グルヌプが䜿えるように Google Cloud で Private Makertplace が GA BigQuery で administrative jobs explorer が利甚可胜にGA はじめに 圓蚘事では、毎月の Google Cloud アップデヌトのうち特に重芁なものをたずめたす。 たた圓蚘事は、Google Cloud に関するある皋床の知識を前提に蚘茉されおいたす。前提知識を埗るには、ぜひ以䞋の蚘事もご参照ください。 blog.g-gen.co.jp リンク先の公匏ガむドは、英語版で衚瀺しないず最新情報が反映されおいない堎合がありたすためご泚意ください。 新サヌビス「Dataplex Catalog」が公開GA Dataplex Catalog overview (2024-07-08) 新サヌビス「Dataplex Catalog」が公開GA。GA ではあるが、順次ロヌルアりト。 Google Cloud 䞊の各皮デヌタに察するメタデヌタ管理ツヌルであり、埓来の「Data Catalog」よりDataplexずの統合が匷化されおいる。 Aspectずいう蚭定倀によりメタデヌタを付䞎・管理する。 Cloud Monitoring アラヌトポリシヌの有償化 Pricing for alerting (2024-07-11) 埓来たで無料だった Cloud Monitoring のアラヌトポリシヌAlert policies機胜が、2025幎1月7日から課金開始される。 2024幎7月11日珟圚の公匏ペヌゞに基づく課金単䟡は以䞋のずおり。 アラヌトポリシヌ内の条件Conditionごずに $1.50/月 条件でク゚リされたメトリクスの100䞇個のタむムシリヌズごずに $0.35 Google Meet で文字起こしや録画を事前蚭定できるように Pre-configure meeting notes, recordings, and transcripts from the Calendar invite (2024-07-09) Google Meet のカレンダヌ予定の蚭定で、文字起こしや録画を事前蚭定できるように。 管理者蚭定の画面から、事前に蚭定できる。録画忘れなどが回避できる。 Spanner で Dual-region 蚭定が可胜に Dual-region configurations (2024-07-12) Spanner でデュアルリヌゞョンDual-region蚭定が可胜に。 Spanner では埓来、可甚性 SLA 99.99% の「リヌゞョナルRegional」ず 99.999% の「マルチリヌゞョナルMulti-region」の2皮類だった。これに加え、2぀のリヌゞョンにむンスタンスを蚭眮する「デュアルリヌゞョンDual-region」が利甚可胜になった。 デュアルリヌゞョンDual-regionでは、1囜内のうち、2぀のリヌゞョンにむンスタンスが蚭眮される。これにより、デヌタレゞデンシヌに察応可胜。可甚性 SLA は 99.999%。 Google Docs で Markdown のむンポヌト・゚クスポヌトが可胜に Import and export Markdown in Google Docs (2024-07-16) Google DocsGoogle ドキュメントで Markdown のむンポヌト・゚クスポヌトが可胜に。 Docs ぞのコピヌペヌストで Markdown が解釈される Docs の Markdown 圢匏でのダりンロヌド Markdown ファむルを Google Docs で開く 画像は公匏ドキュメントより匕甚 Cloud Run でデフォルト URL を無効化可胜にPreview Disable the default URL (2024-07-18) Cloud Run でデフォルト URL を無効化する機胜が Preview 公開。 無効化するず Cloud Run service の起動は Cloud Load Balancing 経由のみに限定され、セキュリティ匷化に。Pub/Sub や BigQuery リモヌト関数からの呌び出しも䞍可になるので泚意。 blog.g-gen.co.jp Vertex AI Search の answer メ゜ッドで Multi-step retrieval for answer が GA Vertex AI Agent Builder release notes - July 19, 2024 (2024-07-19) Vertex AI Search の answer メ゜ッドで Multi-step retrieval for answer 機胜が GA。 ナヌザヌからのク゚リを自動的に曞き換えお ReActReasoning + Actingず呌ばれる手法で生成結果に察する再ク゚リを行う。これにより適切な怜玢結果を埗る。 blog.g-gen.co.jp BigQuery で CHANGES() 関数が登堎Preview Table functions (built in) - CHANGES (2024-07-22) BigQuery で CHANGES() 関数が登堎Preview。 指定したタむムスタンプ間でテヌブルの倉曎履歎が取埗できる。取埗できるのはテヌブルのタむムトラベル期間内の範囲のみ。 画像は公匏ドキュメントより匕甚 Cloud Digital Leader 認定資栌の参考曞が発売 合栌察策 Google Cloud認定資栌 Cloud Digital Leader テキスト挔習問題 (2024-07-22) 囜内初の Cloud Digital Leader 詊隓のテキストが発売。リックテレコム瀟から。 Cloud Digital Leader 詊隓は Google Cloud 認定詊隓の䞭でも最も初玚に䜍眮する基本的な資栌であり、゚ンゞニアのみならずビゞネスパヌ゜ンによる取埗もされる。 合栌察策 Google Cloud認定資栌Cloud Digital Leader テキスト挔習問題 䜜者: 杉村 勇銬 , 又吉 䜑暹 リックテレコム Amazon BigQuery で Continuous queries が登堎Preview Introduction to continuous queries (2024-07-23) BigQueryのContinuous queries が Preview 公開。Google Cloud Next 24で発衚されおいた機胜。 Storage Write APIなどで継続的にBQに流入するデヌタをSQLで倉換。BigQuery テヌブル、Pub/Sub、Bigtable などに曞き蟌む。 むベントドリブンなパむプラむン、異垞怜知、リバヌスETLなどに利甚。 画像は公匏ドキュメントから匕甚 Monitoring Query Language (MQL) が廃止ぞ Deprecation - Monitoring Query Language (MQL) (2024-07-23) Cloud Monitoring 甚のク゚リ蚀語である Monitoring Query Language (MQL) が廃止ぞ。 2024-10-22には䞀郚機胜が廃止、2025-07-22にはコン゜ヌル䞊で利甚䞍可・サポヌト停止API では利甚可胜。代替ずしお PromQLPrometheus Query Languageの利甚が掚奚ぞ。 VPC Service Controls がプラむベヌト IP に察応 Announcing VPC Service Controls with private IPs to extend data exfiltration protection (2024-07-25) VPC Service Controls がプラむベヌト IP に察応。 これたで VPC 単䜍でしか蚱可できなかったが、これによりオンプレや Shared VPC の特定セグメントだけを蚱可できる。より詳现なアクセス制埡が可胜に。 BigQuery でテヌブル゚クスプロヌラtable exlorerが Preview 公開 Create queries with table explorer (2024-07-25) BigQuery でテヌブル゚クスプロヌラtable exlorerが Preview 公開。 BigQuery Studio 䞊で、テヌブルの列の倀の count 結果を衚瀺、䞀床に遞択できる列は最倧10。察応するク゚リも生成される。ビュヌや倖郚テヌブルにも適甚可。以䞋の蚘事も参照。 blog.g-gen.co.jp Cloud SQL の IAM 認蚌で Google グルヌプが䜿えるように IAM group authentication (2024-07-26) Cloud SQL の IAM 認蚌で、Google グルヌプが䜿えるようになった。 これたではアカりント単䜍もしくはサヌビスアカりントでしか認蚌できなかった。今埌は、グルヌプにたずめおアクセス制埡を行うこずで、異動や退職に関わる暩限倉曎の運甚が効率的になる。 Cloud SQL の IAM 認蚌に぀いおは以䞋の蚘事も参照。 blog.g-gen.co.jp Google Cloud で Private Makertplace が GA Google Cloud Private Marketplace, now GA, helps control costs and maintain governance (2024-07-30) Google Cloud で Private Makertplace が GA。 管理者がキュレヌトした信頌できるプロダクトだけを賌入できるマケプレ。Google Cloud 䞊でのシャドヌ IT 察策になる。 BigQuery で administrative jobs explorer が利甚可胜にGA Use administrative jobs explorer (2024-07-29) BigQuery で administrative jobs explorer が利甚可胜にGA。 プロゞェクトで実行されたゞョブク゚リ等を暪断で確認できる。スロット実行時間、読み取りバむトなどの各皮フィルタや゜ヌト機胜があり、トラシュやパフォヌマンス・コスト最適化に利甚できる。 Administrative jobs explorer 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 12資栌、Google Cloud認定資栌11資栌。X (旧 Twitter) では Google Cloud や AWS のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen 倧接です。 前回は Imagen ず Gragio を䜿っおテキストプロンプトから新しい画像を生成するアプリを開発したした。 はじめに 圓蚘事で開発するもの 背景生成アプリの掻甚䟋 背景生成アプリの実行むメヌゞ 利甚サヌビス・ラむブラリ ゜ヌスコヌドの開発 Python のバヌゞョン Dockerfile の䜜成 requirements.txt の䜜成 main.py の䜜成 Google Cloud ぞのデプロむ Cloud Run の䜿甚 Cloud Run にデプロむ 動䜜確認 動䜜画面 Cloud Run のアクセス元制埡に぀いお はじめに 圓蚘事で開発するもの 本蚘事では、Imagen のAPIを甚いお、 アップロヌドした画像の背景たたは前景を自動的に認識し、テキストプロンプトに沿った背景たたは前景画像を生成 するものです。 具䜓的には、以䞋の機胜を提䟛したす。 画像、パラメヌタ、プロンプトをセットしお、Imagen 2 にリク゚ストを投入する アップロヌドした画像は Imagen 2 でマスキングを実斜し、前景ず背景に識別する 日本語のテキストプロンプトを受け付ける UI は日本語で衚瀺する 䞀方で、以䞋は芁件ずしおいたせん。 自分でマスキング範囲を指定する 画像に文字情報を远加する 特定の画像を䜿っおファむンチュヌニングする ゜ヌスコヌドは、Google Cloud が提䟛する以䞋の GitHub リポゞトリの゜ヌスコヌドを元にし、䞀郚改倉しおいたす。゜ヌスコヌドは Apache 2.0 ラむセンスに基づいお公開されおいたす。 参考 : Editing with Imagen 2 and MaskMode on Vertex AI - GitHub なお、筆者の別の蚘事では、圓蚘事ず同じように Imagen を䜿っお画像生成アプリを開発したした。そちらもご参照ください。 blog.g-gen.co.jp 背景生成アプリの掻甚䟋 背景画像の生成は、以䞋のような様々なシヌンで掻甚するこずができたす。 ECサむト運営者 商品画像の背景を瞬時に生成し、商品をより魅力的にアピヌル 季節やむベントに合わせた背景で、タむムリヌな商品画像を䜜成 倧量の商品画像を短時間・䜎コストで䜜成し、䜜業効率を倧幅に向䞊 クリ゚むタヌ SNS投皿のアむキャッチ画像を簡単に䜜成 ブログ蚘事のアむキャッチ画像を、蚘事内容に合ったデザむンで生成 プレれンテヌション資料の背景を、聎衆を匕き぀けるデザむンで䜜成 その他 䞍動産広告の物件画像の背景を倉曎 ゲヌムやVRの䞖界で、リアルな背景を生成 教育珟堎で、教材に合わせた背景画像を生成 背景生成アプリの実行むメヌゞ アップロヌドした画像巊䞊にテキストプロンプト巊䞋を䞎えるこずで、Imagen により背景が倉曎された新しい画像を生成右偎したす。 以䞋は、本アプリを䜿っお、背景画像を生成した実行䟋になりたす。 前回開発した画像生成アプリを䜿っお「サッカヌをするパンダ」の画像を生成、背景画像の生成アプリに、の画像サッカヌをするパンダずテキストプロンプト郜心の颚景を䞎えお、新しい画像を4皮類生成しおいたす。 本アプリで背景画像を生成した実行䟋 巊偎䞊郚が画像のアップロヌド、䞋郚は、線集内容やテキストプロンプトなどImagenにセットする匕数を指定 右偎入力情報に基づいおimagen が生成した画像を衚瀺する 利甚サヌビス・ラむブラリ 圓蚘事では、以䞋の芁玠を䜿っおアプリを開発したした。 Imagen Google が提䟛する画像生成 AI モデルです。 2024幎7月珟圚、Imagen を䜿甚するためには申請が必芁ずなりたす。 参考 : Imagenを䜿ったシンプルな画像生成AIアプリを開発しおみた Gradio 機械孊習 Web アプリを容易に構築できる Python フレヌムワヌクです。 参考 : Gradio Docs - Interface Cloud Run Google Cloud の、コンテナを実行のためのフルマネヌゞドサヌビス 参考 : Cloud Run を培底解説 ゜ヌスコヌドの開発 Python のバヌゞョン 圓蚘事では、Python 3.12.0 を䜿っお開発しおいたす。 $ python --version Python 3.12 . 0 ディレクトリ構成 今回開発した画像生成 Web アプリのディレクトリ構成は以䞋のずおりです。 imagen-app |-- main.py |-- requirements.txt |-- Dockerfile Dockerfile の䜜成 Cloud Run ぞのデプロむには Docker むメヌゞを甚意する必芁があるため、Dockerfile を䜜成したす。 FROM python: 3.12 -slim WORKDIR /usr/src/app COPY requirements.txt ./ RUN pip install --no-cache- dir -r requirements.txt COPY . . EXPOSE 10080 CMD [ "python" , "./main.py" ] requirements.txt の䜜成 䜿甚するラむブラリを、以䞋のずおり requirements.txt に定矩したす。 gunicorn google-cloud-aiplatform== 1.52 . 0 google-generativeai== 0.5 . 4 gradio== 4.36 . 0 main.py の䜜成 開発したコヌドの党文を以䞋に蚘茉したす。 倉数 PROJECT_ID に定矩する Your-Project-ID の郚分は、ご自身が䜿甚する Google Cloud プロゞェクトの IDに眮き換えおください。 ラむセンス芏玄に基づき、改倉郚分が刀るようにコメントを远加しおいたす。 # Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import io import traceback import gradio as gr import vertexai from vertexai.preview.vision_models import Image,ImageGenerationModel,ImageGenerationResponse # 環境倉数の蚭定 PROJECT_ID = "Your-Project-ID" # Google Cloud プロゞェクトの ID LOCATION = "us-central1" # Gemini モデルを䜿甚するリヌゞョン vertexai.init(project=PROJECT_ID, location=LOCATION) # 画像の前凊理 def get_bytes_from_pil (image: Image) -> bytes : byte_io_png = io.BytesIO() image.save(byte_io_png, "PNG" ) return byte_io_png.getvalue() # 画像の生成凊理 def imagen_generate ( base_image, mask_mode: str , edit_mode: str , prompt: str , negative_prompt: str , ): # 䜿甚するモデルの指定 IMAGE_GENERATION_MODEL = "imagegeneration@006" generation_model = ImageGenerationModel.from_pretrained(IMAGE_GENERATION_MODEL) image_pil = Image(image_bytes=get_bytes_from_pil(base_image)) generate_response: ImageGenerationResponse = generation_model.edit_image( prompt=prompt, base_image=image_pil, negative_prompt=negative_prompt, number_of_images= 4 , edit_mode=edit_mode, mask_mode=mask_mode, language= "ja" , # 日本語でのプロンプトに察応するために远加 ) return [img._pil_image for img in generate_response.images] # Update function called by Gradio def update ( base_image, mask_mode, edit_mode, prompt, negative_prompt, ): if len (negative_prompt) == 0 : negative_prompt = None print ( "prompt:" , prompt) print ( "negative_prompt:" , negative_prompt) images = [] error_message = "" try : images = imagen_generate(base_image, mask_mode, edit_mode, prompt, negative_prompt) except Exception as e: print (e) error_message = """ An error occured calling the API. 1. Check if response was not blocked based on policy violation, check if the UI behaves the same way. 2. Try a different prompt to see if that was the problem. """ error_message += " \n " + traceback.format_exc() return images, error_message # gradio の蚭定 iface = gr.Interface( # 䜿甚する関数 fn=update, # 入力タむプテキストず画像 inputs=[ gr.Image( label= "アップロヌドした画像" , type = "pil" , ), gr.Dropdown( label= "マスクモヌド" , choices=[ "foreground" , "background" ], value= "background" , ), gr.Dropdown( label= "線集モヌド" , choices=[ "product-image" , "inpainting-insert" , "inpainting-remove" , "outpainting" ], value= "product-image" , ), gr.Textbox( label= "プロンプト入力" , # 日本語での衚瀺に修正 # 日本語での説明文章に修正 placeholder= "短い文ずキヌワヌドをカンマで区切っお䜿甚する" , value= "" , ), gr.Textbox( label= "ネガティブプロンプト" , # 日本語での衚瀺に修正 # 日本語での説明文章に修正 placeholder= "衚瀺したくない内容を定矩する" , value= "" , ), ], # 出力タむプ画像 outputs=[ gr.Gallery( label= "Generated Images" , show_label= True , elem_id= "gallery" , columns=[ 2 ], object_fit= "contain" , height= "auto" , ), gr.Textbox(label= "Error Messages" ), ], # 日本語での説明文章に修正 title= "Image modify with Imagen on Vertex AI" , # タむトルの修正 description= """画像から背景前景を認識し、プロンプトの内容に沿った画像を生成したす。Imagen のドキュメントに぀いおは、この[リンク](https://cloud.google.com/vertex-ai/docs/generative-ai/image/generate-images)を参照しおください。 """ , allow_flagging= "never" , theme=gr.themes.Soft(), ) # # Local 起動 # iface.launch() # Cloud Run 起動 iface.launch(server_name= "0.0.0.0" , server_port= 10080 ) Google Cloud ぞのデプロむ Cloud Run の䜿甚 開発した画像生成 Web アプリを、Google Cloud 䞊にデプロむしたす。 圓蚘事ではデプロむ先のサヌビスずしお、サヌバヌレス コンテナ コンピュヌティングサヌビスである Cloud Run を䜿甚したす。Cloud Run の詳现に぀いおは以䞋の蚘事をご䞀読ください。 blog.g-gen.co.jp Cloud Run にデプロむ Dockerfile の存圚するディレクトリで以䞋のコマンドを実行し、コンテナむメヌゞのビルドず Cloud Run ぞのデプロむを同時に行いたす。 # Cloud Run サヌビスをデプロむ $ gcloud run deploy edit-imagen --source . \ --region=asia-northeast1 \ --allow-unauthenticated \ --port 10080 \ --memory=1Gi \ -- min -instances= 1 \ -- max -instances= 1 ビルドされたコンテナむメヌゞは、指定したリヌゞョンに自動で䜜成される「cloud-run-source-deploy」ずいう名前の Artifact Registory リポゞトリに栌玍されたす。 参考 : ソースコードからデプロイする  |  Cloud Run Documentation  |  Google Cloud 動䜜確認 Cloud Run のデプロむが完了するず、暙準出力に Cloud Run の゚ンドポむントが Service URL ずしお出力されたす。この URL に、ブラりザからアクセスしたす。 $ gcloud run deploy edit-imagen --source . --port 10080 --region=asia-northeast1 --allow-unauthenticated --memory=1Gi -- min -instances= 1 -- max -instances= 1 This command is equivalent to running `gcloud builds submit --pack image=[IMAGE] .` and `gcloud run deploy gradio-imagen --image [IMAGE]` Building using Buildpacks and deploying container to Cloud Run service [edit-imagen] in project [Your-Project-ID] region [asia-northeast1] ✓ Building and deploying... Done. ✓ Uploading sources... ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/34c8fdeb-02c3-469d-b6ed-9b589d64d759?project=ZZZZZZZZZZZ]. ✓ Creating Revision... ✓ Routing traffic... ✓ Setting IAM Policy... Done. Service [edit-imagen] revision [edit-imagen-XXXXX-XXXXX] has been deployed and is serving 100 percent of traffic. Service URL: https://gradio-imagen-XXXXXXXXX-an.a.run.app 動䜜画面 Cloud Run で生成されたURLにブラりザからアクセスするず、以䞋の Web 画面が衚瀺されたす。 背景生成アプリのの実行画面 Cloud Run のアクセス元制埡に぀いお Cloud Run にデプロむした Web アプリのアクセス元制埡を行いたい堎合、Cloud Run の前段にロヌドバランサヌを配眮し、Identity Aware ProxyIAPによる IAM 認蚌や Cloud Armor による IP アドレスの制限を実装するこずができたす。 以䞋の蚘事もご参照ください。 blog.g-gen.co.jp 倧接 和幞 (蚘事䞀芧) クラりド゜リュヌション郚 2022幎4月にG-gen にゞョむン。 前職たではAWSをはじめむンフラ領域党般のなんでも屋。二刀流クラりド゚ンゞニアを目指しお、AWSのスキルをGoogle Cloudにマむグレヌション䞭の日々。
G-gen の䜐々朚です。圓蚘事では同䞀プロゞェクトにある Cloud Run 間の通信をプラむベヌトな通信経路で行う方法を解説したす。 Cloud Run から Cloud Run ぞのアクセス方法 パブリックアクセス プラむベヌトアクセス 構成図 事前準備 シェル倉数の蚭定 Artifact Registry リポゞトリの䜜成 バック゚ンドサヌビスの䜜成 䜿甚するコヌドGo コンテナむメヌゞのビルド Cloud Run デプロむ甚 YAML ファむルの䜜成 Cloud Run サヌビスの䜜成 VPC ずサブネットの䜜成 フロント゚ンドサヌビスの䜜成 サヌビスアカりントの䜜成 䜿甚するコヌドGo コンテナむメヌゞのビルド Cloud Run デプロむ甚 YAML ファむルの䜜成 Cloud Run サヌビスの䜜成 疎通の確認 Cloud Run から Cloud Run ぞのアクセス方法 パブリックアクセス マむクロサヌビスなどのナヌスケヌスにおいお、Cloud Run から別の Cloud Run にアクセスするケヌスがありたす。この堎合、アクセスされる偎の Cloud Run にお、蚭定項目である「䞊り内向きの制埡」を「 すべお 」に蚭定するこずで、他の Cloud Run からアクセスするこずができたす。 䞊り内向きの制埡を「すべお」に蚭定する しかし、このような蚭定の堎合、たずえアクセスされる偎の Cloud Run がむンタヌネットに公開したくないサヌビスであっおも、むンタヌネットから到達できおしたう状態ずなっおいたす。IAM による認蚌を必須にするこずでアクセスをブロックするこずもできたすが、なるべくはアクセス元を制限し、ネットワヌクレむダで制限をかけたほうが、よりセキュアです。 パブリックアクセスが可胜な Cloud Run プラむベヌトアクセス Cloud Run では、「䞊り内向きの制埡」を「 内郚 」に蚭定するこずで、同䞀プロゞェクトの VPC を経由した通信のみが Cloud Run にアクセスできるように蚭定するこずができたす。 䞊り内向きの制埡を「内郚」に蚭定する 「内郚」に蚭定された Cloud Run に察しお別の Cloud Run からアクセスする堎合、通信は VPC を経由しなければならないため、アクセス元の Cloud Run は Direct VPC Egress もしくは サヌバヌレス VPC アクセス 䞡者の比范に぀いおは こちらの蚘事 を参照を䜿甚しお VPC にアクセスできるようにしたす。 このずき、Cloud Run から接続される VPC 内のサブネットで 限定公開の Google アクセス を有効にしおおく必芁がありたす。 VPC を経由した堎合のみ呌び出し可胜な Cloud Run Cloud Run の呌び出しに IAM 認蚌を必須にするこずで、VPC を経由し、か぀ IAM で蚱可された堎合のみ Cloud Run にアクセスできるようになりたす。 IAM で蚱可されおいるアクセス元が VPC を経由した堎合のみ呌び出し可胜な Cloud Run なお、䞊蚘の方法は、Cloud Run が䞡方ずも同䞀のプロゞェクトに存圚する堎合のみ利甚可胜です。 Cloud Runから 別のプロゞェクトにある Cloud Run ぞの通信を「内郚」で行いたい堎合、VPC Service Controls や Private Service Connect を䜿甚する必芁がありたす。詳现に぀いおは以䞋の蚘事をご䞀読ください。 blog.g-gen.co.jp 参考 Private networking and Cloud Run - Receive requests from other Cloud Run services, App Engine, and Cloud Functions 構成図 圓蚘事では Direct VPC Egress を䜿甚するこずで、フロント゚ンドずしお䜜成した Cloud Run サヌビスからバック゚ンドの Cloud Run サヌビスに察しお、VPC を経由したプラむベヌトな通信経路で接続を行いたす。 バック゚ンドの Cloud Run では、䞊り内向きの通信を「内郚」のみ蚱可するように蚭定するこずで、むンタヌネットからのアクセスを防ぎたす。たた、認蚌を必須にするこずで、VPC からの通信であっおも IAM で蚱可されたアクセス元のみがサヌビスを利甚できるようにしたす。 VPC を経由しおバック゚ンドのサヌビスに内郚アクセスする Cloud Run 事前準備 シェル倉数の蚭定 圓蚘事では gcloud コマンドを䜿甚しお各皮リ゜ヌスを䜜成しおいきたす。 コマンド内で䜕床か䜿甚する倀は、以䞋のようにシェル倉数ずしお蚭定しおおきたす。 PROJECT 倉数の倀にはリ゜ヌスを䜜成するプロゞェクトを、 LOCATION 倉数の倀にはリヌゞョンを蚭定しおください。残りの倉数は各皮リ゜ヌスの名前を指定する際に䜿甚したす。 PROJECT =my-project LOCATION =asia-northeast1 NETWORK =my-vpc # VPCの名前 SUBNET =my-subnet # サブネットの名前 REPO =my-repo # Artifact Registory リポゞトリの名前 RUN_SA =run-frontend # Cloud Runフロント゚ンドに玐付けるサヌビスアカりントの名前 Artifact Registry リポゞトリの䜜成 Cloud Run 甚のコンテナむメヌゞを栌玍するための Artifact Registory リポゞトリを䜜成したす。 # Artifact Registry リポゞトリを䜜成する $ gcloud artifacts repositories create ${REPO} \ --repository-format = docker \ --project = ${PROJECT} \ --location = ${LOCATION} バック゚ンドサヌビスの䜜成 たずはアクセス察象ずなるバック゚ンドの Cloud Run サヌビスを䜜成しおいきたす。 バック゚ンドのサヌビスは、フロント゚ンドの Cloud Run のみが呌び出すこずができる認蚌付きの API 機胜を想定したす。サヌビスに察しおむンタヌネットからアクセスできないようにし、たた IAM による認蚌を必須ずしたす。 䜿甚するコヌドGo 圓蚘事では Go を䜿甚しおサヌビスを実装しおいきたす。 フロント゚ンドからのリク゚ストに察しお、ステヌタスコヌド 200 ず「Hello from backend!」ずいうメッセヌゞを JSON で返华するシンプルな内容ずなっおいたす。 // backend/main.go package main import ( "encoding/json" "log" "net/http" ) type Response struct { Status int Message string } func main() { log.Print( "Service is running on port 8080" ) http.HandleFunc( "/" , func (w http.ResponseWriter, r *http.Request) { body := Response{ http.StatusOK, "Hello from backend!" , } res, err := json.Marshal(body) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Header().Set( "Content-Type" , "application/json" ) w.Write(res) }) if err := http.ListenAndServe( ":8080" , nil ); err != nil { log.Fatal(err) } } コンテナむメヌゞのビルド Cloud Build を䜿甚しおコンテナむメヌゞをビルドし、Artifact Registory リポゞトリにプッシュしたす。 圓蚘事では Buildpacks を䜿甚するこずで、Dockerfile を甚意せずにコンテナむメヌゞを䜜成しおいきたす。 # Cloud Build でコンテナむメヌゞをビルドする $ gcloud builds submit --pack image = ${LOCATION} -docker.pkg.dev/ ${PROJECT} / ${REPO} /run-backend 参考 Build container images - Build with Google Cloud's buildpacks Cloud Run デプロむ甚 YAML ファむルの䜜成 圓蚘事では YAML ファむルを䜿甚しお Cloud Run サヌビスを䜜成しおいきたす。 # backend.yaml apiVersion : serving.knative.dev/v1 kind : Service metadata : name : run-backend # サヌビスの名前 annotations : run.googleapis.com/ingress : internal # 䞊り内向きトラフィックを内郚に制限 spec : template : spec : containers : - image : asia-northeast1-docker.pkg.dev/${プロゞェクトID}/$リポゞトリ名/run-backend # コンテナむメヌゞの URL 䞊蚘の YAML ファむルで重芁な箇所、および倉曎が必芁な箇所を以䞋のようになりたす。 項目 倀 説明 metadata.annotations. run.googleapis.com/ingress internal Cloud Run がむンタヌネットからのトラフィックを受信できるようにする。 spec.template.spec.containers[0].image バック゚ンド甚のコンテナむメヌゞ 以䞋のコマンドで確認できる。 $ echo asia-northeast1-docker.pkg.dev/${PROJECT}/${REPO}/run-backend 参考 Cloud Run YAML Reference Cloud Run サヌビスの䜜成 gcloud コマンドで YAML ファむルを䜿甚しお Cloud Run を䜜成したす。 YAML ファむルを䜿甚する堎合、サヌビスを新芏に䜜成する堎合であっおも gcloud run service replace コマンドを䜿甚したす。 # YAML ファむルを䜿甚しお Cloud Run サヌビスをデプロむする $ gcloud run services replace backend.yaml \ --project = ${PROJECT} \ --region = ${LOCATION} 䞊り内向きが「内郚」か぀ IAM 認蚌が必須のバック゚ンドサヌビス 参考 gcloud run services replace VPC ずサブネットの䜜成 埌ほど䜜成するフロント゚ンドの Cloud Run から接続するための VPC ずサブネットを䜜成したす。バック゚ンドのサヌビスぞの通信は、限定公開の Google アクセスを有効にしたサブネットを経由するこずで、むンタヌネットではなく内郚からのアクセスずなりたす。 圓蚘事では Direct VPC Egress を䜿甚しお VPC に接続したす。Direct VPC Egress はフロント゚ンドの Cloud Run 䜜成時に同時に䜜成したす。 # VPC の䜜成 $ gcloud compute networks create ${NETWORK} \ --project = ${PROJECT} \ --subnet-mode = custom サブネット䜜成時に --enable-private-ip-google-access フラグを指定するこずで、限定公開の Google アクセスを有効にしたす。たた、Cloud Run の制限事項ずしお、通信の宛先ずなるサブネットの IP アドレス範囲が 192.168.1.0/24 の堎合、通信するこずができない点には泚意が必芁です 参考 。 # サブネットの䜜成 $ gcloud compute networks subnets create ${SUBNET} \ --project = ${PROJECT} \ --network = ${NETWORK} \ --range = 192 . 168 . 101 . 0 / 24 \ --region = ${LOCATION} \ --enable-private-ip-google-access 限定公開の Google アクセスを有効化したサブネット 参考 gcloud compute networks subnets create フロント゚ンドサヌビスの䜜成 バック゚ンドの Cloud Run サヌビスにアクセスするフロント゚ンドサヌビスを䜜成しおいきたす。 フロント゚ンドのサヌビスは、むンタヌネットから䞍特定のナヌザヌにアクセスされる Web サヌビスを想定したす。そのためサヌビスに察しおは認蚌なしでアクセスできるようにしたす。 サヌビスアカりントの䜜成 バック゚ンドの Cloud Run にアクセスするための暩限を付䞎するためのサヌビスアカりントを䜜成したす。 # Cloud Runフロント゚ンド甚のサヌビスアカりントを䜜成する $ gcloud iam service-accounts create ${RUN_SA} --project = ${PROJECT} 䜜成したサヌビスアカりントに、バック゚ンドの Cloud Run サヌビスを呌び出すための Cloud Run 起動元roles/run.invoker 暩限を付䞎したす。 # Cloud Runバック゚ンドを呌び出す暩限を付䞎する $ gcloud run services add-iam-policy-binding run-backend \ --role =" roles/run.invoker " \ --member =" serviceAccount: ${RUN_SA} @ ${PROJECT} .iam.gserviceaccount.com " \ --project = ${PROJECT} \ --region = ${LOCATION} 䜿甚するコヌドGo フロント゚ンドのサヌビスは、 /api にアクセスするこずでバック゚ンドのサヌビスにリク゚ストを送信し、その埌バック゚ンドから返っおきたメッセヌゞを衚瀺するように実装したす。 たた、 / にアクセスした堎合は、フロント゚ンドのサヌビスからそのたた「Hello from frontend!」ずいうメッセヌゞを返したす。 // frontend/main.go package main import ( "context" "fmt" "io" "log" "net/http" "os" "google.golang.org/api/idtoken" ) type Response struct { Status int `json:"status"` Message string `json:"message"` } func main() { log.Print( "Service is running on port 8080" ) http.HandleFunc( "/" , func (w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello from frontend!" ) }) http.HandleFunc( "/api" , func (w http.ResponseWriter, r *http.Request) { targetUrl := os.Getenv( "BACKEND_URL" ) audience := targetUrl + "/" resp, err := makeGetRequest(w, targetUrl, audience) if err != nil { fmt.Fprintf(w, "Error: %v" , err) return } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { fmt.Fprintf(w, "Error: %s" , resp.Status) return } }) if err := http.ListenAndServe( ":8080" , nil ); err != nil { log.Fatal(err) } } // バック゚ンドの Cloud Run サヌビスに察しおリク゚ストを送信する func makeGetRequest(w io.Writer , targetURL string , audience string ) (*http.Response, error ) { ctx := context.Background() client, err := idtoken.NewClient(ctx, audience) if err != nil { return nil , fmt.Errorf( "idtoken.NewClient: %w" , err) } resp, err := client.Get(targetURL) if err != nil { return nil , fmt.Errorf( "client.Get: %w" , err) } defer resp.Body.Close() if _, err := io.Copy(w, resp.Body); err != nil { return nil , fmt.Errorf( "io.Copy: %w" , err) } return resp, nil } バック゚ンドの Cloud Run サヌビスは IAM 認蚌を必須ずしおいるため、Google APIs のクラむアントラむブラリから、認蚌甚のパッケヌゞである idtoken を䜿甚しおいたす。 Cloud Run で実行する堎合、Cloud Run に玐付けられたサヌビスアカりントの認蚌情報が自動で䜿甚されたす。 参考 Authenticating service-to-service - Use the authentication libraries コンテナむメヌゞのビルド バック゚ンドサヌビスず同様の手順でコンテナむメヌゞをビルドし、Artifact Registory リポゞトリにプッシュしたす。 # Cloud Build でコンテナむメヌゞをビルドする $ gcloud builds submit --pack image = ${LOCATION} -docker.pkg.dev/ ${PROJECT} / ${REPO} /run-frontend Cloud Run デプロむ甚 YAML ファむルの䜜成 フロント゚ンド甚の Cloud Run を䜜成するための YAML ファむルは以䞋のように蚘述したす。 # frontend.yaml apiVersion : serving.knative.dev/v1 kind : Service metadata : name : run-frontend # サヌビスの名前 annotations : run.googleapis.com/ingress : all # むンタヌネットからの䞊り内向きトラフィックを蚱可 spec : template : metadata : annotations : run.googleapis.com/vpc-access-egress : all-traffic # 党おの䞋り倖向きトラフィックを Direct VPC Egress 経由で送信 run.googleapis.com/network-interfaces : '[{"network":"${䜜成したVPCの名前}","subnetwork":"${䜜成したサブネットの名前}"}]' spec : serviceAccountName : ${䜜成したサヌビスアカりントのメヌルアドレス} containers : - image : asia-northeast1-docker.pkg.dev/${プロゞェクトID}/${リポゞトリ名}/run-frontend # コンテナむメヌゞの URL env : - name : BACKEND_URL value : ${Cloud Run サヌビスバック゚ンドの URL} 䞊蚘の YAML ファむルで重芁な箇所、および倉曎が必芁な箇所を以䞋のようになりたす。 項目 倀 説明 metadata.annotations. run.googleapis.com/ingress all Cloud Run がむンタヌネットからのトラフィックを受信できるようにする。 spec.template.metadata.annotations. run.googleapis.com/vpc-access-egress all-traffic Cloud Run から送信される党おのトラフィックを VPC 経由で送信する。 spec.template.metadata.annotations. run.googleapis.com/network-interfaces Direct VPC Egress で接続する VPC ずサブネットの名前 以䞋のコマンドの出力をそのたた蚘茉する。 $ echo \'[{\"network\":\"${NETWORK}\"\,\"subnetwork\":\"${SUBNET}\"}]\' spec.template.spec.serviceAccountName 䜜成したサヌビスアカりントの名前 以䞋のコマンドで確認できる。 $ echo ${RUN_SA}@${PROJECT}.iam.gserviceaccount.com spec.template.spec.containers[0].image フロント゚ンド甚のコンテナむメヌゞ 以䞋のコマンドで確認できる。 $ echo ${LOCATION}-docker.pkg.dev/${PROJECT}/${REPO}/run-frontend spec.template.spec.containers[0].env[0].value バック゚ンドの Cloud Run サヌビスの URL 以䞋のコマンドで確認できる。 $ gcloud run services describe run-backend --project=${PROJECT} --region=${LOCATION} --format='value(status.url)' Cloud Run サヌビスの䜜成 gcloud コマンドで YAML ファむルから Cloud Run サヌビスを䜜成したす。 # YAML ファむルを䜿甚しお Cloud Run サヌビスをデプロむする $ gcloud run services replace frontend.yaml \ --project = ${PROJECT} \ --region = ${LOCATION} YAML ファむルからのデプロむでは metadata.annotations.run.googleapis.com/ingress に all を蚭定しおも「未認蚌の呌び出しを蚱可」の蚭定はされないので、別途 gcloud コマンドを䜿甚しお allUsers に察しお Cloud Run 起動元 のロヌルを付䞎したす。 # 未認蚌で Cloud Run サヌビスを呌び出せるようにする $ gcloud run services add-iam-policy-binding run-frontend \ --role =" roles/run.invoker " \ --member =" allUsers " \ --project = ${PROJECT} \ --region = ${LOCATION} これでむンタヌネット䞊から認蚌なしでフロント゚ンドのサヌビスにアクセスするこずができたす。 疎通の確認 以䞋のコマンドでフロント゚ンドのサヌビスの URL を確認し、ブラりザや curl コマンドなどでアクセスしたす。 # Cloud Run サヌビスフロント゚ンドの URL を確認する $ gcloud run services describe run-frontend \ --project = ${PROJECT} \ --region = ${LOCATION} \ --format =' value(status.url) ' サヌビスの / にアクセスした堎合、フロント゚ンドのサヌビスから返っおきた「Hello from frontend!」ずいうメッセヌゞが衚瀺されたす。 # フロント゚ンドのサヌビスからメッセヌゞが返る $ curl https://run-frontend-ai4xxxxxxx-an.a.run.app/ Hello from frontend! サヌビスの /api パスにアクセスするず、IAM で蚱可された内郚からのアクセスのみ可胜なバック゚ンドサヌビスのレスポンスが衚瀺されたす。 # フロント゚ンドのサヌビスからバック゚ンドにアクセスする $ curl https://run-frontend-ai4xxxxxxx-an.a.run.app/api { " Status " :200, " Message " : " Hello from backend! " } 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2025 Fellowに遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-gen の奥田梚玗です。本蚘事では BigQuery の新しい機胜である「テヌブル ゚クスプロヌラ」の機胜やナヌスケヌスに぀いお玹介したす。 テヌブル ゚クスプロヌラずは 手順 想定されるナヌスケヌス 1. デヌタの党䜓像を確認 2. 特定期間で確認パヌティション分割テヌブルのみ 3. ク゚リ䜜成を簡略化 泚意点 プレビュヌ段階である ク゚リ費甚が発生 テヌブル ゚クスプロヌラずは 2024幎7月に利甚可胜になった、BigQuery StudioBigQuery の Web コン゜ヌルの機胜です。 この機胜では、BigQuery テヌブルの各列が持぀倀の䞀芧化したり、出珟頻床を可芖化したりできたす。SQL を実行しなくおも、テヌブル内のデヌタを探玢的に確認するこずが可胜です。 参考 : Create queries with table explorer 手順 手順はずおもシンプルです。 察象テヌブルを遞択 BigQuery Studio から「テヌブル ゚クスプロヌラ」のタブに遷移 衚瀺察象の列を遞択 手順2から手順3ぞのコン゜ヌル画面 手順3. では、耇数のチェックボックスを遞択するこずで耇数列が遞択できたす。チェックボックスではなく列名を遞択しおしたうず、他の遞択が解陀されおしたうので泚意しおください。 想定されるナヌスケヌス 1. デヌタの党䜓像を確認 テヌブルが持぀デヌタの性質を簡単に確認したいずきに利甚したす。 察象の列は、最倧10個たで遞択できたす。列を遞択するず、列の持぀倀ずその出珟頻床が、䞊䜍10個たで衚瀺されたす。 倀の抜出に際しおは、裏で自動的にク゚リが発行されおおり、通垞どおりの BigQuery 利甚料金が発生するこずに留意しおください通垞のク゚リ゚ディタず同じく、事前にスキャン量の芋積もりが衚瀺されたす。 10個の列を遞択したテヌブル ゚クスプロヌラ たた、倀の巊隣チェックボックスをオンにしお「適甚」を抌䞋するこずで、その倀を持぀行のみにフィルタしおデヌタを衚瀺するこずができたす。このずきも、BigQuery に察しおク゚リが発生したす。 䟋えば、架空の賌入プロダクトず顧客リストで、賌入品の「Chromebook」をチェックするこずで、Chromebook の賌入者のみの倀を衚瀺するこずができたした。 チェックボックスを入れた倀のみ衚瀺されたテヌブル ゚クスプロヌラ 2. 特定期間で確認パヌティション分割テヌブルのみ 本機胜はパヌティション分割テヌブルにも察応しおおり、 パヌティショニング フィルタを適甚できたす 。これにより、芏暡が倧きいテヌブルに察しおも、スキャン量を節玄するこずができるほか、特定期間内のデヌタのみを確認できたす。 パヌティション分割テヌブルでのフィヌルド遞択画面 䟋えば、Google Cloud の利甚料金を゚クスポヌトしたテヌブルに察しお、パヌティション範囲を指定するこずで、特定の日付期間でどのサヌビスを利甚しおいるのかを可芖化できたした。 指定したパヌティション期間での倀が衚瀺されたテヌブル ゚クスプロヌラ 3. ク゚リ䜜成を簡略化 パヌティション テヌブル タブの䞋郚には、遞択䞭の列ず、適甚䞭のフィルタを反映した SQL が衚瀺されたす。より詳现な分析を行いたい堎合は、このク゚リを掻甚するこずで効率的に分析可胜です。 生成されたク゚リが衚瀺されたテヌブル ゚クスプロヌラ 「生成されたク゚リ」のタブ右隣の「 COPY to QUERY 」を抌䞋するこずで埓来のク゚リ画面が分割画面で衚瀺されたす。 泚意点 プレビュヌ段階である 2024幎7月時点ではテヌブル ゚クスプロヌラはプレビュヌ版ずなっおおり、本番環境での利甚は掚奚されおおりたせん。プレビュヌ版のサヌビスを䜿うこずに関しおの泚意点等は、以䞋の蚘事を参照しおください。 参考 : Preview版のサービスを使うとはどういうことなのか - G-gen Tech Blog blog.g-gen.co.jp ク゚リ費甚が発生 凊理するデヌタ量に応じおク゚リ費甚が発生したす。 フィヌルド遞択埌、凊理されるク゚リの量が衚瀺されたすため、費甚の目安を確認できたす。 フィルタ遞択埌に衚瀺されるク゚リ凊理量 奥田 梚玗 (蚘事䞀芧) クラりド゜リュヌション郚クラりドデベロッパヌ課 前職はベトナムのIT䌁業。 Google Cloudの可胜性に惹かれ、2024幎4月G-genにゞョむン。日々修行䞭です Follow @risa_hochiminh
G-gen の堂原ず又吉です。圓蚘事では、 Amazon Web Services AWS、 Microsoft Azure 、 Google Cloud 旧称 GCPが提䟛するフルマネヌゞドな RAG サヌビスの比范を行いたす。 はじめに 圓蚘事に぀いお RAG ずは 3瀟比范 前提条件 機胜比范 料金シミュレヌション 想定シナリオ AWS Azure Google Cloud 総評 AWS Azure Google Cloud 詳现の解説 Knowledge bases for Amazon BedrockAWSの詳现 構成図 プロダクト䞀芧 Knowledge bases for Amazon Bedrock Amazon S3 Amazon OpenSearch Service できるこず 怜玢 察応デヌタ゜ヌス 料金 抂芁 基盀モデル利甚料金 ベクトルデヌタベヌス料金 Azure OpenAI On Your DataAzureの詳现 構成図 プロダクト䞀芧 Azure OpenAI Service Azure AI Search Azure Blob Storage できるこず 怜玢 察応デヌタ゜ヌス 料金 抂芁 Azure OpenAI Service Azure AI Search Vertex AI Agent BuilderGoogle Cloudの詳现 構成図 プロダクト䞀芧 Vertex AI Agent BuilderVertex AI Search Cloud Storage できるこず 怜玢 察応デヌタ゜ヌス 料金 たずめ Knowledge bases for Amazon BedrockAWS Azure OpenAI On Your DataAzure Vertex AI Agent BuilderVertex AI Search - Summarization パヌトナヌによる支揎 事䟋 はじめに 圓蚘事に぀いお 圓蚘事では、生成 AI アプリケヌションの開発や PoC実蚌実隓を怜蚎されおいる方向けに、倧手パブリッククラりドベンダヌである Amazon Web Services AWS、 Microsoft Azure 、 Google Cloud 旧称 GCPの3瀟がそれぞれ公開しおいる「生成 AI を掻甚した怜玢サヌビス」を玹介したす。 生成 AI による生成結果を根拠づけするための RAG ず呌ばれる技術を簡単に実装できるサヌビスが、各クラりドベンダヌから提䟛されおいたす。圓蚘事では、生成 AI を掻甚した瀟内ドキュメント怜玢などのナヌスケヌスを想定しお、各クラりドベンダヌのサヌビスをご玹介したす。 RAG ずは RAG ずは、Retrieval Augmented Generation の略称であり、生成 AI によるテキスト生成に、倖郚デヌタ゜ヌスを甚いお情報の根拠付けを行うアヌキテクチャのこずです。 生成 AI が本来持っおいない情報を倖郚から䞎えるこずで、業務に固有の情報を加味したテキストを生成させるずずもに、生成 AI が誀った情報を生成しおしたう「ハルシネヌション」の抑制が可胜ずなりたす。 3瀟比范 前提条件 RAG を構築するにあたり、どのベンダヌのサヌビスでも、耇数のデヌタ゜ヌスに察応しおいたす。たた「マネヌゞドなサヌビスだけの構成」、「OSS である LangChain をベヌスずしお適宜クラりドサヌビスを甚いる構成」など、アヌキテクチャの遞択肢も耇数甚意されおいたす。 採甚しうる耇数の遞択肢の䞭から、圓蚘事では以䞋の実珟を芁件ずしお比范したす。 フルマネヌゞドサヌビスのみで構築 ストレヌゞサヌビスに栌玍されおいるファむル䞻に PDF ファむルをデヌタ゜ヌスずする 怜玢ク゚リを䞎えるず、関連ファむル䞀芧ず、それらを芁玄した回答を生成する Web コン゜ヌル画面で怜玢機胜のプレビュヌが可胜詊甚のための゜ヌスコヌド蚘述が䞍芁 以䞊の芁件を満たすサヌビスずしお、以䞋の3サヌビスを遞定したした。 クラりド サヌビス AWS Knowledge bases for Amazon Bedrock Azure Azure OpenAI On Your Data ※ Google Cloud Vertex AI Agent Builder Vertex AI Search - Summarization 機胜 ※Azure OpenAI On Your Data は、入力されたプロンプトに察しお出力を生成する際に特定のデヌタ゜ヌスを参照する仕組みです。他の2サヌビスが怜玢機胜にフォヌカスしたサヌビスである点では性質が異なりたすが、蚘事執筆時点では Azure で同皮のサヌビスがフルマネヌゞドサヌビスずしお提䟛されおいないため、最も性質が近いサヌビスを遞定したした。 機胜比范 以䞋は、各サヌビスの提䟛機胜の比范です。 Knowledge bases for Amazon Bedrock Azure OpenAI On Your Data Vertex AI Agent Builder 怜玢結果の衚瀺 ◎ ◯ ※1 ◎ 芁玄 ◎ ◎ ◎ マルチタヌン ◎ ◎ ◎ 察応ファむル圢匏 TXT, MD, HTML, DOCX, CSV, XML, PDF ( 参考 ) CSV, EML, EPUB, HTML, JSON, DOCX, XLSX, PPTX, MSG, XML, PDF, TXT, RFT ( 参考 ) HTML, PDF, TXT, PPTX, DOCX, JSON ( 参考 ) 察応デヌタ゜ヌス S3, Web ペヌゞ, SharePoint, Salesforce, Confluence Azure Blob Storage, Webペヌゞ, Elasticsearch, Azure SQL Database, Azure Database for MySQL, Azure Cosmos DB, SharePoint など Cloud Storage, Webペヌゞ, BigQuery, Cloud SQL, Spanner, Firestore, Google Drive, Slack, SharePoint, Salesforce など メタデヌタによるフィルタリング ◯ ◯ ◯ ◎ : プレビュヌ画面から利甚可胜 ◯ : プレビュヌ画面から利甚䞍可だが API が提䟛されおいる ※1 : プレビュヌ画面では参照したファむルの内容は取埗できるが、ファむル名の䞀芧取埗が䞍可 料金シミュレヌション 想定シナリオ ずあるチャットボットのバックグラりンドずしお、以䞋のような䜿甚状況を仮定したす。 24時間・365日皌働 1日あたりの問い合わせは500ä»¶ 平均の入力文字数は100文字、出力は200文字 ファむルは各ストレヌゞサヌビスに PDF ずしお栌玍 䞊蚘の条件の䞋、1 ヶ月間の利甚料を蚈算したす。なお実際には API サヌバ等、RAG サヌビス以倖の料金が発生する可胜性がありたすが、今回は単玔化のため考慮から倖したす。 いずれも詊算に甚いた単䟡は蚘事を執筆した2024幎6月珟圚のものです。ご自身で詊算する際は、必ず公匏から発衚されおいる料金衚をご参照ください。たた、ドル・円換算は1ドルを160円ずしお蚈算しおいたす。 AWS 1ヶ月の利甚料は玄32,000円です。 OpenSearch Compute Unit - Search and Query 1 OCU : 172.8 USD Cohere - Embed - Multilingual (1 文字 1.1 トヌクン蚈算) 0.165 USD Anthropic - Claude 3 Sonnet 入力トヌクン (1 文字 1.1 トヌクン蚈算) : 4.95 USD Anthropic - Claude 3 Sonnet 出力トヌクン (1 文字 1.1 トヌクン蚈算) : 19.5 USD Azure 1ヶ月の利甚料は玄21,000円です。 Azure AI Search Basic プラン 1 ナニット : 73.73 USD GPT-4o 入力トヌクン (1 文字 1.1 トヌクン蚈算) : 8.52 USD GPT-4o 出力トヌクン (1 文字 1.1 トヌクン蚈算) : 51.15 USD Google Cloud 1ヶ月の利甚料は玄15,000円です。 Vertex AI Search Standard Edition ク゚リ回数 : 31 USD Vertex AI Search Basic Search LLM Add-On ク゚リ回数 : 62 USD 総評 AWS Knowledge bases for Amazon Bedrock の最倧の特城は、Amazon のファヌストパヌティの基盀モデルだけでなく、 Anthropic 瀟や Cohere 瀟など他瀟の基盀モデルも柔軟に遞択できる点 です。 さらに2024幎7月のアップデヌトにより、埓来の S3 に加えお、察応デヌタストアずしお Web ペヌゞや SharePoint が遞択可胜になりたした。このアップデヌトにより、より広範なデヌタ゜ヌスから情報を収集できるようになっおいたす。 たた、ドキュメントのチャンク化やベクトルデヌタベヌスの遞択が可胜であり、党䜓的にカスタマむズ性が高いずいえたす。このため、各ナヌスケヌスに最適な環境を構築するために、 现かなチュヌニングが可胜 です。 これらの特城から、Knowledge bases for Amazon Bedrock は、自分でカスタマむズやコスト最適化を行いたい 䞭玚者および䞊玚者向け のサヌビスであるず蚀えたす。 Azure 党䜓的にカスタマむズ性が高く、特に Azure AI Search は 怜玢アルゎリズム や むンデックスの䜜成方法 、 むンスタンススペック など 様々な遞択肢 が甚意されおいたす。 そのため、 しっかりチュヌニングするこずで、各ナヌスケヌスに適した環境を構築できたす 。 ただし、特定の怜玢アルゎリズムを有効にするためには耇数のコンポヌネントを有効化し蚭定する必芁がある、適切なむンデックスの構成やむンスタンススペックをナヌザが芋極める必芁があるなど、高床に䜿いこなすためにはかなりの孊習時間が必芁ずなりたす。 以䞊から、詳现なカスタマむズやコスト最適化を行いたい 䞊玚者向け のサヌビスであるず蚀えたす。 Google Cloud AWS や Azure のサヌビスず比べるず Google 偎で管理されおいる郚分が倚く、 高床な知芋がなくずも高品質な RAG 環境が構築でき たす。䟋えば怜玢アルゎリズムは最初から Google が提䟛しおいるアルゎリズムが甚いられおいたり、すべおサヌバヌレスであるこずからむンスタンススペックの芋極めも必芁ありたせん。 Slack や SharePoint 等ずいったサヌドパヌティツヌルのマネヌゞドコネクタが豊富なのも匷みの 1 ぀です。 たた、むンスタンスを垞時起動しおおく必芁がないため、 利甚されおいない時間には課金が発生したせん 。 以䞊から、ある皋床の品質を Google に担保しおもらいたい 初玚者および䞭玚者向け のサヌビスであるずいえたす。 ただし、もし思うような回答を埗られず粟床に課題が出た堎合、䞊玚者向けの遞択肢ずしお、Vertex AI Search の 各機胜を個別に利甚できる API も提䟛されおいたす䞀郚は提䟛予定。これを甚いるこずで、自前で高床な RAG を構築するこずも可胜です。 詳现の解説 Knowledge bases for Amazon BedrockAWSの詳现 構成図 プロダクト䞀芧 Knowledge bases for Amazon Bedrock Knowledge bases for Amazon Bedrock は、AWS が提䟛するマネヌゞドな RAG アプリケヌションが開発できるプロダクトです。 Amazon S3 Amazon S3 は、マネヌゞドなオブゞェクトストレヌゞサヌビスです。 Amazon OpenSearch Service Amazon OpenSearch Service は、怜玢゚ンゞンずその可芖化を行うツヌルである OpenSearch をマネヌゞドで提䟛するサヌビスです。 本構成においおはベクトルデヌタ゜ヌスずしおの圹割を担いたす。 できるこず 怜玢 Knowledge bases for Amazon Bedrock では、デヌタ゜ヌスに察しお以䞋の怜玢を行うこずができたす。デフォルトで自動的に最適な怜玢方匏が遞択されたすが、必芁に応じお特定の怜玢方匏に固定するこずもできたす。 ハむブリッド怜玢 セマンティック怜玢 参考 : Query configurations 察応デヌタ゜ヌス Knowledge bases for Amazon Bedrock では、以䞋のデヌタ゜ヌスを察象にするこずができたす。 Amazon S3 Confluence SharePoint Salesforce Web ペヌゞ 参考 : Data source connectors たた、圓蚘事では玹介したせんが、怜玢デヌタベヌスずしお Amazon Kendra を利甚する堎合は、以䞋のデヌタ゜ヌスを察象にするこずができたす。Amazon Kendra を利甚したパタヌンは、Web UI からの簡単な構築はできないこずに加え、利甚料金も比范的高䟡になりたすが、高粟床な怜玢を実珟できたす。 Aurora Amazon RDS Amazon S3 Amazon Kendra Web Crawler Box Confluence Dropbox GitHub Gmail Google Workspace Drives Jira Microsoft OneDrive Microsoft SharePoint Microsoft Teams ServiceNow Slack Zendesk 2024幎7月時点では䞊蚘を代衚ずする30以䞊のデヌタ゜ヌスに察応しおいたす。 参考 : Data sources 料金 抂芁 Knowledge bases for Amazon Bedrock では、䞻に 2 ぀のサヌビスで費甚が発生したす。   - 基盀モデル利甚料金 - ベクトルデヌタベヌス料金 基盀モデル利甚料金 提䟛元 モデル コンテキスト 入力 (1,000 トヌクンあたり) 出力 (1,000 トヌクンあたり) Amazon Titan Text Premier 32 K $0.0005 $0.0015 Titan Text Lite 4 K $0.00015 $0.0002 Titan Text Express 8 K $0.0002 $0.0006 Anthropic Claude 3.5 Sonnet 200 K $0.003 $0.015 Claude 3 Opus 200 K $0.015 $0.075 Claude 3 Sonnet 200 K $0.003 $0.015 Claude 3 Haiku 200 K $0.00025 $0.00125 Cohere Command 4 K $0.0015 $0.002 Command-Light 4 K $0.0003 $0.0006 Command R+ 128 K $0.003 $0.015 Command R 128 K $0.0005 $0.0015 参考 : Amazon Bedrock の料金 トヌクン数は文章・蚀語によっお倉化するため、正確な掚枬を行うこずが難しいですが、Claude においおは Anthropic から提䟛されおいる Client SDK を甚いるこずで確認が可胜です。 次のようなほが日本語のみの文章だず、文字数 1,070 (改行、空癜を陀く) に察しおトヌクン数は 1,117 ずなりたす。Claude 3.5 Sonnet だず 0.0034 USD ずなりたす。 サヌバヌワヌクスグルヌプのビゞョン クラりドで、䞖界を、もっず、はたらきやすく 私は、人生の成功ずは「どれだけたくさんのモノを䞎えられたか」だず考えたす。 たくさんのモノを人からもらった人、奪った人、斜しを受けた人のこずを、わたしたちは快く思いたせんし、蚘憶したせんし、圱響も受けたせん。 でも、たくさんのモノを䞎えた人のこずは、蚘憶し、感謝し、尊敬したす。 たくさん䞎えおきた人は、いたわの際にあっおも、本人は充実した人生の歩みに満足し、芋送る人にも惜したれる、そんな人でいられるず信じたす。 䞎えるモノずは、考え方であったり、お金であったり、献身的な掻動であったりずいろいろです。そうしたモノを通じお「ポゞティブな圱響を䞎える」こずこそが、私にずっおの幞せであり、成功であり、目指すずころでありたす。 私たちは、献身的な貢献を斜したナむチンゲヌルのこずを知っおいたすし、暎力の無力さを蚎えたマハトマ・ガンゞヌのこずを知っおいたすし、「I have a dream」で始たる挔説で倚くの人に圱響を䞎えたマヌチン・ルヌサヌ・キングJrのこずを知っおいたす。これらの人々は、ビゞネスで成功したわけでも、倧金持ちになったわけでもありたせんが、間違い無く、偉倧な成功を収めおいたす。 そしお私はいた、ビゞネスを通じお、これらの偉倧な先人がなしえたような「ポゞティブな圱響」を䞖界䞭に広めたいず思っおいたす。 クラりドずいうアむディアは、コンピュヌタヌず人間の関係を倉え、私たちの働き方をかえ、人生の時間の䜿い方を倉えるものです。 このアむディアを䞖界䞭に人々に広め、もっずはたらきやすい、もっず人生の時間を生み出せる䞖の䞭を぀くる。 そんな倢を抱いおいたす。 その想いを、この蚀葉に蟌めたした。 「クラりドで、䞖界を、もっず、はたらきやすく」 私が、このような意芋をわざわざ衚明しおいるのは、「私ず同じように考える人を増やしたい」からです。 私は「たくさん䞎える」ずいう考え方が、究極的な人生の成功をもたらす最善の道だず信じおいたす。 私が䌚瀟を成長させたいのは、同じように考える仲間を増やし、クラりドによっお䞖界をはたらきやすくしおいくずいうポゞティブな圱響を䞖界に拡げおいきたいからなのです。 そしお、サヌバヌワヌクスずいう䌚瀟で働くこずによっお、人生を豊かに、そしお人生の成功に貢献できるような環境にしおいきたいのです。 私たちの力で、䞖界にもっず倧きな圱響を䞎え、䞖界䞭の人々の人生を豊かにしおいきたしょう。それこそが、私たちの究極的な人生の成功、満足に぀ながるず信じおいたす。 䞀方、英文だず文字数に比べおトヌクン数は倧幅に枛少したす。 以䞋の文章では、文字数 567 (改行、空癜を陀く) に察しおトヌクン数は 145 ずなりたす。Claude 3.5 Sonnet だず 0.0004 USD ずなりたす。 OpenAI's large language models (sometimes referred to as GPT's) process text using tokens, which are common sequences of characters found in a set of text. The models learn to understand the statistical relationships between these tokens, and excel at producing the next token in a sequence of tokens. You can use the tool below to understand how a piece of text might be tokenized by a language model, and the total count of tokens in that piece of text. It's important to note that the exact tokenization process varies between models. Newer models like GPT-3.5 and GPT-4 use a different tokenizer than previous models, and will produce different tokens for the same input text. ベクトルデヌタベヌス料金 Knowledge bases for Amazon Bedrock では、以䞋のベクトルデヌタベヌスを察象にするこずができたす。 Amazon OpenSearch Serverless Amazon Aurora Pinecone Redis Enterprise Cloud Amazon OpenSearch Serverless の料金は、リ゜ヌスの利甚料に応じお、コンピュヌティングずストレヌゞが別々に埓量課金されたす。コンピュヌティングリ゜ヌスの利甚料は、OpenSearch Compute Units (OCU) ずいう蚈算凊理単䜍で蚈枬され、最䜎でも 1 OCU (indexing: 0.5 OCU、search: 0.5 OCU) が垞時皌働しおいたす。 そのため、US East リヌゞョンで必芁最䜎限のスペックの Amazon OpenSearch Serverless を利甚する堎合、2024 幎 7 月時点では月額利甚料 172.8 USD ずなりたす。 参考 Set up a vector index for your knowledge base in a supported vector store 参考 Amazon OpenSearch Service の料金 Azure OpenAI On Your DataAzureの詳现 構成図 プロダクト䞀芧 Azure OpenAI Service Azure OpenAI Service は、OpenAI 瀟が䜜成した AI モデルを Azure 䞊で利甚するこずができるサヌビスです。 GPT-4 は勿論、画像生成モデルの DALL-E 3 や GPT-4o も利甚できたす。 Azure OpenAI Studio ずいう独自の GUI を持っおおり、プロンプト蚭蚈などを簡単に行うこずができたす。 さらに、Azure OpenAI On Your Data 機胜を甚いれば、デヌタストアを Azure AI Search ずしたマネヌゞドな RAG が構築できたす。 サブスクリプションで Azure OpenAI Service を初めお利甚する堎合、以䞋の URL から利甚申請をする必芁がありたす。通垞は申請埌、24時間以内に利甚可胜ずなりたす。 https://aka.ms/oai/access Azure AI Search Azure AI Search は、マネヌゞドな怜玢サヌビスです。Azure Blob Storage や Azure SQL Database などずいった他の Azure サヌビスのデヌタを取り蟌み、党文怜玢やベクトル怜玢を行うこずが可胜です。 もちろん、RAG における怜玢システムずしおの圹割を担うこずも可胜です。 Azure Blob Storage Azure Blob Storage は、マネヌゞドなオブゞェクトストレヌゞサヌビスです。 できるこず 怜玢 Azure OpenAI On Your Data では、デヌタ゜ヌスに察しお以䞋の怜玢を行うこずができたす。 キヌワヌド怜玢 セマンティック怜玢 ベクトル怜玢 ハむブリッド怜玢 キヌワヌド怜玢 + ベクトル怜玢 ハむブリッド怜玢 + セマンティック怜玢 耇数の遞択肢が甚意されおいるため、たずキヌワヌド怜玢を䜿い、粟床が十分でない堎合はセマンティック怜玢を詊すなど、Azure OpenAI On Your Data 内だけで耇数の怜玢方法を詊行するこずができたす。 キヌワヌド怜玢以倖の怜玢アルゎリズムでは远加料金が発生する堎合があるこずに留意しおください。 参考 : Azure OpenAI On Your Data ずは 察応デヌタ゜ヌス Azure OpenAI On Your Data においおは以䞋のデヌタ゜ヌスを察象にするこずができたす。 Azure AI Search Azure Cosmos DB for MongoDB Azure Blob Storage ファむルアップロヌド Web サむト Elasticsearch ただし Azure Blob Storage、ファむルアップロヌド、Web サむトは Azure AI Search が必芁ずなりたす。たた Elasticseach は2024幎7月時点では利甚申請が必芁です。 参考 : Azure OpenAI On Your Data Azure AI Search は耇数のデヌタ゜ヌスに察応しおいるため、結果的に Azure AI Search が察応しおいるデヌタ゜ヌスも Azure OpenAI On Your Data の察象にできたす。 Azure SQL Database Azure Database for MySQL Azure Cosmos DB Azure Blob Storage Azure Files Azure Data Lake Storage Gen2 SharePoint 基本的には Azure のデヌタベヌスやストレヌゞサヌビスが察象ですが、SharePoint を察象にするこずもできたす。 参考 : デヌタ ゜ヌス ギャラリヌ 料金 抂芁 Azure OpenAI On Your Data では、䞻に2぀の軞で費甚が発生したす。 Azure OpenAI Service モデル利甚料金 Azure AI Search むンスタンス料金 Azure OpenAI Service 蚀語モデルである GPT シリヌズは、入出力したトヌクン数によっお課金が発生したす。2024幎7月時点での利甚料金は党リヌゞョン䞀埋で以䞋の通りです。 モデル コンテキスト 入力 (1,000 トヌクンあたり) 出力 (1,000 トヌクンあたり) GPT-4o 128 K $0.005 $0.015 GPT-3.5-Turbo-0125 16 K $0.0005 $0.0015 GPT-3.5-Turbo-Instruct 4 K $0.0015 $0.002 GPT-4-Turbo 128 K $0.01 $0.03 GPT-4 8 K $0.03 $0.06 GPT-4 32 K $0.06 $0.12 Claude 同様トヌクン数は文章・蚀語によっお倉化するため、正確な掚枬を行うこずが難しいですが、日本語だず 1 文字 1.1 トヌクンほどずなりたす。 参考 : ChatGPT - LLMシステム開発倧党 たた、以䞋のサむトで正確なトヌクン数を調べるこずもできたす。 https://platform.openai.com/tokenizer 日本語䞻䜓の文章だず文字数より少し倚めのトヌクン数に、英語䞻䜓だずトヌクン数は倧きく枛少するずいう挙動は Claude ず同様です。 Claude で取り扱ったサンプル文だず以䞋の通りです。 日本語のみの文章 トヌクン数 : 1,081 GPT-4o 入力料金 : 0.0054 USD 英語のみの文章 トヌクン数 : 141 GPT-4o 入力料金 : 0.0007 USD Azure AI Search Azure AI Search ではリク゚ストを凊理するためのむンスタンスを起動しおおく必芁がありたす。このむンスタンスが起動しおいる時間に応じお課金が発生したす。 むンスタンスの基本性胜にはいく぀かの遞択肢があり、たたスケヌリングの蚭定を行う必芁がありたす。 Azure OpenAI On Your Data を䜿う倧半のケヌスでは Azure AI Search が必芁ずなるため、このむンスタンス料金が継続的に発生するこずずなりたす。 Azure AI Search には Free プランも存圚したすが、Azure OpenAI On Your Data が䜿えるのは Basic プラン以䞊です。 東京リヌゞョンで必芁最䜎限のスペックで Azure AI Search を利甚する堎合、2024幎6月時点での月額利甚料は 98.95 USD ずなりたす。 Vertex AI Agent BuilderGoogle Cloudの詳现 構成図 プロダクト䞀芧 Vertex AI Agent BuilderVertex AI Search Vertex AI Search は、生成 AI ゚ヌゞェントサヌビスである Vertex AI Agent Builder の1機胜であり、マネヌゞドな怜玢サヌビスです。デヌタむンデックスを管理するデヌタストアず、ナヌザヌからのク゚リを凊理するアプリの 2 ぀のコンポヌネントから構成されおいたす。 サヌバレスで、ク゚リ数に応じお料金が発生するのが特城ずなりたす。 詳しくは以䞋の蚘事をご参照ください。 blog.g-gen.co.jp Cloud Storage Cloud Storage は、マネヌゞドなオブゞェクトストレヌゞサヌビスです。 blog.g-gen.co.jp できるこず 怜玢 Vertex AI Search では Google が提䟛する怜玢アルゎリズムのみを利甚するこずができたす。 この怜玢アルゎリズムは Google 怜玢で甚いられおいるものず同等であり、高性胜です。 察応デヌタ゜ヌス Vertex AI Search では、以䞋のようなデヌタを察象ずするこずができたす。 BigQuery Cloud SQL Spanner Bigtable Firestore Cloud Storage Google Drive SharePoint Online Slack Salesforce Jira Confluence ServiceNow Google Cloud のデヌタベヌス系サヌビスを始め、Google Drive や SharePoint、Slack 等ずいったサヌドパヌティツヌルも遞択するこずが可胜です。 分析甚デヌタベヌスである BigQuery ずの連携も可胜であるため、組織に蓄積されたデヌタを RAG に掻甚したり、たた逆に、怜玢に甚いられたキヌワヌドなどを BigQuery に蓄積しお業務改善に掻甚するこずもできたす。Google Cloud の豊富なデヌタ分析・AI/ML ゚コシステムず連携できるこずが匷みずいえたす。 料金 本アヌキテクチャにおいおは Vertex AI Search のリク゚スト回数に応じた費甚が発生したす。サヌバヌレスでフルマネヌゞドなため、垞時起動のむンスタンス料金は発生したせん。 Vertex AI Search の Summarization 機胜を䜿甚する堎合の料金は 1,000 ク゚リに぀き 6 USD ずなりたす。他にも远加料金が発生するオプションが存圚したすが、Cloud Storage 䞊の PDF ファむルから芁玄ず関連ファむルのみを取埗する堎合を想定しおいたす。 Summarization に甚いる モデルの皮類、入出力の文字数は料金に圱響したせん 。 たずめ Knowledge bases for Amazon BedrockAWS 现かなチュヌニングが可胜な䞭玚者〜䞊玚者向けのサヌビスです。 コストはかかりたすが Amazon Kendra を远加で構築するこずで、倚様なデヌタ゜ヌスずの連携が可胜です。 各瀟の生成 AI 基盀モデルが柔軟に遞択できるこずが匷みずいえたす。 Azure OpenAI On Your DataAzure 詳现なカスタマむズやコスト最適化を行いたい䞊玚者向けのサヌビスです。 SharePoint や Azure SQL Database など、Microsoft の゚コシステムずの連携も実珟可胜です。 詳现なチュヌニングが可胜なこずが匷みずいえたす。 Vertex AI Agent BuilderVertex AI Search - Summarization ある皋床の品質を Google に担保しおもらいたい初玚者および䞭玚者向けのサヌビスです。 フルマネヌゞドか぀サヌバヌレスであり、構築も簡単であるこずから、䜎いコストでスピヌディに RAG を実珟できたす。なお䞊玚者向けの遞択肢ずしお、Vertex AI Search の 各機胜を個別に利甚できる API も提䟛されおおり䞀郚は提䟛予定、自前で高床な RAG を構築するこずも可胜です。 Googleドラむブや BigQuery など、Google の゚コシステムずの連携も実珟可胜です。Google Cloud の豊富なデヌタ分析・AI/ML ゚コシステムず連携できるこずが匷みずいえたす。 パヌトナヌによる支揎 倧手クラりドベンダヌ各瀟の AI/ML 系サヌビスは進化を続けおおり、少ない工数でより効果的な仕組みを開発できるようになっおいたす。しかしながら、これらのサヌビスの進化は非垞に早く、キャッチアップに苊劎するのも事実です。 各クラりドベンダヌには、クラりド技術に特化したパヌトナヌがあり、クラりド䞊でのシステム開発を支揎しおいたす。圓テックブログを運営する G-gen は Google Cloud 専業むンテグレヌタヌであり、そのグルヌプ䌚瀟のサヌバヌワヌクスは AWS 専業むンテグレヌタヌです。必芁に応じお、パヌトナヌに盞談するこずで、クラりドや AI によるスピヌディな䟡倀創出に぀なげおください。 g-gen.co.jp www.serverworks.co.jp 事䟋 RAG の仕組みを䜿った業務改善の事䟋ずしお、圓瀟 G-gen の顧客サポヌト窓口での利甚䟋をご参照ください。 blog.g-gen.co.jp 堂原 竜垌 (蚘事䞀芧) クラりド゜リュヌション郚デヌタアナリティクス課。2023幎4月より、G-genにゞョむン。 Google Cloud Partner Top Engineer 2023, 2024に遞出 (2024幎はRookie of the yearにも遞出)。䌑みの日はだいたいゲヌムをしおいるか、時々自転車で遠出をしおいたす。 Follow @ryu_dohara 又吉 䜑暹 (蚘事䞀芧) クラりド゜リュヌション郚 はいさい、沖瞄出身のクラりド゚ンゞニア セヌルスから゚ンゞニアぞ転身。Google Cloud å…š 11 資栌保有。Google Cloud Champion Innovator (AI/ML)。Google Cloud Partner Top Engineer 2024。Google Cloud 公匏ナヌザヌ䌚 Jagu'e'r で゚バンゞェリスト。奜きな分野は生成 AI。 Follow @matayuuuu
圓蚘事では、2024幎6月に GA した Vertex AI Search の最新怜玢方匏である Answer API に぀いお玹介したす。 はじめに RAG ずは Vertex AI Search Answer API 抂芁 メリット ク゚リフェヌズ ク゚リ蚀い換え ク゚リ簡玠化 マルチステップ掚論 ク゚リ分類 怜玢フェヌズ 回答フェヌズ フォロヌアップ怜玢マルチタヌン怜玢 抂芁 セッション サンプルコヌド コヌド Tips ク゚リ蚀い換えの制埡 フォロヌアップ怜玢 はじめに RAG ずは RAG ずは、Retrieval Augmented Generation の略称であり、生成 AI によるテキスト生成に、倖郚デヌタ゜ヌスを甚いお情報の根拠付けを行うアヌキテクチャのこずです。 本来生成 AI が持ち埗ない情報を䞎えるこずで、組織固有の情報を加味したテキストを生成させ、たた生成 AI が誀った情報を生成しおしたう「ハルシネヌション」の抑制が可胜ずなりたす。 Vertex AI Search Vertex AI Search ずは、 Google の生成 AI を利甚しお RAG アプリケヌションを簡単に䜜成できる Google Cloud のマネヌゞドサヌビスです。これにより、開発者は迅速に RAG アプリケヌションを開発、テスト、デプロむできたす。 Vertex AI Search の解説は、以䞋の蚘事をご参照ください。 blog.g-gen.co.jp Vertex AI Search は、いく぀かの怜玢方匏APIをサポヌトしおいたす。これたで Search API ず Conversation API が提䟛されおいたしたが、2024幎6月に新たに Answer API が GA されたした。 怜玢方匏API 説明 䜿甚方法Python Client Library Search 怜玢に特化した方法シングルタヌンのみ察応 SearchRequest クラス Conversation マルチタヌン䌚話型の怜玢に特化した方匏 ConverseConversationRequest クラス Answer Search のほずんどの機胜に加えお、Conversation のすべおの機胜を兌ね備えた怜玢方匏 AnswerQueryRequest クラス Answer API 抂芁 Answer API は、Search API のほずんどの機胜ず、Conversation API のすべおの機胜が提䟛されおいる点から最も優れた怜玢方匏です。これにより、ナヌザヌはシンプルな怜玢から耇雑なマルチタヌン怜玢たで幅広く察応できたす。初めお Vertex AI Search の開発を行う堎合は、Answer API を䜿甚するこずが掚奚されおいたす。 Answer API は「 1. ク゚リ 」「 2. 怜玢 」「 3. 回答 」の 3段階のフェヌズ で凊理を行うこずで、高粟床な RAG を実珟したす。 ただし、特定のナヌスケヌスによっおは Search API や Conversation API の方が適しおいる堎合もありたすので、以䞋公匏ドキュメントより詳现を確認しおください。 参考 : When not to use the answer method メリット Answer API のメリットは以䞋の 3 ぀です。 RAG の粟床を高める高床な機胜Advanced RAG マルチタヌンでの怜玢回答 怜玢埅ち時間を短瞮する機胜 RAG の粟床を高める高床な機胜Advanced RAG Answer API は 1. ク゚リ、2. 怜玢、3. 回答、の3段階のフェヌズで凊理を行いたす。䟋えば、ク゚リフェヌズではク゚リ蚀い換えやク゚リ分類を行い、耇雑なク゚リに察する怜玢粟床を高めたす。 マルチタヌンでの怜玢回答 Answer API は、マルチタヌン䌚話圢匏での怜玢ず回答をサポヌトしたす。これにより、過去のやり取りを理解し回答粟床を高めるこずができたす。 怜玢の埅ち時間を短瞮する機胜 怜玢メ゜ッドず回答メ゜ッドを別々に呌び出すこずで、怜玢結果を先に衚瀺し、その埌に回答を衚瀺するこずができたす。これにより、生成AIの回答生成を埅たずナヌザヌに怜玢結果を提䟛するこずが可胜です。 参考 Key features of the answer method ク゚リフェヌズ ク゚リ蚀い換え ク゚リ蚀い換えQuery rephrasing機胜は、有効化するだけでナヌザヌのク゚リを自動的に最適な圢に曞き換え、怜玢粟床を向䞊させる機胜です。これにより、ナヌザヌが長文や耇雑なク゚リを入力しおも、システムが適切に簡玠化しお凊理したす。 この機胜は、裏偎でいく぀かの手法をサポヌトしおたすが、その䞭でも特に「ク゚リ簡玠化」ず「マルチステップ掚論」を玹介したす。 ク゚リ簡玠化 長いク゚リを簡玠化し、怜玢粟床を向䞊させたす。 ナヌザヌ入力 ク゚リの簡玠化 株匏䌚瀟G-genにおけるGoogle Workspaceの請求代行サヌビスに関しお、具䜓的な割匕率を教えおいただきたいです。さらに、Google Cloudの請求代行サヌビスに関する割匕率に぀いおも詳现をお䌺いしたいです。これらの割匕率に぀いお、どのような条件で適甚されるのか、具䜓的なパヌセンテヌゞや適甚範囲などを詳しく知りたいず考えおいたす。たた、無償で提䟛される技術サポヌトに぀いおの詳现も䜵せおお䌺いしたいです。具䜓的には、どのような技術サポヌトが無償で提䟛されるのか、その内容や範囲に぀いお詳しく説明しおいただけたすでしょうか。䟋えば、技術サポヌトの察象ずなるサヌビスや、サポヌトが受けられる時間垯、察応可胜な問題の皮類など、詳现な情報を知りたいです。これらの情報をもずに、匊瀟の導入蚈画や予算の調敎を行いたいず考えおおりたすので、お手数をおかけしたすが、詳现なご回答をいただけたすようお願い申し䞊げたす。䜕卒よろしくお願いいたしたす。 G-genのGoogle WorkspaceずGoogle Cloudの請求代行サヌビスの割匕率、および無償の技術サポヌト内容に぀いお詳现を教えおください。 マルチステップ掚論 ReAct考え + 行動に基づいお、LLM が耇雑なタスクに察しお段階的に回答を生成する機胜です。これにより、耇数のステップを螏んで最終的な答えを導き出すこずができたす。 ナヌザヌ入力 答えを生成するための 2 ステップ G-gen のサヌビスにはどのようなものがありたすかたた、それぞれのサヌビスの割匕率を教えおください ステップ 1 : [考え]: たず、G-gen の提䟛するサヌビス䞀芧を調べる必芁がある。 [行動] 怜玢: G-gen サヌビス䞀芧 [怜玢結果を芳察]: 「G-gen は、Google Cloud 請求代行サヌビス、Google Workspace ラむセンス販売、AppSheet ラむセンス販売の3぀のサヌビスを提䟛しおいたす。」 ステップ 2 : [考え]: 次に、それぞれのサヌビスの割匕率を調べる必芁がありたす。 [行動] 怜玢: G-gen サヌビス 割匕率 [怜玢結果を芳察]: 「これらのサヌビスは、Google Cloud、Google Workspace、AppSheet の利甚料金を 5% 割匕したす。」 答え: G-gen は、Google Cloud 請求代行サヌビス、Google Workspace ラむセンス販売、AppSheet ラむセンス販売の3぀のサヌビスを提䟛しおいたす。これらのサヌビスは、Google Cloud、Google Workspace、AppSheet の利甚料金を 5% 割匕したす。 ク゚リ分類 ク゚リ分類Query classification機胜は、敵察的なク゚リ( adversarial queries ) ず 芁玄を芁求しないク゚リ ( non-summary seeking queries ) を識別するオプションです。これにより、特定のク゚リを怜玢察象から陀倖するこずができたす。 参考 Query classification 怜玢フェヌズ 怜玢フェヌズの代衚的な機胜䟋を以䞋に瀺したす。 機胜 説明 フィルタヌ フィルタヌを適甚しお、怜玢察象を特定のドキュメントに制限したす セヌフサヌチ 暎力やポルノなどのコンテンツを怜玢結果から陀倖したす ブヌスト 怜玢によっお出力されるドキュメントにブヌスト条件を指定するこずで、怜玢結果を昇栌たたは降栌するこずができたす たた、2024幎7月珟圚、Vertex AI Search の怜玢モデルは、業界特有の甚語や䌁業特有の蚀い回しに察応するためのモデルチュヌニングも preview でサポヌトしおいたす。 参考 Search phase features 参考 Improve search results with search tuning 回答フェヌズ 回答フェヌズの代衚的な機胜䟋を以䞋に瀺したす。 機胜 説明 モデル指定 回答生成モデルを指定できたす プリアンブル蚭定 プロンプトのコンテキストのようなもの。圹割や出力圢匏、詳现床合いなどをカスタマむズできたす 匕甚を含める 回答文䞭に出兞を瀺す匕甚を取埗したす 関連する回答のみ衚瀺 ク゚リに察し回答の関連性が䜎い堎合、フォヌルバック回答を出力したす。回答がク゚リず関連性の䜎い堎合は、別の凊理フロヌに流すずいった条件分岐ロゞックも実装が容易になりたす 分類されたク゚リを無芖 敵察的たたは芁玄を芁求しないク゚リずしお分類されたク゚リを、回答生成時に無芖したす 参考 Answer phase features フォロヌアップ怜玢マルチタヌン怜玢 抂芁 フォロヌアップ怜玢ずは、同じセッション内での過去のク゚リず回答を考慮した怜玢方法で、マルチタヌン䌚話型怜玢ずも呌ばれたす。この機胜を利甚するこずで、各䌚話履歎がセッション単䜍で保存されたす。 参考 Commands for follow-up questions セッション セッションずは、ナヌザヌのク゚リず Vertex AI Saech が生成する回答で構成される䌚話履歎のこずを指したす。 セッションリ゜ヌスには以䞋のデヌタが含たれたす。 䞀意の名前セッション ID ステヌタス ナヌザヌ疑䌌 ID 開始時間ず終了時間 過去のク゚リず回答のペア ぀たり、1぀のセッションは特定のトピックに関する䌚話履歎を瀺し、ナヌザヌずセッションは1察倚の関係ずなりたす。 サンプルコヌド コヌド Answer API を䜿甚する方法は REST API やクラむアントラむブラリが甚意されおいたすが、今回は Python Client for Discovery Engine API を甚いた API リク゚ストのサンプルコヌドを玹介したす。 本サンプルコヌドでは、以䞋のオプション機胜を蚭定しおいたす。 ク゚リフェヌズ ク゚リ蚀い換え 怜玢フェヌズ 怜玢結果の最倧件数 回答フェヌズ モデル指定 プリアンブル蚭定 匕甚を含める 関連する回答のみ衚瀺 分類されたク゚リを無芖 import os from google.cloud import discoveryengine_v1alpha as discoveryengine from google.api_core.client_options import ClientOptions VERTEX_AI_LOCATION = "global" PROJECT_NO = os.environ.get( "PROJECT_NO" ) DATA_STORE_ID = os.environ.get( "DATA_STORE_ID" ) client_options = ( ClientOptions(api_endpoint=f "{VERTEX_AI_LOCATION}-discoveryengine.googleapis.com" ) if VERTEX_AI_LOCATION != "global" else None ) search_client = discoveryengine.ConversationalSearchServiceClient(client_options=client_options) def answer_query ( query_text: str , session_id: str = "-" ) -> discoveryengine.types.conversational_search_service.AnswerQueryResponse: # ク゚リの初期化 query = discoveryengine.Query() query.text = query_text request = discoveryengine.AnswerQueryRequest( serving_config=f "projects/{PROJECT_NO}/locations/global/collections/default_collection/dataStores/{DATA_STORE_ID}/servingConfigs/default_serving_config" , query=query, # Optionク゚リフェヌズ query_understanding_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec( # ク゚リ蚀い換え query_rephraser_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec( disable= False , # True に蚭定するずク゚リ蚀い換えを無効化 max_rephrase_steps= 5 # 蚀い換えステップ数を蚭定1〜5の範囲 ), ), # Option怜玢フェヌズ search_spec = discoveryengine.AnswerQueryRequest.SearchSpec( search_params = discoveryengine.AnswerQueryRequest.SearchSpec.SearchParams( max_return_results = 3 ) ), # Option回答フェヌズ answer_generation_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec( # モデル指定 model_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.ModelSpec( model_version= "gemini-1.5-flash-001/answer_gen/v1" ), # プリアンブル蚭定 prompt_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.PromptSpec( preamble= "箇条曞きで回答しおください。" ), # 匕甚を含めるかどうか include_citations= True , # 関連性の䜎いク゚リを陀倖するかどうか ignore_low_relevant_content= True , # 分類されたク゚リを無芖するかどうか ignore_non_answer_seeking_query= True , ), # Optionフォロヌアップ怜玢利甚時のセッション session=f "projects/{PROJECT_NO}/locations/global/collections/default_collection/dataStores/{DATA_STORE_ID}/sessions/{session_id}" , ) # Answer API 実行 response = search_client.answer_query(request=request) return response 参考 Class AnswerQueryRequest Tips ク゚リ蚀い換えの制埡 ク゚リ蚀い換えを無効にするには、 AnswerQueryRequest の query_rephraser_spec を disable=True に蚭定したす。たた、ク゚リ蚀い換えのステップ数を制埡したい堎合は、 max_rephrase_steps 属性を1から5の範囲で蚭定したすデフォルトは1。 # オプションク゚リフェヌズの蚭定 query_understanding_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec( # ク゚リ蚀い換えの蚭定 query_rephraser_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec( disable= False , # True に蚭定するずク゚リ蚀い換えを無効化 max_rephrase_steps= 5 # 蚀い換えステップ数を蚭定1〜5の範囲 ), ) 参考 Class QueryRephraserSpec フォロヌアップ怜玢 フォロヌアップ怜玢を利甚するには、 AnswerQueryRequest に session 属性を含めたす。 session 属性を含めない堎合はシングルタヌン怜玢になりたす。新芏セッションを発行する堎合は、session_id に半角ハむフン‘-’を含めるこずで、レスポンスに新しいセッションが払い出されたす。 参考 Class AnswerQueryResponse G-gen 線集郚 (蚘事䞀芧) 株匏䌚瀟G-genは、サヌバヌワヌクスグルヌプずしお「クラりドで、䞖界を、もっず、はたらきやすく」をビゞョンに掲げ、クラりドの導入から最適化たでを支揎しおいる Google Cloud 専業のクラりドむンテグレヌタヌです。
G-gen の䜐々朚です。圓蚘事では、Cloud Run サヌビスの䜜成時に自動生成される゚ンドポむント URL の無効化に぀いお解説したす。 前提知識 Cloud Run サヌビスに぀いお Cloud Run におけるロヌドバランサヌの䜿甚 デフォルト URL の無効化 URL 無効化のメリット URL を無効化する堎合の泚意点 手順 前提知識 Cloud Run サヌビスに぀いお Cloud Run サヌビスずは、Google Cloud のサヌバヌレス コンテナ サヌビスである Cloud Run の皮類の1぀であり、HTTP リク゚ストをトリガヌずしおアプリケヌションを実行するこずができるサヌビスです。 Cloud Run、および Cloud Run サヌビスの詳现に぀いおは以䞋の蚘事をご䞀読ください。 blog.g-gen.co.jp Cloud Run におけるロヌドバランサヌの䜿甚 Cloud Run サヌビスでは、サヌビスにアクセスするための *.run.app ドメむンの URL がデフォルトで提䟛されおいたす。この゚ンドポむントを䜿甚するこずで、ナヌザヌ偎で蚌明曞を甚意するこずなくサヌビスに HTTPS アクセスするこずができたす。 Cloud Run サヌビスのデフォルトの゚ンドポむント URL しかし、 Cloud Run サヌビスで Web アプリケヌションを公開するようなナヌスケヌスでは、デフォルトで提䟛される URL を゚ンドポむントずしお䜿甚せず、アプリケヌションロヌドバランサを Cloud Run の前段に配眮するこずが掚奚されたす。 ロヌドバランサの䜿甚は、独自のドメむンを䜿甚したサヌビスの公開や、WAF である Cloud Armor を䜿甚したセキュリティ匷化、耇数サヌビス間でパスベヌスのルヌティングが利甚できるなどのメリットがありたす。 Cloud Run サヌビスの前段にロヌドバランサを配眮する Cloud Run サヌビスに察するアクセスをロヌドバランサを経由した通信のみに制限したい堎合、Cloud Run の蚭定項目である「䞊り内向きの制埡」で「 倖郚アプリケヌション ロヌドバランサからのトラフィックを蚱可する 」に蚭定したす。これにより、むンタヌネットから Cloud Run サヌビスの゚ンドポむント URL に察しお盎接アクセスするこずができなくなりたす。 Cloud Run の「䞊り内向きの制埡」蚭定項目 しかし、この蚭定でも「内郚」からのアクセス、たずえば同じプロゞェクトに存圚する VPC から゚ンドポむント URL に察するアクセスはできおしたいたす。このような「内郚」からのアクセスはロヌドバランサを迂回する圢ずなるため、ロヌドバランサに玐付いおいる Cloud Armor のセキュリティルヌルが適甚されないなどの問題がありたす。 「内郚」からはロヌドバランサを経由しないアクセスができおしたう 「内郚」からのアクセスずされる通信の皮類に぀いおは こちらのドキュメント を参照しおください。 デフォルト URL の無効化 URL 無効化のメリット サヌビスの䜜成時および曎新時に、サヌビスの゚ンドポむントずなる URL を無効化するこずができたす。 URL を無効化するこずで、 サヌビスに察するロヌドバランサを迂回したアクセスができなくなる ため、すべおの通信に察しお Cloud Armor のセキュリティポリシヌを適甚するこずができたす。 アプリケヌションがロヌドバランサを経由したアクセスのみを想定しおいる堎合、URL を無効化しおおくこずで想定倖のルヌトをなくすこずができたす。 URL を無効化する堎合の泚意点 URL を無効化する堎合、「内郚」から Cloud Run に察する盎接アクセスができなくなるため、以䞋のサヌビスからの呌び出しができなくなりたす。 BigQuery remote functions Cloud Scheduler Cloud Service Mesh Cloud Tasks Eventarc Firebase App Hosting Firebase Hosting Pub/Sub Workflows 合成モニタリング、皌働時間チェック 手順 コン゜ヌル、gcloud CLI、YAML ファむルを䜿甚したサヌビスのデプロむ・曎新時に URL の無効化を行うこずができたす。 CLI の堎合、 gcloud run deploy コマンドで --no-default-url フラグを指定しお実行しおサヌビスをデプロむするこずで、URL が無効化されたす。 # URL を無効化した Cloud Run サヌビスのデプロむ $ gcloud run deploy ${ サヌビス名 } --no-default-url サヌビスのデプロむに YAML ファむルを䜿甚する堎合は metadata.annotations.run.googleapis.com/default-url-disabled の倀を true に蚭定したす。 詊しに、以䞋の YAML ファむルを䜿甚しおサヌビスをデプロむしおみたす。 # service.yaml apiVersion : serving.knative.dev/v1 kind : Service metadata : name : url-disabled-service annotations : run.googleapis.com/default-url-disabled : "true" # URL を無効化 spec : template : spec : containers : - image : us-docker.pkg.dev/cloudrun/container/hello # サンプルのコンテナむメヌゞ YAML ファむルを䜿甚したデプロむは、 gcloud run services replace コマンドを䜿甚したす。 $ gcloud run services replace service.yaml --region = asia-northeast1 ----- 出力䟋 ----- Applying new configuration to Cloud Run service [ url-disabled-service ] in project [ myproject ] region [ asia-northeast1 ] ✓ Deploying... Done. ✓ Creating Revision... ✓ Routing traffic... Done. New configuration has been applied to service [ url-disabled-service ] . URL: None 出力䟋の最終行を確認するず、本来 *.run.app ドメむンの URL が出力される URL: の項目が None になっおいるこずがわかりたす。 コン゜ヌル䞊からサヌビスを確認しおも、URL の項目に゚ンドポむント URL が衚瀺されおいたせん。 URL が無効化されたCloud Runサヌビス 参考 Restrict ingress for Cloud Run - Disable the default URL 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2025 Fellowに遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
本蚘事では、Google Maps API から取埗したラヌメン店のクチコミデヌタに察する定量分析手法をご玹介したす。 埓来の BigQuery による感情分析の有甚性を螏たえ぀぀、Gemini 1.5 Pro の導入によっお可胜ずなった、より柔軟なデヌタの構造化や特定タスクの実行方法を解説したす。 分析の背景ず目的 可芖化むメヌゞ 分析の流れずアヌキテクチャ クチコミデヌタ取埗ず BigQuery ぞの保存 API キヌの取埗 デヌタ取埗のサンプルコヌド クチコミ数の制限ず緩和策 料金 感情分析ずデヌタパむプラむン Dataform の利点 Dataform を䜿った感情分析のパむプラむン定矩䟋 感情分析の結果解釈 ML.GENERATE_TEXTGemini 1.5 Pro 関数を䜿甚した高床な分析 ナヌスケヌスに応じた独自の評䟡芳点によるクチコミの定量化 クチコミに察する自動返信文䜜成 分析の背景ず目的 近幎、1 to 1 マヌケティングや顧客分析の重芁性が高たっおいたす。しかし、すべおの顧客から盎接感想を聞くのは珟実的ではありたせん。そこで泚目したのが、Google Maps に自発的に投皿されたクチコミデヌタです。 クチコミ分析の䞻な目的は以䞋の通りです。 目的 䟋 顧客満足床の向䞊ず補品改善 ラヌメン店のクチコミで「麺が柔らかすぎる」ずいう声が倚い堎合、茹で時間の調敎を怜蚎。 競合分析ず垂堎ポゞショニングの最適化 競合店ずの比范で「䟡栌が高い」ずいう指摘が倚い堎合、䟡栌戊略の芋盎しや付加䟡倀の蚎求を怜蚎。 効果的なマヌケティング斜策の立案ず評䟡 「子連れでも利甚しやすい」ずいうクチコミが増加傟向にある堎合、ファミリヌ向けキャンペヌンの匷化を怜蚎。 トレンドの早期発芋ず迅速な察応 「ノィヌガンメニュヌが欲しい」ずいう声が急増した堎合、新メニュヌの開発を迅速に行う。 ビゞネス指暙ずの盞関分析による戊略立案 クチコミの評䟡が高い店舗ほど売䞊が高いずいう盞関が芋られた堎合、優良店舗の斜策を他店舗に展開。 可芖化むメヌゞ クチコミデヌタの感情分析やカテゎリ・キヌワヌド分析は以前から有りたしたが、生成 AI 技術の発展によっお、より自由に非構造化デヌタを構造化デヌタに倉えられ、既存の商品、営業、販売等のデヌタず掛け合わせお分析できる点がポむントです。 クチコミのネガポゞや頻床を地図䞊にプロット カテゎリごずのネガポゞ、クチコミスコアずレむティングの時系列比范 カテゎリごずのネガポゞず感情匷床 分析の流れずアヌキテクチャ 今回の怜蚌の分析の流れずアヌキテクチャは以䞋のずおりです。 Google Maps API からクチコミデヌタを取埗 BigQuery に保存 BigQuery のリモヌト関数で感情分析 & 生成 AI による倚様な自然蚀語解析※ Dataform でデヌタパむプラむンを構築 BI ツヌルLooker Studio 等で可芖化 分析の流れずシステムアヌキテクチャ クチコミデヌタ取埗ず BigQuery ぞの保存 Google Maps API を䜿甚しおクチコミデヌタを取埗し、BigQuery に保存する方法を説明したす。 API キヌの取埗 Google Map API の䞭から「Places API」を䜿甚しおいたす。Google Cloud プロゞェクトで API の有効化ず API キヌの取埗が必芁なため、手順は以䞋を参照しおください。 参考 : Places API で API キヌを䜿甚する デヌタ取埗のサンプルコヌド 以䞋は、Python を䜿甚したサンプルコヌドです。 Colab で実行可胜です 1. ラむブラリのむンストヌル !pip install googlemaps>= 4.10 . 0 google-cloud-bigquery>= 3.2 . 5 2. 認蚌凊理 from google.colab import auth import google.auth auth.authenticate_user() credentials, _ = google.auth.default() 3. Google Map API を䜿っお、クチコミデヌタを取埗し、BigQuery にアップロヌド 以䞋では、「東京郜千代田区(35.68093847942352, 139.76703854373777)」から「半埄 1,000 メヌトル」以内で「ラヌメン」ずいう怜玢キヌワヌドにマッチする堎所の情報や、それに玐づくクチコミ情報を取埗しおいたす。 import googlemaps from google.cloud import bigquery from datetime import datetime import pandas as pd class GoogleMapsReviewFetcher : def __init__ (self, api_key, project_id, dataset_id, table_id): # Google Maps API クラむアントの初期化 self.gmaps_client = googlemaps.Client(key=api_key) # BigQuery クラむアントの初期化 self.bq_client = bigquery.Client(project=project_id) # BigQuery のデヌタセット ID ずテヌブル ID を保存 self.dataset_id = dataset_id self.table_id = table_id def fetch_reviews (self, keyword, location, radius): reviews = [] # Google Maps Places API を䜿甚しお、指定された条件で堎所を怜玢 places_result = self.gmaps_client.places_nearby( location=location, # 怜玢の䞭心䜍眮緯床、経床 radius=radius, # 怜玢範囲メヌトル keyword=keyword, # 怜玢キヌワヌド language= 'ja' # 結果の蚀語を日本語に蚭定 ) # 怜玢結果の各堎所に぀いお詳现情報を取埗 for place in places_result[ 'results' ]: # 堎所の詳现情報を取埗 place_details = self.gmaps_client.place(place_id=place[ 'place_id' ], language= 'ja' ) spot_name = place_details[ 'result' ].get( 'name' ) location_lat = place_details[ 'result' ][ 'geometry' ][ 'location' ][ 'lat' ] location_lng = place_details[ 'result' ][ 'geometry' ][ 'location' ][ 'lng' ] # 各堎所のレビュヌを凊理 for review in place_details[ 'result' ].get( 'reviews' , []): reviews.append({ 'spot_name' : spot_name, 'author' : review.get( 'author_name' ), 'rating' : review.get( 'rating' ), 'text' : review.get( 'text' ), 'time' : datetime.fromtimestamp(review.get( 'time' )), 'relative_time_description' : review.get( 'relative_time_description' ), 'location' : f "POINT({location_lng} {location_lat})" # 緯床経床を GEOGRAPHY 型の POINT 圢匏で保存 }) return reviews def save_to_bigquery (self, reviews): # レビュヌデヌタを Pandas DataFrame に倉換 df = pd.DataFrame(reviews) # BigQuery のテヌブル参照を䜜成 table_ref = self.bq_client.dataset(self.dataset_id).table(self.table_id) # BigQuery ぞのデヌタ曞き蟌み蚭定 job_config = bigquery.LoadJobConfig( schema=[ bigquery.SchemaField( "spot_name" , "STRING" ), bigquery.SchemaField( "author" , "STRING" ), bigquery.SchemaField( "rating" , "FLOAT" ), bigquery.SchemaField( "text" , "STRING" ), bigquery.SchemaField( "time" , "TIMESTAMP" ), bigquery.SchemaField( "relative_time_description" , "STRING" ), bigquery.SchemaField( "location" , "GEOGRAPHY" ) ], write_disposition= "WRITE_TRUNCATE" # テヌブルを䞊曞き ) # DataFrame を BigQuery にアップロヌド job = self.bq_client.load_table_from_dataframe(df, table_ref, job_config=job_config) job.result() # ゞョブの完了を埅぀ print (f "Loaded {len(reviews)} reviews into {self.dataset_id}.{self.table_id}" ) if __name__ == "__main__" : # 蚭定情報 API_KEY = '䞊蚘で取埗した API キヌ' # Google Maps API キヌ PROJECT_ID = 'project_id' # Google Cloud プロゞェクト ID DATASET_ID = 'google_maps_review_analysis' # BigQuery のデヌタセット ID TABLE_ID = 'reviews' # BigQuery のテヌブル ID # 怜玢パラメヌタ KEYWORD = "ラヌメン" # 怜玢キヌワヌド LOCATION = ( 35.68093847942352 , 139.76703854373777 ) # 怜玢の䞭心䜍眮緯床、経床 RADIUS = 1000 # 怜玢範囲メヌトル # GoogleMapsReviewFetcher のむンスタンスを䜜成 fetcher = GoogleMapsReviewFetcher(API_KEY, PROJECT_ID, DATASET_ID, TABLE_ID) # レビュヌを取埗 reviews = fetcher.fetch_reviews(KEYWORD, LOCATION, RADIUS) # 取埗したレビュヌを BigQuery に保存 fetcher.save_to_bigquery(reviews) BigQuery ぞの栌玍結果は以䞋のずおりです。 クチコミデヌタの栌玍結果BigQuery クチコミ数の制限ず緩和策 「Places API」は䞀぀の堎所で最倧5件しかクチコミを取埗できない制玄がありたす。その堎所のオヌナヌであれば、「Business Profile API」に登録するこずで、すべおのクチコミを取埗できるずされおいたすが、圓瀟では未怜蚌です。 詳现は以䞋を参照しおください。 参考 : すべおのクチコミの䞀芧を取埗する 料金 API リク゚ストには料金が発生するため泚意が必芁です。筆者のサンプルコヌドでは、1件のクチコミで「0.87円」ずなりたした。詳现な料金䜓系に぀いおは以䞋を参照しおください。 参考 : Places API の䜿甚量ず請求額 感情分析ずデヌタパむプラむン Dataform を䜿甚しお BigQuery 䞊にデヌタパむプラむンを構築し、感情分析を行いたす。 Dataform の利点 Dataform は、BigQuery を䜿甚したデヌタ分析や機械孊習のワヌクフロヌを効率化するツヌルです。以䞋の点で特に有甚です。 BigQuery の倚様な分析機胜をフル掻甚 BigQuery ML埓来の機械孊習アルゎリズムを䜿甚可胜 リモヌト関数倖郚サヌビスずの連携が容易 オブゞェクトテヌブル構造化されおいないデヌタの凊理が可胜 生成 AI最新の AI 技術を BigQuery 内で盎接利甚可胜 耇雑な凊理の簡玠化 長いデヌタパむプラむンや耇雑な凊理フロヌを効率的に管理 SQL ベヌスの操䜜で、耇雑な凊理を盎感的に蚘述可胜 コスト削枛 実装コストの䜎枛耇雑な凊理を簡単に構築可胜 運甚保守コストの削枛䞀元管理による保守性の向䞊 開発から本番環境ぞの円滑な移行 PoC抂念実蚌段階で䜜成したク゚リを、本番環境のパむプラむンに容易に統合可胜 これらの利点により、Dataform は特に耇雑なデヌタ分析プロゞェクトや䞭〜倧芏暡なデヌタパむプラむンの構築に適しおいたす。デヌタ分析の効率ず品質を向䞊させたい堎合に、匷力なツヌルずなりたす。 詳现は匊瀟ブログ蚘事をご参照ください。 blog.g-gen.co.jp Dataform を䜿った感情分析のパむプラむン定矩䟋 以䞋は、Dataform を䜿った感情分析のパむプラむン定矩䟋です。 -- Dataform 蚭定結果を保存するテヌブルの定矩 config { type : " table " , schema: " google_maps_review_analysis " , name: " reviews_sentiment " , description: " クチコミの感情分析結果 " } -- 感情分析を実行し、結果を敎圢 WITH analyzed_data AS ( SELECT r.*, -- 元のクチコミデヌタのすべおの列を遞択 t.ml_understand_text_result, -- 感情分析の生の結果を含む JSON_EXTRACT_ARRAY(t.ml_understand_text_result, ' $.sentences ' ) AS sentences, -- 感情分析結果の sentences 配列を抜出 -- JSON 圢匏の結果から感情スコアを抜出-1から1の範囲、負の倀はネガティブ、正の倀はポゞティブ CAST (JSON_EXTRACT_SCALAR(t.ml_understand_text_result, ' $.document_sentiment.score ' ) AS FLOAT64) AS document_sentiment_score, -- JSON 圢匏の結果から感情の匷さを抜出0以䞊の倀、倧きいほど感情が匷い CAST (JSON_EXTRACT_SCALAR(t.ml_understand_text_result, ' $.document_sentiment.magnitude ' ) AS FLOAT64) AS document_sentiment_magnitude FROM ${ref( " reviews " )} AS r -- reviews テヌブルを参照 JOIN ( -- BigQuery の自然蚀語凊理モデルを䜿甚しお感情分析を実行 SELECT text_content, -- テキストデヌタ ml_understand_text_result -- 感情分析の生の結果 FROM ML.UNDERSTAND_TEXT( MODEL `project_id.google_maps_review_analysis.nlp`, -- 䜿甚する自然蚀語凊理モデル ( SELECT text AS text_content FROM ${ref( " reviews " )}), -- 分析察象のテキスト STRUCT( ' ANALYZE_SENTIMENT ' AS nlu_option) -- 感情分析オプションを指定 ) ) AS t ON r.text = t.text_content -- テキストを基準に JOIN ), -- 最終的な結果セットを遞択し、䞭間テヌブルに保存 intermediate_results AS ( SELECT r.spot_name, -- スポット名 r.author, -- 著者 r.rating, -- 評䟡 r.text, -- クチコミテキスト r.time, -- クチコミ投皿時間 r.relative_time_description, -- クチコミ投皿の盞察時間 r.location, -- クチコミの䜍眮情報 r.text AS `original_input`, -- 元の入力テキスト r.document_sentiment_score, -- ドキュメント党䜓の感情スコア r.document_sentiment_magnitude, -- ドキュメント党䜓の感情の匷さ -- 各文のテキスト内容 JSON_EXTRACT_SCALAR(sentence, ' $.text.content ' ) AS sentence_text, -- 各文の感情スコア CAST (JSON_EXTRACT_SCALAR(sentence, ' $.sentiment.score ' ) AS FLOAT64) AS sentence_sentiment_score, -- 各文の感情の匷さ CAST (JSON_EXTRACT_SCALAR(sentence, ' $.sentiment.magnitude ' ) AS FLOAT64) AS sentence_sentiment_magnitude FROM analyzed_data AS r, UNNEST(r.sentences) AS sentence -- sentences 配列を展開 ) -- 䞭間テヌブルから最終的な結果セットを遞択 SELECT * FROM intermediate_results Dataform ゞョブの出力結果は以䞋のずおりです。 Dataform ゞョブの出力結果 感情分析の結果解釈 このク゚リでは、BigQuery の機械孊習モデル ML.UNDERSTAND_TEXT を䜿甚しお感情分析を行っおいたす。結果は以䞋の2぀の倀ずしお返されたす。 sentiment_score -1 から 1 のスコアで、感情の肯定的/吊定的な床合いを衚したす。 sentiment_magnitude 感情の匷さを衚したす。 これらの倀を組み合わせるこずで、クチコミの感情的な特城を分析するこずができたす。 ML.GENERATE_TEXTGemini 1.5 Pro 関数を䜿甚した高床な分析 BigQuery の ML.GENERATE_TEXT 関数は、テキスト生成や高床なマルチモヌダルタスクを実行するための匷力なツヌルです。詳现なセットアップ方法に぀いおは以䞋をご参照ください。 参考 : ML.GENERATE_TEXT 関数を䜿甚しおテキストを生成する 以䞋の蚘事では BigQuery ML の基本を解説しおいたすので、ご参照ください。 blog.g-gen.co.jp ナヌスケヌスに応じた独自の評䟡芳点によるクチコミの定量化 以䞋は、クチコミから「味」「提䟛スピヌド」「䟡栌」「店の雰囲気」「その他」を䞉段階評䟡で抜出するク゚リです。 config { type : " table " , schema: " google_maps_review_analysis " , name: " reviews_generate_text_analysis " } -- クチコミデヌタを準備し、AI モデルに枡すためのプロンプトを䜜成する WITH review_data AS ( SELECT spot_name, -- 店名 author, -- クチコミの投皿者 text, -- クチコミの内容 rating, -- 店の評䟡 CONCAT ( ' 以䞋のラヌメン店「 ' , spot_name, ' 」のクチコミに基づいお、次の情報を JSON 圢匏で抜出しおください ' , ' 味良い、普通、悪い、䞍明、提䟛スピヌド速い、普通、遅い、䞍明、䟡栌高い、普通、安い、䞍明、店の雰囲気良い、普通、悪い、䞍明、その他良い、普通、悪い、䞍明。 ' , ' それぞれの芳点が総合評䟡 ' , rating, ' にどのように関連しおいるかも考慮しおください。 ' , ' クチコミ: " ' , text, ' " ' , ' フォヌマットは{"味": "良い", "提䟛スピヌド": "速い", "䟡栌": "高い", "店の雰囲気": "䞍明", "その他": "良い"}。 ' ) AS prompt -- AIモデルに枡すためのプロンプト FROM ${ref( " reviews " )} ) -- AI モデルを䜿甚しお、プロンプトに基づいお情報を抜出する SELECT r.spot_name, -- 店名 r.author, -- クチコミの投皿者 r.text, -- クチコミの内容 r.rating, -- 店の評䟡 JSON_VALUE( REPLACE (t.ml_generate_text_llm_result, ' ```json ' , '' ), ' $.味 ' ) AS flavor_text, -- 味に関する情報 JSON_VALUE( REPLACE (t.ml_generate_text_llm_result, ' ```json ' , '' ), ' $.提䟛スピヌド ' ) AS service_speed_text, -- 提䟛スピヌドに関する情報 JSON_VALUE( REPLACE (t.ml_generate_text_llm_result, ' ```json ' , '' ), ' $.䟡栌 ' ) AS price_text, -- 䟡栌に関する情報 JSON_VALUE( REPLACE (t.ml_generate_text_llm_result, ' ```json ' , '' ), ' $.店の雰囲気 ' ) AS atmosphere_text, -- 店の雰囲気に関する情報 JSON_VALUE( REPLACE (t.ml_generate_text_llm_result, ' ```json ' , '' ), ' $.その他 ' ) AS other_text, -- その他に関する情報 -- 各芳点に察するスコアを蚈算する CASE JSON_VALUE( REPLACE (t.ml_generate_text_llm_result, ' ```json ' , '' ), ' $.味 ' ) WHEN ' 良い ' THEN 3 WHEN ' 普通 ' THEN 2 WHEN ' 悪い ' THEN 1 ELSE NULL END AS flavor_score, -- 味のスコア CASE JSON_VALUE( REPLACE (t.ml_generate_text_llm_result, ' ```json ' , '' ), ' $.提䟛スピヌド ' ) WHEN ' 速い ' THEN 3 WHEN ' 普通 ' THEN 2 WHEN ' 遅い ' THEN 1 ELSE NULL END AS service_speed_score, -- 提䟛スピヌドのスコア CASE JSON_VALUE( REPLACE (t.ml_generate_text_llm_result, ' ```json ' , '' ), ' $.䟡栌 ' ) WHEN ' 高い ' THEN 1 WHEN ' 普通 ' THEN 2 WHEN ' 安い ' THEN 3 ELSE NULL END AS price_score, -- 䟡栌のスコア CASE JSON_VALUE( REPLACE (t.ml_generate_text_llm_result, ' ```json ' , '' ), ' $.店の雰囲気 ' ) WHEN ' 良い ' THEN 3 WHEN ' 普通 ' THEN 2 WHEN ' 悪い ' THEN 1 ELSE NULL END AS atmosphere_score, -- 店の雰囲気のスコア CASE JSON_VALUE( REPLACE (t.ml_generate_text_llm_result, ' ```json ' , '' ), ' $.その他 ' ) WHEN ' 良い ' THEN 3 WHEN ' 普通 ' THEN 2 WHEN ' 悪い ' THEN 1 ELSE NULL END AS other_score -- その他のスコア FROM review_data r LEFT JOIN ML.GENERATE_TEXT( MODEL `project_id.google_maps_review_analysis.gemini_1_5_pro`, -- 䜿甚するAIモデル ( SELECT prompt FROM review_data), -- プロンプトをAIモデルに枡す STRUCT( 0.1 AS temperature, -- 出力のランダム性を制埡する 1000 AS max_output_tokens, -- 出力の最倧トヌクン数 0.1 AS top_p, -- ニュヌクリアスサンプリングのパラメヌタ 10 AS top_k, -- トップKフィルタリングで保持する最も高い確率の語圙トヌクン数 TRUE AS flatten_json_output -- JSON出力をフラットにする ) ) AS t ON r.prompt = t.prompt -- プロンプトを基にAIモデルからの生成結果を結合 生成結果は以䞋のずおりです。 独自の芳点でクチコミを評䟡 クチコミに察する自動返信文䜜成 クチコミに察する店長からの返信文を自動生成するようにしたす。 config { type : " table " , schema: " google_maps_review_analysis " , name: " reviews_manager_responses " } -- Step 1: クチコミデヌタを準備し、AI モデルに枡すためのプロンプトを䜜成する WITH review_data AS ( SELECT spot_name, -- 店名 author, -- クチコミの投皿者 text, -- クチコミの内容 rating, -- 店の評䟡 time, -- クチコミの投皿時間 relative_time_description, -- クチコミの盞察的な時間 CONCAT ( ' 以䞋のラヌメン店「 ' , spot_name, ' 」のクチコミに察しお、店長からの返信を䜜成しおください。クチコミの内容に応じお感謝や改善点ぞの察策などを含めおください。 ' , ' たた、Google Map における店の評䟡 ' , rating, ' を螏たえお、お客様の期埅倀に応えおいるかどうかも考慮しおください。 ' , ' クチコミ: " ' , text, ' " ' , ' 返信は、以䞋のフォヌマットでお願いしたす。 ' , ' {"response": " ' , author, ' 様 ' , ' \\n ' , ' 店長からの返信メッセヌゞ"} ' ) AS prompt -- AIモデルに枡すためのプロンプト FROM ${ref( " reviews " )} ) -- Step 2: AI モデルを䜿甚しお、プロンプトに基づいお店長からの返信を生成する SELECT r.spot_name, -- 店名 r.author, -- クチコミの投皿者 r.text, -- クチコミの内容 r.rating, -- 店の評䟡 r.time, -- クチコミの投皿時間 r.relative_time_description, -- クチコミの盞察的な時間 JSON_VALUE( REPLACE (t.ml_generate_text_llm_result, ' ```json ' , '' ), ' $.response ' ) AS response -- 生成された返信 FROM review_data r LEFT JOIN ML.GENERATE_TEXT( MODEL `project_id.google_maps_review_analysis.gemini_1_5_pro`, -- 䜿甚するAIモデル ( SELECT prompt FROM review_data), -- プロンプトをAIモデルに枡す STRUCT( 0.3 AS temperature, -- 出力のランダム性を制埡する 500 AS max_output_tokens, -- 出力の最倧トヌクン数 0.9 AS top_p, -- ニュヌクリアスサンプリングのパラメヌタ 10 AS top_k, -- トップKフィルタリングで保持する最も高い確率の語圙トヌクン数 TRUE AS flatten_json_output -- JSON出力をフラットにする ) ) AS t ON r.prompt = t.prompt -- プロンプトを基にAIモデルからの返信を結合 生成結果は以䞋のずおりです。クチコミの内容に察しお、䞀぀ず぀䞁寧に返信しおいたす。 クチコミに察する自動返信文 G-gen 線集郚 (蚘事䞀芧) 株匏䌚瀟G-genは、サヌバヌワヌクスグルヌプずしお「クラりドで、䞖界を、もっず、はたらきやすく」をビゞョンに掲げ、クラりドの導入から最適化たでを支揎しおいる Google Cloud 専業のクラりドむンテグレヌタヌです。
G-gen の荒井です。圓蚘事では Google Workspace のアプリケヌションのみ䜿甚しおお問い合わせシステムを䜜成する方法をご玹介したす。 はじめに ご玹介するこず 蚘事の構成 問い合わせ業務 業務フロヌ フロヌ1 : お問い合わせ受付 フロヌ2 : 担圓者割り圓お フロヌ3 : ラベル付䞎 フロヌ4 : 回答の送信 フロヌ5 : 返信の受付 フロヌ6 : クロヌズ 次の蚘事 はじめに ご玹介するこず 圓蚘事では、前回たでの蚘事で開発した問い合わせ察応システムを実際に䜿甚する業務フロヌず手順を解説したす。 蚘事の構成 問い合わせ察応システムの開発方法は、以䞋の通り、連茉蚘事ずしおご玹介したす。蚘事を順に確認するこずで、問い合わせ察応システムが完成したす。 No タむトルずリンク 1 Google Workspace で問い合わせ察応システムを䜜成する方法 #1 (システム抂芁) 2 Google Workspace で問い合わせ察応システムを䜜成する方法 #2 (Google グルヌプ蚭定) 3 Google Workspace で問い合わせ察応システムを䜜成する方法 #3 (Google フォヌム蚭定) 4 Google Workspace で問い合わせ察応システムを䜜成する方法 #4 (Google App Script 蚭定) 5 ※ 圓蚘事 Google Workspace で問い合わせ察応システムを䜜成する方法 #5 (業務フロヌ解説) 6 ※ 準備䞭 Google Workspace で問い合わせ察応システムを䜜成する方法 #6 (機胜拡匵案) 問い合わせ業務 本システムを䜿甚したお問い合わせ業務フロヌを図瀺するず、以䞋のようになりたす。 業務フロヌ フロヌ1 : お問い合わせ受付 お客様からお問い合わせがあるず、Google グルヌプの機胜で、グルヌプ内のメンバヌにメヌルが配信されたす。 メンバヌはそのメヌルを確認しだい、察応を開始したす。 フロヌ2 : 担圓者割り圓お Google グルヌプ 画面にアクセスし、お問い合わせ甚グルヌプを遞択し、衚瀺されるスレッド䞀芧から察象のスレッドを開きたす。 次に、担圓者の割り圓おを行いたす。割り圓おられたメンバヌには、メヌルで通知されたす。 参考 : 会話を引き受ける、割り当てる - Google グループ ヘルプ フロヌ3 : ラベル付䞎 ケヌスの察応状況がわかりやすくなるよう、スレッドにラベルを付䞎したす。ラベルは事前に䜜成しおおく必芁がありたす。 ラベルを付䞎する際は、ラベルを遞択した埌に [申請] ボタンをクリックする必芁がありたす。申請ボタンの抌䞋は忘れがちですので、泚意したしょう。 参考 : グループと投稿を見つけやすくする - Google グループ ヘルプ フロヌ4 : 回答の送信 回答の文章を䜜成したす。 䜜成する際、スレッド最䞋郚の「党員に返信」ボタンから回答メヌルを䜜成しお、メッセヌゞを投皿したす。 このずき、件名を倉曎しおしたうず Google グルヌプ内のスレッド問い合わせ履歎がひずたずたりにならず、別スレッドずしお扱われおしたう堎合があるため、件名は線集しないようにしたす。 参考 : メッセージを作成する、メッセージに返信する - Google グループ ヘルプ フロヌ5 : 返信の受付 送信した回答にお客様が返信を行った堎合、その返信は Google グルヌプもしくはナヌザヌの Gmailが受信したす。 内容を確認し、再床察応が必芁な堎合 フロヌ4 ぞ戻りたす。クロヌズしおも良い堎合 フロヌ6 ぞ進みたす。 フロヌ6 : クロヌズ お問い合わせ内容が解決しおクロヌズできる状態ずなったら、フロヌ4のメヌル送信ず同様の手順で、お客様ぞクロヌズする旚のメヌルを送信しおお問い合わせを終了したす。 最埌に、察応状況がわかるよう、Google グルヌプのスレッドでラベルの倉曎を行いたす。 参考 : グループと投稿を見つけやすくする - Google グループ ヘルプ 次の蚘事 [準備䞭] Google Workspace で問い合わせ察応システムを䜜成する方法 #6 (機胜拡匵案) 荒井 雄基 (蚘事䞀芧) クラりド゜リュヌション郚 オンプレ環境のネットワヌク・サヌバヌシステムを䞻戊堎ずしおいたが、クラりド領域にシフト。 Google Cloud 認定資栌 7冠 珟圚は Google Workspace を䞭心に䌁業の DX 掚進をサポヌト。 最近頑匵っおいるこずは、子どもがハマっおいる戊隊モノの螊りを螊れるようになるこず。
G-gen の西島です。圓蚘事では、Google Cloud旧称 GCPが提䟛するデヌタ りェアハりスである BigQuery で、誀っお削陀したデヌタセットを埩元する方法をご玹介したす。 BigQuery デヌタセットの埩元方法 UNDROP SCHEMA の䜿甚デヌタセットを䞞ごずリストア 抂芁 必芁な暩限 SQL でのリストア API でのリストア タむムトラベルの䜿甚テヌブルを1぀ず぀リストア 抂芁 必芁な暩限 リストア察象のテヌブルをリストアップ デヌタセットを䜜成 テヌブルのリストア バックアップによる察策 BigQuery デヌタセットの埩元方法 削陀された BigQuery デヌタセットの埩元方法には、以䞋の2皮類がありたす。 UNDROP SCHEMA の䜿甚 デヌタセットを䞞ごずリストア タむムトラベルの䜿甚 テヌブルを1぀ず぀リストア デヌタセットごず埩元する堎合は、原則ずしお前者の UNDROP SCHEMA を䜿甚したす。テヌブルごずに埩旧したい堎合や、制限事項に抵觊しおいる堎合は、埌者のタむムトラベルからの個別埩旧を䜿甚したす。 UNDROP SCHEMA の䜿甚デヌタセットを䞞ごずリストア 抂芁 こちらの手法は、デヌタセットをたるごず埩元する方法です。ただし、埩元できるのは タむムトラベル期間内に削陀されたデヌタセットのみ です。 たた、以䞋のドキュメントの「制限事項」を読み、泚意点に぀いお確認しおください。 参考 : 削陀されたデヌタセットを埩元する 必芁な暩限 こちらの手順を実斜するには、以䞋の暩限が必芁です。 プロゞェクトに察する bigquery.datasets.create デヌタセットに察する bigquery.datasets.get これらの暩限は、以䞋の事前定矩ロヌルに含たれおいたす。以䞋のロヌルを、プロゞェクトレベルで操䜜者の Google アカりント / グルヌプに付䞎するこずで、圓䜜業を行うこずができるようになりたす。 BigQuery ナヌザヌ roles/bigquery.user  SQL でのリストア BigQuery コン゜ヌル等で以䞋の SQL を実行するこずで、デヌタセットを䞭身のテヌブルごずリストアできたす。 -- DATASET_ID は、削陀を取り消すデヌタセットに眮き換える UNDROP SCHEMA `DATASET_ID`; DATASET_ID は、ご自身の環境にあわせお倉曎しおください。 参考 : UNDROP SCHEMA ステヌトメント API でのリストア BigQuery API の datasets.undelete メ゜ッドを䜿甚したす。以䞋は、cURL コマンドで API を盎接呌び出す䟋です。 curl -X POST \ -H " Authorization: Bearer $( gcloud auth print-access-token ) " \ https://bigquery.googleapis.com/bigquery/v2/projects/ { projectId } /datasets/ { datasetId } :undelete コマンドラむン䞊の {projectId} や {datasetId} はご自身の環境にあわせお倉曎しおください。 参考 : Method: datasets.undelete  |  BigQuery  |  Google Cloud Documentation タむムトラベルの䜿甚テヌブルを1぀ず぀リストア 抂芁 こちらの手法では、BigQuery のシステムビュヌである INFORMATION_SCHEMA の TABLE_STORAGE_TIMELINE ビュヌを確認するこずで埩元察象のテヌブルをリストアップしたあず、 タむムトラベル 機胜を䜿っお、テヌブルを1぀1぀埩元したす。 タむムトラベル機胜では、削陀されたり倉曎されたデヌタにアクセスするこずができたす。デフォルトでは過去7日分のデヌタが保管されたす。 参考 : INFORMATION_SCHEMA の抂芁 参考 : タむムトラベルずフェむルセヌフによるデヌタの保持 必芁な暩限 こちらの手順を実斜するには、以䞋の暩限が必芁です。 プロゞェクトに察する bigquery.tables.get プロゞェクトに察する bigquery.tables.list プロゞェクトに察する bigquery.datasets.create これらの暩限は、以䞋の事前定矩ロヌルに含たれおいたす。これらのロヌルを、プロゞェクトレベルで操䜜者の Google アカりント / グルヌプに付䞎する必芁がありたす。 BigQuery デヌタ閲芧者 roles/bigquery.dataViewer  BigQuery デヌタ線集者 roles/bigquery.dataEditor  BigQuery ゞョブナヌザヌ  roles/bigquery.jobUser  リストア察象のテヌブルをリストアップ はじめに、削陀されたデヌタセットに含たれおいたテヌブルのリストアップを行いたす。 デヌタセットを削陀した堎合、Cloud Audit Logs には google.cloud.bigquery.v2.DatasetService.DeleteDataset ずいうメ゜ッドのログにデヌタセット ID が蚘録されたすが、そのデヌタセットに含たれおいた テヌブルの名称は蚘録されたせん 。 参考 : BigQuery audit logs overview  |  Google Cloud Documentation ぀たり、監査ログから削陀されたテヌブルの䞀芧を取埗するこずはできたせん。そこで INFORMATION_SCHEMA の TABLE_STORAGE_TIMELINE ビュヌを確認したす。このビュヌには過去のある時点のストレヌゞ䜿甚状況が蚘録されおおり、そこから間接的に、その時点で存圚しおいたテヌブルの名前を確認するこずができたす。 削陀されたデヌタセットのテヌブル名を特定する SQL は、以䞋のずおりです。 SELECT DISTINCT project_id, table_schema AS dataset, table_name, deleted FROM `region-asia-northeast1`.INFORMATION_SCHEMA.TABLE_STORAGE_TIMELINE WHERE project_id = ' xxxxx ' AND deleted = true AND timestamp >= ' 2024-03-21 ' ORDER BY 1 , 2 , 3 , 4 FROM 句の region-asia-northeast1 の郚分は、デヌタセットの存圚したリヌゞョンを指定しおください。US マルチリヌゞョンであれば region-us 、 東京リヌゞョンであれば region-asia-northeast1 です。 WHERE 句の timestamp は、デヌタセットを削陀しおしたった日付・時刻を含むよう、範囲を指定しおください。 参考 : TABLE_STORAGE ビュー  |  BigQuery  |  Google Cloud Documentation デヌタセットを䜜成 削陀されたデヌタセットず同じ名前、同じリヌゞョンのデヌタセットを新芏䜜成したす。 デヌタセットは、BigQuery コン゜ヌル画面や bq コマンドで䜜成できたす。 参考 : データセットの作成  |  BigQuery  |  Google Cloud Documentation テヌブルのリストア 新芏䜜成したデヌタセット内に、テヌブルをリストアしたす。 テヌブルをリストアする bq コマンドは、以䞋のずおりです。 # UNIX タむムスタンプミリ秒単䜍の取埗 date -d '2024-06-27 17:00:00' +%s000 # テヌブルの埩元 bq cp dataset.table1@1719471634000 dataset.table1 䞊蚘の date コマンドは、人間にわかりやすい日付・時刻の文字列を、UNIX タむムスタンプ圢匏で衚瀺するものです。 その次の bq コマンドは、UNIX タむムスタンプ で 1719471634000 2024-06-27 10:00:00 UTC+0900の時点の dataset.table1 ずいう BigQuery テヌブルを埩元するものです。 コマンドラむン䞊の Unix タむムスタンプずテヌブル名は、ご自身の環境にあわせお倉曎しおください。 バックアップによる察策 本蚘事では、 誀っお削陀したデヌタセットに含たれるテヌブル埩元方法を玹介したしたが、玹介したどちらの方法でも、タむムトラベル期間内でしか埩元するこずができたせん。蚭定可胜な最長のタむムトラベル期間は7日間です。 7日間以䞊の RPO が求められる堎合、BigQueryのスナップショット機胜や Cloud Storage ぞの゚クスポヌト、BigQuery Data Transfer Service 等によるバックアップの実斜を怜蚎するこずも必芁です。 スナップショット機胜に぀いおは、以䞋の蚘事もご参照ください。 blog.g-gen.co.jp 西島 昌倪 (蚘事䞀芧) カスタマヌサクセス課 デヌタ゚ンゞニア 2023幎4月に新卒入瀟。 元はフロント゚ンド開発を䞻戊堎に、珟圚はデヌタ゚ンゞニアリングを勉匷䞭。䜕でも屋さんを目指しお、日々邁進。 䌑日は倧䜓プログラムを曞いおる人
G-gen の歊井です。圓蚘事では GitHub Actions を䜿っお Docker むメヌゞをビルド&プッシュしお Cloud Run Jobs を曎新するパむプランに぀いお説明したす。 GitHub Actions 抂芁 ワヌクフロヌ 構成 ワヌクフロヌの抂芁 ゜ヌスコヌド 抂芁 dev.yaml 凊理内容 ファむル定矩 build-and-push.yaml 凊理内容 ファむル定矩 むンフラ構成 Workload Identity Artifact Registry 動䜜確認 条件 main ブランチぞのマヌゞずワヌクフロヌの起動 埌続のワヌクフロヌの起動 Docker むメヌゞのビルドずプッシュ Cloud Run Jobs の曎新 関連蚘事 GitHub Actions 抂芁 GitHub Actions ずは、゜ヌスコヌド管理ツヌルである GitHub に包含される機胜の䞀぀で、リポゞトリで管理される゜ヌスコヌドをもずに CI/CD (継続的むンティグレヌション / 継続的デリバリヌ) を実珟したす。 参考 GitHub Actions の抂芁 ワヌクフロヌ GitHub Actions で自動化したい凊理ずその内容・条件を定矩したものを ワヌクフロヌ ず蚀いたす。 定矩ファむルは YAML 圢匏 で蚘述しお .github/workflows ディレクトリ に栌玍すれば利甚可胜です。 参考 ワヌクフロヌに぀いお 構成 圓蚘事で解説するパむプラむンず環境構成は䞋図のずおりです。 Artifact Registry ず Cloud Run Jobs は異なるプロゞェクトで管理されるため、 プロゞェクトごずに Workload Identity を蚭定しお GitHub Actions ず連携 したす。 # プロゞェクト 説明 1 demo-app-common-repo Artifact Registry でアプリが䜿甚するむメヌゞを䞀元管理 2 sand1-demo-app-dev Cloud Run Jobs でアプリを実行 3 sand2-demo-app-dev Cloud Run Jobs でアプリを実行 ワヌクフロヌの抂芁 今回ワヌクフロヌで定矩した凊理の抂芁は以䞋のずおりです。(詳现は埌述) main ブランチぞのマヌゞをトリガヌにワヌクフロヌが起動 指定のパス (アプリの゜ヌスコヌドが栌玍されたパス) の倉曎有無を確認 指定のパスに倉曎があった (アプリに曎新があった) 堎合、Docker むメヌゞをビルドしお Artifact Registry にプッシュ Cloud Run Jobs のむメヌゞを曎新する ゜ヌスコヌド 抂芁 ゜ヌスコヌドは以䞋の圢で構成されたす。 .github/workflows ディレクトリにはワヌクフロヌの定矩ファむル、 cloud_run_jobs_code ディレクトリにはアプリごずの゜ヌスコヌドを栌玍したす。 (アプリ名ず Cloud Run Jobs のゞョブ名は統䞀しおいたす) # アプリの゜ヌスコヌドの詳现は割愛 . ├── .github │ └── workflows │ ├── build-and-push.yaml │ ├── dev-cd.yaml │ └── release.yaml ├── cloud_run_jobs_code │ ├── demo-app-1 │ │ ├── Dockerfile │ │ ├── main.py │ │ ├── poetry.lock │ │ ├── poetry.toml │ │ └── pyproject.toml │ └── demo-app-2 │ ├── Dockerfile │ ├── main.py │ ├── poetry.lock │ ├── poetry.toml │ └── pyproject.toml └── README.md dev.yaml 凊理内容 このワヌクフロヌでは、以䞋のモゞュヌルを䜿甚しおアプリの゜ヌスコヌドが栌玍されたパスを指定し、それらの倉曎有無を確認したす。 参考 dorny/paths-filter 指定したパスに栌玍される゜ヌスコヌド (アプリ) に倉曎があった堎合は build-and-push.yaml で凊理を継続したすが、アプリに倉曎がない堎合、ワヌクフロヌはここで終了したす。 その他詳现は以䞋のずおりです。 # 行数 説明 1 3〜7行目 main ブランチぞのマヌゞをトリガヌに指定 2 9〜11行目 ワヌクフロヌの暩限定矩 3 13〜29行目 パスの指定、ならびに指定したパスの倉曎有無を確認 4 31〜37行目 倉曎があれば埌続凊理にアプリ名 (demo-app-1) を appName ずしお枡す 5 39〜45行目 倉曎があれば埌続凊理にアプリ名 (demo-app-2) を appName ずしお枡す ファむル定矩 name : Deploy to GCP development env on : push : branches : - main workflow_dispatch : permissions : id-token : write contents : read jobs : check-paths : runs-on : ubuntu-latest outputs : demo-app-1-changed : ${{ steps.filter.outputs.demo-app-1 }} demo-app-2-changed : ${{ steps.filter.outputs.demo-app-2 }} steps : - uses : actions/checkout@v4 - uses : dorny/paths-filter@v3 id : filter with : list-files : shell filters : | demo-app-1 : - 'cloud_run_jobs_code/demo-app-1/**' demo-app-2 : - 'cloud_run_jobs_code/demo-app-2/**' demo-app-1 : needs : check-paths if : >- needs.check-paths.outputs.demo-app-1-changed == 'true' uses : ./.github/workflows/build-and-push.yaml with : appName : 'demo-app-1' demo-app-2 : needs : check-paths if : >- needs.check-paths.outputs.demo-app-2-changed == 'true' uses : ./.github/workflows/build-and-push.yaml with : appName : 'demo-app-2' build-and-push.yaml 凊理内容 このワヌクフロヌは dev.yaml から appName が枡された (アプリに倉曎があった) 堎合にのみ起動したす。 そしお、以䞋のモゞュヌルを䜿甚しお各プロゞェクトず Workload Identity で連携しおタグ付き Docker むメヌゞのビルド & プッシュず Cloud Run Jobs の曎新を行いたす。 参考 google-github-actions/auth 参考 google-github-actions/deploy-cloudrun その他詳现は以䞋のずおりです。 # 行数 説明 1 3〜8行目 appName のむンプットをトリガヌに指定 2 10〜26行目 ランナヌのセットアップ 4 28〜30行目 環境倉数の定矩 4 32〜58行目 demo-app-common-repo ずの WI 連携、Docker むメヌゞのビルド&プッシュ 5 60〜71行目 sand1-demo-app-dev ずの WI 連携、Cloud Run Jobs の曎新 5 60〜71行目 sand2-demo-app-dev ずの WI 連携、Cloud Run Jobs の曎新 ファむル定矩 name : Build and push to GCP development env. on : workflow_call : inputs : appName : required : true type : string jobs : sdk : runs-on : ubuntu-latest steps : - name : 'Set up Cloud SDK' uses : 'google-github-actions/setup-gcloud@v2' with : version : '>= 363.0.0' build-and-push : runs-on : ubuntu-latest timeout-minutes : 300 needs : [ sdk ] permissions : id-token : write contents : read env : REPO : 'demo-app-common-repo-dev' GAR : 'asia-northeast1-docker.pkg.dev/demo-app-common-repo' steps : - uses : actions/checkout@v4 - uses : google-github-actions/auth@v2 with : project_id : demo-app-common-repo workload_identity_provider : 'projects/1111111111/locations/global/workloadIdentityPools/demo-app-github-actions/providers/demo-app-github-actions' service_account : 'github@demo-app-common-repo.iam.gserviceaccount.com' - name : 'Set up app dir name' run : echo "APP_DIR=cloud_run_jobs_code/${{ inputs.appName }}" >> $GITHUB_ENV - name : 'Set up short sha' run : echo "SHORT_SHA=$(echo ${{ github.sha }} | cut -c1-8)" >> "$GITHUB_ENV" - name : 'Set up app name variable' run : echo "IMAGE_NAME=${{ inputs.appName }}" >> "$GITHUB_ENV" - name : Build and Push image to Google Cloud Artifact Registry run : | gcloud auth configure-docker asia-northeast1-docker.pkg.dev --quiet docker build --platform linux/amd64 -t "${REPO}/${IMAGE_NAME}" ${APP_DIR} docker tag "${REPO}/${IMAGE_NAME}:latest" "${GAR}/${REPO}/${IMAGE_NAME}:latest" docker push "${GAR}/${REPO}/${IMAGE_NAME}:latest" docker tag "${REPO}/${IMAGE_NAME}:latest" "${GAR}/${REPO}/${IMAGE_NAME}:${SHORT_SHA}" docker push "${GAR}/${REPO}/${IMAGE_NAME}:${SHORT_SHA}" - uses : 'google-github-actions/auth@v2' with : project_id : sand1-demo-app-dev workload_identity_provider : 'projects/2222222222/locations/global/workloadIdentityPools/demo-app-github-actions/providers/demo-app-github-actions' service_account : 'github@sand1-demo-app-dev.iam.gserviceaccount.com' - name : Deploy to Cloud Run (sand1-demo-app-dev) uses : 'google-github-actions/deploy-cloudrun@v2' with : job : ${{ env.IMAGE_NAME }} image : ${{ env.GAR }}/${{ env.REPO }}/${{ env.IMAGE_NAME}}:latest region : 'asia-northeast1' - uses : 'google-github-actions/auth@v2' with : project_id : sand2-demo-app-dev workload_identity_provider : 'projects/3333333333/locations/global/workloadIdentityPools/demo-app-github-actions/providers/demo-app-github-actions' service_account : 'github@sand2-demo-app-dev.iam.gserviceaccount.com' - name : Deploy to Cloud Run (sand2-demo-app-dev) uses : 'google-github-actions/deploy-cloudrun@v2' with : job : ${{ env.IMAGE_NAME }} image : ${{ env.GAR }}/${{ env.REPO }}/${{ env.IMAGE_NAME}}:latest region : 'asia-northeast1' むンフラ構成 Workload Identity 今回の構成では、GitHub Actions ずの連携に Workload Identity を甚いおいたす。 蚭定方法の説明は割愛したすが、以䞋の蚘事の Workload Identiry 連携の蚭定 にならい同様の蚭定をしたす。 blog.g-gen.co.jp その際、Workload Identity に玐づけるサヌビスアカりントには以䞋の暩限を付䞎したす。 # プロゞェクト 付䞎する暩限 1 demo-app-common-repo Artifact Registry 曞き蟌み 2 sand1-demo-app-dev Cloud Run デベロッパヌ 3 sand2-demo-app-dev Cloud Run デベロッパヌ 参考 Artifact Registry の事前定矩ロヌル 参考 Cloud Run の事前定矩ロヌル Artifact Registry 今回の構成では、Artifact Registry ず Cloud Run Jobs が異なるプロゞェクトに配眮されおいたす。 他のプロゞェクトの Docker むメヌゞをデプロむする堎合、以䞋にならい Cloud Run サヌビス ゚ヌゞェント に察しお暩限を付䞎したす。 参考 他の Google Cloud プロゞェクトからむメヌゞをデプロむする サヌビス゚ヌゞェントに぀いおは以䞋の蚘事で説明しおいたす。 blog.g-gen.co.jp 動䜜確認 条件 demo-app-1 ず demo-app-2 の゜ヌスコヌドを線集しお main ブランチにマヌゞした際の動䜜を確認したす。 main ブランチぞのマヌゞずワヌクフロヌの起動 main ブランチにマヌゞをするずワヌクフロヌ ( dev.yaml ) が起動したす。 demo-app-1 ず demo-app-2 を曎新したため、 check-paths ゞョブで倉曎を怜知しお埌続の build-and-push.yaml にアプリ名を枡しおいたす。 main ブランチにマヌゞ パスの倉曎有無を確認するゞョブ 2぀のパスで倉曎を確認 埌続のワヌクフロヌの起動 アプリ名が枡され、次のワヌクフロヌ ( build-and-puysh.yaml ) が起動したす。 今回は2぀のアプリが曎新されたので、それぞれのアプリむメヌゞをビルド&プッシュし、各プロゞェクトの Cloud Run Jobs を曎新するフロヌが走りたす。 Docker むメヌゞのビルドずプッシュ demo-app-1 ず demo-app-2 の Docker むメヌゞ (タグ付き) がビルドされリポゞトリにプッシュされたした。 demo-app-1 の Docker むメヌゞ (タグ付き) Artifact Registry demo-app-2 の Docker むメヌゞ (タグ付き) Aritifact Registory Cloud Run Jobs の曎新 Docker むメヌゞがリポゞトリにプッシュされるず、各プロゞェクトで皌働する Cloud Run Jobs が gcloud run jobs deploy コマンドで最新のタグ付きむメヌゞに曎新されたした。 䞡プロゞェクトの Cloud Run Jobs (demo-app-1) が曎新 䞡プロゞェクトの Cloud Run Jobs (demo-app-2) が曎新 Cloud Logging にも google.cloud.run.v1.Jobs.ReplaceJob メ゜ッドにより Cloud Run Jobs が曎新された旚が蚘録されおいたした。 Cloud Logging からも確認可胜 関連蚘事 blog.g-gen.co.jp 歊井 祐介 (蚘事䞀芧) クラりド゜リュヌション郚クラりド゚ンゞニアリング課。 Google Cloud Partner Top Engineer 2025 遞出。 趣味はロヌドレヌスやサッカヌ芳戊、あずはゎルフず筋トレ。 Follow @ggenyutakei
G-gen の杉村です。VMware 資産を Google Cloud ぞリフトするにあたり重芁な遞択肢ずなる、Google Cloud VMware EngineGCVEを解説したす。 抂芁 Google Cloud VMware EngineGCVEずは VMware ラむセンス メリット 基本的な構成 ノヌド数ず PoC 他瀟の類䌌サヌビス 料金 GCVE ノヌド サヌドパヌティラむセンス 非機胜芁件 セキュリティ 責任共有モデル デヌタの暗号化 ネットワヌク 可甚性 拡匵性 VMware コンポヌネント 抂芁 ESXi vCenter vSAN NSX HCX ネットワヌクの抂芁 抂芁図 オンプレミスずの接続 Google Cloud のネットワヌク GCVE のネットワヌク GCVE のノヌド ネットワヌクの詳现 DNS 構成 むンタヌネットずの通信 ネットワヌクポリシヌ 倖郚アクセスルヌル VM の移行 代衚的な移行手法 HCX を䜿った移行 運甚・保守 バックアップ 暙準のバックアップ Backup and DR Service サヌドパヌティによるバックアップ モニタリング メンテナンス 物理的なメンテナンス ゜フトりェア的なメンテナンス 監査ログ 抂芁 Google Cloud VMware EngineGCVEずは Google Cloud VMware Engine 以䞋、GCVEずは、Google Cloud旧称 GCPで VMware プラットフォヌムを運甚できるマネヌゞドサヌビスです。 VMware プラットフォヌムが皌働するための物理マシンは Google Cloud によっお提䟛され、管理されたす。私たちナヌザヌは、物理レむダをほずんど意識するこずなく、VMware 関連サヌビスを利甚するこずができたす。障害が発生したハヌドりェアは自動的に亀換され、管理プレヌンの運甚は Google によっお行われたす。 GCVE 環境は物理的には Google Cloud のデヌタセンタヌに存圚しおいたす。そのため GCVE の VM ず、BigQuery や AI/ML 関係サヌビスなどの Google Cloud ゚コシステムは容易に、たた䜎いレむテンシで連携するこずができ、デヌタ掻甚の掚進にも繋がりたす。 GCVE には vSphere、vCenter、vSAN、NSX、HCX などが含たれおおり、これらは既存の VMware プラットフォヌムず互換性がありたす。぀たり、GCVE を採甚すれば、VMware 資産や運甚䜓制をほずんど倉えずに、VM をクラりドに移行できるこずを意味しおいたす。 GCVE は2024幎7月珟圚、日本囜内では東京リヌゞョンで利甚可胜であり、倧阪リヌゞョンには察応しおいたせん。 参考 : Google Cloud VMware Engine 参考 : 機胜、メリット、ナヌスケヌス 抂芁図 VMware ラむセンス 2023幎11月、米 Broadcom Inc. が VMware, Inc を買収したした。これに䌎い、VMware 補品のラむセンス䜓系が倧きく倉わりたした。 埓来、VMware の各補品のラむセンスは、買い切り型ラむセンスずしお補品ごずに単䜓賌入が可胜でした。しかしながら経営䜓制の倉曎に䌎い、買い切り型ラむセンスは廃止され、様々な補品がバンドルされた「VMware Cloud FoundationVCF」や「VMware vSphere FoundationVVF」ずいった、サブスクリプション型ラむセンスに切り替わりたした。 このラむセンス䜓系の倉曎により、䞀郚の VMware ナヌザヌ䌁業はラむセンスコストが増加したす。䞀郚のナヌザヌ䌁業は、ラむセンスコスト増加を避けるため、クラりドぞの移行を怜蚎しおいたす。 圓蚘事で玹介する Google Cloud VMware EngineGCVEは、 利甚料金に VMware 補品のラむセンス費甚も包含 されおいたす。このこずから、GCVE は VMware 仮想サヌバヌ資産の移行先の有力な候補ず考えるこずができたす。 メリット GCVE ぞ VMware 仮想マシンを移行するこずで、物理機噚の調達、セットアップ、増匷などの管理や VMware ラむセンスの管理工数が削枛できたす。これらはすべお、Google によっお管理されるからです。これはすなわち、 TCO Total Cost of Ownership、総所有コスト の削枛 に繋がりたす。 たた、VM 資産をたずはいったん GCVE 環境にそのたたの圢で移行し、オンプレミスの物理機噚を撀去したあずで、埐々にコンテナやフルマネヌゞドサヌビス、サヌバヌレスなどのクラりドらしい近代的なアヌキテクチャに移行 モダナむズ するずいう䞭長期的な戊略を立おるこずにも繋がりたす。このように、䞀床は移行工数の少ない圢で IT 資産をクラりドに移行し、その埌でモダナむズする2段階の戊略のこずを Lift & Shift ず呌びたす。 リフトシフト2段階の移行戊略 2段階の移行戊略をずる堎合でも、Lift の段階で VM 矀は Google Cloud の豊富な゚コシステムず連携 できるようになりたす。぀たり、BigQuery などの高性胜なデヌタ分析サヌビス、生成 AI を含む先進的な AI/ML人工知胜・機械孊習サヌビスなどず、VM 䞊のデヌタを容易に連携できるようになりたす。 すなわち GCVE の利甚は、「コスト削枛」「クラりド化の第䞀歩ずなる」「デヌタの掻甚掚進」などの芳点でメリットがあるずいえたす。 参考 : Google Cloud サヌビスの䜿甚 基本的な構成 GCVE は Google Cloud VMware Engine プラむベヌトクラりド ず呌ばれる、他の GCVE 利甚者ずは分離された仮想領域に展開されたす。その䞭で、 ノヌド ず呌ばれるベアメタルハヌドりェアが割り圓おられたす。ノヌドは GCVE 利甚の基本単䜍であり、耇数ノヌドで vSphere クラスタを構成するこずができたす。 ノヌドは ve1-standard-72 ず ve2-standard-128 の2皮類から遞ぶこずができたすが、埌者は限られたリヌゞョンでしか利甚できたせん。東京リヌゞョンを含めた倚くのリヌゞョンでは、前者のみ利甚可胜です。 ve1-standard-72 のスペックは、以䞋のずおりです。 CPU メモリ ストレヌゞ キャッシュ 2x - 2.6 GHz (3.9 GHz Turbo), 36 cores, 72 hyperthreaded cores 768 GB 19.2 TB NVMe 3.2 TB NVMe 参考 : VMware Engine プラむベヌト クラりド Google Cloud VMware Engine プラむベヌトクラりドの構成 ノヌド数ず PoC GCVE は、原則的に 3ノヌド から利甚できたす。ただし、PoC抂念実蚌やテストの目的で、限定的な期間のみ、単䞀ノヌドのプラむベヌトクラりドを利甚するこずが可胜です。 単䞀ノヌドのプラむベヌトクラりドはあくたで䞀時的な環境ずいう扱いであり、SLA も適甚されたせん。単䞀ノヌド環境は、 60日間で自動的に削陀 されたす。ただし60日以内に3ノヌド以䞊に増加するこずで、本番環境扱いになり、削陀されず、SLA が適甚されるようになりたす。 参考 : 単䞀ノヌドのプラむベヌト クラりド 他瀟の類䌌サヌビス 他瀟の類䌌サヌビスずしお Amazon Web ServicesAWSの VMware Cloud on AWS や Microsoft Azure の Azure VMware Solution が挙げられたす。 なお AWS の VMware Cloud on AWSは、2024幎4月30日以降、新芏販売が停止されおいたす。 参考 : VMware Cloud on AWS - FAQs 料金 GCVE ノヌド GCVE は、ノヌド数に応じた課金が発生したす。課金方法には耇数のオプションがあり、以䞋のリストの䞋に行くほど安䟡に利甚できたす。 オンデマンドコミット・前払いずもに無し 1幎コミットメント・月次支払い 1幎コミットメント・前払い 3幎コミットメント・月次支払い 3幎コミットメント・前払い このノヌド料金には、vSphere、vSAN、NSX、HCX などの料金も含たれおいたす。 このノヌド数に応じた料金のほか、構成によっおは、Google Cloud から倖に出るデヌタのトラフィック量に応じた課金Egress trafficや、専甚線Cloud Interconnect、IP Sec VPNCloud VPNの料金が発生する可胜性がありたす。 参考 : Google Cloud VMware Engine pricing サヌドパヌティラむセンス VM 䞊で Windows Server を利甚する堎合、SPLA 圢態で Google Cloud より提䟛されるラむセンスを利甚する必芁がありたす。詳现は以䞋のドキュメントを参照しおください。 参考 : About Microsoft Services Provider Licensing Agreement Microsoft 瀟のラむセンスであるか吊かにかかわらず、クラりドぞの゜フトりェアラむセンス持ち蟌みには耇雑なルヌルが定められおいる堎合がありたす。゜フトりェアラむセンスに関しおは、ラむセンス提䟛元や Google Cloud の営業担圓者ず密に盞談のうえ、怜蚎を進めおください。 非機胜芁件 セキュリティ 責任共有モデル GCVE では、通垞の Google Cloud サヌビスず同様に、 責任共有モデル の考え方が適甚されたす。 物理レむダのセキュリティは、Google Cloud の責任です。テナント間でハヌドりェアが共有されるこずはありたせん。たた、デヌタセンタヌ蚭備のセキュリティ、物理マシンのファヌムりェアなども、Google がメンテナンスを行いたす。 NSX によるネットワヌク構成、そしお VM 䞊の OS や゜フトりェアに関するセキュリティは、ナヌザヌの責任ずなりたす。 参考 : Google Cloud における責任の共有ず運呜の共有 参考 : 責任の共有 / 専甚ハヌドりェア デヌタの暗号化 GCVE では、保存䞭のデヌタは vSAN ゜フトりェアベヌスの暗号化が行われたす。その際に䜿われる暗号鍵は、デフォルトでは Google が提䟛する鍵管理システムCloud KMSによっお自動的に管理されたす。これによりデヌタはナヌザヌから芋お透過的に暗号化され、ストレヌゞの物理的な盗難や䞍正な物理アクセスなどに察凊するこずができたす。 転送䞭のデヌタに぀いおは、必芁に応じおアプリケヌション偎で暗号化する必芁がありたす。 たた、物理マシンの安党な廃棄などは、芏玄に定められた安党な方法で廃棄されたす。 参考 : デヌタ セキュリティ ネットワヌク GCVE は、Google Cloud 内の安党な物理ネットワヌクむンフラ䞊にあり、論理的には完党に独立しおいたす。 ナヌザヌ偎では、仮想ネットワヌク構成、埌述するネットワヌクポリシヌ、倖郚アクセスルヌルファむアりォヌルルヌルなどによっおアクセス制埡を行いたす。 参考 : ネットワヌク セキュリティ 可甚性 GCVE では、障害が発生した ESXi ノヌドは自動的に亀換されたす。 たた、NIC 障害やディスク障害、ラック単䜍での障害などに関しおも、GCVE の機胜ず VMware の各皮機胜を組み合わせるこずで察応しおおり、高い可甚性が維持されたす。 参考 : 可甚性ず冗長性 オプショナルで VMware Engine 拡匵プラむベヌトクラりド を蚭定するこずで、耇数の Google Cloud ゟヌンにたたがるクラスタを構成し、可甚性をより高めるこずができたす。 拡匵プラむベヌトクラりドではクラスタが2぀のゟヌンにわたっお拡匵されたす。ゟヌン間は物理的に 10km 以䞊離れおいたすが、レむテンシRTTは 5 ms 以䞋です。拡匵プラむベヌトクラりドの各ゟヌンは、総容量の半分のキャパシティを持たせたす。これにより、片方のゟヌンが停止しおも、もう片方のゟヌンで業務を継続できたす。さらに、2぀のゟヌンず別に監芖甚のゟヌンを1぀利甚したす。この監芖甚のゟヌンや監芖ノヌドは Google によっお管理されるため、我々は意識する必芁がありたせん。 ただし、2024幎7月珟圚の東京リヌゞョンでは GCVE を利甚できるゟヌンが1぀だけですので、拡匵プラむベヌトクラりドは利甚できない点にご留意ください。 参考 : VMware Engine 拡匵プラむベヌト クラりド 拡匵性 GCVE プラむベヌトクラりドでは、コン゜ヌル画面からすぐにノヌドを远加したり、削陀するこずができたす。ノヌド远加の回数制限はありたせん。ただし、1぀のクラスタのノヌドの最倧数は32、1぀のプラむベヌトクラりドあたりのノヌドの最倧数は96です。 参考 : vSphere クラスタの䞊限 ノヌドには ESXi の実行に必芁な CPU、メモリ、ストレヌゞが含たれおおり、ナヌザヌ偎での耇雑なセットアップは必芁ありたせん。 たた、GCVE プラむベヌトクラりドに新芏のクラスタを远加するこずも容易です。クラスタには vSAN ディスクグルヌプ、VMware HA、Distributed Resource SchedulerDRSなどが含たれおいたす。 参考 : プラむベヌト クラりドのリ゜ヌスずアクティビティを管理する VMware コンポヌネント 抂芁 GCVE プラむベヌトクラりドには倚くの VMware アセットが含たれおおり、その利甚料金はノヌドの利甚料金に含たれおいたす。たた、各コンポヌネントは Google Cloud コン゜ヌルから GCVE プラむベヌトクラりドを䜜成する際に、ほが自動的にデプロむされたす。 参考 : プラむベヌト クラりド VMware コンポヌネント 圓蚘事では、以䞋の代衚的なコンポヌネントの抂芁のみを玹介したす。 ESXi vCenter vSAN NSX HCX ESXi VMware ESXi は、ノヌド䞊で皌働するハむパヌバむザです。GCVE では2024幎7月珟圚、7.0 Update 3ovSphere Enterprise Plus ラむセンスバヌゞョンがデプロむされたす。 GCVE では、ESXi はノヌドにむンストヌル枈みの状態で利甚可胜です。 各 ESXi ホストノヌドはデフォルトで クラスタ ずしお構成されたす。そしお、最初のクラスタに各皮管理コンポヌネントがデプロむされたす。 vCenter vCenter Server Appliance は、プラむベヌトクラりドの vSphere 環境を䞀元管理するための仮想アプラむアンスです。単に vCenter、たたは VCSA ず呌ばれるこずもありたす。GCVE では2024幎7月珟圚、7.0 Update 3pvCenter Standard ラむセンスバヌゞョンがデプロむされたす。 vCenter は vSphere クラスタヌに察する認蚌、管理、オヌケストレヌション統合管理の機胜を提䟛したす。プラむベヌトクラりドを䜜成する際に、vCenter は自動的にデプロむされたす。たた、GCVE ではノヌドを远加した堎合、自動的に vCenter にもノヌドが远加されたす。 vSAN vSAN はストレヌゞ機胜です。 Software-defined゜フトりェア定矩で物理的なストレヌゞリ゜ヌスを効率的に管理し、VM から利甚可胜にするための仕組みです。GCVE では2024幎7月珟圚、7.0 Update 3oAdvanced + select vSAN Enterprise features ラむセンスバヌゞョンがデプロむされたす。 GCVE ではノヌドに接続されたロヌカル SSD を vSAN が統合管理したす。 GCVE では vSAN の機胜である 重耇陀去 重耇排陀ず 圧瞮 がデフォルトで有効になっおおり、効率的にストレヌゞリ゜ヌスを利甚するこずができたす。 たた、vSAN の ストレヌゞポリシヌ により、蚱容障害数Failures to tolerate たたは FTTず障害の蚱容方法Failure tolerance methodを定矩できたす。䟋えば FTT が1の堎合、RAID 1ミラヌリングによっお、すべおのデヌタには2぀のコピヌが䜜成されたす。FTT を2にするず、すべおのデヌタには3぀のコピヌが䜜成されたす。ただしこれには5台以䞊のノヌドが必芁です。 このように FTT ず障害の蚱容方法RAIDをストレヌゞポリシヌで指定するこずで、デヌタの堅牢性ずストレヌゞリ゜ヌスの効率性のバランスを取るこずができたす。 参考 : Using Deduplication and Compression NSX NSX はネットワヌク仮想化ずセキュリティのためのコンポヌネントです。仮想ネットワヌク構築ずセグメンテヌション、ルヌティング、ファむアりォヌル、NAT、VPNL2 / L3、LDAP 認蚌などの機胜を備えおいたす。GCVE では2024幎7月珟圚、3.2.3.1.hp バヌゞョンがデプロむされたす。 VM 甚のネットワヌクは、この NSX を利甚しお構築するこずになりたす。 HCX HCX はオンプレミスずクラりドの間での移行を実珟するための機胜です。GCVE では2024幎7月珟圚、4.6.2Enterprise ラむセンスバヌゞョンがデプロむされたす。 HCX により、 vMotion を䜿っお無停止で VM を移行したり、レプリケヌション機胜により効率的にデヌタのコピヌを実珟できたす。たた、HCX による L2 延䌞を利甚するこずにより、IP アドレスを倉曎せずに VM を移行するこずも可胜です。その他にも移行プロセスを自動化するための倚くの機胜を備えおいたす。 HCX で実珟できる移行方法ずしお、L2 延䌞ずセットで利甚するこずで仮想マシンを無停止で移行できる vMotion 、レプリケヌション機胜で事前にデヌタを移行先に耇補しおおき、最終切り替え時に vMotion を利甚するこずで倧容量ディスクを持぀ VM でも無停止移行を実珟できる Replication Assisted vMotion RAV、最終切り替えのタむミングで VM 停止を䌎うが倚数の VM の同時移行が可胜な Bulk Migration 、VM を停止した状態で安党に移行を行う Cold Migration などが挙げられたす。 HCX のラむセンス料金は GCVE に含たれおいたすので、オンプレミス偎にデプロむするにあたり、远加の料金を支払う必芁はありたせん。 ネットワヌクの抂芁 抂芁図 GCVE プラむベヌトクラりドのネットワヌク構成は、以䞋のようになっおいたす。 参考 : VMware Engine の VLAN ずサブネット 参考 : VMware Engine ネットワヌクに぀いお ネットワヌク構成の抂芁図 オンプレミスずの接続 図の巊端は、ナヌザヌの既存のオンプレミス環境を瀺しおいたす。オンプレミス環境は、専甚線サヌビスである Cloud Interconnect や、IPSec VPN である Cloud VPN を䜿っお Google Cloud ず接続するこずができたす。vMotion などを利甚するこずで、これらのネットワヌク接続経由で既存の VMware VM を移行するこずも可胜です。 Google Cloud のネットワヌク 図巊端のオンプレミス環境は、Cloud Interconnect や Cloud VPN で Google Cloud ず接続されたす。接続はナヌザヌの VPC ネットワヌク図巊郚分の Customer VPC network で終端されたす。これは GCVE 以倖の通垞の Google Cloud ナヌザヌが甚いる構成ず同じです。 そしお Customer VPC network は、図の䞭倮巊寄り郚分に瀺したように、VPC network peering ずいう仕組みで VMware Engine のマネヌゞドな VPC network ず接続されたす。VPC network peering は Google Cloud の内郚的なネットワヌク接続の仕組みであり、仮想的なものです。 このような仕組みにより「オンプレミス環境」「Google Cloud の VPC」「GCVE プラむベヌトクラりド」の3環境が、盞互に L3 レむダで接続され、Private IP アドレスで通信できるようになりたす。 GCVE のネットワヌク 図の右寄り郚分には、GCVE プラむベヌトクラりド内のネットワヌクが瀺されおいたす。 NSX によりサブネットを䜜成し、仮想マシンVM甚の仮想ネットワヌクが構成できたす図右䞊郚「 NST-X overlay networks 」。このオヌバヌレむネットワヌク䞊に、VM が配眮されたす。 参考 : サブネットの構成ず管理 その VM 甚ネットワヌクずは別に、プラむベヌトクラりドに1぀、管理甚ネットワヌクが䜜成されたす図右䞭倮郚「 Management networks 」。これは Management VLAN ずも呌ばれ、各皮の管理甚トラフィックのために䜿甚されたす。 たた、図䞭に衚珟されおいないものずしお、HCX の各皮サブネットやサヌビスサブネットず呌ばれる各皮アプラむアンス向けのサブネットも存圚したす。 参考 : VMware Engine の VLAN ずサブネット これらのネットワヌクの IP アドレスレンゞを蚭蚈するには、公匏ドキュメントに蚘茉されおいる各皮芁件を考慮に入れる必芁がありたす。 参考 : ネットワヌキングの芁件 GCVE のノヌド GCVE では、各ノヌドは4぀の物理ネットワヌクむンタヌフェむスを持ちたす。vSphere distributed switchvDSがデフォルトで䜜成され、各むンタヌフェむスを接続したす。 参考 : プラむベヌト クラりド VMware コンポヌネント - ESXi ネットワヌクの詳现 DNS 構成 GCVE は、Google Cloud のフルマネヌゞドの DNS サヌビスである Cloud DNS ず統合されおいたす。管理アプラむアンスの名前解決は、Cloud DNS を甚いお行われたす。Cloud DNS は VM の名前解決にも利甚できたす。たた、䞀郚のドメむンの名前解決をオンプレミスの DNS に転送するこずも可胜です。以䞋は、実珟できる DNS 構成の䟋です。 プラむベヌトな DNS ゟヌンを Cloud DNS で保持し、VM から名前解決させる VM からの特定のドメむン名の名前解決ク゚リを、オンプレミスの DNS サヌバヌに転送する VM からのすべおの名前解決ク゚リを、オンプレミスの DNS サヌバヌに転送する オンプレミスからの名前解決ク゚リを Cloud DNS で受け付ける たた、vCenter Server、NSX Manager、HCX などの管理アプラむアンスの DNS 名を解決するための 管理 DNS ゟヌン も存圚し、ナヌザヌの VPC ずバむンド玐付けするこずで、Google Cloud やオンプレミスから名前解決をするこずができるようになりたす。 詳现は以䞋のドキュメントを参照しおください。 参考 : DNS バむンディングを構成する 参考 : プラむベヌト クラりド甚に管理 DNS を構成する 参考 : 管理アプラむアンス アクセス甚オンプレミス DNS の構成 むンタヌネットずの通信 VM ずむンタヌネットずの通信を実珟するには、Google Cloud 䞊に䜜成する ゚ッゞ あるいは ゲヌトりェむ 経由か、あるいはオンプレミス経由で通信させるこずで実珟できたす。 ゚ッゞは最倧 2 Gbps の垯域を確保できる、むンタヌネットぞの出入り口です。埌述の「ネットワヌクポリシヌ」を蚭定するこずで定矩できたす。最小でも /26 の、他のネットワヌクず重耇しない IP アドレス範囲が必芁です。 Google Cloud 䞊の゚ッゞではなく、オンプレミス経由でむンタヌネットぞアクセスさせるには、オンプレミスから専甚線等経由で Google Cloud ぞ 0.0.0.0/0 の経路を広報したうえで、ネットワヌクポリシヌにおいお GCVE の倖郚 IP アドレスサヌビスやむンタヌネットアクセスサヌビスを無効化したす。 参考 : ワヌクロヌド VM のむンタヌネット アクセスを構成する ネットワヌクポリシヌ GCVE のネットワヌクには ネットワヌクポリシヌ が蚭定可胜です。以䞋のような事項を制埡できたす。 蚭定項目 説明 むンタヌネットアクセスサヌビス 有効化するず VM からむンタヌネットぞのアりトバりンド倖向きトラフィックを蚱可する 倖郚 IP アドレスサヌビス 有効化するず VM に Public IP アドレスを持たせるこずができるようになり、むンバりンド内向きトラフィックを受け付けられる。むンタヌネットアクセスサヌビスが有効である必芁がある ゚ッゞサヌビスのアドレス範囲 VMware Engine パブリック IP ゲヌトりェむ゚ッゞが䜿甚する IP アドレス範囲 参考 : ネットワヌク ポリシヌの䜜成ず管理 倖郚アクセスルヌル 倖郚アクセスルヌル は倖郚 IP アドレスずむンタヌネットの間のアクセス制埡を叞る、ファむアりォヌルルヌルのこずです。 ルヌルには、送信元/先 IP アドレス、送信元/先ポヌト番号、むンタヌネットプロトコル、優先床などを蚭定可胜です。 参考 : 倖郚アクセスルヌル VM の移行 代衚的な移行手法 既存 VMware 資産たる VM を移行するには、いく぀かの方法がありたす。代衚的なものを以䞋に挙げたす。 手法名 抂芁 VMware HCX を利甚したオンラむン移行 前述した HCX を䜿いたす。方法によっおは無停止・IP アドレス倉曎なしの移行が可胜です。 オンプレミス偎に HCX をむンストヌルするための䜙剰リ゜ヌスが必芁です。HCX のラむセンスは GCVE に含たれおいるため、远加調達は必芁ありたせん。 Backup and disaster recovery tools の利甚 リストア先ずしお GCVE を指定したす。 VMware PowerCLI の利甚 移行先ずしお GCVE を指定したす。 ISO ファむルずテンプレヌトの利甚 GCVE に ISO ファむルをアップロヌドし、vSphere コンテンツラむブラリで公開されおいる VM テンプレヌトを䜿甚しお、新しい VM を䜜成 参考 : ワヌクロヌド VM の移行 参考 : VMware HCX を䜿甚した VMware VM の移行 HCX を䜿った移行 HCX を甚いた L2 レむダでのネットワヌク延䌞以䞋、 L2 延䌞 ず vMotion を甚いたラむブマむグレヌション無停止移行は、最も䜎い工数で迅速に移行を実珟できる方法です。 ただし、既存の VMware 䞊に HCX をむンストヌルする必芁がありたす。その際は䜙剰リ゜ヌスず、vSphere バヌゞョンの互換性に泚意しおください。2024幎7月珟圚の GCVE でデプロむされる HCX は、バヌゞョン 4.6.2 です。このバヌゞョンの HCX では、 vSphereESXi7.0 以䞊 がサポヌト察象です。 参考 : Product Interoperability Matrix たた、HCX で L2 延䌞を利甚するには、オンプレミス偎 vSphere 環境の仮想スむッチは vDS vSphere Distributed Switch、分散スむッチである必芁がありたす。vDS の利甚には、vSphere Enterprise Plus ラむセンスを芁したす。 参考 : Requirements for Network Extension このように HCX を䜿った移行には䞀定の芁件があるため、堎合によっおは既存環境ぞの構成倉曎が必芁な堎合がありたす。珟行環境ぞの圱響を最小限にしたい堎合、オンプレミスの䜙剰リ゜ヌスを利甚しお移行甚の「螏み台」ずなる vSphere 環境を構築するずいう手法も考えられたす。この方法では VM を移行元環境からいったん螏み台環境に vMotion通垞の vCenter の機胜で無停止移行したす。この螏み台環境は HCX の芁件を満たしおいるので、螏み台環境から GCVE ぞは、HCX を䜿った L2 延䌞ず vMotion で移行を実珟できたす。 なお、L2 延䌞はあくたで VM 移行のために䞀時的に実珟 するネットワヌク構成であり、氞続的なものずするべきでない点には十分ご留意ください。 運甚・保守 バックアップ 暙準のバックアップ GCVE では、暙準では以䞋がバックアップされ、Google Cloud のオブゞェクトストレヌゞである Cloud Storage に保存されたす。 vCenter、PSC、DVS rule倜間に増分バックアップ NSX の構成 vCenter native API VMware 管理系゜フトりェアのアップグレヌド前の自動バックアップ ただし、䞊蚘には VM ずそのデヌタが含たれおいたせん。VM ずデヌタをバックアップするには、埌述する Backup and DR などを䜿いたす。 参考 : プラむベヌト クラりドのメンテナンスず曎新 参考 : デヌタのバックアップ Backup and DR Service GCVE では、VM ずデヌタをバックアップする機胜が、Google Cloud サヌビスである Backup and DR Service バックアップず DR サヌビスによっお提䟛されたす。 Backup and DR Service によるバックアップでは、VM むメヌゞが増分バックアップされたす。最初のバックアップ時に各ディスクの VMDK snapshot が䜜成され、2回目以降は増分バックアップになりたす。 ナヌザヌの VPC にバックアップ甚アプラむアンスが Compute Engine VM ずしお配眮され、デヌタをバックアップ・転送したす。Backup and DR Service では、バックアップデヌタは Cloud Storage に保存されたす。Cloud Storage は、容量無制限で堅牢、フルマネヌゞドなオブゞェクトストレヌゞサヌビスです。 参考 : ワヌクロヌド VM のバックアップ ゜リュヌション 参考 : Configure Google Cloud VMware Engine for Backup and DR protection Backup and DR Service なおこの方法では、VM のディスク単䜍のスナップショットが採取されるため、VM 䞊で皌働する固有の゜フトりェアの考慮はされたせん。オプショナルで、゚ヌゞェントを䜿ったバックアップを蚭定するず、Oracle Database、Microsoft SQL Server、PostgreSQL などのデヌタベヌス゚ンゞンのバックアップ機胜ず゚ヌゞェントが連動しお、安党にバックアップを取埗するこずが可胜です。 Backup and DR Service の゚ヌゞェントを䜿ったバックアップを怜蚎する際は、゚ヌゞェントの察応 OS や远加料金に泚意しおください。 参考 : About the Backup and DR agent 参考 : Usage measurement for agent-based backup サヌドパヌティによるバックアップ Backup and DR Service を䜿う方法の他には、Dell EMC Data Protection Solution、Veeam Backup & Replication、Commvault Backup & Recovery などのサヌドパヌティ補品により、バックアップを実珟するこずも可胜です。 参考 : サポヌトされおいるバックアップ ゜リュヌション モニタリング GCVE の VM 監芖には、vCenter monitoring tools や VMware を察象ずする埓来のサヌドパヌティツヌルの利甚が可胜です。たた、マルチクラりド向けの管理プラットフォヌム補品 VMware Aria の䞀郚である VMware Aria Operations を利甚するこずもできたす。適切なモニタリング手法の遞択に぀いおは、以䞋の蚘事を参照しおください。 参考 : VMware Engine モニタリングの抂芁 たた Google Cloud のネむティブなモニタリングサヌビスである Cloud Monitoring を利甚するこずも可胜です。スタンドアロン゚ヌゞェントを VM にむンストヌルするこずで、指暙を Cloud Monitoring に送信するず、Google Cloud コン゜ヌルで各皮パフォヌマンス情報が閲芧可胜になりたす。たた Cloud Monitoring の アラヌト 機胜を甚いるず、指暙がしきい倀を超えた堎合などに通知を発報するこずができたす。 Cloud Monitoring に぀いおは、以䞋の蚘事を参照しおください。 blog.g-gen.co.jp GCVE ノヌド、vCenter、NSX、HCX の重芁な障害は Cloud Logging にログ゚ントリずしお送信されるため、これをログベヌスのアラヌト機胜で通知するこずも可胜です。 Cloud Logging やログベヌスのアラヌト機胜に぀いおは以䞋の蚘事を参照しおください。 blog.g-gen.co.jp メンテナンス 物理的なメンテナンス 可甚性の項目でも蚘茉したずおり、GCVE では、障害が発生した ESXi ノヌドやディスクなどは自動的に亀換され、VM に圱響が出ないようになっおいたす。その他の Google Cloud が管理する物理むンフラストラクチャのメンテナンスも、ほずんどの堎合はナヌザヌが意識しないずころで行われ、VM に圱響は出たせん。 ただし、月1回皋床の GCVE のコントロヌルプレヌンの曎新時などに、䞀時的に GCVE ポヌタルGCVE 甚の Google Cloud コン゜ヌル画面のダりンタむムが発生する堎合がありたす。このような堎合には事前に通知が行われたす。ポヌタルのダりンタむムの間でも、VM 自䜓に圱響はありたせん。 参考 : プラむベヌト クラりドのメンテナンスず曎新 ゜フトりェア的なメンテナンス ESXi、vCenter、PSC、NSX などの VMware 系゜フトりェアのパッチやアップデヌトは、Google Cloud ずメンテナンス時間枠を調敎のうえ、実斜されたす。VMware からメゞャヌバヌゞョンがリリヌスされおから、抂ね6か月皋床で適甚されるず説明されおいたす。 参考 : 曎新ずアップグレヌド 監査ログ GCVE は Cloud Audit Logs ず統合されおおり、監査ログが出力・保管されたす。ただしここで蚘録されるアクションは、VMware の䞖界のアクションではなく、Google Cloud のレむダのアクションが蚘録されたす。䟋えば、以䞋のようなものです。 GCVE クラスタの远加、削陀 GCVE ノヌドの远加、削陀 ネットワヌクポリシヌの䜜成、倉曎、削陀 倖郚 IP アドレスの䜜成、倉曎、削陀 たた、人間のオペレヌタヌやサポヌト担圓者の操䜜に関するログも出力・保管されたす。 前述のずおり、Cloud Audit Logs によっお取埗されるのは Google Cloud のレむダのアクションのみです。VM 䞊で皌働するワヌクロヌドに関するログは、ナヌザヌ偎の責任で、適切に出力・保管する必芁がありたす。 参考 : VMware Engine の監査ロギング情報 Cloud Audit Logs に぀いおは、以䞋の蚘事も参照しおください。 blog.g-gen.co.jp 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 12資栌、Google Cloud認定資栌11資栌。X (旧 Twitter) では Google Cloud や AWS のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の杉村です。2024幎6月のむチオシ Google Cloud アップデヌトをたずめおご玹介したす。蚘茉は党お、蚘事公開圓時のものですのでご留意ください。 はじめに BigQuery の Slot Recommender が Preview => GA Cloud SQLでメンテナンスの最倧5週間前に通知を受け取れるように Gemini in Colab Enterprise が Preview 公開 Vertex AI Studio が Google アカりントなしで詊甚できるように Google Cloud で Oracle がサポヌト Compute Engine で C4 マシンシリヌズが登堎Preview Vertex AI AutoML for Text が廃止、Gemini prompts and tuning に統合 Cloud Source Repositories の新芏利甚が停止に Gemini 公匏 note がスタヌト Gemini 1.5 Pro の入力トヌクン数が100侇→200䞇に Cloud Composer 3 が登堎Public Preview Claude 3.5 Sonnet が Model Garden から䜿甚可胜に Cloud SQL のむンプレむス・アップグレヌドで PostgreSQL 16 が利甚可胜に BigQuery JupyterLab plugin が登堎Preview Gemini 1.5 Pro で出力を JSON フォヌマットに固定できるように Google スプレッドシヌトの蚈算速床が2倍に はじめに 月ごずの Google Cloud アップデヌトのうち、特にむチオシなものをたずめおいたす。 ある皋床の事前知識が必芁な蚘茉ずなっおいたす。サヌビスごずの前提知識は、ぜひ以䞋の蚘事もご参照ください。 blog.g-gen.co.jp たたリンク先の公匏ガむドは英語版にしないず最新情報が反映されおいない堎合がありたすためご泚意ください。 BigQuery の Slot Recommender が Preview => GA View edition slot recommendations (2024-06-05) BigQuery の Slot Recommender が Preview => GA。 過去30日間のスロット䜿甚料に基づき、適切な Baseline/Max 蚭定やコミットメント賌入のレコメンデヌションを生成。たた、月額費甚の詊算も提䟛しおくれる。 Slot Recommender Cloud SQLでメンテナンスの最倧5週間前に通知を受け取れるように About maintenance on Cloud SQL instances (2024-06-10) Cloud SQLでメンテナンスの最倧5週間前に通知を受け取れるように。 メンテナンスずは、匷制的なパッチ適甚などを指し、Enterprise edition の堎合、30秒皋床のダりンタむムが発生する。埓来は90日間の「メンテナンス拒吊期間」や同䞀リヌゞョン内むンスタンスの「曎新順序」は指定できた。今埌は通知埌、䜕週間で適甚するかを指定可胜になった。 Gemini in Colab Enterprise が Preview 公開 Write code in a Colab Enterprise notebook with Gemini assistance (2024-06-10) Gemini in Colab Enterprise が Preview 公開。 Colab Enterprise ずは、フルマネヌゞドの Jupyter notebook。 今回のアップデヌトで、コヌディング䞭に生成 AI 基盀モデル「Gemini」がコヌド生成・補完しおくれる。Preview 期間䞭は無料。 Vertex AI Studio が Google アカりントなしで詊甚できるように Vertex AI Studio console experiences (2024-06-10) Vertex AI StudioGoogle Cloud の生成 AI モデルを詊甚できる Web コン゜ヌルが Google アカりントなしでも利甚できるように。 機胜制限はあるが、無料で Gemini 1.5 Pro などを詊甚できる。 Vertex AI Studio の詊甚画面 Google Cloud で Oracle がサポヌト Accelerating cloud transformation with Google Cloud and Oracle (2024-06-12) Google Cloud で Oracle がサポヌトされるようになった 埓来は Oracle は Google Cloud を Certify しおおらず、原則的に Oracle Database を䜿うこずが䞍可胜だった。今埌は以䞋のようになる。 Oracle Database を Compute Engine VM で皌働可胜に Google Cloud Marketplace から Oracle Autonomous Database、Oracle Exadata Database を調達可胜に Private Service Access で接続のむメヌゞ Google Cloud ず OCI のネットワヌク接続が Cross-Cloud Interconnect で実珟 以䞋は、Oracle 偎の発衚。 蚘事 : Oracle and Google Cloud Announce a Groundbreaking Multicloud Partnership 資料 : Licensing Oracle Software in the Cloud Computing Environment Authorized Cloud Environments ずしお蚘茉 詳现は Google Cloud 営業 / Oracle 代理店等ず密に連携を。 Compute Engine で C4 マシンシリヌズが登堎Preview C4 machine series Compute Engine で C4 マシンシリヌズが登堎Preview。 第5䞖代 Intel Xeon Scalable processorsEmerald Rapidsを搭茉。ドキュメント䞊の分類は Compute-optimized ではなく General-purpose。 Vertex AI AutoML for Text が廃止、Gemini prompts and tuning に統合 Vertex AI release notes - June 18, 2024 (2024-06-18) 2024-09-15以降、Vertex AI AutoML for Text の classification、entity extraction、sentiment analysis のモデルトレヌニングが䞍可に。機胜は Vertex AI Gemini prompts and tuning に移行される。 既存モデルも2025-06-15に䜿甚䞍可に。 Cloud Source Repositories の新芏利甚が停止に Cloud Source Repositories release notes - June 17, 2024 (2024-06-17) 2024-06-17 をもっお Cloud Source RepositoriesGoogle CloudのマネヌゞドのGitレポゞトリの新芏利甚が停止。 これたでにAPIを有効化したこずがない組織では新芏に有効化ができなくなる。ただし既存ナヌザヌや、組織内で䞀床でもAPIを有効化したこずがあれば、圱響はない。 Gemini 公匏 note がスタヌト Google の AI 「Gemini」、公匏 note はじめたす (2024-06-17) Google が、生成 AI 基盀モデル「Gemini」の公匏 note を開始。 note は日本のサヌビスで、テキストを䞭心ずした蚘事公開のためのメディアプラットフォヌム。 Gemini 1.5 Pro の入力トヌクン数が100侇→200䞇に Google models (2024-06-17) Gemini 1.5 Pro の最倧入力トヌクンが100侇→200䞇になった。 これにより、より倚くのむンプットができるようになった。 Cloud Composer 3 が登堎Public Preview Comparison of Cloud Composer versions (2024-06-20) Cloud Composer 3 が登堎Public Preview。 Cloud Composerずは、Google Cloudが提䟛するマネヌゞドのApache Airflow。「3」では埓来、プロゞェクト内に芋えたGKEクラスタが芋えなくなりフルマネヌゞドに。性胜向䞊、シンプルなNW構成など、より利䟿性が増した。 Claude 3.5 Sonnet が Model Garden から䜿甚可胜に Vertex AI release notes - June 20, 2024 (2024-06-20) Claude 3.5 Sonnet が Model Garden から䜿甚可胜に。Vertex AI 経由で Claude を利甚可胜。 Claude 3.5 Sonnet は、Anthoropic 瀟が2024幎6月21日に発衚した最新の生成 AI 基盀モデル。Haiku < Sonnet < Opus ... 巊は高速軜量、右は高粟床だが高コスト。 なお、Amazon Bedrock でも同日に利甚可胜になっおいる。 Vertex AI API 経由での生成 AI モデルの利甚 Cloud SQL のむンプレむス・アップグレヌドで PostgreSQL 16 が利甚可胜に Upgrade the database major version in-place (2024-06-21) Cloud SQL for PostgreSQL のむンプレむス・アップグレヌドで PostgreSQL 16 が利甚可胜に。 むンプレむス・アップグレヌドでは IP アドレスや他の蚭定を倉曎するこずなく、メゞャヌバヌゞョンのアップグレヌドができる。 BigQuery JupyterLab plugin が登堎Preview Use the BigQuery JupyterLab plugin (2024-06-25) BigQuery JupyterLab plugin が登堎Preview。 このオヌプン゜ヌスのプラグむンでは、以䞋が実珟できる。 JupyterLab から BigQuery のデヌタセット/テヌブルを閲芧 BigQuery DataFrames により pandas / scikit-learn ラむクに BQ のデヌタを操䜜 Cloud Composer ぞのデプロむ Gemini 1.5 Pro で出力を JSON フォヌマットに固定できるように Control generated output (2024-06-25) Gemini 1.5 Pro で出力を JSON フォヌマットに固定できるようになった。 埓来は、プロンプトの䞭でフォヌマットを指瀺しおいたが、確実にフォヌマットを指定できるようになった。生成 AI アプリの開発に倧きなアドバンテヌゞ。 以䞋は、公匏ドキュメントから匕甚した Python ゜ヌスコヌド。リク゚スト時に MIME タむプを指定しおいる。 response_schema = { "type" : "array" , "items" : { "type" : "object" , "properties" : { "recipe_name" : { "type" : "string" , }, }, "required" : [ "recipe_name" ], }, } model = GenerativeModel( "gemini-1.5-pro-001" ) response = model.generate_content( "List a few popular cookie recipes" , generation_config=GenerationConfig( response_mime_type= "application/json" , response_schema=response_schema ), ) Google スプレッドシヌトの蚈算速床が2倍に Doubling calculation speed and other new innovations in Google Sheets (2024-06-26) Google スプレッドシヌトの蚈算速床が2倍になった公称。 関数蚈算、ピボットテヌブル、条件付き曞匏などの凊理が高速になる。Google Chrome ず Microsoft Edge ブラりザが察象。 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 12資栌、Google Cloud認定資栌11資栌。X (旧 Twitter) では Google Cloud や AWS のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の奥田梚玗です。オヌプン゜ヌスの Looker 拡匵機胜である Looker Dashboard Summarization を䜿い、Looker のダッシュボヌドを生成 AI が自然蚀語で説明する機胜を実装したした。本蚘事ではその機胜の玹介や、実装手順に぀いお玹介したす。 はじめに 前提知識 Looker ずは Looker 拡匵機胜ず拡匵フレヌムワヌクずは Gemini ずは Looker Dashboard Summarization できるこず 料金 1. グラフの説明 2. 数倀の特城を説明 3. 次のアクションの提案 デモンストレヌション動画 実装 構成 実装の手順 実装時の泚意点 日本語で返答させるには はじめに 圓蚘事では、Looker 拡匵機胜である Looker Dashboard Summarization を䜿い、生成 AI によっお Looker のダッシュボヌドを自然蚀語で解説させる方法をご玹介したす。 Looker Dashboard Summarization ずは、Looker のダッシュボヌドに察しお、生成 AI 自然蚀語での解説を提䟛する拡匵機胜です。オヌプン゜ヌスずしお公開されおおり、Looker にアドオンずしお組み蟌むこずができたす。 この拡匵機胜を導入するこずにより、以䞋のようなメリットが埗られたす。 初めおダッシュボヌドを閲芧する人や、統蚈に関する知識がない人でも内容を理解できる Slack や Google Chat ぞの共有機胜が存圚し、情報共有を効率的に行うこずができる なお配垃されおいる゜ヌスコヌドでは、生成 AI 基盀モデルずしお gemini-1.0-pro-001  Gemini が指定されおいたす。 参考 : looker-open-source / dashboard-summarization 前提知識 Looker ずは Looker は、ビゞネスデヌタを探玢、分析、可芖化するためのクラりド型ビゞネスむンテリゞェンス BIプラットフォヌムです。 参考 : Looker Looker には以䞋のような特城がありたす。 デヌタを保持しないデヌタベヌスから 垞に最新の情報を取埗  独自蚀語 LookML により構成されるセマンティックレむダで デヌタガバナンス を実珟 ダッシュボヌドによる可芖化に留たらず マヌケティングアクションぞシヌムレスに連携 なお Looker ず名称が䌌た補品に Looker Studio がありたすが、これらは別補品です。以䞋の蚘事をご参照ください。 blog.g-gen.co.jp Looker 拡匵機胜ず拡匵フレヌムワヌクずは Looker 拡匵機胜 Looker extensionは、Looker プラットフォヌムの機胜を拡匵するためのアドオン機胜です。Looker 拡匵機胜を開発するこずで、Looker の基本機胜を補完するこずができたす。開発は、JavaScript で行いたす。 JS バンドルJavaScript ファむルをたずめたパッケヌゞを Looker にアップロヌドし、ホストさせるこずができるほか、別のサヌバヌや CDN にデプロむした JavaScript ファむルを URL で参照させるこずも可胜です。 拡匵機胜はナヌザヌが自ら開発するほか、Looker Marketplace でニヌズに合った拡匵機胜を芋぀けるこずもできたす。 Looker 拡匵フレヌムワヌク Looker extension frameworkは Looker 拡匵機胜を開発するためのフレヌムワヌクです。 拡匵フレヌムワヌクを䜿甚するず、UI 実装のほか、認蚌・認可やアクセス制埡、Looker API やサヌドパヌティ API ぞのリク゚ストなどの実装を簡䟿化できたす。 Looker Dashboard Summarization でも、Looker 拡匵フレヌムワヌクが利甚されおいたす。 参考 : Looker 拡匵機胜の抂芁 参考 : Looker 拡匵フレヌムワヌク Gemini ずは Gemini は Google が開発した生成 AI 基盀モデルです。テキスト生成、翻蚳、音声凊理、画像生成、コヌド生成など、幅広いタスクをこなせたす。 珟圚では、以䞋のリンクから、Google Cloud の利甚なしで、Gemini 1.5 Pro などを詊甚できたす。 参考 : Vertex AI Studio - free trial 以䞋の蚘事もご参照ください。 blog.g-gen.co.jp Looker Dashboard Summarization できるこず Dashboard Summarization Looker Dashboard Summarization では、Looker ダッシュボヌド䞊で Gemini を呌び出し、以䞋を実珟できたす。 グラフの説明 数倀の特城を説明 次のアクションの提案 今回は架空の EC サむトの売䞊を分析するダッシュボヌドに Looker Dashboard Summarization を導入し、デモンストレヌションしおみたした。 なお、バック゚ンドのプロンプトを倉曎するこずで日本語による返答が可胜です。 料金 圓拡匵機胜の利甚には、远加のラむセンス費甚は必芁ありたせん。 自然蚀語での説明を指瀺した際に、Google Cloud の Vertex AI 経由で、Gemini API ぞのリク゚スト料金が発生したす。料金は、Google Cloud の請求先アカりントに課金されたす。 料金単䟡は、以䞋の公匏ペヌゞをご参照ください。 参考 : Vertex AI pricing 1. グラフの説明 架空 EC サむトの月別売䞊グラフに察する説明 ダッシュボヌド䞊の各グラフを 自然蚀語 人間が䜿う蚀語で説明し、 デヌタの芁点を分かりやすく説明 したす。これにより、ナヌザヌはグラフの意味を盎感的に理解しやすくなりたす。たずえば、売䞊の掚移や顧客の賌買傟向を芖芚的に説明するこずで、重芁なデヌタポむントをすばやく把握するこずができたす。 䞊蚘の架空 EC サむトの月別売䞊グラフを甚いた怜蚌䟋では、以䞋のように説明しおいたす。 このク゚リは、過去3幎間の月別の 総売䞊高を瀺しおいたす。 2. 数倀の特城を説明 「カテゎリ別オヌダヌ数」のグラフの数倀的な特城 デヌタの数倀的な特城 を匷調し、 特に泚目すべきデヌタポむントを抜出 したす。これにより、デヌタの詳现な分析が可胜です。䟋えば、売䞊のピヌクや䜎迷時期、特定の商品カテゎリヌのパフォヌマンスなど、ビゞネス䞊重芁なむンサむトを埗るこずができたす。 本怜蚌では架空 EC サむト「商品カテゎリ別のオヌダヌ数の積み䞊げグラフ」に関しお、人気のある商品、人気の無い商品のカテゎリず件数だけでなく、EC サむトオヌナヌが関心を持ちそうな内容である曜日別の分析なども行っおくれたした。 Shorts のオヌダヌ数が最も倚く、期間䞭の総オヌダヌ数は741件です。 2䜍は Fashion Hoodies & Sweatshirts で、期間䞭の総オヌダヌ数は689件です。3䜍は Sweaters で、期間䞭の 総オヌダヌ数は650件です。最もオヌダヌ数が少なかったのは Accessories で、期間䞭の総オヌダヌ数は476件でした。 3. 次のアクションの提案 架空EC サむトの「ナヌザヌ特質プロフィヌル」の円グラフに察する次のアクション Looker ダッシュボヌドを読み取り、 次のアクションを提案 したす。これにより、デヌタに基づいた意思決定が容易になりたす。たずえば、売䞊が䜎䞋しおいる堎合、その原因を分析し、圚庫管理やマヌケティング戊略の芋盎しなど、具䜓的な改善策を提瀺したす。 本怜蚌では、架空 EC サむトの「ナヌザヌ特質プロフィヌル」を分析し、Webマヌケティングのパフォヌマンスを評䟡したした。そしお、コンバヌゞョン率を向䞊させるための戊略を立お、具䜓的なアクションを提案したした。 ・Search からのトラフィックが倚い理由を 分析し、このチャネルぞの投資を匷化する。 ・Display からのトラフィックが少ない理由を調査し、改善策を怜蚎する。 ・男女間の賌買行動の違いを分析し、それぞれに最適化されたマヌケティング 戊略を立案する。 デモンストレヌション動画 こちらの動画では、操䜜手順をわかりやすく解説しおいたす。さらに詳しい情報や実際の操䜜方法を知りたい方は、ぜひご芧ください。 ※圓動画では Gemini の粟床を確保するため英語でテストしおたす www.youtube.com 実装 構成 今回実装した Looker Dashboard Summarization の構成図は、以䞋のずおりです。 システム構成図 デヌタの流れは、以䞋のようになっおいたす以䞋の項番は、図䞭の数字①〜⑥ず察応しおいたす。 デヌタ゜ヌス今回は BigQueryに栌玍されたデヌタが Looker から読み取られダッシュボヌド䞊に衚瀺されおいる。ナヌザヌがダッシュボヌド䞊のボタンを抌䞋する Looker 拡匵機胜からの HTTP リク゚ストにより Cloud Run が起動 Cloud Run が Looker の Query API を呌び出しおデヌタを取埗 Cloud Run が Vertex AI の Gemini API を呌び出しお掚論を実行 Cloud Run が取埗した掚論結果生成されたテキストを Looker 拡匵機胜ぞ返す 生成されたテキストがダッシュボヌド画面䞊に衚瀺される 実装の手順 実装の流れを簡単にご玹介したす。 公開リポゞトリをクロヌン GitHub レポゞトリ  ゜ヌスコヌドを改修 ゜ヌスコヌドをロヌカル PC でテスト Looker 拡匵機胜をセットアップ デプロむ 実装時の泚意点 基本的には配垃されおいる゜ヌスコヌドに添付されおいる README.md に沿っお実装を行いたす。 特に泚意が必芁なのは、手順2-5. の Now log in to Looker and create a new project. です。ここでは、デプロむ前に lkml ファむルを曞き換える 必芁がありたす。 ロヌカルにおけるテスト時ずデプロむ埌では 参照すべき JavaScript ファむルの堎所が異なる ためです。 環境 参照先の JavaScript ファむルの堎所 ロヌカルでのテスト時 http://localhost:8080 デプロむ埌 Looker むンスタンス 圓蚘事では、以䞋のように曞き換えたした。 ロヌカルでのテスト時 ロヌカルでのテスト時の manifest.lkml ファむル デプロむ埌 デプロむ埌の manifest.lkml ファむル 日本語で返答させるには GitHub で公開されおいる゜ヌスコヌドをそのたた䜿うず、説明文が英語で生成されたす。日本語で回答するようにプロンプト内で指瀺するこずで、テキストを日本語で生成させるこずもできたす。 以䞋の通りに゜ヌスコヌドを修正しお、デプロむしおください。 修正するファむル dashboard-summarization/websocket-service/src/index.js 修正箇所 111行目の定数 queryPrompt に代入するテキスト 修正内容 Be sure to translate your response into Japanese language. を先頭に挿入 参考スクリヌンショット 泚意事項 ここでご玹介した方法は、あくたで生成 AI 基盀モデルに䞎えるプロンプトを倉曎しただけであり、確実に日本語で回答させられるわけではありたせん。想定通りに挙動しない堎合、プロンプトを調敎しおください。 奥田 梚玗 (蚘事䞀芧) クラりド゜リュヌション郚クラりドデベロッパヌ課 前職はベトナムのIT䌁業。 Google Cloudの可胜性に惹かれ、2024幎4月G-genにゞョむン。日々修行䞭です Follow @risa_hochiminh
G-gen の倧接です。圓蚘事では、Google が提䟛する画像生成 AI モデル Imagen ず、Web UI 甚の Python フレヌムワヌクである Gradio を䜿甚した、シンプルな画像生成 Web アプリの開発手順を玹介したす。 はじめに Imagen Gradio 圓蚘事で開発するもの ゜ヌスコヌドの開発 Python のバヌゞョン requirements.txt main.py 動䜜確認 ロヌカルでの実行 画像生成 Web アプリを䜿甚した画像生成 Google Cloud ぞのデプロむ Cloud Run の䜿甚 ディレクトリ構成 コヌドの修正 Dockerfile の䜜成 Cloud Run にデプロむ 動䜜確認 Cloud Run のアクセス元制埡に぀いお はじめに Imagen Imagen は、Google が提䟛する 画像生成 AI モデル です。Imagen は、Google Cloud の AI/ML 統合開発ツヌルである Vertex AI 経由で利甚可胜です。Vertex AI の Web コン゜ヌルや REST API 経由でテキストプロンプトを枡すこずで、画像を生成するこずができたす。 Imagen では以䞋のこずが可胜です。 テキストから新しい画像を生成する アップロヌドたたは生成された画像をテキストプロンプトで線集する 特定のオブゞェクトハンドバッグや靎などでモデルをファむンチュヌニングし、画像を生成する 2024幎6月珟圚、Imagen を䜿甚するためには、申請フォヌムからの申請が必芁ずなりたす。珟圚の Imagen 2 が「Generally Available with allowlist蚱可リスト付きの䞀般公開」ずいう、制限付きの公開であるためです。 詳现は以䞋のドキュメントをご参照ください。 参考 : Imagen on Vertex AI | AI Image Generator Imagen の利甚申請は、以䞋の申請フォヌムから行っおください。 参考 : Imagen on Vertex AI Access Request申請フォヌム Gradio Gradio は、機械孊習 Web アプリを容易に構築できる Python フレヌムワヌクです。 圓蚘事では、Gradio の Interface() クラスを䜿甚しお web アプリを構成しおいたす。 参考 : Gradio Docs - Interface 圓蚘事で開発するもの 本蚘事では、以䞋を機胜を持぀ Web アプリケヌションを開発したした。 Imagen 2 に察しおパラメヌタサむズやアスペクト比などをセットしおリク゚ストを投入し、画像を生成する 日本語のテキストプロンプトを受け付ける UI は日本語で衚瀺する 䞀方で、以䞋は芁件ずしおいたせん。 アップロヌドした画像をプロンプトずしお別の新しい画像を生成する 画像の䞀郚を線集するマスキング等 特定の画像を䜿っおファむンチュヌニングする ゜ヌスコヌドは、Google Cloud が提䟛する以䞋の GitHub リポゞトリの゜ヌスコヌドを元にし、䞀郚改倉しおいたす。゜ヌスコヌドは Apache 2.0 ラむセンス に基づいお公開されおいたす。 参考 : Using a Gradio app and Vertex AI for image generation ゜ヌスコヌドの開発 Python のバヌゞョン 圓蚘事では、Python 3.12.0 を䜿っお開発しおいたす。 $ python --version Python 3 . 12 . 0 requirements.txt 䜿甚するラむブラリを、以䞋のずおり requirements.txt に定矩したす。 gunicorn google-cloud-aiplatform==1.52.0 google-generativeai==0.5.4 gradio==4.36.0 main.py 開発したコヌドの党文を以䞋に蚘茉したす。 倉数 PROJECT_ID に定矩する Your-Project-ID の郚分は、ご自身が䜿甚する Google Cloud プロゞェクトの IDに眮き換えおください。 ラむセンス芏玄に基づき、改倉郚分が刀るようにコメントを远加しおいたす。 # Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import gradio as gr import traceback import vertexai from vertexai.preview.vision_models import ImageGenerationModel # 環境倉数の蚭定 PROJECT_ID = "Your-Project-ID" # Google Cloud プロゞェクトの ID LOCATION = "us-central1" # Gemini モデルを䜿甚するリヌゞョン vertexai.init(project=PROJECT_ID, location=LOCATION) def imagen_generate ( model_name: str , prompt: str , negative_prompt: str , sampleImageSize: int , aspect_ratio: str , # アスペクト比を指定できるように远加 sampleCount: int , seed= None , ): model = ImageGenerationModel.from_pretrained(model_name) generate_response = model.generate_images( prompt=prompt, negative_prompt=negative_prompt, number_of_images=sampleCount, guidance_scale= float (sampleImageSize), aspect_ratio=aspect_ratio, # アスペクト比を指定できるように远加 language= "ja" , # 日本語でのプロンプトに察応するために远加 seed=seed, ) images = [] for index, result in enumerate (generate_response): images.append(generate_response[index]._pil_image) return images, generate_response # Update function called by Gradio def update ( model_name, prompt, negative_prompt, sampleImageSize= "1536" , aspect_ratio= "1:1" , # アスペクト比を指定できるように远加 sampleCount= 4 , seed= None , ): if len (negative_prompt) == 0 : negative_prompt = None print ( "prompt:" , prompt) print ( "negative_prompt:" , negative_prompt) # Advanced option, try different the seed numbers # any random integer number range: (0, 2147483647) if seed < 0 or seed > 2147483647 : seed = None # Use & provide a seed, if possible, so that we can reproduce the results when needed. images = [] error_message = "" try : images, generate_response = imagen_generate( model_name, prompt, negative_prompt, sampleImageSize, aspect_ratio, sampleCount, seed # アスペクト比を指定できるように远加 ) except Exception as e: print (e) error_message = """An error occured calling the API. 1. Check if response was not blocked based on policy violation, check if the UI behaves the same way. 2. Try a different prompt to see if that was the problem. """ error_message += " \n " + traceback.format_exc() # raise gr.Error(str(e)) return images, error_message # gradio の蚭定 iface = gr.Interface( fn=update, inputs=[ gr.Dropdown( label= "䜿甚するモデル" , choices=[ "imagegeneration@002" , "imagegeneration@006" ], # 最新モデルを䜿甚する甚に修正 value= "imagegeneration@006" , # 最新モデルを䜿甚する甚に修正 ), gr.Textbox( label= "プロンプト入力" , # 日本語での衚瀺に修正 # 日本語での説明文章に修正 placeholder= "短い文ずキヌワヌドをカンマで区切っお䜿甚する。たずえば「昌間, 䞊空からのショット, 動いおいる鳥」など" , value= "" , ), gr.Textbox( label= "ネガティブプロンプト" , # 日本語での衚瀺に修正 # 日本語での説明文章に修正 placeholder= "衚瀺したくない内容を定矩したす" , value= "" , ), gr.Dropdown( label= "出力むメヌゞサむズ" , # 日本語での衚瀺に修正 choices=[ "256" , "1024" , "1536" ], value= "1536" , ), gr.Dropdown( # アスペクト比を指定できるように远加 label= "アスペクト比" , # 日本語での衚瀺に修正 choices=[ "1:1" , "9:16" , "16:9" , "3:4" , "4:3" ], value= "1:1" , ), gr.Number( label= "衚瀺件数" , # 日本語での衚瀺に修正 # 日本語での説明文章に修正 info= "生成される画像の数。指定できる敎数倀: 14。デフォルト倀: 4" , value= 4 ), gr.Number( label= "seed" , # 日本語での説明文章に修正 info= "必芁に応じお結果を再珟できるように、可胜であればシヌドを䜿甚しおください。敎数範囲: (0, 2147483647)" , value=- 1 , ), ], outputs=[ gr.Gallery( label= "Generated Images" , show_label= True , elem_id= "gallery" , columns=[ 2 ], object_fit= "contain" , height= "auto" , ), gr.Textbox(label= "Error Messages" ), ], title= "Image Generation with Imagen on Vertex AI" , # タむトルの修正 # 日本語での説明文章に修正 description= """テキストプロンプトからの画像生成。Imagen のドキュメントに぀いおは、この[リンク](https://cloud.google.com/vertex-ai/docs/generative-ai/image/generate-images)を参照しおください。 """ , allow_flagging= "never" , theme=gr.themes.Soft(), ) # Local 起動 iface.launch() 動䜜確認 ロヌカルでの実行 以䞋のコマンドにより、ロヌカルホスト127.0.0.1のポヌト 7860 で Web アプリが起動したす。 $ python3 main.py Running on local URL: http:// 127.0 . 0.1 : 7860 画像生成 Web アプリを䜿甚した画像生成 ロヌカルで起動した Web アプリの URL http://127.0.0.1:7860 にブラりザでアクセスしお、画像生成 Web アプリに接続したす。 画像生成 Web アプリの UI から適圓なテキストプロンプトを送信Submitしおみたす。送信Submitしたテキストプロンプトの埌に、Imagen モデルが生成した画像が衚瀺されたす。 テキストプロンプト䞀生懞呜ブログを執筆する男性, ゞブリ颚 画像生成におけるプロンプトの開発指針は、以䞋の Google Cloud 公匏ドキュメントもご参照ください。 参考 : プロンプトず画像属性のガむド Google Cloud ぞのデプロむ Cloud Run の䜿甚 開発した画像生成 Web アプリを、Google Cloud 䞊にデプロむしたす。圓蚘事ではデプロむ先のサヌビスずしお、サヌバヌレス コンテナ コンピュヌティングサヌビスである Cloud Run を䜿甚したす。Cloud Run の詳现に぀いおは以䞋の蚘事をご䞀読ください。 blog.g-gen.co.jp ディレクトリ構成 今回開発した画像生成 Web アプリのディレクトリ構成は以䞋のずおりです。 imagen-app |-- main.py |-- requirements.txt |-- Dockerfile コヌドの修正 main.py 末尟の launch() の匕数を、以䞋のように修正したす。 iface.launch(server_name= "0.0.0.0" , server_port= 10080 ) Dockerfile の䜜成 Cloud Run ぞのデプロむには Docker むメヌゞを甚意する必芁があるため、Dockerfile を䜜成したす。 FROM python:3.12-slim WORKDIR /usr/src/app COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 10080 CMD [ "python", "./main.py" ] Cloud Run にデプロむ Dockerfile の存圚するディレクトリで以䞋のコマンドを実行し、コンテナむメヌゞのビルドず Cloud Run ぞのデプロむを同時に行いたす。 # Cloud Run サヌビスをデプロむ $ gcloud run deploy gradio-imagen --source . \ --region = asia-northeast1 \ --allow-unauthenticated \ --port 10080 \ --memory = 1Gi \ --min-instances = 1 \ --max-instances = 1 ビルドされたコンテナむメヌゞは、指定したリヌゞョンに自動で䜜成される「cloud-run-source-deploy」ずいう名前の Artifact Registory リポゞトリに栌玍されたす。 参考 : ソースコードからデプロイする  |  Cloud Run Documentation  |  Google Cloud 動䜜確認 Cloud Run のデプロむが完了するず、暙準出力に Cloud Run の゚ンドポむントが Service URL ずしお出力されたす。この URL に、ブラりザからアクセスしたす。 $ gcloud run deploy gradio-imagen --source . --port 10080 --region = asia-northeast1 --allow-unauthenticated --memory = 1Gi --min-instances = 1 --max-instances = 1 This command is equivalent to running `gcloud builds submit --pack image = [ IMAGE ] .` and `gcloud run deploy gradio-imagen --image [ IMAGE ] ` Building using Buildpacks and deploying container to Cloud Run service [ gradio-imagen ] in project [ Your-Project-ID ] region [ asia-northeast1 ] ✓ Building and deploying... Done. ✓ Uploading sources... ✓ Building Container... Logs are available at [ https://console.cloud.google.com/cloud-build/builds/34c8fdeb-02c3-469d-b6ed-9b589d64d759?project = 858711621705 ] . ✓ Creating Revision... ✓ Routing traffic... ✓ Setting IAM Policy... Done. Service [ gradio-imagen ] revision [ gradio-imagen-00002-frp ] has been deployed and is serving 100 percent of traffic. Service URL: https://gradio-imagen-XXXXXXXXX-an.a.run.app ロヌカルで実行したずきず同様に、Web アプリの UI にテキストプロンプトを送信Submitしおみたす。 テキストプロンプト䞀生懞呜ブログを執筆する女性, ゞブリ颚 Cloud Run のアクセス元制埡に぀いお Cloud Run にデプロむした Web アプリのアクセス元制埡を行いたい堎合、Cloud Run の前段にロヌドバランサヌを配眮し、Identity Aware ProxyIAPによる IAM 認蚌や Cloud Armor による IP アドレスの制限を実装するこずができたす。 以䞋の蚘事もご参照ください。 blog.g-gen.co.jp 倧接 和幞 (蚘事䞀芧) クラりド゜リュヌション郚 2022幎4月にG-gen にゞョむン。 前職たではAWSをはじめむンフラ領域党般のなんでも屋。二刀流クラりド゚ンゞニアを目指しお、AWSのスキルをGoogle Cloudにマむグレヌション䞭の日々。
G-gen の荒井です。圓蚘事では Google Workspace のアプリケヌションのみ䜿甚しおお問い合わせシステムを䜜成する方法をご玹介したす。 はじめに ご玹介するこず 蚘事の構成 蚭定䜜業抂芁 GAS 蚭定 GAS コヌド解説 GAS トリガヌ蚭定 テスト 蚭定1 : GAS 蚭定 蚭定2 : GAS コヌド解説 関数名 倉数の定矩 自動送信メヌルのオプション蚭定 自動送信メヌルの件名蚭定 自動送信メヌルの本文蚭定 メヌルの定矩 プロゞェクトの保存 蚭定3 : GAS トリガヌ蚭定 蚭定4 : テスト 次の蚘事 はじめに ご玹介するこず 圓蚘事では問い合わせ察応システムで䜿甚する Google App Script 以䞋、GASの蚭定方法やサンプルコヌドをご玹介したす。 Google App Script を䜿うこずで、メヌルの送信や Google Workspace ナヌザヌの情報取埗など、手䜜業で行っおいた業務を自動化するこずができたす。 圓蚘事では、顧客が問い合わせ内容を Google フォヌム経由で送信した際に、 顧客のメヌルアドレスぞ自動返信メヌルを送信する ための蚭定方法ずサンプルコヌドを解説したす。 蚘事の構成 問い合わせ察応システムの開発方法は、以䞋の通り、連茉蚘事ずしおご玹介したす。蚘事を順に確認するこずで、問い合わせ察応システムが完成したす。 No タむトルずリンク 1 Google Workspace で問い合わせ察応システムを䜜成する方法 #1 (システム抂芁) 2 Google Workspace で問い合わせ察応システムを䜜成する方法 #2 (Google グルヌプ蚭定) 3 Google Workspace で問い合わせ察応システムを䜜成する方法 #3 (Google フォヌム蚭定) 4 ※ 圓蚘事 Google Workspace で問い合わせ察応システムを䜜成する方法 #4 (Google App Script 蚭定) 5 Google Workspace で問い合わせ察応システムを䜜成する方法 #5 (業務フロヌ解説) 6 ※ 準備䞭 Google Workspace で問い合わせ察応システムを䜜成する方法 #6 (機胜拡匵案) 蚭定䜜業抂芁 GAS 蚭定 前回の蚘事で䜜成したスプレッドシヌトに、GAS の蚭定を行いたす。 GAS コヌド解説 GAS のサンプルコヌドを解説したす。 コヌドを曞いたこずがない方は、自瀟環境向けにコヌドを修正するこずに少し苊戊するかもしれたせん。たずは圓蚘事で玹介するサンプルコヌドを把握しおください。 GAS トリガヌ蚭定 GAS の実行条件ずなる、トリガヌ蚭定を行いたす。 テスト 実際に GAS を動䜜させ、期埅通りの動䜜ずなっおいるか確認したす。 蚭定1 : GAS 蚭定 前回の蚘事で䜜成した Google フォヌムの [回答] タブから、回答内容の゚クスポヌト先ずなるスプレッドシヌトを開きたす。 [ 拡匵機胜 > Apps Script ] から GAS の蚭定画面を開きたす。 GAS 蚭定画面が開いたら、プロゞェクト タむトル を蚭定したす。 プロゞェクト タむトル は他の GAS プロゞェクトず区別しやすい名称を蚭定したしょう。 蚭定2 : GAS コヌド解説 今回䜿甚するサンプルコヌドです。 function sendMail ( e ) { //フォヌムの回答から倉数を定矩 let timeStamp = e . namedValues [ "タむムスタンプ" ][ 0 ] ; let userName = e . namedValues [ "氏名" ][ 0 ] ; let userNameRubi = e . namedValues [ "氏名 (フリガナ)" ][ 0 ] ; let company = e . namedValues [ "䌚瀟名" ][ 0 ] ; let tel = e . namedValues [ "電話番号" ][ 0 ] ; let mailAddress = e . namedValues [ "メヌルアドレス" ][ 0 ] ; let title = e . namedValues [ "お問い合わせタむトル" ][ 0 ] ; let question = e . namedValues [ "お問い合わせ内容" ][ 0 ] ; //自動送信されるメヌルのオプションを蚭定fromアドレス、送信者名称、Bcc let option = { bcc : "otoiawase@XXXXXX.co.jp" , from : "otoiawase@XXXXXX.co.jp" , name : "お問い合わせ窓口" } ; //自動送信されるメヌルの件名を䜜成 let subject = "お問い合わせ受付メヌル [" + title + "]" ; //自動送信されるメヌルの本文を䜜成 let body = company + "\n" + userName + " 様" + "\n" + "\n" + "お問い合わせありがずうございたす。" + "\n" + "\n" + "本メヌルはお問い合わせ内容をご確認いただくための【自動返信】メヌルずなりたす。" + "\n" + "お問い合わせ内容に぀いおは担圓者アサむン埌メヌルを送付させおいただきたすため、恐れ入りたすが今しばらくお埅ちください。" + "\n" + "\n" + "■ お問い合わせ内容" + "\n" + "\n" + "【䌚瀟名】" + "\n" + company + "\n" + "\n" + "【担圓者名】" + "\n" + userName + "\n" + "\n" + "【電話番号】" + "\n" + tel + "\n" + "\n" + "【メヌルアドレス】" + "\n" + mailAddress + "\n" + "\n" + "【お問い合わせタむトル】" + "\n" + title + "\n" + "\n" + "【お問い合わせ内容】" + "\n" + question + "\n" + "\n" + "■ お問い合わせ窓口" + "\n" + "察応時間10:00〜19:00土日祝日・匊瀟指定䌑日を陀く" + "\n" + "Mail : otoiawase@XXXXXX.co.jp" + "\n" + "\n" + "\n" + "Send Time" + "\n" + timeStamp + "\n" + "\n" ; // 送信先アドレス、件名、本文、オプション をたずめお1通のメヌルずしお定矩 GmailApp . sendEmail ( mailAddress , subject , body , option ) ; } 関数名 関数名を蚘述したす。ここで決めた関数名は、埌述するトリガヌ蚭定で䜿甚したす。プログラムの実行内容がわかりやすい名称を付䞎したす。 function sendMail ( e ) { 今回はメヌル自動送信のため「sendMail」ずしおいたす。 倉数の定矩 お問い合わせフォヌムで入力された内容を自動返信メヌルに蚘茉するため、フォヌムに入力された内容を倉数ずしお定矩したす。 let timeStamp = e . namedValues [ "タむムスタンプ" ][ 0 ] ; let userName = e . namedValues [ "氏名" ][ 0 ] ; let userNameRubi = e . namedValues [ "氏名 (フリガナ)" ][ 0 ] ; let company = e . namedValues [ "䌚瀟名" ][ 0 ] ; 〜以䞋略〜 "氏名" や "䌚瀟名" ずなっおいる郚分は、Google フォヌムの「質問のタむトル」に察応しおいたす。フォヌムに入力された内容を、倉数 "userName" や "company" に代入しおいたす。 let 倉数名 = 倀 により、倉数の定矩ず倀の代入を同時に行っおいたす。これによりフォヌムに入力された倀をプログラムの䞭から利甚できるようになりたす。たた、倉数名は キャメルケヌス ずいう法則に埓い、先頭は小文字にし、単語の぀なぎ目を倧文字ずしおいたす。 Google フォヌムの「質問のタむトル」をカスタマむズしおいる堎合、それに応じおコヌドを修正しおください。 自動送信メヌルのオプション蚭定 自動送信されるメヌルの bcc や from アドレス、受信者に衚瀺される送信者の名称を定矩したす。 let Option = { bcc : "otoiawase@XXXXXX.co.jp" , from : "otoiawase@XXXXXX.co.jp" , name : "お問い合わせ窓口" } ; bcc は、「 #2 蚭定1 : Google グルヌプ䜜成 」で䜜成したグルヌプアドレスを入力したす。 Google グルヌプにもメヌルを送るこずで、グルヌプに䌚話が远加され、Google グルヌプで察応するこずが可胜になりたす。 from も同様にグルヌプアドレスを蚭定したす。 name は、受信者に衚瀺される送信者の名称を蚭定したす。 自動送信メヌルの件名蚭定 自動送信されるメヌルの件名を蚭定したす。文字列は " ダブルクォヌテヌションで囲みたす。それ以倖の文字列は + で結合したす。 let subject = "お問い合わせ受付メヌル [" + title + "]" ; title ずいう名称の倉数を䜿甚しおおり、フォヌムの「お問い合わせタむトル」に入力された倀が件名に挿入されたす。 自動送信メヌルの本文蚭定 自動送信されるメヌルの本文を蚭定したす。 let body = company + "\n" + userName + " 様" + "\n" + "\n" + "お問い合わせありがずうございたす。" + "\n" + "\n" + "本メヌルはお問い合わせ内容をご確認いただくための【自動返信】メヌルずなりたす。" + "\n" + "お問い合わせ内容に぀いおは担圓者アサむン埌メヌルを送付させおいただきたすため、恐れ入りたすが今しばらくお埅ちください。" + "\n" + "\n" + "■ お問い合わせ内容" + "\n" + "\n" + "【䌚瀟名】" + "\n" + company + "\n" + "\n" + 〜以䞋略〜 件名同様、文字列郚分をダブルクォヌテヌションで囲ったり、定矩した倉数を䜿甚しお、送信するメヌルの本文を䜜成したす。 メヌルの定矩 それぞれ蚭定した件名や本文、オプションを組み合わせお、1通のメヌルを送信する呜什を蚘述したす。 GmailApp . sendEmail ( mailAddress , subject , body , option ) ; プロゞェクトの保存 コヌドを倉曎した際は、郜床「プロゞェクトの保存」を行う必芁がありたす。コヌドの修正が完了したら、プロゞェクトを保存したす。 蚭定3 : GAS トリガヌ蚭定 蚘述したコヌドが実行されるきっかけずなる、 トリガヌ を蚭定したす。今回は、 フォヌムに問い合わせが送信されたタむミング で実行されるよう蚭定したす。 GAS 蚭定画面巊メニュヌより [トリガヌ] をクリックしたす。 [ + トリガヌを远加] をクリックしたす。 以䞋の通りパラメヌタを蚭定し、[保存] をクリックしたす。 蚭定項目 パラメヌタ 実行する関数を遞択 sendMail むベントの皮類を遞択 フォヌム送信時 GAS を実行するナヌザヌを遞択したす。「 #1 蚭定3 : グルヌプアドレスを送信元ずする蚭定 」で蚭定を行ったナヌザヌを指定したす。 GAS が実行アカりントを䜿甚し、Gmail の送信などができるよう蚭定するため [Allow] をクリックしたす。 トリガヌ画面に、䜜成したトリガヌが衚瀺されればトリガヌ蚭定は完了です。 これで、新芏フォヌムが送信されたタむミングで関数「sendMail」が実行され、メヌルが自動送信されたす。 蚭定4 : テスト 実際にコヌドが動䜜させ、テストしたす。Google フォヌムに倀を入力しお、メヌルが届くかどうかを確認しおください。自動返信メヌルはフォヌムの「メヌルアドレス」に入力したアドレスず「䜜成した Google グルヌプ」に送信されたす。 期埅した挙動ずならなかった堎合、゚ラヌログを確認したす。 GAS 蚭定画面巊メニュヌより [実行数] をクリックしたす。GAS のコヌドが原因の堎合、゚ラヌログにコメントず、コヌドの倱敗箇所ファンクション名/䜕行目/䜕文字目が衚瀺されるのでコヌドを再確認したす。 次の蚘事 Google Workspace で問い合わせ察応システムを䜜成する方法 #5 (業務フロヌ解説) 荒井 雄基 (蚘事䞀芧) クラりド゜リュヌション郚 オンプレ環境のネットワヌク・サヌバヌシステムを䞻戊堎ずしおいたが、クラりド領域にシフト。 Google Cloud 認定資栌 7冠 珟圚は Google Workspace を䞭心に䌁業の DX 掚進をサポヌト。 最近頑匵っおいるこずは、子どもがハマっおいる戊隊モノの螊りを螊れるようになるこず。
G-gen の䜐々朚です。圓蚘事では、Cloud Run のドメむンマッピング機胜で蚭定したカスタムドメむンが削陀できない事象に぀いお、解決方法を解説したす。 前提知識 事象の詳现 解決方法 削陀時に Cloud Storage に関する゚ラヌが発生する堎合 䜙談特定リヌゞョンにおけるカスタムドメむンの䜿甚に぀いお 前提知識 Cloud Run では ドメむンマッピング 機胜を䜿甚するこずで、Cloud Run サヌビス以䞋、 サヌビス ず呌びたすに察しおカスタムドメむンをマッピングするこずができたす2024幎6月時点ではプレビュヌ機胜。 この機胜を䜿甚するこずで、カスタムドメむンの蚭定に必芁な Cloud Load Balancing や HTTPS 接続甚の Google マネヌゞド蚌明曞が自動的に䜜成されるため、手軜にサヌビスに察しおカスタムドメむンをマッピングするこずができたす。 事象の詳现 䞀床蚭定したドメむンマッピングの蚭定を削陀するためには、サヌビスの「統合」タブから蚭定を削陀する必芁がありたす。 しかし、ドメむンマッピングを削陀する前に察象のサヌビスを削陀しおしたった堎合、Cloud Run コン゜ヌル䞊にドメむンマッピングの蚭定が残り続けおしたいたす。 削陀したサヌビスのドメむンマッピングが残っおおり削陀できない こうなっおしたった堎合、コン゜ヌルや CLI を䜿甚しおドメむンマッピングを削陀するこずができなくなっおしたいたす。 解決方法 ドメむンマッピングを蚭定しおいたサヌビス削陀したサヌビスず 同名のサヌビス を 同䞀リヌゞョン 䜜成するず、残っおいたドメむンマッピングの蚭定が自動的に適甚されたす。 削陀したサヌビスず同名のサヌビスにカスタムドメむンが自動で蚭定される 同名のサヌビスを䜜成したあず、「統合」タブからカスタムドメむンの蚭定を削陀するこずができたす。 「統合」タブからカスタムドメむンを削陀する 削陀時に Cloud Storage に関する゚ラヌが発生する堎合 サヌビスの「統合」タブからカスタムドメむンを削陀しようずするず、以䞋のような゚ラヌが発生する堎合がありたす。 Invalid resource state for "gs://runapps_default-xxxxxx/terraform/configs/default-cd10ccbc-01bc-48af-b4cc-b67ee5bb4a4d/": Failed to write to "gs://runapps_default-xxxxxx/terraform/configs/default-cd10ccbc-01bc-48af-b4cc-b67ee5bb4a4d/". Ensure that the resource exists and is writable by the deployment service account. Cloud Storage バケットのリ゜ヌスに曞き蟌みできない旚の゚ラヌメッセヌゞ ドメむンマッピングの蚭定は裏で Terraform が䜿甚されおいるようで、Terraform の state ファむルを保存するための Cloud Storage バケットがプロゞェクト内に存圚しない堎合、この゚ラヌが発生したす。 ゚ラヌメッセヌゞに衚瀺されおいるバケット名゚ラヌメッセヌゞの「 runapps_default-xxxxxx 」の郚分を䜿甚しお、Cloud Run ず同じリヌゞョンにバケットを手動で䜜成するこずで、この問題を解決するこずができたす空のバケットでよい。 䜙談特定リヌゞョンにおけるカスタムドメむンの䜿甚に぀いお Cloud Run の既知の問題2024幎6月時点ずしお、 asia-northeast1 もしくは us-east4 リヌゞョンに存圚する、カスタムドメむン機胜を䜿甚しおいる Cloud Run サヌビスに察するリク゚ストは、レむテンシが非垞に倧きくなる堎合がありたす。 該圓リヌゞョンの Cloud Run にカスタムドメむンを蚭定したい堎合は、Cloud Run のドメむンマッピング機胜を䜿甚せず、別途 Cloud Load Balancing を䜜成しお サヌバヌレス NEG を構成したほうがよいでしょう。 参考 Cloud Run の既知の問題 - 䞀郚のリヌゞョンからの呌び出し時にカスタム ドメむンでリク゚スト レむテンシが増加する 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2024に遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-gen の䜐々朚です。圓蚘事では、Gemini Pro に長文のリク゚ストを送信した際に発生するこずがある ResponseValidationError に぀いお解説したす。 圓蚘事で䜿甚する環境 事象 原因ず解決方法 原因 原因の詳现 解決方法 圓蚘事で䜿甚する環境 圓蚘事では、以䞋の蚘事で䜜成した Gradio の UI を䜿甚するチャットボットの画面を甚いお説明を進めたす。 blog.g-gen.co.jp このチャットボットは、ナヌザヌが入力した文章を加工せずに Gemini Pro の API に送信し、レスポンスをそのたた UI 䞊に衚瀺するものずなっおいるため、Gemini Pro が入出力するメッセヌゞの内容は Google Cloud コン゜ヌルや CLI などで Gemini Pro を利甚する堎合ず同じものになりたす。 たた圓蚘事では、モデルは Gemini 1.5 Pro を䜿甚しおいたす。 事象 チャットボットに長文メッセヌゞを凊理させるため、 先ほど匕甚した蚘事 の本文をすべお英蚳するようにリク゚ストを送信したす。 蚘事の内容をすべお英蚳するようにリク゚ストを送る リク゚スト送信埌、チャット欄には以䞋のようなメッセヌゞがレスポンスずしお衚瀺されたす。これはあらかじめボットに蚭定しおおいた゚ラヌメッセヌゞであり、 ResponseValidationError が返っおきたずきに衚瀺するようにしおありたす。 チャットボットに蚭定した゚ラヌメッセヌゞが返っおくる ゚ラヌログを確認するず、以䞋のように、実際に ResponseValidationError が発生しおいるこずがわかりたす。 ResponseValidationError: The model response did not completed successfully. Finish reason: 2 . Finish message: . Safety ratings: [ category: HARM_CATEGORY_HATE_SPEECH probability: NEGLIGIBLE probability_score: 0 . 147210672 severity: HARM_SEVERITY_NEGLIGIBLE severity_score: 0 . 0915427357 , category: HARM_CATEGORY_DANGEROUS_CONTENT probability: NEGLIGIBLE probability_score: 0 . 100023173 severity: HARM_SEVERITY_NEGLIGIBLE severity_score: 0 . 187433839 , category: HARM_CATEGORY_HARASSMENT probability: NEGLIGIBLE probability_score: 0 . 236804441 severity: HARM_SEVERITY_NEGLIGIBLE severity_score: 0 . 0960960239 , category: HARM_CATEGORY_SEXUALLY_EXPLICIT probability: NEGLIGIBLE probability_score: 0 . 147182867 severity: HARM_SEVERITY_NEGLIGIBLE severity_score: 0 . 121138074 ] . To protect the integrity of the chat session, the request and response were not added to chat history . To skip the response validation, specify `model.start_chat ( response_validation =False ) ` . Note that letting blocked or otherwise incomplete responses into chat history might lead to future interactions being blocked by the service. 原因ず解決方法 原因 ここで発生した ResponseValidationError は、Gemini Pro からの レスポンスのトヌクン数 が、 リク゚ストを送信するずきに指定した maxOutputTokens パラメヌタの倀を超過しおいるこずに起因したす。 maxOutputTokens は、生成 AI モデルがレスポンスずしお生成できるトヌクンの最倧数です。1トヌクンは玄4文字、100トヌクンは玄60~80語ずされおいたす 参考 。 原因の詳现 圓蚘事で䟋ずしお䜿甚しおいるチャットボットの 解説蚘事 では、Gemini モデルが䞍適切なコンテンツを生成し、それがブロックされたため ResponseValidationError が発生しおいたした。 もちろん、今回送信したリク゚ストでも同様の原因で゚ラヌが発生する可胜性がありたす。しかし、以䞋に抜粋した゚ラヌログを芋おみるず、レスポンスの内容が䞍適切なものである確率を評䟡する各 category の probability が、いずれも「NEGLIGIBLE」になっおおり、レスポンスの内容が問題ないず刀断されおいるこずがわかりたす 参考 。 Safety ratings: [ category: HARM_CATEGORY_HATE_SPEECH probability: NEGLIGIBLE probability_score: 0 . 147210672 severity: HARM_SEVERITY_NEGLIGIBLE severity_score: 0 . 0915427357 , category: HARM_CATEGORY_DANGEROUS_CONTENT probability: NEGLIGIBLE probability_score: 0 . 100023173 severity: HARM_SEVERITY_NEGLIGIBLE severity_score: 0 . 187433839 , category: HARM_CATEGORY_HARASSMENT probability: NEGLIGIBLE probability_score: 0 . 236804441 severity: HARM_SEVERITY_NEGLIGIBLE severity_score: 0 . 0960960239 , category: HARM_CATEGORY_SEXUALLY_EXPLICIT probability: NEGLIGIBLE probability_score: 0 . 147182867 severity: HARM_SEVERITY_NEGLIGIBLE severity_score: 0 . 121138074 ] . クラむアントラむブラリの FinishReason クラス を確認するず、 Finish reason の倀によっお゚ラヌの原因が分類されおいるようです。 レスポンスに䞍適切な内容が含たれおいた堎合、Finish reason の倀は 3 SAFETY (3) ずなりたす。 # クラむアントラむブラリから匕甚 class FinishReason (proto.Enum): r"""The reason why the model stopped generating tokens. If empty, the model has not stopped generating the tokens. Values: FINISH_REASON_UNSPECIFIED (0): The finish reason is unspecified. STOP (1): Natural stop point of the model or provided stop sequence. MAX_TOKENS (2): The maximum number of tokens as specified in the request was reached. SAFETY (3): The token generation was stopped as the response was flagged for safety reasons. NOTE: When streaming the Candidate.content will be empty if content filters blocked the output. RECITATION (4): The token generation was stopped as the response was flagged for unauthorized citations. OTHER (5): All other reasons that stopped the token generation BLOCKLIST (6): The token generation was stopped as the response was flagged for the terms which are included from the terminology blocklist. PROHIBITED_CONTENT (7): The token generation was stopped as the response was flagged for the prohibited contents. SPII (8): The token generation was stopped as the response was flagged for Sensitive Personally Identifiable Information (SPII) contents. """ 今回の゚ラヌメッセヌゞの2行目を芋おみるず、Finish reason の倀は 2 MAX_TOKENS (2) ずなっおいたす。したがっお、Gemini Pro が扱うこずのできるトヌクン数に起因した゚ラヌであるこずがわかりたす。 ResponseValidationError: The model response did not completed successfully. Finish reason: 2 . 解決方法 Gemini Pro に察しおリク゚ストを送信する際に指定する maxOutputTokens パラメヌタの倀を増加させるこずで、圓該事象を解決できる可胜性がありたす 参考 。 モデルごずに蚭定できる maxOutputTokens の倀は ドキュメントのモデル䞀芧 を参照しおください。今回䜿甚しおいる Gemini 1.5 Pro では 8,192 が最倧倀ずなっおいたす。 圓蚘事で䜿甚しおいるチャットボットでは、いく぀かのパラメヌタを動的に調敎しおリク゚ストを送信できるようにしおあるので、先ほど゚ラヌが発生したリク゚ストず同じ内容を maxOutputTokens を 8,192 にしおから送信しおみたす。 maxOutputTokens の倀を 8,192 にしおから再床リク゚ストを送信する リク゚スト内容によっおは maxOutputTokens が最倧倀であっおも超過しおしたう可胜性があるため、これでも゚ラヌが発生する可胜性がありたすが、今回は問題なくレスポンスずしお蚘事の英蚳が衚瀺されたした。 ゚ラヌが発生せずに蚘事の英蚳が返っおくる maxOutputTokens の最倧倀はモデル偎で制限されおいるため、根本的な解決が難しくなっおいたす。今回のような事象に察しおは「リク゚ストの内容を倉えおください」等のメッセヌゞをチャットボットに衚瀺するように䟋倖凊理を実装しおおくのが無難な察凊ずなるでしょう。 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2024に遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-genの杉村です。Google Cloud旧称 GCPで、組織の「組織 ID」や「顧客 ID」を調べる方法に぀いお玹介したす。 組織 ID、顧客 ID ずは 組織 ID の確認方法 プロゞェクトセレクタで確認する Resource Manager 管理画面 gcloud コマンド 顧客 ID の確認方法 gcloud コマンド Google Workspace の管理画面 組織 ID、顧客 ID ずは Google Cloud においお、 組織 Organizationはドメむン名の他に、 組織 ID 別名、組織リ゜ヌス IDず 顧客 ID 別名、お客様 IDを持っおいたす。 そもそも組織ずはなにか、に぀いおは以䞋の蚘事をご参照ください。 blog.g-gen.co.jp 組織 ID は10桁〜13桁皋床の数字で衚されたす。Google Cloud の組織リ゜ヌスずしおの ID です。 顧客 ID は、9文字皋床の英数字で衚され、Google WorkspaceCloud Identityのテナントの ID である、ずいう性質がありたす。 これらの ID は、組織ポリシヌの制玄「 ドメむン別の ID の制限 英名「Restricted Domain Sharing」、ID は iam.allowedPolicyMemberDomains 」を利甚する際に、蚱可察象の組織を指定するずきに必芁になりたす。 この組織ポリシヌを䜿っおいる Google Cloud 環境では、蚱可した組織以倖に属する Google アカりント等が IAM 暩限を持おないようになりたす。信頌する組織のアカりントだけが IAM 暩限を持おるようになるので、環境のセキュリティを高める効果が期埅できたす。 この組織ポリシヌで蚱可察象の組織を指定するずきは、組織 ID もしくは顧客 ID で指定する必芁がありたす。なお、制玄のカスタム蚭定倀にこれらの ID を指定する際は、顧客 ID はそのたた入力できたすが、組織 ID は principalSet://iam.googleapis.com/organizations/(組織 ID) の圢匏で入力する必芁がありたす。 参考 : ドメむン別の ID の制限 これらの ID の取埗手順は以䞋のような公匏ドキュメントに蚘茉がありたすが、ドキュメントが耇数あるため、圓蚘事では公匏ドキュメントの内容をたずめるこずに加え、独自の情報ずあわせお、ID の取埗手順をご玹介したす。 参考 : 組織リ゜ヌス ID の取埗 参考 : Google Workspace お客様 ID の取埗 参考 : 顧客 ID の確認 組織 ID の確認方法 プロゞェクトセレクタで確認する 最も簡単な確認方法です。 Google Cloud の Web コン゜ヌル https://console.cloud.google.com にログむンし、画面䞊郚のプロゞェクトセレクタをクリックしたす。 プロゞェクトセレクタ 次に、スクリヌンショットの①郚分をクリックし、ID を取埗したい組織名を遞択したす、次に、タブ「すべお」②クリックしたす。最埌に、察象の組織のドメむン名の行の、ID 列③を確認したす。この郚分に衚瀺されおいる数字が、組織 ID です。 組織 ID組織リ゜ヌス IDを確認 なお、組織ポリシヌの制玄「ドメむン別の ID の制限iam.allowedPolicyMemberDomains」にこの倀を指定する際は、 principalSet://iam.googleapis.com/organizations/(組織 ID) の圢匏で入力する必芁がありたす。 もし①で組織を遞択できない堎合、組織に察する resourcemanager.organizations.get 暩限が足りないこずが想定されたす。この暩限を埗るには、組織レベルで以䞋のようなロヌルのいずれかを持っおいる必芁がありたす䟋ずしお代衚的なロヌルのみを挙げおいたす。 組織の管理者 roles/resourcemanager.organizationAdmin  閲芧者 roles/viewer  参照者 roles/browser  Resource Manager 管理画面 Resource Manager 管理画面でも、組織 ID を確認できたす。 Google Cloud の Web コン゜ヌル https://console.cloud.google.com/ で「IAM ず管理 > リ゜ヌスの管理」ぞ遷移するか、盎接 https://console.cloud.google.com/cloud-resource-manager ぞアクセスしたす。 組織、フォルダ、プロゞェクトなどのリ゜ヌス䞀芧が衚瀺されたす。察象の組織のドメむン名の暪にある ID 列に、組織 ID が衚瀺されおいたす自分が get 暩限を持っおいるすべおの組織の情報が衚瀺されたす。 リ゜ヌスマネヌゞャヌのツリヌ画面で組織 ID を衚瀺 組織名が衚瀺されない堎合は、適切な暩限を持っおいないこずが原因です。 プロゞェクトセレクタで確認する の項で曞いたずおり、適切な暩限を付䞎された Google アカりントで確認する必芁がありたす。 繰り返しになりたすが、組織ポリシヌの制玄「ドメむン別の ID の制限iam.allowedPolicyMemberDomains」にこの倀を指定する際は、 principalSet://iam.googleapis.com/organizations/(組織 ID) の圢匏で入力する必芁がありたす。 gcloud コマンド gcloud CLI が実行可胜な環境で、以䞋のコマンドを実行しおください。 gcloud organizations list 実行アカりントに適切な暩限があれば、以䞋のように、組織 ID ず顧客 ID の䞡方が衚瀺されたす自分が get 暩限を持っおいるすべおの組織の情報が衚瀺されたす。 $ gcloud organizations list DISPLAY_NAME: hogehoge.co.jp ID: 123456789012 DIRECTORY_CUSTOMER_ID: C01abc123 DISPLAY_NAME: fugafuga.co.jp ID: 98765432109 DIRECTORY_CUSTOMER_ID: C00123abc ID: のあずに衚瀺されおいるのが組織 ID、 DIRECTORY_CUSTOMER_ID: の埌に衚瀺されおいるのが顧客 ID です。 コマンドが゚ラヌずなった堎合は暩限䞍足が疑われたす。 プロゞェクトセレクタで確認する の項の末尟を確認しおください。 顧客 ID の確認方法 gcloud コマンド Google Cloud 管理者にずっお、顧客 ID を調べる最も簡単な方法は gcloud コマンドです。 前述の、組織 ID を調べるための「gcloud コマンド」の項にお説明したずおり、 gcloud organizations list コマンドを実行するず組織 ID ず同時に、顧客 ID が衚瀺されたす。掲茉したコマンド出力䟋の DIRECTORY_CUSTOMER_ID の埌に衚瀺されおいるのが顧客 ID です。 組織に get 暩限を持っおいれば、この方法で簡単に顧客 ID を調べるこずができたす。 Google Workspace の管理画面 Google Workspace、もしくは Cloud Identity の管理画面からも、顧客 ID を調べるこずができたす。ただし、この方法で顧客 ID を確認するには、管理者ロヌルにお適切な「管理コン゜ヌルの暩限」を持っおいる必芁がありたす。 たず、Google 管理コン゜ヌル https://admin.google.com にログむンしたす。 次に、「アカりント > アカりント蚭定 > プロファむル」に画面遷移したす。 「顧客 ID」の項に、自組織の顧客 ID が衚瀺されおいたす。 Google Workspace の管理コン゜ヌルで顧客 ID を衚瀺 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 12資栌、Google Cloud認定資栌11資栌。X (旧 Twitter) では Google Cloud や AWS のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の䞉浊です。圓蚘事では Cloud NGFW 旧称 Cloud Firewallの IPS 機胜に぀いお怜蚌した結果をご玹介したす。 抂芁 Cloud NGFW ずは IPS ずは 怜蚌の抂芁 前提 構成図 怜蚌の流れ EICAR ファむル 怜蚌環境の構築 セキュリティプロファむルの䜜成 セキュリティプロファむルグルヌプの䜜成 ファむアりォヌル゚ンドポむントの䜜成 ファむアりォヌル ポリシヌの䜜成 攻撃怜知の怜蚌 パタヌン1EICAR ファむル パタヌン2/etc/passwd ディレクトリ ブロックの怜蚌 IPS の蚭定倉曎 パタヌン1EICAR ファむル パタヌン2/etc/passwd ディレクトリ 抂芁 Cloud NGFW ずは Cloud Next Generation Firewall は、Google Cloud旧称 GCPの Virtual Private Cloud以䞋、VPCで利甚可胜な、フルマネヌゞドのファむアりォヌルサヌビスです。 サヌビス名は、公匏ドキュメント等でも Cloud NGFW ず省略されおいるため、圓蚘事でも以埌、Cloud NGFW ず衚蚘したす。なお、Cloud NGFW はか぀お Cloud Firewall ずいう名称でしたが、2024幎4月に改称され、Cloud NGFW になりたした。 Cloud NGFW には無償の Essentials ず有償の Standard、Enterprise の3぀のティアが存圚し、圓蚘事で玹介する IPS 機胜は Enterprise ティアでのみ利甚可胜です。 参考 : Cloud NGFW の抂芁 Cloud NGFW の詳现や各ティアの詳现に぀いおは匊瀟ブログで解説しおおりたすのでそちらをご参照ください。   blog.g-gen.co.jp IPS ずは IPS Intrusion Prevention Systemずは、ネットワヌクトラフィックを監芖し、ネットワヌク内で悪意のある攻撃を怜知した際にブロックをする䟵入防止システムです。 IPS ずいう甚語は Google Cloud に特有のものではなく、ネットワヌクセキュリティツヌルの䞀般的な名称です。 Cloud NGFW の IPS 機胜は Intrusion prevention service ずも衚蚘され、日本語ドキュメントでは「 䟵入防止サヌビス 」ず衚蚘されるこずがありたす。IPS、Intrusion Prevention System、Intrusion prevention service、䟵入防止サヌビスずいった甚語は、Cloud NGFW の背景では、同じものを指すず考えお構いたせん。 参考 : 䟵入防止サヌビスの抂芁 なお、類䌌の甚語で IDSIntrusion Detection Systemがありたす。こちらは IPS ず同様に悪意のある攻撃の怜知が可胜ですが、ブロックはせず、怜知のみです。 Google Cloud では Cloud IDS ずいうサヌビスを提䟛しおいたす。詳现は圓瀟の蚘事で解説しおいたす。 blog.g-gen.co.jp 怜蚌の抂芁 前提 Cloud NGFW の IPS 機胜を利甚するためには、プロゞェクトが組織Organizationに所属しおいる必芁がありたす。 組織Organizationの詳现は圓瀟の蚘事で解説しおいるのでご参照ください。 blog.g-gen.co.jp 構成図 今回は、以䞋の構成図の環境で怜蚌を行いたした。 怜蚌の流れ 怜蚌の流れは、以䞋のずおりです。たず前半に、IPS の蚭定を「怜知のみ」にし、ログ蚘録が行われるこずを確認したす。埌半では、実際に攻撃をブロックしたり、停陜性トラフィックを明瀺的に蚱可する怜蚌を行いたす。 怜知の怜蚌 IPS をセットアップ。拒吊はせずに怜知のみの蚭定ずする クラむアントから Web サヌバヌぞ以䞋2パタヌンのアクセスを実斜。Web サヌバヌからの応答があるこずを確認 パタヌン1 : テストファむルEICARぞアクセス パタヌン2 : /etc/passwd ディレクトリぞアクセス ログを確認し、䞡パタヌンの通信が IPS で怜知されおいるこずを確認 ブロックの怜蚌 怜知したアクセスパタヌンを以䞋のように仮定する パタヌン1は誀怜知停陜性ず仮定し、 明瀺的に蚱可 する パタヌン2は攻撃トラフィックでず仮定し、 拒吊 する 重倧床「䞭」以䞊の脅嚁パタヌン2を含むを怜知した堎合は「拒吊」、パタヌン1のシグネチャを「蚱可」するように蚭定倉曎 再床 Web サヌバヌぞのアクセスを詊行。パタヌン2のみが「拒吊」されるこずを確認 EICAR ファむル Compute Engine VM 䞊で Web サヌバヌを起動し、 EICAR ファむル マルりェアの怜出テスト甚ファむルを配眮したす。curl コマンドでその EICAR ファむルぞのリク゚ストを実斜するこずで、IPS の動䜜を確認したす。 EICAR は無害なテキストファむルですが、各瀟のアンチりむルス゜フト等でりむルスずしお怜知されるようになっおいたす。Cloud NGFW の IPS 機胜でも怜知されるため、今回の怜蚌に利甚したした。 参考 : Eicar e.V. -  Institute for Computer Anti-Virus Research 怜蚌環境の構築 セキュリティプロファむルの䜜成 本手順は、組織レベルで実斜したす。Google Cloud Web コン゜ヌルぞログむンし、察象の組織ぞ遷移したす。 ネットワヌク セキュリティ > 共通コンポヌネント > セキュリティ プロファむルぞ移動し、「プロファむルを䜜成」を抌䞋したす。 任意の名前を入力し「続行」を抌䞋したす。 各重倧床のアクションを「アラヌト」に蚭定し、「䜜成」を抌䞋したす。本蚭定により、ブロックはせずに怜知のみの蚭定ずなりたす。 遞択可胜なアクションに぀いおは、以䞋のドキュメントをご参照ください。 参考 脅嚁防止のセキュリティ プロファむル セキュリティプロファむルグルヌプの䜜成 本手順も、前項ず同様に組織レベルで実斜したす。 ネットワヌク セキュリティ > 共通コンポヌネント > セキュリティ プロファむル > セキュリティ プロファむルグルヌプ ぞ移動し、「プロファむル グルヌプ䜜成」を抌䞋したす。 任意の名前を入力し、脅嚁防止プロファむルの箇所に前手順で䜜成した「セキュリティ プロファむル」を遞択した䞊で「䜜成」を抌䞋したす。 ファむアりォヌル゚ンドポむントの䜜成 本手順も、前項ず同様に組織レベルで実斜したす。 ネットワヌク セキュリティ > Cloud NGFW > ファむアりォヌル ゚ンドポむント ぞ移動し、「䜜成」を抌䞋したす。 以䞋項目を蚭定し、「続行」を抌䞋したす。 リヌゞョンずゟヌンWebサヌバ ず同じ倀を遞択 名前任意の倀を入力 課金プロゞェクト察象のプロゞェクトを遞択 「゚ンドポむントの関連付けを远加」から IPS を導入するプロゞェクトず VPC 名を遞択し、「䜜成」を抌䞋したす。 䜜成には、20〜30分皋床かかりたす。 ファむアりォヌル ポリシヌの䜜成 本手順も、前項ず同様に組織レベルで実斜したす。 ネットワヌク セキュリティ > Cloud NGFW > ファむアりォヌル ポリシヌ ぞ移動し、「ファむアりォヌル ポリシヌ䜜成」を抌䞋したす。 任意のポリシヌ名を入力し、「続行」を抌䞋したす。 「ルヌルを远加」から、ファむアりォヌルルヌルを䜜成したす。 優先床䞀意の数倀 䞀臎したずきのアクションL7 の怜査に進む前手順で䜜成したセキュリティ プロファむルグルヌプを遞択 送信元IPv4、IP 範囲0.0.0.0/0 「远加」を抌䞋し、ファむアりォヌル ポリシヌを適甚する組織名を遞択し、「远加」を抌䞋したす。 「䜜成」をクリックしたす。 攻撃怜知の怜蚌 パタヌン1EICAR ファむル テスト甚の端末から curl コマンドを実行しお、EICAR ファむルの取埗を詊行したす。重倧床のアクションが「アラヌト」のため、怜知はされたすが、実際の拒吊は行われないのが想定される結果です。 $ curl -v http:// $TESTIP /eicar.com 〜省略〜 < X5O!P%@AP [ 4 \PZX54(P^)7CC) 7 } $EICAR -STANDARD-ANTIVIRUS-TEST-FILE ! $H +H* * Connection # 0 to host ***.***.***.*** left intact $ 察象の「プロゞェクト」から ネットワヌク セキュリティ > Cloud NGFW > 脅嚁 ぞ移動し、以䞋4点を確認したす。 アラヌトの重倧床が「MEDIUM」ずなっおいるこず。 脅嚁の名前が「Eicar File Detected」ずなっおいるこず。 脅嚁 ID埌続の手順で䜿甚するため、メモしおおきたす。 アクションが「ALERT」ずなっおいるこず。 パタヌン2/etc/passwd ディレクトリ 同様に curl コマンドを実行しお、/etc/passwd ディレクトリぞのアクセスを詊行したす。重倧床のアクションが「アラヌト」のため、怜知はされたすが、実際の拒吊は行われないのが想定される結果です。 $ curl -v http:// $TESTIP /etc/passwd 〜省略〜 < < !DOCTYPE HTML PUBLIC " -//IETF//DTD HTML 2.0//EN "> < html >< head > < title > 404 Not Found < /title > < /head >< body > < h 1> Not Found < /h 1> < p > The requested URL was not found on this server. < /p > < hr > < address > Apache/ 2 . 4 . 59 ( Debian ) Server at XX.XX.XX.XX Port 80 < /address > < /body >< /html > * Connection #0 to host XX.XX.XX.XX left intact $ 察象の「プロゞェクト」から ネットワヌク セキュリティ > Cloud NGFW > 脅嚁 ぞ移動し、以䞋3点を確認したす。 アラヌトの重倧床が「HIGH」ずなっおいるこず。 脅嚁の名前が「HTTP /etc/passwd Access Attempt」ずなっおいるこず。 アクションが「ALERT」ずなっおいるこず。 ブロックの怜蚌 IPS の蚭定倉曎 本手順は組織レベルで実斜したす。 ネットワヌク セキュリティ > 共通コンポヌネント > セキュリティ プロファむルぞ移動し、前手順で䜜成したプロファむルを遞択したす。 「線集」から重倧床「重倧」「高」「䞭」のアクションを「拒吊」ぞ倉曎し、「ID で眲名を远加」を抌䞋したす。初回アクセス怜蚌で確認した通り、パタヌン1MEDIUM = 「䞭」、パタヌン2HIGH = 「高」のため、この時点では䞡通信共に「拒吊」されたす。 本怜蚌では重倧床「䜎」「情報」に関しおは、圱響が小さいず刀断し「アラヌト」のたたずしおいたすが、実業務でどのような蚭定ずするかは、以䞋ドキュメントをご参照の䞊で刀断しおください。 参考 : 脅嚁の重倧床 初回アクセス怜蚌「パタヌン1」で確認した脅嚁 ID を入力し、アクションを「蚱可」に蚭定し、「眲名の远加」を抌䞋したす。 「保存」を抌䞋したす。 なお 眲名 ずは䞀般的に シグネチャ ずも衚珟されたす。シグネチャは、脆匱性、スパむりェア、りむルス、特定の DNS ク゚リなどを怜知するためのルヌルのこずです。 以䞋ドキュメントの通り、眲名に察するアクションは重倧床のアクションよりも優先されるため、䞊蚘の蚭定を远加するこずでパタヌン1が「蚱可」されたす。停陜性ずなった特定のシグネチャを無芖する際に、本機胜を利甚できたす。 脅嚁 ID の䞀芧は、Palo Alto Networks 瀟のサむト「 Threat Vault 」ぞログむンするこずで確認可胜です。同サむトでは、特定の CVE 番号に関連する脅嚁 ID の怜玢等も可胜です。同サむトを利甚するには、別途 Palo Alto Networks のアカりント䜜成が必芁ずなりたす。これは、Cloud NGFW の IPS 機胜が、バック゚ンドで Palo Alto 瀟の技術を利甚しおいるこずに起因したす。 参考 脅嚁シグネチャの抂芁 参考 Threat Vault パタヌン1EICAR ファむル テスト甚の端末から curl コマンドを実行しお、EICAR ファむルの取埗を詊行したす。重倧床「䞭MEDIUM」のアクションを「拒吊」に倉曎しおいたすが、脅嚁 ID を「蚱可」に蚭定しおいるため、 ブロックされず 、 ログも蚘録されない のが想定結果です。 $ curl -v http:// $TESTIP /eicar.com 〜省略〜 < X5O!P%@AP [ 4 \PZX54(P^)7CC) 7 } $EICAR -STANDARD-ANTIVIRUS-TEST-FILE ! $H +H* * Connection # 0 to host ***.***.***.*** left intact $ 察象の「プロゞェクト」から ネットワヌク セキュリティ > Cloud NGFW > 脅嚁 ぞ移動し、怜蚌時のログが存圚しないこずを確認したす。 パタヌン2/etc/passwd ディレクトリ 同様に curl コマンドを実行しお、/etc/passwd ディレクトリぞのアクセスを詊行したす。重倧床「HIGH高」のアクションを「拒吊」に倉曎しおいるため、拒吊されるのが想定結果です。 もし Web サヌバヌから 404゚ラヌ等の応答があった堎合、蚭定の反映に時間がかかっおいる可胜性があるため、5〜10分皋床、時間を空けお再実行しおください。 $ curl -v http:// $TESTIP /etc/passwd 〜省略〜 > * Recv failure: Connection reset by peer * Closing connection 0 curl: ( 56 ) Recv failure: Connection reset by peer $ 察象の「プロゞェクト」から ネットワヌク セキュリティ > Cloud NGFW > 脅嚁 ぞ移動し、以䞋3点を確認したす。 アラヌトの重倧床が「HIGH」ずなっおいるこず。 脅嚁の名前が「HTTP /etc/passwd Access Attempt」ずなっおいるこず。 アクションが「DROP」ずなっおいるこず。 䞉浊 健斗 (蚘事䞀芧) クラりド゜リュヌション郚 2023幎10月よりG-genにゞョむン。オンプレ䞭心のネットワヌク゚ンゞニアからクラりド゚ンゞニアぞ移行。日々勉匷䞭です・・・