Edited at

[JAWS-UG CLI] Amazon Kinesis Firehose re:入門 (4) Kinesis Agentによるレコードの登録

More than 1 year has passed since last update.


この記事について

JAWS-UG CLI専門支部 #90 Kinesis Firehose 復習編で実施するハンズオン用の手順書です。


前提条件


必要な権限

作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。


  • 以下のサービスに対するフルコントロール権限


    • Kinesis Firehose

    • IAM

    • EC2

    • S3

    • CloudWatch Logs

    • STS

    • (Lambda)


      • データの変換を行う場合



    • (KMS)


      • データの暗号化を行う場合






0. 準備


0.1. リージョンを指定

オレゴンリージョンで実施します。(東京マダー?)


コマンド

export AWS_DEFAULT_REGION="us-west-2"



0.2. 資格情報を確認


コマンド

aws configure list


インスタンスプロファイルを設定したEC2インスタンスでアクセスキーを設定せずに実行した場合、以下のようになります。


結果

      Name                    Value             Type    Location

---- ----- ---- --------
profile <not set> None None
access_key ****************QSAA iam-role
secret_key ****************c1xY iam-role
region us-west-2 env AWS_DEFAULT_REGION


0.3. バージョン確認


コマンド

aws --version



結果

aws-cli/1.11.129 Python/2.7.12 Linux/4.9.38-16.33.amzn1.x86_64 botocore/1.5.92



0.4. バージョンアップ(必要に応じて)


コマンド

sudo pip install -U awscli



0.5. 変数の確認


コマンド

cat << ETX

KEY_MATERIAL_FILE_NAME: ${KEY_MATERIAL_FILE_NAME}
PUBLIC_IP_ADDRESS:
${PUBLIC_IP_ADDRESS}
DELIVERY_STREAM_NAME:
${DELIVERY_STREAM_NAME}
BUCKET_NAME:
${BUCKET_NAME}

ETX



1. ログイン


1.1. SSHで接続

初回接続時、yesを選択


コマンド

ssh -l ec2-user -i ~/.ssh/${KEY_MATERIAL_FILE_NAME} ${PUBLIC_IP_ADDRESS}



2. Kinesis Agentの設定


2.1. 設定ファイルの生成


設定ファイル名の指定


コマンド

AGENT_SETTING_FILE_NAME="agent.json"



デリバリーストリーム名の指定


コマンド

DELIVERY_STREAM_NAME="jawsug-cli-stream"



変数の確認


コマンド

cat << ETX

AGENT_SETTING_FILE_NAME: ${AGENT_SETTING_FILE_NAME}
DELIVERY_STREAM_NAME:
${DELIVERY_STREAM_NAME}

ETX



結果


AGENT_SETTING_FILE_NAME: agent.json
DELIVERY_STREAM_NAME: jawsug-cli-stream



設定ファイルの生成


コマンド

cat << EOF > ${AGENT_SETTING_FILE_NAME}

{
"cloudwatch.emitMetrics": true,
"cloudwatch.endpoint": "https://monitoring.us-west-2.amazonaws.com",
"firehose.endpoint": "https://firehose.us-west-2.amazonaws.com",
"flows": [
{
"filePattern": "/var/log/httpd/access_log",
"deliveryStream": "
${DELIVERY_STREAM_NAME}",
"initialPosition": "START_OF_FILE"
}
]
}
EOF

cat ${AGENT_SETTING_FILE_NAME}



JSONファイルの検証


コマンド

jsonlint -q ${AGENT_SETTING_FILE_NAME}



2.2. 設定ファイルの配置


既存ファイルの退避


コマンド

sudo cp /etc/aws-kinesis/agent.json /etc/aws-kinesis/agent.json.org



生成したファイルの配置


コマンド

sudo cp agent.json /etc/aws-kinesis/agent.json



権限の付与

Kinesis-Agentの実行ユーザである「aws-kinesis-agent-user」に対して、

データソースの読み取りおよび実行権限が必要です。

Writing to Amazon Kinesis Firehose Using Amazon Kinesis Agent


コマンド

sudo chmod 755 /var/log/httpd

sudo chmod 644 /var/log/httpd/*


サービスの再起動


コマンド

sudo service aws-kinesis-agent restart



ログオフ


コマンド

exit



3. 動作確認


3.1. Web Serverにアクセス

てきとうにアクセスしてみてください。

そして、1分ほど待ちます。。。


3.2. S3バケット上のファイルを確認


S3バケット上のファイルを確認


コマンド

aws s3 ls --recursive ${BUCKET_NAME}



S3 Bucket上のファイルをダウンロード


コマンド

mkdir data03

cd data03


コマンド

aws s3 sync s3://${BUCKET_NAME} .



結果

download: s3://jawsug-cli-firehose-************/2016/12/19/07/jawsug-cli-stream-1-2016-12-19-07-54-56-47a385b8-4075-44ec-bf15-4f6143b03ddb to 2016/12/19/07/jawsug-cli-stream-1-2016-12-19-07-54-56-47a385b8-4075-44ec-bf15-4f6143b03ddb



S3 Bucket上のファイルを閲覧


コマンド

cat (任意のファイル名)



結果

222.150.28.224 - - [03/Dec/2016:08:05:20 +0000] "GET / HTTP/1.1" 403 3839 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"

222.150.28.224 - - [03/Dec/2016:08:05:21 +0000] "GET / HTTP/1.1" 403 3839 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"


3.3. ファイルの削除


ファイルの削除


コマンド

aws s3 rm --recursive s3://${BUCKET_NAME}/



結果

(省略)



コマンド

cd ..

rm -r data03

以上