share facebook facebook twitter menu hatena pocket slack

2014.07.31 THU

ELBアクセスログを期限付きでS3に自動保存する設定

WRITTEN BY 三浦 剛慈

cloudpack三浦 剛慈です。

ELBアクセスログを期限付きでS3に自動保存する設定

・ELBのログ保存機能

・S3のlifecycle設定

を利用して、2つのELBに対するアクセスログを、同一バケットの別フォルダに期限付きで保存するよう設定します。

今回の例では

<ELB>

1.elb01
2.elb02
の二つのELBを利用し、

<S3>

koujibacketバケットのelbフォルダ下にelb01とelb02のアクセスログを期限付きで保存します。

参考URL:
http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/configure-s3-bucket.html
http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html
http://docs.aws.amazon.com/ja_jp/ElasticLoadBalancing/latest/DeveloperGuide/configure-s3-bucket.html


以下のbacket、フォルダがある前提で

01

かつ以下2つのELBがある前提で

02

記載します。


①バケットポリシーでELBがS3にputObject出来る設定をする
03

⬇️

Policy Generatorを利用します
04

⬇️

05
⬆️上記の各入力項目について

principal = 以下の一覧より合致するアカウントID(今回は東京)を入力

06

⬇️

Action = PutObjectのみ選択

07

ARN = 以下フォーマットで

08

今回の例に当てはめると・・・・ “arn:aws:s3:::koujibacket/elblog/elb01/AWSLogs/XXXXXXXXX/*”

⬇️

入力が終わったら”Generate Policy”を押下して、出来上がったJSONをコピペします。

09

elb01単体用に作成されたものが出来上がり・・・

{
  "Id": "Policy1405427887316",
  "Statement": [
    {
      "Sid": "Stmt1405427778992",
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::koujibacket/elblog/elb01/AWSLogs/XXXXXXXX/*",
      "Principal": {
        "AWS": [
          "582318560864"
        ]
      }
    }
  ]
}

そこにさらにelb02用の記載も追加してJSONを完成させます。

{
  "Id": "Policy1405427887316",
  "Statement": [
    {
      "Sid": "Stmt1405427778992",
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
         "arn:aws:s3:::koujibacket/elblog/elb01/AWSLogs/XXXXXXXXXXXX/*",
         "arn:aws:s3:::koujibacket/elblog/elb02/AWSLogs/XXXXXXXXXXXX/*"      
      ],
      "Principal": {
        "AWS": [
          "582318560864"
        ]
      }
    }
  ]
}

あとはそれをSAVEしてバケットポリシー設定は完了です。

10

②ELBでアクセスログ保存設定

<elb01でアクセスログ保存設定>
11

Access Logs(Edit)をクリックし

⬇️

12

“Enable Access Logs”をチェックし、intervalに5 or 60minutes設定し、S3の保存パスを入力して”Save”を押下すれば完了です。
ちなみに、”Create the location for me”をチェックすると入力したS3バケットを自動作成し、なおかつS3バケットポリシー設定も自動で行われます。今回は既にあるS3バケットに対して保存設定するケースなので少しイバラの道を歩んでいます・・・・。

<elb02でアクセスログ保存設定>
13

elb02もelb01と同様の設定を行って”Save”押下すれば完了です。

⬇️

14

③ELBログ自動保存の設定状況を確認
以下のように自動でフォルダとファイルが作成されます
15

16

17

ELBアクセスするとログが以下のフォルダ構成で保存されます
18

19

④S3バケットのlifecycle設定を行う
20

バケットを選択し、Lifecycle -> Add ruleを押下します

⬇️

21

“A Prefix”をチェックし、対象のフォルダを入力します

⬇️
22

今回は一日後に削除の設定を行いました

⬇️

23

あとはRule Nameに任意の名前を入力し”Create and Activate Rule”を押下すれば完成です。

⑤最後に保存期間が過ぎたら削除されたかを確認
24

25

こんな感じに日付フォルダ毎削除されてます(15日フォルダが削除された)。

削除タイミングは非同期なので、期限過ぎたら即消される訳ではないようで、「あれ?消えない;;」と焦りました。

以上です。

元記事は、こちら