IPv6 静的ルートのネクストホップ インスタンス(タグなしとタグ付き)、ネクストホップ アドレス、ネクストホップ ゲートウェイを使用する

1. はじめに

静的カスタムルートは、VPC のデフォルトのルーティング動作に影響します。IPv6 カスタムルートが、新しいネクストホップ属性(next-hop-gateway、next-hop-instance、next-hop-address)をサポートするようになりました。この Codelab では、マルチ NIC VM インスタンスで接続された 2 つの VPC を使用して、これらの新しいネクストホップ オプションで IPv6 カスタムルートを使用する方法について説明します。また、ULA と GUA のアドレスを組み合わせて、新しいカスタムルート機能を使用して ULA VPC からパブリック インターネットへの到達可能性を提供する方法についても説明します。

学習内容

  • ネクストホップ インスタンスのネクストホップを使用して IPv6 カスタムルートを作成する方法。
  • ネクストホップ ゲートウェイのネクストホップを使用して IPv6 カスタムルートを作成する方法。
  • ネクストホップ アドレスのネクストホップを使用して IPv6 カスタムルートを作成する方法。

必要なもの

  • Google Cloud プロジェクト

2. 始める前に

Codelab をサポートするようにプロジェクトを更新する

この Codelab では、$variables を使用して、Cloud Shell での gcloud 構成の実装を支援します。

Cloud Shell で次の操作を行います。

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export projectname=$(gcloud config list --format="value(core.project)")

ラボの全体的なアーキテクチャ

eae86f3e371e74b8.png

両方のタイプのカスタム ルート ネクストホップを示すために、GUA アドレスを使用するクライアント VPC、ULA アドレスを使用するサーバー VPC、GUA アドレスを使用する 2 番目のサーバー VPC の 3 つの VPC を作成します。

クライアント VPC が ULA サーバーにアクセスするには、マルチ NIC ゲートウェイ インスタンスを指す next-hop-instance と next-hop-address の両方を使用するカスタムルートを使用します。(デフォルトの ::/0 ルートを削除した後)GUA サーバーにアクセスできるようにするには、デフォルト インターネット ゲートウェイを指す next-hop-gateway を持つカスタムルートを使用して、インターネット経由のルーティングを提供します。

3. クライアント VPC の設定

クライアント VPC を作成する

Cloud Shell で次の操作を行います。

gcloud compute networks create client-vpc \
    --project=$projectname \
    --subnet-mode=custom \
    --mtu=1500 --bgp-routing-mode=regional

クライアント サブネットを作成する

Cloud Shell で次の操作を行います。

gcloud compute networks subnets create client-subnet  \
    --network=client-vpc \
    --project=$projectname \
    --range=192.168.1.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=external \
    --region=us-central1

次のコマンドを使用して、割り当てられた GUA サブネットを環境変数に記録します。

export client_subnet=$(gcloud compute networks subnets \
    describe client-subnet \
    --project $projectname \
    --format="value(externalIpv6Prefix)" \
    --region us-central1)

クライアント インスタンスを起動する

Cloud Shell で次の操作を行います。

gcloud compute instances create client-instance \
    --subnet client-subnet \
    --stack-type IPV4_IPV6 \
    --zone us-central1-a \
    --project=$projectname

クライアント VPC トラフィック用にファイアウォール ルールを追加する

Cloud Shell で次の操作を行います。

gcloud compute firewall-rules create allow-gateway-client \
    --direction=INGRESS --priority=1000 \
    --network=client-vpc --action=ALLOW \
    --rules=tcp --source-ranges=$client_subnet \
    --project=$projectname 

クライアント インスタンスの IAP を許可するファイアウォール ルールを追加する

Cloud Shell で次の操作を行います。

gcloud compute firewall-rules create allow-iap-client \
    --direction=INGRESS --priority=1000 \
    --network=client-vpc --action=ALLOW \
    --rules=tcp:22 --source-ranges=35.235.240.0/20 \
    --project=$projectname 

