この記事について
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
以上