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を活用する際には必ず押さえておきたいポイント。

参考資料

https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html

Discussion