クライアント インスタンスへの SSH アクセスを確認する

Cloud Shell で、クライアント インスタンスにログインします。

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

成功すると、クライアント インスタンスのターミナル ウィンドウが表示されます。SSH セッションを終了して、Codelab を続行します。

4. ULA サーバー VPC の設定

ULA サーバー VPC を作成する

Cloud Shell で次の操作を行います。

gcloud compute networks create server-vpc1 \
    --project=$projectname \
    --subnet-mode=custom --mtu=1500 \
    --bgp-routing-mode=regional \
    --enable-ula-internal-ipv6

ULA サーバー サブネットを作成する

Cloud Shell で次の操作を行います。

gcloud compute networks subnets create server-subnet1 \
    --network=server-vpc1 \
    --project=$projectname \
    --range=192.168.0.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=internal \
    --region=us-central1

次のコマンドを使用して、割り振られた ULA サブネットを環境変数に記録します。

export server_subnet1=$(gcloud compute networks subnets \
    describe server-subnet1 \
    --project $projectname \
    --format="value(internalIpv6Prefix)" \
    --region us-central1)

ULA 内部 IPV6 アドレスを使用してサーバー VM を起動する

Cloud Shell で次の操作を行います。

gcloud compute instances create server-instance1 \
    --subnet server-subnet1 \
    --stack-type IPV4_IPV6 \
    --zone us-central1-a \
    --project=$projectname

クライアントからサーバーにアクセスできるようにファイアウォール ルールを追加する

Cloud Shell で次の操作を行います。

gcloud compute firewall-rules create allow-client-server1 \
    --direction=INGRESS --priority=1000 \
    --network=server-vpc1 --action=ALLOW \
    --rules=tcp --source-ranges=$client_subnet \
    --project=$projectname 

IAP を許可するファイアウォール ルールを追加する

Cloud Shell で次の操作を行います。

gcloud compute firewall-rules create allow-iap-server1 \
    --direction=INGRESS --priority=1000 \
    --network=server-vpc1 --action=ALLOW \
    --rules=tcp:22 \
    --source-ranges=35.235.240.0/20 \
    --project=$projectname 

ULA サーバー インスタンスに Apache をインストールする

Cloud Shell で、クライアント インスタンスにログインします。

gcloud compute ssh server-instance1 \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

サーバー VM シェル内で、次のコマンドを実行します。

sudo apt update && sudo apt -y install apache2

Apache が実行されていることを確認する

sudo systemctl status apache2

デフォルトのウェブページを上書きする

echo '<!doctype html><html><body><h1>Hello World! From Server1!</h1></body></html>' | sudo tee /var/www/html/index.html

SSH セッションを終了して、Codelab を続行します。

5. GUA サーバー VPC の設定

GUA サーバー VPC を作成する

Cloud Shell で次の操作を行います。

gcloud compute networks create server-vpc2 \
    --project=$projectname \
    --subnet-mode=custom --mtu=1500 \
    --bgp-routing-mode=regional

GUA サーバー サブネットを作成する

Cloud Shell で次の操作を行います。

gcloud compute networks subnets create server-subnet2 \
    --network=server-vpc2 \
    --project=$projectname \
    --range=192.168.0.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=external \
    --region=us-central1

次のコマンドを使用して、割り当てられた GUA サブネットを環境変数に記録します。

export server_subnet2=$(gcloud compute networks subnets \
    describe server-subnet2 \
    --project $projectname \
    --format="value(externalIpv6Prefix)" \
    --region us-central1)

GUA IPV6 アドレスを使用してサーバー VM を起動する

Cloud Shell で次の操作を行います。

gcloud compute instances create server-instance2 \
    --subnet server-subnet2 \
    --stack-type IPV4_IPV6 \
    --zone us-central1-a \
    --project=$projectname

