Function Computeでは、デフォルトでインターネット経由で関数を呼び出すことができます。 関数が仮想プライベートクラウド (VPC) リソースにアクセスしたり、指定されたVPC経由で関数を呼び出したりする場合は、関数が存在するサービスのネットワークを設定する必要があります。 ネットワーク設定はサービスに固有です。 つまり、サービスのネットワーク設定は、サービス内のすべての機能に対して有効になります。 このトピックでは、Function Computeコンソールでサービスのネットワークを設定する方法について説明します。
使用上の注意
VPCリソースをサービスにバインドする前に、サービスに関連付けられているロールに次のポリシーがアタッチされていることを確認します。
vpc:DescribeVSwitchAttributes
およびvpc:DescribeVpcAttribute
。Container Registry Enterprise Editionインスタンスのコンテナーイメージを使用して作成されるカスタムコンテナー関数の場合、VPCとvSwitchを選択する必要があります。 関数が存在するサービスのVPC内のリソースへのアクセスを設定する場合は、次のルールに従う必要があります。
Container Registry Enterprise Editionインスタンスのアクセス制御ページの [Visit IP] 列のVPCの横にデフォルト解決識別子が表示されている場合、デフォルト解決済みIPアドレスを使用するVPCとvSwitchを設定する必要があります。
デフォルト解決識別子が表示されない場合、インスタンスにバインドされているランダムなVPCとvSwitchを設定できます。
ネットワークアクセス機能
VPCは、Function Computeの関数のコールドスタートに影響を与える可能性があります。 必ずしも必須でない限り、関数呼び出し用にVPCを設定しないことをお勧めします。 Resource Access Management (RAM) ユーザーにTablestoreなどのリソースへのアクセスを許可できます。 詳細については、「Tablestoreとは何ですか?」をご参照ください。
ネットワークアドレスから関数にアクセスしたり、関数を使用してリソースにアクセスしたりすると、トラフィックが生成されます。 次のタイプのトラフィックが生成されます。
インターネットトラフィック: Alibaba Cloud公式Webサイト、Taobao Webサイト、Alibaba Cloudサービスのパブリックエンドポイントなどのインターネットアドレスにアクセスするためのトラフィック。
VPCトラフィック: ApsaraDB RDSアドレス、Apsara File Storage NAS (NAS) アドレス、Elastic Compute Service (ECS) インスタンスのVPCエンドポイントなど、VPCのアドレスにアクセスするときに生成されるトラフィック。
ビジネス要件に基づいてネットワークを構成し、次の機能のネットワークアクセス機能を取得できます。
関数アウトバウンドトラフィック: 関数がインターネットまたはVPC内のリソースにアクセスするためのトラフィック。 設定項目には、VPCへのアクセスとインターネットへのアクセスが含まれます。
表1 -関数の送信トラフィック
ネットワーク設定
説明
インターネットへのアクセスのみを許可します。
関数はインターネットと内部ネットワークにアクセスできますが、VPCのリソースにはアクセスできません。 次のパラメーターを設定します。
[VPCへのアクセス] パラメーターを [いいえ] に設定します。
[インターネットへのアクセス] パラメーターを [はい] に設定します。
VPCへのアクセスのみを許可します。
関数は、VPCを使用してパブリックおよび内部ネットワークリソースにアクセスできます。 この設定は、PrivateZone、NAT Gateway、機能へのVPCバインディングなどのシナリオに適用されます。 次のパラメーターを設定します。
[VPCへのアクセス] パラメーターを [はい] に設定し、関数がアクセスできるVPCを指定します。
Access to InternetパラメーターをNoに設定します。
関数がインターネットとVPCの両方にアクセスできるようにします。
関数は、関数ロジックを使用してパブリックネットワークリソースにアクセスし、VPCを使用して内部ネットワークリソースにアクセスできます。 次のパラメーターを設定します。
[VPCへのアクセス] パラメーターを [はい] に設定し、関数がアクセスできるVPCを指定します。
[インターネットへのアクセス] パラメーターを [はい] に設定します。
関数がインターネットまたはVPCにアクセスすることを許可しないでください。
関数は、関数ロジックを使用して内部ネットワークリソースにのみアクセスできます。 次のパラメーターを設定します。
[VPCへのアクセス] パラメーターを [いいえ] に設定します。
Access to InternetパラメーターをNoに設定します。
関数インバウンドトラフィック: インターネットまたはVPCから関数を呼び出す要求のトラフィック。 設定項目は [指定されたVPCによる関数呼び出しのみ] です。
表2 -関数インバウンドトラフィック
ネットワーク設定
説明
インターネットとVPCを介して機能に同時にアクセスできるようにします。
関数を作成した後、インターネットまたはVPC経由で関数を呼び出すことができます。 デフォルトのパラメータ设定:
[指定されたVPCによる関数呼び出しのみ] パラメーターを [いいえ] に設定します。
VPC経由でのみ機能にアクセスできるようにします。
関数は指定したVPCで呼び出すことはできますが、インターネットでは呼び出すことはできません。 次のパラメーターを設定します。
[指定されたVPCによる関数呼び出しのみ] パラメーターを [はい] に設定し、関数を呼び出すことができるVPCを指定します。
Zones
各リージョンの最新ゾーンの詳細については、でGetAccountSettings操作を呼び出すことができます。 OpenAPI Explorerを使用します。
リソースが利用できないゾーンにデプロイされている場合は、VPCの利用可能なゾーンにvSwitchを作成し、Function ComputeサービスのVPC設定でvSwitch IDを指定します。同じVPC内の のvSwitchは、プライベートネットワークを介して相互に通信できます。 したがって、Function ComputeはvSwitchを使用して、他のゾーンにデプロイされているVPCリソースにアクセスできます。 詳細については、「「vSwitch is in unsupported zone」エラーを解決するにはどうすればよいですか?」をご参照ください。
前提条件
サービスが作成されていること。 詳しくは、「サービスの作成」をご参照ください。
(オプション) ネットワークリソースが作成されます。 リソースを作成しない場合は、サービスを構成するときに [自動構成] を選択します。 それ以外の場合は、次のトピックの説明に従ってリソースを作成する必要があります。
ネットワーク設定と役割
Function Computeは、VPCと権限に固有のサービスレベルの設定を提供します。 サービスのVPCアクセスを設定すると、サービス内のすべての関数がVPCにアクセスできます。
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで目的のサービスを見つけ、[操作] 列の [設定] をクリックします。
[サービスの変更] ページの [ロールの設定] セクションで、[サービスロール] ドロップダウンリストからロールを選択して、Function ComputeにVPCへのアクセス権限を付与します。 使用状況メモセクションのポリシーがロールにアタッチされていることを確認します。
最小権限の原則に基づいて、ロールに権限を付与することを推奨します。 詳細な権限制御の詳細については、「ポリシーとサンプルポリシー」をご参照ください。
ネットワーク設定セクションで、次のパラメータを変更します。
VPCへのアクセス: 関数がVPC内のリソースにアクセスできるようにするかどうかを指定します。 有効な値:
はい: 関数はVPC内のリソースにアクセスできます。 [はい] を選択した場合は、[設定モード] パラメーターも設定する必要があります。 有効な値:
(推奨) 自動設定: Function Computeは、VPC、vSwitch、セキュリティグループなどのリソースを自動的に作成します。 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 GatewayとElastic IPアドレス (EIP) を使用して静的パブリックIPアドレスを取得するかどうかを指定します。 詳細については、「静的パブリックIPアドレスの割り当て」をご参照ください。
インターネットへのアクセス: 関数がインターネットにアクセスできるようにするかどうかを指定します。 有効な値:
はい: 関数はインターネットにアクセスできます。
No: 関数はインターネットにアクセスできません。
指定されたVPCのみによる関数呼び出し: 指定されたVPCでのみ呼び出し要求を許可するかどうかを指定します。 有効な値:
はい: 指定されたVPCでのみ関数を呼び出すことができます。 以下の点にご注意ください。
最大20台のVPCをサービスに関連付けることができます。
指定したVPC上でのみ関数を呼び出すことを許可する場合でも、トリガーを使用して関数を呼び出すことができます。
1つ以上のVPCをサービスに関連付けると、サービスのすべてのバージョンとエイリアスに対してVPC設定が有効になります。
指定されたVPCでのみ関数を呼び出すことを許可すると、インターネットおよび他のVPCからの要求は拒否されます。 インターネットおよび他のVPCからのリクエストの場合、ステータスコード (
StatusCode
) 403、エラーコード (ErrorCode
)AccessDenied
、およびエラーメッセージResource access is bound by VPC: VPC ID
が返されます。VPCは、内部HTTPアクセスポイントにのみ関連付けることができ、パブリックアクセスポイントおよび内部HTTPSアクセスポイントには関連付けることができません。
いいえ: 関数はインターネット経由でのみ呼び出すことができます。 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を指定します。 詳細は、「ゾーン」をご参照ください。 |
vpcConfigで定義されているvpcId、vSwitchIds、またはsecurityGroupIdパラメーターで指定されたリソースが見つかりません。 | vpcConfigの設定が有効かどうかを確認します。 | ||
指定されたvSwitchまたはセキュリティグループはVPCにありません。 | VPC設定が有効かどうかを確認します。 vSwitchIdパラメーターとsecurityGroupIdパラメーターで指定されたリソースが、vpcIdパラメーターで指定されたVPCにデプロイされていることを確認します。 | ||
AccessDenied | 403 | Function Computeのサービスにelastic network Interface (ENI) の操作権限を付与していません。 | ENIの権限を確認します。 詳細については、「他のAlibaba Cloudサービスへのアクセス権限付与」をご参照ください。 |
ResourceExhausted | 429 | vSwitchのCIDRブロックで使用可能なIPアドレスが不足しています。 Function Computeはこれ以上ENIを作成できません。 | より大きなCIDRブロックを持つvSwitchを作成し、vpcConfigでvSwitchIdパラメーターを更新します。 説明
|
関連ドキュメント
サービスの関数がサービスのVPCにあるデータベースにアクセスする場合は、サービス用に設定したvSwitchのCIDRブロックをホワイトリストに追加することを推奨します。 詳細については、「データベースへのアクセス」をご参照ください。
インターネットへの機能アクセスを制限する場合は、静的IPアドレスを使用します。 詳細については、「静的パブリックIPアドレスの割り当て」をご参照ください。