AWSのS3デフォルト暗号化AWS-KMSを選択してCloudWatch Logsからログのエクスポートが出来ない

CloudWatch Logsからログをエクスポートする機会があり、その過程でハマりました。ちょっと自分では情けないですが、備忘録を兼ねて記載します。

ITインフラ作業をやる時に、AWSを使うケースが良くあります。今回も人に頼まれてAWS CloudWatch Logsを自動でエクスポートさせようとした際に、その手前であるCloudWatch Logsから手動でS3にエクスポートできないという事態をやらかしました。(全体作業の途中で詰まった)

(軽く)AWS/CloudWatch Logs/S3とは?

AWSとはAmazon Web Servicesの事で、AmazonがAmazonのECサイトを運用している基盤そのもので、同様のITインフラサービスとして買って利用ができます。

CloudWatch LogsとはAWSの1サービスでAWSで利用するサーバ(EC2という)などサービスログを集約し監視・保存・アクセスがまとめてできるサービスです。

S3とはAWSが提供するAmazon Simple Storage Service (S3)の事で、どこからでも好きな量のデータ保存や取り出しが簡単に出来るストレージサービスです。その中はBucket(バケツ/バケット)

やらかした事

主題の通りですが、僕がこの時点でやりたかった事は「S3にLog保存用のバケツを作る」「セキュリティに配慮して権限設定行う」「CloudWatch Logsから手動エクスポートをしてテスト」この3つだけです。

画像1

Could not create export task.
PutObject call on the given bucket failed. Please check if CloudWatch Logs has been granted permission to perform this operation.

え?エクスポートが出来ないって怒られました。

S3の設定を見直す

自分で設定をしたし、先ずはバケットポリシーを疑います。でもAWSのドキュメントからポリシーテンプレートを持ってきたので、そんな間違いはしないと思いたいけど、信用できない...[引用元ドキュメント]。でも大丈夫そうだな。

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Effect": "Allow",
           "Principal": {
               "Service": "logs.ap-northeast-1.amazonaws.com"
           },
           "Action": "s3:GetBucketAcl",
           "Resource": "arn:aws:s3:::<Your Bucket Name>"
       },
       {
           "Effect": "Allow",
           "Principal": {
               "Service": "logs.ap-northeast-1.amazonaws.com"
           },
           "Action": "s3:PutObject",
           "Resource": "arn:aws:s3:::<Your Bucket Name>/logging-test/*",
           "Condition": {
               "StringEquals": {
                   "s3:x-amz-acl": "bucket-owner-full-control"
               }
           }
       }
   ]
}

arnのパスを/logging-test/*を/*にしてもダメ。

画像2

挙句にはパブリックアクセスを、一度全部オフも試すとかね(ちゃんとパブリックアクセスは「オン」に戻しましたよ)。焦る、焦る。

原因

画像3

ええ、タイトル出オチです。詳しい方は「ドキュメント読め!」って怒ると思います。AWS ユーザーズガイド「引用元」​の記載に、

AWS-256 で暗号化された S3 バケットへのエクスポートがサポートされています。SSE-KMS で暗号化された S3 バケットへのエクスポートはサポートされていません

Oh...。ほぼ反射的にKMSのKeyを利用する頭だったので、迷わずKMSに作成済みのS3用のKeyを設定しておりました。これをAWS-256へ変更。再度CloudWatch Logsのログエクスポートを実施してみる。

画像4

成功のポップアップとともに、やっちまった感でした。

最後に

きっと同じ失敗をされた方もいらっしゃると信じて、生暖かい目で見て貰えたら幸いです。何より「ドキュメントはちゃんと読みましょう」が今回も学びでした...。みんなも気を付けてください。

(2020/6/18 追記) この内容、翌日も別件でハマりました。あちこちに潜んでいるんだと思ってます。

この記事が気に入ったらサポートをしてみませんか?