サブネット内のアクセスを許可するファイアウォール ルールを追加する

Cloud Shell で次の操作を行います。

gcloud compute firewall-rules create allow-client-server2 \
    --direction=INGRESS \
    --priority=1000 \
    --network=server-vpc2 \
    --action=ALLOW \
    --rules=tcp --source-ranges=$client_subnet \
    --project=$projectname 

IAP を許可するファイアウォール ルールを追加する

Cloud Shell で次の操作を行います。

gcloud compute firewall-rules create allow-iap-server2 \
    --direction=INGRESS \
    --priority=1000 \
    --network=server-vpc2 \
    --action=ALLOW \
    --rules=tcp:22 \
    --source-ranges=35.235.240.0/20 \
    --project=$projectname 

GUA サーバー インスタンスへの SSH アクセスを確認して Apache をインストールする

Cloud Shell で、クライアント インスタンスにログインします。

gcloud compute ssh server-instance2 \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

サーバー VM シェル内で、次のコマンドを実行します。

sudo apt update && sudo apt -y install apache2

Apache が実行されていることを確認する

sudo systemctl status apache2

デフォルトのウェブページを上書きする

echo '<!doctype html><html><body><h1>Hello World! From Server2!</h1></body></html>' | sudo tee /var/www/html/index.html

SSH セッションを終了して、Codelab を続行します。

6. Gateway インスタンスを作成する

クライアント VPC のデフォルト ルートを削除する

ULA v6 トラフィックをマルチ NIC インスタンスにリダイレクトし、インターネット下り(外向き)ルーティングを無効にするための準備。デフォルトのインターネット ゲートウェイを指すデフォルトの ::/0 ルートを削除します。

Cloud Shell で次の操作を行います。

export client_defroutename=$(gcloud compute routes list \
--project $projectname \
--format='value(name)' \
--filter="network:client-vpc AND destRange~'::/0'")

gcloud compute routes delete $client_defroutename \
--project $projectname \
--quiet

ゲートウェイのマルチ NIC VM を起動する

Cloud Shell で次の操作を行います。

gcloud compute instances create gateway-instance \
    --project=$projectname \
    --zone=us-central1-a \
--network-interface=stack-type=IPV4_IPV6,subnet=client-subnet,no-address \
--network-interface=stack-type=IPV4_IPV6,subnet=server-subnet1,no-address \
    --can-ip-forward

ゲートウェイ インスタンスを構成する

Cloud Shell でゲートウェイ インスタンスにログインします(インスタンスの起動中に SSH が正常に接続されるまでに数分かかることがあります)。

gcloud compute ssh gateway-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

ゲートウェイ VM シェル内で次のコマンドを実行して、IPv6 転送を有効にし、転送を有効にした RA の受け入れを継続します(accept_ra = 2)。

sudo sysctl -w net.ipv6.conf.ens4.accept_ra=2
sudo sysctl -w net.ipv6.conf.ens5.accept_ra=2
sudo sysctl -w net.ipv6.conf.ens4.accept_ra_defrtr=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1

インスタンスの IPv6 ルーティング テーブルを確認する

ip -6 route show

ULA サブネット ルートと GUA サブネット ルートの両方と、デフォルト ルートが GUA インターフェースを指している出力例。

::1 dev lo proto kernel metric 256 pref medium
2600:1900:4000:7a7f:0:1:: dev ens4 proto kernel metric 256 expires 83903sec pref medium
2600:1900:4000:7a7f::/65 via fe80::4001:c0ff:fea8:101 dev ens4 proto ra metric 1024 expires 88sec pref medium
fd20:3df:8d5c::1:0:0 dev ens5 proto kernel metric 256 expires 83904sec pref medium
fd20:3df:8d5c::/64 via fe80::4001:c0ff:fea8:1 dev ens5 proto ra metric 1024 expires 84sec pref medium
fe80::/64 dev ens5 proto kernel metric 256 pref medium
fe80::/64 dev ens4 proto kernel metric 256 pref medium
default via fe80::4001:c0ff:fea8:101 dev ens4 proto ra metric 1024 expires 88sec pref medium

