VPC フローログ設定時の「アクセスエラー ログの送信先にアクセスできません」の解消法
困っていること
VPC フローログを設定しましたが、以下のように「アクセスエラー ログの送先にアクセスできません」となり、ログが出力されません。どうすればいいですか?
どう対応すればいいの?
VPC フローログの IAM ロールの信頼ポリシーで、フローログサービスがプリンシパルとして指定されていない可能性があります。
以下 AWS 公式記事にもある通り、プリンシパルの誤りでフローログが出力できないケースがあるため、信頼ポリシーを修正し事象が解消するかご確認ください。
通常、このエラーの原因となるのは次のシナリオです。
...
・IAM ロールがフローログサービスとの信頼関係を持っていない。
・フローログサービスがプリンシパルとして信頼関係に指定されていない。
やってみた
以下の構成でやってみます。EC2 のネットワークインターフェースに対して VPC フローログを設定します。
EC2 の作成
以下設定で EC2 インスタンスを作成します。 セキュリティグループは自分のローカル PC から接続できるよう ssh を開けておきます。
- Amazon Linux 2023
- t3.micro
- パブリックサブネット
- パブリック IP の自動割り当てを有効化
- セキュリティグループを新規作成
作成できました。
VPC フローログ用の IAM ロールの設定
VPC フローログに指定する IAM ロールを作成していきます。
まず、IAM ロールにアタッチするポリシーを以下の JSON で作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams"
],
"Resource": "*"
}
]
}
作成できました。
続いて、IAM ロールを作成していきます。
IAM ロールの作成画面を開き、ユースケースを EC2 にします。
前述のポリシーを選択します。
任意の名前を指定し、ロールを作成します。
※後程確認しますが、以下画像の信頼ポリシーの Principal にて、"vpc-flow-logs.amazonaws.com" が設定されていないことがアクセスエラーの原因です。
IAM ロールが作成できました。
VPC フローログの設定
前項までで VPC フローログの下準備ができたため、実際のログの設定をしていきます。
先ほど作成した EC2 のネットワークインターフェースを選択し、フローログのタブから「フローログの作成」を選びます。
ログの送信先を CloudWatch とし、IAM ロールは前述のものを使用します。
フローログが作成できました、しかしエラーになっています。。
AWS 公式ブログを参考に IAM ロールの信頼ポリシーを修正します。
作成した IAM ロールの信頼関係タブより「信頼ポリシーを編集」を選びます。
以下の通り、信頼ポリシーを編集します。Principal の Service の部分でフローログを指定します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "vpc-flow-logs.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
IAM ロール修正後、しばらく時間を置くと、ステータスがアクティブとなりエラーが解消していました。
(もし解消されない場合は、既存のフローログを削除し、修正後の IAM ロールでフローログを再作成してみてください。)
CloudWatchLogs にもフローログが出力されており、無事に設定できていることが確認できました。
参考情報