⛲
AWS LambdaをVPC内で実行する -AWSLambdaVPCAccessExecutionRoleについて
AWS Lambda関数がプライベートネットワーク内のリソース(例えば、Amazon RDSなど)にアクセスする必要がある場合、関数を特定のVPCに配置する必要がある。
AWSLambdaVPCAccessExecutionRoleポリシーを使ってLambda関数がVPC内のリソースにアクセスできるようにする設定について紹介する。
AWSLambdaVPCAccessExecutionRoleとは?
AWSLambdaVPCAccessExecutionRoleは、Lambda関数がVPC(Virtual Private Cloud)内のリソースにアクセスするために必要な権限を提供するIAMポリシー。
このポリシーを使うことで、Lambda関数はVPC内でネットワークインターフェース(ENI)を作成・取得・削除できるようになる。
これにより、Lambda関数はVPC内のデータベースやサーバーと安全に通信が可能。
ポリシー内容
以下は、AWSLambdaVPCAccessExecutionRoleのポリシー内容。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSLambdaVPCAccessExecutionPermissions",
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"ec2:CreateNetworkInterface",
"ec2:DescribeNetworkInterfaces",
"ec2:DescribeSubnets",
"ec2:DeleteNetworkInterface",
"ec2:AssignPrivateIpAddresses",
"ec2:UnassignPrivateIpAddresses"
],
"Resource": "*"
}
]
}
このポリシーで許可されている主な権限は以下の通り。
- ログ出力に関する権限
- CloudWatch Logsにロググループを作成し、ログストリームを作成し、ログイベントを書き込むための権限。
- Lambda関数の実行ログを記録し、モニタリングやデバッグを行うために必要。
- ネットワークインターフェース操作に関する権限
- VPC内でネットワークインターフェースを作成、参照、削除する権限。
- Lambda関数がVPC内のリソースにアクセスするために、必要なネットワーク接続を動的に管理する。
まとめ
AWS LambdaをVPC内で実行するには、AWSLambdaVPCAccessExecutionRoleが不可欠。
このポリシーを適用し、VPCの設定を適切に行うことでLambda関数からAmazon RDSなどのプライベートリソースに安全にアクセスできるようになる。
サーバーレスアーキテクチャの利便性を保ちつつ、セキュリティやパフォーマンスも確保できるため、VPC内でLambdaを活用する際には必ず押さえておきたいポイント。
参考資料
Discussion