SSH セッションを終了して、Codelab を続行します。

7. ゲートウェイ インスタンスへのルートを作成してテストする(インスタンス名を使用)

このセクションでは、ゲートウェイ インスタンス名をネクストホップとして使用して、クライアント VPC とサーバー VPC の両方にルートを追加します。

サーバーのアドレスをメモする

Cloud Shell で次の操作を行います。

gcloud compute instances list \
   --project $projectname \
   --filter="name~server-instance" \
--format='value[separator=","](name,networkInterfaces[0].ipv6Address,networkInterfaces[0].ipv6AccessConfigs[0].externalIpv6)'

これにより、サーバー インスタンス名とその IPv6 プレフィックスの両方が出力されます。出力例

server-instance1,fd20:3df:8d5c:0:0:0:0:0,
server-instance2,,2600:1900:4000:71fd:0:0:0:0

後でクライアント インスタンスの curl コマンドで使用するため、両方のアドレスをメモしておきます。残念ながら、SSH セッションを介して転送されないため、環境変数を使用してこれらの情報を簡単に保存することはできません。

クライアントから ULA サーバー インスタンスに curl コマンドを実行する

新しいルートを追加する前に動作を確認できます。クライアント インスタンスから server-instance1 に対して curl コマンドを実行します。

Cloud Shell で、クライアント インスタンスにログインします。

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

クライアント インスタンス内で、server1 インスタンスの ULA IPV6 アドレスを使用して curl を実行します(このコマンドは、curl の待機時間が長くなりすぎないように、5 秒の短いタイムアウトを設定します)。

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

クライアント VPC にサーバー VPC へのルートがまだないため、この curl コマンドはタイムアウトします。

では、この問題を解決しましょう。現時点では SSH セッションを終了します。

クライアント VPC にカスタムルートを追加する

クライアント VPC に ULA プレフィックスへのルートがないためです。では、追加しましょう。

Cloud Shell で次の操作を行います。

gcloud compute routes create client-to-server1-route \
   --project=$projectname \
   --destination-range=$server_subnet1 \
   --network=client-vpc \
   --next-hop-instance=gateway-instance \
   --next-hop-instance-zone=us-central1-a

クライアント インスタンスに SSH で接続します。

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

クライアント インスタンス内で、サーバー インスタンスへの curl をもう一度試みます。(このコマンドは、curl の待機時間が長くなりすぎないように、短いタイムアウト(5 秒)を設定しています)。

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

server1 VPC に、ゲートウェイ インスタンスを経由してクライアント VPC に戻るルートがまだないため、この curl コマンドでもタイムアウトします。

SSH セッションを終了して、Codelab を続行します。

ULA サーバー VPC にカスタムルートを追加する

Cloud Shell で次の操作を行います。

gcloud compute routes create server1-to-client-route \
   --project=$projectname \
   --destination-range=$client_subnet \
   --network=server-vpc1 \
   --next-hop-instance=gateway-instance \
   --next-hop-instance-zone=us-central1-a

クライアント インスタンスに SSH で接続します。

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

クライアント インスタンス内で、サーバー インスタンスへの curl をもう一度試みます。

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

この curl コマンドは成功し、クライアント インスタンスから ULA サーバー インスタンスへのエンドツーエンドの到達性が示されます。この接続は、next-hop-instance をネクストホップとして使用する IPv6 カスタムルートを使用する場合にのみ可能です。

出力例:

<user id>@client-instance:~$ curl -m 5.0 -g -6 'http://[fd20:3df:8d5c:0:0:0:0:0]:80/'
<!doctype html><html><body><h1>Hello World! From Server1!</h1></body></html>

