デフォルトでは、Function Compute の egress IP アドレスは動的であり、固定の CIDR ブロックに属しません。データベース、WeChat ミニプログラム、またはその他のホワイトリストによるアクセス制御を要するサードパーティサービスなどに Function Compute がアクセスする場合、Function Compute の固定パブリック IP アドレス機能を使用して静的なパブリック IP アドレスをバインドし、それをホワイトリストに追加できます。本トピックでは、Function Compute コンソールで関数の egress 用に固定パブリック IP アドレスを設定する手順について説明します。
注意事項
固定パブリック IP アドレス機能は、VPC 内のインターネット NAT ゲートウェイを使用します。インターネット NAT ゲートウェイを作成し、EIP(Elastic IP Address)を関連付け、SNAT エントリを追加します。この構成により、VPC 内のインスタンスは EIP を経由してインターネットにアクセス可能になります。受信側サービスからは、NAT ゲートウェイに関連付けられた EIP からのトラフィックとして認識されます。
NAT ゲートウェイおよび EIP は、リージョン内の特定の可用性ゾーンでのみ利用可能です。NAT ゲートウェイおよび EIP がご利用の Function Compute 関数と同じ可用性ゾーンにない場合は、クロスゾーンインターネット接続を有効化するために vSwitch を設定する必要があります。詳細については、「Function Compute がサポートする可用性ゾーン」をご参照ください。
EIP は、同一リージョン内の複数の関数で共有できます。
RAM ユーザーが固定パブリック IP アドレス機能を使用するには、Alibaba Cloud アカウント(root ユーザー)で必要な権限を付与する必要があります。まず、Resource Access Management (RAM) コンソールにログインし、以下のポリシーを RAM ユーザーにアタッチしてください:
AliyunECSFullAccess、AliyunVPCFullAccess、AliyunEIPFullAccess、AliyunRAMFullAccess、およびAliyunNATGatewayFullAccess。
課金
固定パブリック IP アドレスを設定すると、課金対象となる NAT ゲートウェイおよび EIP(Elastic IP Address)が作成されます。詳細については、「NAT ゲートウェイの課金」および「EIP(Elastic IP Address)の課金」をご参照ください。
初回設定
前提条件
関数が VPC リソースにアクセスできるよう、必要な権限およびネットワーク設定を事前に構成済みである必要があります。詳細については、「ネットワークおよびロールの設定」をご参照ください。
VPC にアクセス を はい に設定済みである必要があります。詳細については、「ネットワーク設定の構成」をご参照ください。
操作手順
Function Compute コンソールにログインし、左側のナビゲーションウィンドウで を選択します。
上部のナビゲーションバーからリージョンを選択します。関数 ページで、対象の関数をクリックします。
関数の詳細ページで、設定 タブをクリックし、詳細設定 の右側にある 変更 をクリックします。
高度な構成 パネルで、ネットワーク セクションを見つけます。固定パブリック IP アドレス を有効化し、関数がデフォルトで NIC のインターネットアクセスを許可する を × に設定します。
説明関数がインターネットにアクセスできるようにするため、まず 関数がデフォルトで NIC のインターネットアクセスを許可する を はい に設定します。固定 IP が有効化された後、関数がデフォルトで NIC のインターネットアクセスを許可する を × に設定することで、トラフィックをスムーズに移行できます。
デプロイ をクリックします。表示される 固定パブリック IP アドレスの構成 ダイアログボックスで、内容をよく読み、確認用のチェックボックスを選択した後、OK をクリックします。
ネットワーク構成の適用には 1~2 分程度かかります。その後、保存されたネットワーク設定を確認できます。また、VPC コンソール に移動して、インターネット NAT ゲートウェイおよび関連付けられた(または自動的に作成された)リソースの詳細を確認することもできます。
結果の確認
Function Compute コンソールにログインします。 左側のナビゲーションウィンドウで、を選択します。
上部のナビゲーションバーからリージョンを選択します。関数 ページで、対象の関数をクリックします。
関数の詳細ページで、コード タブをクリックし、コードエディタに以下のコードを入力します。
以下のコードは Python の例です。
# -*- coding: utf-8 -*- import logging import requests def handler(event, context): logger = logging.getLogger() try: r = requests.get('https://myip.ipip.net') clientIP = r.content.split()[1] logger.info('Client IP: ' + clientIP) except: r = requests.get('http://ipinfo.io') clientIP = r.json()['ip'] logger.info('Client IP: ' + clientIP) return clientIPコードを入力後、デプロイメントコード をクリックし、続いて 関数のテスト をクリックします。
関数が正常に実行された後、返されたクライアント IP アドレスを確認します。これは、設定した固定パブリック IP アドレスと一致している必要があります。
追加の固定パブリック IP アドレスの追加
追加の固定パブリック IP アドレスを追加するには、以下の手順を実行します。
関連操作
固定パブリック IP アドレス機能を無効化する、または設定済みの IP アドレスを削除するには、まず 関数がデフォルトで NIC のインターネットアクセスを許可する を はい に設定します。その後、設定済みの IP アドレスをクリックして VPC コンソール に移動し、EIP を NAT ゲートウェイから切り離してリソースをリリースします。