デフォルトでは、Function Compute で作成された関数はインターネットにアクセスできますが、仮想プライベートクラウド (VPC) 内のリソースにはアクセスできません。関数が VPC 内のリソースにアクセスしたり、指定された VPC から呼び出されたりできるようにするには、関数のネットワーク設定と権限を手動で構成する必要があります。このトピックでは、Function Compute コンソールで関数のネットワーク設定を構成する方法について説明します。
注意
ACR Enterprise インスタンスのコンテナイメージから作成された GPU 関数の場合、関数の VPC アクセスを構成する際に、次のルールに基づいて VPC と vSwitch を選択する必要があります。
ACR Enterprise インスタンスの [アクセス制御] ページの [アクセス IP] に [デフォルト解決] タグがある場合、関数の VPC と vSwitch をその IP アドレスに関連付けられている VPC と vSwitch に設定する必要があります。
ACR Enterprise インスタンスの [アクセス制御] ページの [アクセス IP] に [デフォルト解決] タグがない場合、関数の VPC と vSwitch をインスタンスにバインドされている任意の VPC と vSwitch のペアに設定できます。

ネットワークアクセス機能
Function Compute のコールドスタートパフォーマンスは、VPC 機能を使用すると低下する可能性があります。必要な場合を除き、この機能は構成しないでください。まず、RAM 権限付与を使用してリソースにアクセスすることを検討することをお勧めします。詳細については、「関数ロールを使用して、他の Alibaba Cloud サービスにアクセスするための権限を関数に付与する」をご参照ください。
トラフィックは、関数が呼び出されたとき、またはネットワークアドレスにアクセスしたときに生成されます。トラフィックは次のタイプに分類されます。
インターネットトラフィック: Alibaba Cloud の公式サイト、Taobao、Alibaba Cloud サービスのパブリックエンドポイントなど、インターネットアドレスにアクセスするときに生成されるトラフィック。
VPC トラフィック: ApsaraDB RDS、NAS のアドレス、VPC 内の ECS インスタンスの内部 IP アドレスなど、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 でサポートされているゾーン
リソースが Function Compute でサポートされていないゾーンにある場合、VPC 環境内のサポートされているゾーンに vSwitch を作成し、この vSwitch ID を Function Compute 関数の VPC 構成で設定できます。同じ VPC 内の異なる vSwitch はプライベートネットワークを介して相互に通信できるため、Function Compute はこの vSwitch を使用して VPC 内の他のゾーンのリソースにアクセスできます。詳細については、「'vSwitch is in unsupported zone' エラーが発生した場合の対処方法」をご参照ください。
前提条件
(オプション) ネットワークリソースの作成
必要なリソースを作成していない場合は、[自動構成] を選択できます。または、次のドキュメントで説明されているように、事前にリソースを作成することもできます。
ネットワーク設定とロールの構成
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、リージョンを選択します。[関数] ページで、対象の関数をクリックします。
関数の詳細ページで、[設定] タブをクリックします。次に、[詳細設定] の右側にある [編集] をクリックします。
[詳細設定] パネルで、[ネットワーク] セクションを見つけ、必要に応じて設定項目を変更し、[デプロイ] をクリックします。
[VPC へのアクセスを許可]: 関数が VPC 内のリソースにアクセスできるかどうかを指定します。有効な値:
[有効化]: 関数が VPC 内のリソースにアクセスできるようにします。[有効化] を選択した場合は、[構成方法] も選択する必要があります。有効な値:
(推奨) [自動構成]: Function Compute は VPC、vSwitch、セキュリティグループなどのリソースを自動的に作成するため、手動で作成する必要はありません。現在のリージョンの既存のリソースが再利用されます。
[カスタム構成]: 既存のネットワークリソースを手動で選択します。必要なリソースを事前に作成していることを確認してください。
[VPC]: リストからアクセスする VPC を選択します。
重要選択した VPC には最大 10 個の vSwitch を作成できます。
[VSwitch]: 少なくとも 1 つの vSwitch を選択します。
このフィールドは、Function Compute がアクセスできるサブネットを指定します。ゾーンに障害が発生したり、IP アドレスが不足したりした場合に関数が他のサブネットで実行できるように、2 つ以上の vSwitch を指定することをお勧めします。
[セキュリティグループ]: リストからセキュリティグループを選択できます。
このセキュリティグループは、Elastic Network Interface (ENI) を関数に関連付けるために使用されます。ENI を介して VPC 内のリソースにアクセスする際の関数の動作を制御します。デフォルトでは、セキュリティグループのアウトバウンドルールはすべてのトラフィックを許可します。また、アウトバウンドルールを構成して、VPC 内のリソースへの関数のアクセスを詳細に制御することもできます。
説明セキュリティグループのアウトバウンドルールは ICMP プロトコルを許可する必要があります。Function Compute は ICMP プロトコルを使用して VPC ネットワーク接続を確認します。
[無効化]: 関数が VPC 内のリソースにアクセスできないようにします。
[固定パブリック IP アドレス]: NAT Gateway と Elastic IP Address (EIP) を介したアウトバウンドインターネットアクセスに固定パブリック IP アドレスを割り当てるかどうかを指定します。詳細については、「固定パブリック IP アドレスの構成」をご参照ください。
[デフォルト ENI を使用して関数がインターネットにアクセスすることを許可]: 関数にインターネットアクセスを許可するかどうかを指定します。有効な値:
[有効化]: 関数がインターネットにアクセスできるようにします。
[無効化]: 関数がインターネットにアクセスできないようにします。
[指定された VPC のみに関数の呼び出しを許可]: 指定された VPC のみが関数を呼び出せるかどうかを指定します。有効な値:
[有効化]: このオプションを選択すると、指定された VPC のみが関数を呼び出すことができます。次の点に注意してください。
関数は最大 20 個の VPC にバインドできます。
トリガーによる関数の呼び出しは、この設定の影響を受けません。
VPC バインディングは、関数のすべてのバージョンとエイリアスに対して有効になります。
この設定を構成すると、インターネットや他の VPC からの呼び出しリクエストは拒否されます。
StatusCodeは 403、ErrorCodeはAccessDenied、エラーメッセージはResource access is bound by VPC: VPC IDです。VPC は、プライベート HTTP エンドポイントを使用してのみバインドできます。パブリックエンドポイントまたはプライベート HTTPS エンドポイントを使用して VPC をバインドすることはできません。
[無効化]: 関数は、インターネットおよびすべての VPC から呼び出すことができます。
よくある質問
Function Compute がデバッグのために VPC に接続できないのはなぜですか?
関数が VPC にアクセスするように構成したが接続に失敗した場合、原因は次のいずれかである可能性があります。
vSwitch が存在するサブネットに障害があるか、サブネット内の IP アドレスが使い果たされています。フォールトトレランスを向上させるために、VPC を構成するときに 2 つ以上の vSwitch ID を指定できます。これにより、1 つのゾーンに障害が発生した場合でも、関数を別のゾーンで実行できます。
セキュリティグループが正しく構成されていません。セキュリティグループが次の要件に基づいて構成されていることを確認してください。
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 を操作する権限が付与されていません。 | 関数の権限を確認してください。詳細については、「関数ロールを使用して、他の Alibaba Cloud サービスにアクセスするための権限を関数に付与する」をご参照ください。 |
ResourceExhausted | 429 | vSwitch の CIDR ブロックで利用可能な IP アドレスの数が不十分です。Function Compute はこれ以上 ENI を作成できません。 | より大きな CIDR ブロックを持つ vSwitch を作成し、vpcConfig の vSwitchId パラメーターを更新します。 説明
|
参考
VPC 内のデータベースにアクセスするには、データベースの IP アドレスホワイトリストを構成することをお勧めします。ホワイトリストで、このページで構成した vSwitch の CIDR ブロックを指定します。詳細については、「データベースへのアクセス」をご参照ください。
関数のアウトバウンドインターネットトラフィックを制限するには、静的 IP アドレスを使用する必要があります。詳細については、「固定パブリック IP アドレスの構成」をご参照ください。