SSH セッションを終了して、Codelab を続行します。

8. ゲートウェイ インスタンスへのルートを作成してテストする(インスタンスのアドレスを使用)

このセクションでは、ゲートウェイ インスタンスの IPv6 アドレスをネクストホップとして使用して、クライアント VPC とサーバー VPC の両方にルートを追加します。

以前のルートを削除する

インスタンス名を使用するカスタムルートを削除して、カスタムルートを追加する前の状態に環境を復元しましょう。

Cloud Shell で次の操作を行います。

gcloud compute routes delete client-to-server1-route  --quiet --project=$projectname
gcloud compute routes delete server1-to-client-route  --quiet --project=$projectname

クライアントから ULA サーバー インスタンスに curl コマンドを実行する

以前のルートが正常に削除されたことを確認するには、クライアント インスタンスから server-instance1 に対して curl コマンドを実行します。

Cloud Shell で、クライアント インスタンスにログインします。

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

クライアント インスタンス内で、server1 インスタンスの ULA IPV6 アドレスを使用して curl を実行します(このコマンドは、curl の待機時間が長くなりすぎないように、5 秒の短いタイムアウトを設定します)。

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

クライアント VPC にサーバー VPC へのルートがないため、この curl コマンドはタイムアウトします。

ゲートウェイ インスタンスの IPv6 アドレスを取得する

next-hop-address を使用するルートを記述する前に、ゲートウェイ インスタンスの IPv6 アドレスを取得する必要があります。

Cloud Shell で次の操作を行います。

export gateway_ula_address=$(gcloud compute instances \
   describe gateway-instance \
   --project $projectname  \
   --format='value(networkInterfaces[1].ipv6Address)')

export gateway_gua_address=$(gcloud compute instances \
   describe gateway-instance \
   --project $projectname  \
   --format='value(networkInterfaces[0].ipv6AccessConfigs[0].externalIpv6)')

クライアント VPC にカスタムルートを追加する

これで、クライアント VPC のルートを ULA プレフィックスで再追加できますが、ネクストホップとしてゲートウェイの GUA アドレスを使用します。

Cloud Shell で次の操作を行います。

gcloud compute routes create client-to-server1-route \
   --project=$projectname \
   --destination-range=$server_subnet1 \
   --network=client-vpc \
   --next-hop-address=$gateway_gua_address

クライアント インスタンスに SSH で接続します。

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

クライアント インスタンス内で、サーバー インスタンスへの curl をもう一度試みます。

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

予想どおり、この curl コマンドはタイムアウトします。これは、server1 VPC に、ゲートウェイ インスタンスを経由してクライアント VPC に戻るルートがまだないためです。

SSH セッションを終了して、Codelab を続行します。

ULA サーバー VPC にカスタムルートを追加する

Cloud Shell で次の操作を行います。

gcloud compute routes create server1-to-client-route \
   --project=$projectname \
   --destination-range=$client_subnet \
   --network=server-vpc1 \
   --next-hop-address=$gateway_ula_address

クライアント インスタンスに SSH で接続します。

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

クライアント インスタンス内で、サーバー インスタンスへの curl をもう一度試みます。

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

この curl コマンドは成功し、クライアント インスタンスから ULA サーバー インスタンスへのエンドツーエンドの到達性が示されます。この接続は、ネクストホップとして next-hop-address を使用する IPv6 カスタムルートの使用によってのみ可能です。

出力例:

<user id>@client-instance:~$ curl -m 5.0 -g -6 'http://[fd20:3df:8d5c:0:0:0:0:0]:80/'
<!doctype html><html><body><h1>Hello World! From Server1!</h1></body></html>

SSH セッションを終了して、Codelab を続行します。

9. インターネット ゲートウェイへのルートを作成してテストする

このラボをセットアップしたまま、新しいネクストホップ プロパティ(next-hop-gateway)の機能もテストしましょう。

