デフォルトでは、Function Computeで作成した関数はインターネットにアクセスできますが、仮想プライベートクラウド (VPC) リソースにはアクセスできません。 関数がVPC内のリソースにアクセスする場合、または特定のVPCからのリクエストが関数を呼び出すことを許可する場合は、関数のネットワーク設定とアクセス許可を手動で設定する必要があります。 このトピックでは、Function Computeコンソールで関数のネットワーク設定を構成する方法について説明します。
使用上の注意
Container Registry Enterprise Editionインスタンスのコンテナイメージを使用して作成されたカスタムコンテナ関数の場合、関数のVPCアクセス機能を設定するときに、次のルールに基づいてVPCとvSwitchを選択する必要があります。
Container Registry Enterprise Editionインスタンスのアクセス制御ページの [Visit IP] 列にデフォルト解決識別子が存在する場合、関数のVPCとvSwitchをデフォルト解決済みIPアドレスに対応するVPCとvSwitchに設定する必要があります。
Container Registry Enterprise Editionインスタンスのアクセス制御ページの [Visit IP] 列にデフォルト解決識別子が存在しない場合、インスタンスにバインドされているVPCとvSwitchを使用できます。
ネットワークアクセスモード
VPC機能により、Function Computeのコールドスタート効率が低下します。 必要な場合を除き、この機能を設定しないことを推奨します。 RAMユーザーにTablestoreなどのリソースへのアクセスを許可できます。
トラフィックは、ネットワークアドレスから関数にアクセスするとき、または関数がネットワークアドレスにアクセスするときに生成されます。 次のタイプのトラフィックが生成されます。
インターネットトラフィック: Alibaba Cloud公式Webサイト、Taobao Webサイト、Alibaba Cloudサービスのパブリックエンドポイントなどのインターネットアドレスにアクセスしたときに生成されるトラフィック。
VPCトラフィック: ApsaraDB RDSアドレス、Apsara File Storage NAS (NAS) アドレス、VPCのElastic Compute Service (ECS) インスタンスのプライベートIPアドレスなどのVPCアドレスにアクセスするときに生成されるトラフィック。
ビジネス要件に基づいてネットワーク設定を構成し、対応する機能のネットワークアクセス機能を取得できます。
機能アウトバウンドトラフィック設定: VPCへのアクセスおよびインターネットへのアクセスパラメーターを設定して、機能がインターネット経由またはVPC内のリソースにアクセスできるようにするかどうかを指定します。
表 1. 関数送信トラフィック
ネットワーク設定
説明
関数がインターネット経由でのみリソースにアクセスできるようにします。
この関数はインターネットと内部ネットワークにアクセスでき、VPCのリソースにアクセスできません。 次のパラメーターを設定します。
[VPCへのアクセス] を [いいえ] に設定します。
[インターネットへのアクセス] を [はい] に設定します。
関数がVPC内のリソースにのみアクセスできるようにします。
この機能は、VPCを使用してパブリックおよび内部ネットワークリソースにアクセスできます。 この設定は、PrivateZone、NAT Gateway、VPCバインディングなどのシナリオに適用されます。 次のパラメーターを設定します。
[VPCへのアクセス] を [はい] に設定し、関数がアクセスできるVPCを指定します。
[インターネットへのアクセス] を [いいえ] に設定します。
関数がインターネット経由およびVPC内のリソースにアクセスできるようにします。
関数は、関数ロジックを使用してパブリックネットワークリソースにアクセスし、VPCを使用して内部ネットワークリソースにアクセスできます。 次のパラメーターを設定します。
[VPCへのアクセス] を [はい] に設定し、関数がアクセスできるVPCを指定します。
[インターネットへのアクセス] を [はい] に設定します。
関数がインターネットまたはVPCを介してリソースにアクセスすることを禁止します。
関数は、関数ロジックを使用して内部ネットワークリソースにのみアクセスできます。 次のパラメーターを設定します。
[VPCへのアクセス] を [いいえ] に設定します。
[インターネットへのアクセス] を [いいえ] に設定します。
関数インバウンドトラフィック設定: インターネットまたはVPCからの呼び出し要求を許可するかどうかを指定します。 指定されたVPCのみによる関数呼び出しを使用して、インバウンドトラフィック設定を構成できます。
表 2. 関数インバウンドトラフィック
ネットワーク設定
説明
インターネットおよび指定されたVPC経由の関数へのアクセスを許可します。
デフォルトでは、インターネットとVPCを介して関数を呼び出すことができます。 デフォルトのネットワーク設定を次に示します。
指定されたVPCのみによる関数呼び出しは [いいえ] に設定されます。
指定したVPC経由でのみ関数へのアクセスを許可します。
関数は指定したVPCで呼び出すことはできますが、インターネットでは呼び出すことはできません。 次のパラメーターを設定します。
[指定されたVPCのみによる関数の呼び出し] を [はい] に設定し、関数を呼び出すことができるVPCを指定します。
Function Computeがサポートされているゾーン
リソースがFunction Computeでサポートされていないゾーンにデプロイされている場合、VPCのFunction ComputeでサポートされているゾーンにvSwitchを作成し、Function ComputeのVPC設定でvSwitch IDを使用できます。 同じVPC内のvSwitchは、プライベートネットワークを介して相互に通信できます。 したがって、Function ComputeはvSwitchを使用して、他のゾーンにデプロイされているVPCリソースにアクセスできます。 詳細については、「「vSwitch is in unsupported zone」エラーを解決するにはどうすればよいですか? 」をご参照ください。
始める前に
(オプション) ネットワークリソースを作成します。
リソースを作成していない場合は、[自動設定] を選択します。 それ以外の場合は、次のトピックの説明に従ってリソースを作成する必要があります。
ネットワーク設定とロールの構成
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[関数] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [関数] ページで、管理する関数をクリックします。
関数の詳細ページで、設定タブをクリックします。
左側のナビゲーションウィンドウで、[ネットワーク] をクリックします。 表示されるページで、[変更] をクリックします。 [ネットワーク] パネルで、次のパラメーターを変更し、[デプロイ] をクリックします。
VPCへのアクセス: 関数がVPC内のリソースにアクセスできるようにするかどうかを指定します。 有効な値:
はい: 関数はVPC内のリソースにアクセスできます。 値を [はい] に設定した場合は、[設定モード] パラメーターも設定する必要があります。 オプション:
(推奨) 自動設定: Function Computeは、VPC、vSwitch、セキュリティグループなどのリソースを自動的に作成します。 ネットワークリソースの作成後、ビジネス要件に基づいてネットワークリソースを変更できます。
説明Function Computeによって自動的に作成されるネットワークリソースの名前の先頭にfc.auto.createがあります。
カスタム設定: 既存のネットワークリソースからリソースを選択する必要があります。 リソースが事前に作成されていることを確認してください。
VPC: ドロップダウンリストからVPC IDを選択します。
重要選択したVPCに最大10個のvSwitchを作成できます。
vSwitch: ドロップダウンリストからvSwitch IDを1つ以上選択します。
このパラメーターは、Function Computeがアクセスできるサブネットを定義します。 2つ以上のvSwitch IDを指定することを推奨します。 これにより、ゾーンが使用できなくなったり、IPアドレスが不足した場合に、関数を別のサブネットで実行できます。
セキュリティグループ: ドロップダウンリストからセキュリティグループIDを選択します。
このパラメーターは、Function Computeが関連付けられているセキュリティグループを指定します。 このセキュリティグループは、指定されたVPCのFunction Computeのインバウンドルールとアウトバウンドルールを定義します。 VPCに関連付けられているセキュリティグループで、Function Computeが関連付けられているセキュリティグループからのアクセスを許可するルールを設定します。 それ以外の場合、Function Computeは指定されたVPCにデプロイされているリソースにアクセスできません。
No: 関数はVPC内のリソースにアクセスできません。
静的パブリックIPアドレス: NATゲートウェイとelastic IPアドレス (EIP) を使用して静的パブリックIPアドレスを取得するかどうかを指定します。 詳細については、「静的パブリックIPアドレスの設定」をご参照ください。
デフォルトNICのインターネットへのアクセスを許可: 関数がインターネットにアクセスすることを許可するかどうかを指定します。 有効な値:
はい: 機能はインターネットにアクセスできます。
No: 関数はインターネットにアクセスできません。
指定されたVPCのみによる関数呼び出し: 指定されたVPCからの呼び出し要求のみを許可するかどうかを指定します。 有効な値:
Yes: この関数は、指定したVPCでのみ呼び出すことができます。 以下の点にご注意ください。
最大20台のVPCを関数に関連付けることができます。
指定したVPCでのみ関数を呼び出すことを許可した場合、トリガーによる関数の呼び出しは影響を受けません。
1つ以上のVPCが関数に関連付けられた後、VPCは関数のすべてのバージョンとエイリアスに関連付けられます。
指定されたVPCからのリクエストのみが関数の呼び出しを許可すると、インターネットおよび他のVPCからのリクエストは拒否されます。 インターネットおよび他のVPCからのリクエストの場合、
StatusCode
403、ErrorCode
AccessDenied
、エラーメッセージリソースアクセスはVPC: VPC ID
が報告されます。VPCは、プライベートHTTPエンドポイントにのみ関連付けることができます。
いいえ: 関数はインターネット経由でのみ呼び出すことができます。
よくある質問
デバッグのためにFunction ComputeをVPCに接続できないのはなぜですか。
VPCへのアクセスを [はい] に設定した後、Function ComputeがVPCへの接続に失敗した場合、次の項目に考えられる原因を示します。
vSwitchが関連付けられているサブネットでエラーが発生したか、IPアドレスが不足しています。 少なくとも2つのvSwitch IDを指定することを推奨します。 これにより、現在のゾーンでエラーが発生した場合、関数を別のゾーンで実行できます。
セキュリティグループが無効です。 次のルールに基づいてセキュリティグループを設定します。
指定されたVPCが関連付けられているセキュリティグループでは、Function Computeが関連付けられているセキュリティグループからのアクセスを許可するようにルールが設定されています。
セキュリティグループのアウトバウンドトラフィックは、インターネット制御メッセージプロトコル (ICMP) をサポートする必要があります。 Function Computeは、ICMPに基づいてVPCネットワーク接続をチェックします。
セキュリティグループの設定方法の詳細については、「セキュリティグループルールの追加」をご参照ください。
ネットワークリソースを作成するときにリソースが不足している場合はどうすればよいですか。
VPCリソースを作成する場合、CIDRブロックのプレフィックス長は24で、使用可能なIPアドレスの数は252です。 インスタンスの数が多すぎる場合、制限を超える可能性があります。 この場合、vSwitchのCIDRブロックとセキュリティグループを手動で変更する必要があります。
トラブルシューティング
vpcConfigを設定した場合、Function ComputeはVPCへのアクセス許可を検証しません。代わりに、関数の実行時に権限が検証されます。 したがって、vpcConfigが設定されている場合、InvokeFunction操作を使用して関数を呼び出すと、新しいエラーが発生する可能性があります。 次の表に、function Computeの関数がVPCにアクセスするときに発生する可能性のある一般的なエラーを示します。 この表を参照して、問題をトラブルシューティングできます。
エラーコード | ステータスコード | 原因 | 解決策 |
InvalidArgument | 400 | Function Computeは、指定されたvSwitchのゾーンをサポートしていません。 | vSwitchIdで有効なvSwitch IDを指定します。 詳細については、「Function Computeがサポートされているゾーン」をご参照ください。 |
vpcConfigのvpcId、vSwitchIds、またはsecurityGroupIdパラメーターで指定されたリソースが見つかりません。 | vpcConfigの設定が有効かどうかを確認します。 | ||
指定されたvSwitchまたはセキュリティグループはVPCにありません。 | vpcConfigの設定が有効かどうかを確認します。 vSwitchIdおよびsecurityGroupIdで指定されたリソースが、vpcIdで指定されたVPCにデプロイされていることを確認します。 | ||
AccessDenied | 403 | elastic network Interface (ENI) の操作権限を関数に付与していません。 | 関数の権限を確認します。 詳細については、「他のAlibaba Cloudサービスへのアクセス権限付与」をご参照ください。 |
ResourceExhausted | 429 | vSwitchのCIDRブロックで使用可能なIPアドレスが不足しています。 Function Computeはこれ以上ENIを作成できません。 | より大きなCIDRブロックを持つvSwitchを作成し、vpcConfigでvSwitchIdパラメーターを更新します。 説明
|
関連ドキュメント
関数がVPCにあるデータベースにアクセスする場合は、設定したvSwitchのCIDRブロックをホワイトリストに追加することを推奨します。 詳細については、「データベースへのアクセス」をご参照ください。
インターネットへの機能アクセスを制限する場合は、静的IPアドレスを使用します。 詳細については、「静的パブリックIPアドレスの設定」をご参照ください。