デフォルトでは、Function Computeで作成した関数はインターネット経由でのみ呼び出すことができます。 関数が仮想プライベートクラウド (VPC) 内のリソースにアクセスしたり、特定のVPCから関数へのリクエストを許可したりする場合は、関数が属するサービスのネットワークとアクセス許可を手動で設定する必要があります。 ネットワーク設定はサービスレベルで有効になり、サービス内のすべての機能に適用されます。 このトピックでは、Function Computeコンソールでサービスのネットワークを設定する方法について説明します。
使用上の注意
VPCリソースをサービスにバインドする前に、サービスに関連付けられているロールに
vpc:DescribeVSwitchAttributes
およびvpc:DescribeVpcAttribute
権限が付与されていることを確認してください。Container Registry Enterprise Editionインスタンスのコンテナイメージを使用して作成されたカスタムコンテナ関数の場合、関数が属するサービスのVPC設定を構成するときに、次のルールに基づいてVPCとvSwitchを構成する必要があります。
Container Registry Enterprise Editionインスタンスのアクセス制御ページの [Visit IP] 列のVPCの横にデフォルト解決識別子が表示されている場合、デフォルト解決済みIPアドレスを使用するVPCとvSwitchを設定する必要があります。
デフォルト解決識別子が表示されない場合、インスタンスにバインドされているランダムな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がサポートされているゾーン
各リージョンでサポートされている最新のゾーンの詳細については、 OpenAPI ExplorerでGetAccountSettings操作を呼び出すことができます。
Function Computeがサポートされていないゾーンにリソースがデプロイされている場合は、VPCのサポートされているゾーンにvSwitchを作成し、Function ComputeサービスのVPC設定でvSwitch IDを指定します。 同じVPC内のvSwitchは、プライベートネットワークを介して相互に通信できます。 したがって、Function ComputeはvSwitchを使用して、他のゾーンにデプロイされているVPCリソースにアクセスできます。 詳細については、「「vSwitch is in unsupported zone」エラーを解決するにはどうすればよいですか? 」をご参照ください。
始める前に
(オプション) ネットワークリソースを作成します。
リソースを作成していない場合は、ネットワーク設定を構成するときに [自動構成] を選択します。 それ以外の場合は、次のトピックの説明に従ってリソースを作成する必要があります。
ネットワーク設定とロールの構成
VPCと権限はサービスレベルで設定されます。 Function ComputeのサービスにVPCへのアクセスを許可すると、サービス内のすべての関数がVPCへのアクセスを許可されます。
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで目的のサービスを見つけ、[操作] 列の [設定] をクリックします。
[サービスの変更] ページの [ロールの設定] セクションで、[サービスロール] パラメーターを設定します。 選択したロールにVPCリソースへのアクセス権限があることを確認する
最小権限の原則に基づいて、ロールに権限を付与することを推奨します。 詳細な権限制御の詳細については、「ポリシーとサンプルポリシー」をご参照ください。
ネットワーク設定セクションで、次のパラメーターを設定します。
VPCへのアクセス: 関数がVPC内のリソースにアクセスできるようにするかどうかを指定します。 オプション:
はい: 関数はVPC内のリソースにアクセスできます。 値を [はい] に設定した場合は、[設定モード] パラメーターも設定する必要があります。 オプション:
(推奨) 自動設定: Function Computeは、VPC、vSwitch、セキュリティグループなどのリソースを自動的に作成します。 ネットワークリソースの作成後、ビジネス要件に基づいてネットワークリソースを変更できます。
説明Function Computeによって自動的に作成されるネットワークリソースの名前の先頭にfc.auto.createがあります。
カスタム設定: VPC、vSwitch、セキュリティグループなどの既存のリソースを手動で選択する必要があります。 リソースが事前に作成されていることを確認してください。
VPC: ドロップダウンリストからVPC IDを選択します。
vSwitch: ドロップダウンリストからvSwitch IDを1つ以上選択します。
このパラメーターは、Function Computeがアクセスできるサブネットを定義します。 2つ以上のvSwitch IDを指定することを推奨します。 ゾーンが使用できなくなった場合、またはIPアドレスが不十分な場合、関数は別のサブネットで実行できます。
セキュリティグループ: ドロップダウンリストからセキュリティグループIDを選択します。
このパラメーターは、Function Computeが関連付けられているセキュリティグループを指定します。 このセキュリティグループは、指定されたVPCのFunction Computeのインバウンドルールとアウトバウンドルールを定義します。 VPCに関連付けられているセキュリティグループで、Function Computeが関連付けられているセキュリティグループからのアクセスを許可するルールを設定します。 それ以外の場合、Function ComputeはVPCにデプロイされているリソースにアクセスできません。
いいえ: 関数はVPCのリソースにアクセスできません。
静的パブリックIPアドレス: NATゲートウェイとelastic IPアドレス (EIP) を使用して静的パブリックIPアドレスを取得するかどうかを指定します。 詳細については、「静的パブリックIPアドレスの割り当て」をご参照ください。
インターネットへのアクセス: 関数にインターネットへのアクセスを許可するかどうかを指定します。 オプション:
はい: 関数はインターネットにアクセスできます。
No: 関数はインターネットにアクセスできません。
指定されたVPCのみによる関数呼び出し: 指定されたVPCからの呼び出し要求のみを許可するかどうかを指定します。 オプション:
はい: 指定されたVPCでのみ関数を呼び出すことができます。 以下の点にご注意ください。
最大20台のVPCをサービスに関連付けることができます。
指定されたVPCからの呼び出しのみを許可しても、トリガーによる関数呼び出しは影響を受けません。
1つ以上のVPCをサービスにバインドすると、サービスのすべてのバージョンとエイリアスに対してVPC設定が有効になります。
指定されたVPCからのリクエストのみを許可すると、インターネットや他のVPCからのリクエストは拒否されます。 この場合、
StatusCode
403、ErrorCode
AccessDenied
、およびエラーメッセージResource access is bound by VPC: VPC ID
が報告されます。VPCは、パブリックエンドポイントやプライベートHTTPSエンドポイントではなく、プライベートHTTPエンドポイントにのみバインドできます。
いいえ: 関数はインターネット経由でのみ呼び出すことができます。 VPC経由で関数を呼び出すことはできません。
保存をクリックします。
よくある質問
デバッグのために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のゾーンをサポートしていません。 | 有効な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アドレスの割り当て」をご参照ください。