クライアントから GUA サーバー インスタンスに curl コマンドを実行する

新しいルートを追加する前に動作を確認できます。クライアント インスタンスから server2 の IP アドレスに curl コマンドを実行します。

Cloud Shell で、クライアント インスタンスにログインします。

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

クライアント インスタンス内で、IPv6 エンドポイントに対して curl を実行します。

curl -m 5.0 -g -6 'http://[GUA-ipv6-address-of-server2]:80/'

クライアント VPC には、独自のサブネット ルートと server1 の VPC へのルートのみが存在するため、この curl コマンドはタイムアウトします。server2 VPC の GUA 範囲に到達するには、カスタムルートを介してデフォルトのインターネット ゲートウェイを使用する必要があります。

SSH セッションを終了して、Codelab を続行します。

クライアント VPC にカスタム ゲートウェイ ルートを追加する

Cloud Shell で次の操作を行います。

gcloud compute routes create client-to-server2-route \
   --project=$projectname \
   --destination-range=$server_subnet2 \
   --network=client-vpc \
   --next-hop-gateway=default-internet-gateway

クライアント インスタンスに SSH で接続します。

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

クライアント インスタンス内で、同じ curl を繰り返す

curl -m 5.0 -g -6 'http://[GUA-ipv6-address-of-server2]:80/'

この curl コマンドを実行すると、デフォルトのインターネット ゲートウェイを介して他のサーバーの IPv6 アドレスに正常に到達できたことを示すカスタム hello メッセージが返されます。

出力例:

<user id>@client-instance:~$ curl -m 5.0 -g -6 'http://[2600:1900:4000:71fd:0:0:0:0]:80/'
<!doctype html><html><body><h1>Hello World! From Server2!</h1></body></html>

SSH セッションを終了して、ラボのクリーンアップ セクションに進みます。

10. クリーンアップ

インスタンスをクリーンアップする

Cloud Shell で次の操作を行います。

gcloud compute instances delete client-instance --zone us-central1-a --quiet --project=$projectname

gcloud compute instances delete server-instance1 --zone us-central1-a --quiet --project=$projectname

gcloud compute instances delete server-instance2 --zone us-central1-a --quiet --project=$projectname

gcloud compute instances delete gateway-instance --zone us-central1-a --quiet --project=$projectname

サブネットをクリーンアップする

Cloud Shell で次の操作を行います。

gcloud compute networks subnets delete client-subnet --region=us-central1 --quiet --project=$projectname

gcloud compute networks subnets delete server-subnet1 --region=us-central1 --quiet --project=$projectname

gcloud compute networks subnets delete server-subnet2 --region=us-central1 --quiet --project=$projectname

ファイアウォール ルールをクリーンアップする

Cloud Shell で次の操作を行います。

gcloud compute firewall-rules delete allow-iap-client  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-iap-server1  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-iap-server2  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-gateway-client  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-client-server1  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-client-server2  --quiet --project=$projectname

カスタムルートをクリーンアップする

Cloud Shell で次の操作を行います。

gcloud compute routes delete client-to-server1-route  --quiet --project=$projectname
gcloud compute routes delete client-to-server2-route  --quiet --project=$projectname
gcloud compute routes delete server1-to-client-route  --quiet --project=$projectname

VPC をクリーンアップする

Cloud Shell で次の操作を行います。

gcloud compute networks delete client-vpc --quiet --project=$projectname
gcloud compute networks delete server-vpc1 --quiet --project=$projectname
gcloud compute networks delete server-vpc2 --quiet --project=$projectname

11. 完了

ネクストホップを next-hop-gateway、next-hop-instance、next-hop-address に設定した静的カスタム IPv6 ルートを正常に使用できました。また、これらのルートを使用してエンドツーエンドの IPv6 通信を検証しました。

次のステップ

以下の Codelab をご覧ください。

その他の資料と動画

リファレンス ドキュメント