デフォルトでは、Function Compute の関数はパブリックネットワークにアクセスできます。ただし、VPC 内のリソースにはアクセスできません。関数が VPC リソースにアクセスできるようにするか、特定の VPC から関数を呼び出せるようにするには、ネットワーク設定と権限を構成する必要があります。このトピックでは、Function Compute コンソールで関数のネットワーク設定を構成する方法について説明します。
注意事項
ACR Enterprise instance のコンテナイメージから作成された GPU 関数に対して VPC アクセスを構成する場合、選択した VPC と vSwitch は次の要件を満たす必要があります。
-
ACR エンタープライズインスタンスの [リソースアクセス管理] ページに、[アクセスIP] セクションが [デフォルト解決] ラベルとともに含まれている場合、関数の VPC および vSwitch は、デフォルト解決済み IP アドレスに対応する VPC および vSwitch と同じである必要があります。
-
ACR エンタープライズインスタンスの[リソースアクセス管理]ページに、[アクセス IP]セクション([デフォルト解決]ラベル付き)が表示されない場合、関数の VPC および vSwitch を、そのインスタンスにアタッチされている任意の VPC および vSwitch のペアに設定できます。

ネットワークアクセス機能
VPC 機能を使用すると、Function Compute のコールドスタート性能に影響を与える可能性があります。この機能は、必要に応じてのみ設定してください。可能な場合は、リソースへのアクセスに RAM 認可を使用することを推奨します。詳細については、「関数ロールを使用して、Function Compute が他の Alibaba Cloud サービスにアクセスするための権限を付与する」をご参照ください。
関数がネットワークアドレスにアクセスしたり、ネットワークアドレスからアクセスされたりすると、トラフィックが生成されます。このトラフィックは、次のタイプに分類されます。
-
インターネットトラフィック:Alibaba Cloud 公式ウェブサイト、Taobao、Alibaba Cloud サービスのパブリックエンドポイントなど、インターネットアドレスにアクセスするためのトラフィック。
-
VPC プライベートネットワークトラフィック:ご利用の VPC 内の RDS、NAS、ECS インスタンスのアドレスなど、VPC 内のアドレスにアクセスするためのトラフィック。
異なるネットワーク設定に基づいて、関数は次のネットワークアクセス機能を持つことができます。必要に応じて構成できます。
-
関数のアウトバウンドトラフィック:関数からパブリックネットワークまたは VPC 内のリソースへのアウトバウンドトラフィックを許可するかどうかを指定します。対応する設定は、VPC にアクセス および [関数がパブリックネットワークにアクセスすることを許可] です。
表 1. 機能のアウトバウンドトラフィック
ネットワーク構成
説明
関数がパブリックネットワークのみにアクセスすることを許可する
関数は、関数ネットワークを介してパブリックネットワークとプライベートネットワークにアクセスします。ご利用の VPC を介したアクセスは拒否されます。
必要なネットワーク構成は次のとおりです。
-
VPC にアクセス を × に設定します。
-
[関数のパブリックネットワークへのアクセスを許可] を はい に設定します。
関数が VPC のみにアクセスすることを許可する
関数は、ご利用の VPC を介してのみパブリックネットワークとプライベートネットワークにアクセスします。これは、PrivateZone、NAT Gateway、および VPC にバインドされている関数などのシナリオに適用されます。
必要なネットワーク構成は次のとおりです。
-
VPC にアクセス を はい に設定し、VPC 情報を設定します。
-
関数のパブリックネットワークへのアクセスを許可 を × に設定します。
関数がパブリックネットワークと VPC の両方にアクセスすることを許可する
-
非 GPU 関数の場合:
-
関数ネットワークを介してパブリックネットワークにアクセスできます。
-
関数は、ご利用の VPC を介してプライベートネットワークにアクセスします。プライベートドメイン名解決には PrivateZone がサポートされています。
-
-
GPU 関数の場合:
-
関数は、関数ネットワークを介してパブリックネットワークと 100.0.0.0/8 CIDR ブロック内のプライベートネットワークにアクセスします。
-
関数は、ご利用の VPC を介して 100.0.0.0/8 CIDR ブロック外のプライベートネットワークにアクセスします。プライベートドメイン名解決には PrivateZone はサポートされていません。プライベートドメイン名解決を有効にするには、チケットを送信できます。
-
必要なネットワーク構成は次のとおりです。
-
VPC にアクセス を はい に設定し、VPC 情報を設定します。
-
[パブリックネットワークへの関数アクセスを許可] を はい に設定します。
関数がパブリックネットワークと VPC の両方へのアクセスを拒否する
関数は、関数ネットワークを介してプライベートネットワークにアクセスします。パブリックネットワークへのアクセスと、ご利用の VPC を介したアクセスは拒否されます。必要なネットワーク構成は次のとおりです。
-
VPC にアクセス を × に設定します。
-
[関数のパブリックネットワークへのアクセスを許可] を × に設定します。
-
-
関数のインバウンドトラフィック:パブリック IP アドレスまたは VPC アドレスからの関数へのインバウンドトラフィックを許可するかどうかを指定します。対応する設定は 指定された VPC のみによる関数の呼び出し です。
表 2. 関数のインバウンドトラフィック
ネットワーク構成
説明
関数がパブリックネットワークと VPC の両方からアクセスされることを許可する
デフォルトでは、関数は作成後にパブリックネットワークと VPC の両方から呼び出すことができます。デフォルトのネットワーク構成は次のとおりです。
-
指定された VPC のみによる関数の呼び出し を × に設定します。
関数が VPC からのみアクセスされることを許可する
関数は、指定された VPC から呼び出すことができ、パブリックネットワークからの呼び出しは拒否されます。必要なネットワーク構成は次のとおりです。
-
指定された VPC のみによる関数の呼び出し を はい に設定し、関数を呼び出すことが許可された VPC の情報を設定します。
-
Function Compute がサポートするゾーン
各リージョンでサポートされている最新のゾーンについては、OpenAPI Explorer を使用して Get Zones API オペレーションを呼び出すことができます。
リソースが存在するゾーンが Function Compute でサポートされていない場合、VPC 環境内で Function Compute がサポートするゾーンに vSwitch を作成し、この vSwitch ID を Function Compute 関数の VPC 構成で指定できます。同一 VPC 内の vSwitch はプライベートネットワークピアリングを使用して接続されているため、Function Compute は、この vSwitch を介して、他のゾーンにあるリソースにアクセスできます。詳細については、「「vSwitch is in unsupported zone」エラーを解決する方法」をご参照ください。
前提条件
-
(オプション) ネットワークリソースの作成。
必要なリソースを作成していない場合は、構成時に 自動設定 を選択できます。それ以外の場合は、以下のトピックの手順に従って、リソースを事前に作成できます。
ネットワーク設定とロールの構成
-
Function Compute コンソールにログインします。 左側のナビゲーションウィンドウで、を選択します。
-
トップナビゲーションバーでリージョンを選択します。「関数」ページで、対象の関数をクリックします。
-
関数の詳細ページで、設定 タブをクリックし、詳細設定 セクションで 変更 をクリックします。
-
詳細設定 パネルの ネットワーク セクションで、必要に応じて次の項目を設定し、デプロイ をクリックします。
-
VPC にアクセス: 関数が VPC 内のリソースにアクセスすることを許可するかどうかを指定します。有効な値:
-
有効化: 関数が VPC 内のリソースにアクセスできるようにします。[有効化] を選択すると、設定モード を選択する必要があります。有効な値:
-
(推奨) 自動設定: Function Compute は、VPC、vSwitch、セキュリティグループなどのリソースを自動的に作成します。手動で作成する必要はありません。現在のリージョンにリソースがすでに作成されている場合、それらは再作成されません。
-
カスタム設定: 既存のネットワークリソースを手動で選択する必要があります。事前にリソースを作成済みであることを確認してください。
-
VPC: リストからアクセスする VPC を選択します。
重要選択した VPC には、最大 10 個の vSwitch を作成できます。
-
vSwitch: リストから少なくとも1つのvSwitchを選択します。
このパラメーターは、Function Compute がアクセスできるサブネットを指定します。2 つ以上の vSwitch を指定することを推奨します。ゾーンに障害が発生したり、IP アドレスが不足したりした場合でも、関数は他のサブネットで実行でき、フォールトトレランスが向上します。
-
セキュリティグループ: リストからセキュリティグループを選択します。
このセキュリティグループは、弾力性ネットワークインターフェース (ENI) を関数に関連付けて、ENI を介した関数による VPC リソースへのアクセスを制御するために使用されます。デフォルトでは、セキュリティグループのアウトバウンドルールはすべてのトラフィックを許可します。アウトバウンドルールを構成して、関数による VPC リソースへのアクセスを詳細に制御することもできます。
説明セキュリティグループのアウトバウンドルールは、ICMP プロトコルを許可する必要があります。Function Compute は、ICMP プロトコルを使用して VPC ネットワーク接続をチェックします。
-
-
-
無効:関数は VPC 内のリソースにアクセスできなくなります。
-
-
固定パブリック IP アドレス: NAT ゲートウェイと EIP を使用して、アウトバウンドトラフィック用の固定パブリック IP アドレスを取得するかどうかを指定します。詳細については、「固定パブリック IP アドレスを構成する」をご参照ください。
-
[関数にパブリックネットワークへのアクセスを許可]: 関数がパブリックネットワークにアクセスできるかどうかを指定します。有効な値:
-
[有効化]: 関数がパブリックネットワークにアクセスできるようにします。
-
無効: 関数はパブリックネットワークにアクセスできません。
-
-
指定された VPC のみによる関数の呼び出し: 指定された VPC からの関数の呼び出しを許可するかどうかを指定します。有効な値:
-
[有効化]:指定された VPC から関数を呼び出せるようにします。注意:
-
関数は最大 20 個の VPC にバインドできます。
-
指定された VPC のみが関数を呼び出すことを許可した後も、トリガーからの呼び出しは影響を受けません。
-
VPC バインディングは、関数のすべてのバージョンとエイリアスに適用されます。
-
指定した VPC からのみ関数を呼び出すことを許可した場合、パブリックネットワークや他の VPC からの呼び出しリクエストは拒否されます。
StatusCodeは 403、ErrorCodeはAccessDenied、エラーメッセージはResource access is bound by VPC: VPC IDになります。 -
プライベート HTTP エンドポイントを使用してのみ VPC をバインドできます。パブリックエンドポイントまたはプライベート HTTPS エンドポイントを使用して VPC をバインドすることはできません。
-
-
無効: パブリックネットワークとすべての VPC から関数を呼び出すことができます。
-
-
よくある質問
-
Function Compute の関数が VPC への接続に失敗するのはなぜですか?
関数が VPC にアクセスするように構成したが、接続に失敗した場合、原因は次のいずれかである可能性があります。
-
vSwitch が存在するサブネットに障害が発生しているか、サブネット内の IP アドレスが不足しています。VPC を構成する際に、2 つ以上の vSwitch ID を指定できます。ゾーンに障害が発生した場合でも、関数は他のゾーンで実行でき、フォールトトレランスが向上します。
-
セキュリティグループが正しく構成されていません。次の要件に従ってセキュリティグループを構成してください。
-
VPC 内のセキュリティグループのインバウンドルールは、Function Compute が存在するセキュリティグループからのアクセスを許可する必要があります。
-
セキュリティグループのアウトバウンドルールは、ICMP プロトコルを許可する必要があります。Function Compute は、ICMP プロトコルを使用して VPC ネットワーク接続を確認します。
セキュリティグループの構成方法の詳細については、「セキュリティグループルールの追加」をご参照ください。
-
-
-
新しいリソースを追加する際に、ネットワークリソースが不足していることが判明した場合、どうすればよいですか?
VPC ネットワークリソースを作成する際、自動構成機能は 24 のネットワークプレフィックスを提供し、252 個の利用可能な IP アドレスを提供します。インスタンスが多い場合、この制限を超える可能性があります。この場合、vSwitch の CIDR ブロックと対応するセキュリティグループを手動で調整する必要があります。
トラブルシューティング
Function Compute は、vpcConfig パラメーターを設定する際に、VPC へのアクセス権限をチェックしません。チェックは関数が実行されるときに行われます。そのため、InvokeFunction API オペレーションを使用して関数を呼び出す際に、新しいエラーの種類が発生する可能性があります。次の表では、関数が VPC に接続する際に発生する可能性のある一般的なエラーについて説明し、問題を迅速にトラブルシューティングできるようにしています。
|
エラーコード |
ステータスコード |
原因 |
ソリューション |
|
InvalidArgument |
400 |
指定された vSwitchId が存在するゾーンは、Function Compute でサポートされていません。 |
「vSwitchId」パラメーターをリセットします。詳細については、「Function Compute がサポートするゾーン」をご参照ください。 |
|
vpcConfig 内の vpcId、vSwitchIds、または securityGroupId に対応するリソースが見つかりませんでした。 |
vpcConfig パラメーターの設定を確認します。 |
||
|
指定された vSwitch またはセキュリティグループが対応する VPC にありません。 |
vpcConfig パラメーターの設定を確認し、vSwitchId および securityGroupId に対応するリソースが、vpcId に対応する VPC 内にあることを確認してください。 |
||
|
AccessDenied |
403 |
ENI でのオペレーションを実行する権限が付与されていません。 |
関数の権限を確認します。詳細については、「関数ロールを使用して Function Compute に他の Alibaba Cloud サービスへのアクセス権限を付与する」をご参照ください。 |
|
ResourceExhausted |
429 |
vSwitch の CIDR ブロック内の利用可能な IP アドレス数が不足しています。Function Compute は、それ以上 ENI を作成できません。 |
より大きい CIDR ブロックで vSwitch を作成し、vpcConfig の vSwitchId パラメーターを更新します。 説明
「 |
参考
-
VPC 内のデータベースにアクセスするには、データベースの IP アドレスのホワイトリストを構成します。ホワイトリストに追加する CIDR ブロックは、関数用に構成する vSwitch の CIDR ブロックである必要があります。詳細については、「データベースへのアクセス」をご参照ください。
-
関数のアウトバウンドパブリックネットワークトラフィックを制限するには、静的 IP アドレスを構成する必要があります。詳細については、「固定パブリック IP アドレスの構成」をご参照ください。