この記事について
JAWS-UG CLI専門支部 #73 Kinesis Firehose入門で実施するハンズオン用の手順書です。
前提条件
必要な権限
作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。
- Kinesis Firehoseのフルコントロール権限
- S3のフルコントロール権限
- STSの関するフルコントロール権限
- IAMの関するフルコントロール権限
- CloudWatchの関するフルコントロール権限
- CloudWatch Logsの関するフルコントロール権限
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.24 Python/2.7.12 Linux/4.4.30-32.54.amzn1.x86_64 botocore/1.4.81
0.4. バージョンアップ(必要に応じて)
コマンド
sudo pip install -U awscli
1. ログイン
SSHで接続
初回接続時、yesを選択
コマンド
ssh -l ec2-user -i ~/.ssh/${KEY_MATERIAL_FILE} ${PUBLIC_IP_ADDRESS}
json lintのインストール
npmのインストール
コマンド
sudo yum install npm --enablerepo=epel -y
json lintのインストール
コマンド
sudo npm install -g jsonlint
2. インストール
Kinesis Agentをインストールします。
インストール
コマンド
sudo yum install -y aws-kinesis-agent
サービスの起動
コマンド
sudo service aws-kinesis-agent start
結果
aws-kinesis-agent startup [ OK ]
3. Apache Web Serverのインストール
Webサーバを構築する(apacheを想定 → ログの形式をサポートしているもの)
インストール
コマンド
sudo yum install -y httpd
サービスの起動
コマンド
sudo service httpd start
結果
Starting httpd: httpd: apr_sockaddr_info_get() failed for ip-10-0-0-190
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[ OK ]
動作確認
ブラウザから、Webサーバにアクセスできることを確認します。
コマンド
PUBLIC_IP_ADDRESS=$(curl http://169.254.169.254/latest/meta-data/public-ipv4) \
&& echo ${PUBLIC_IP_ADDRESS}
結果
**.**.**.**
4. 設定
設定ファイルの生成
設定ファイル名の指定
コマンド
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}
設定ファイルの配置
既存ファイルの退避
コマンド
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 755 /var/log/httpd
サービスの再起動
コマンド
sudo service aws-kinesis-agent restart
ログオフ
コマンド
exit
5. 動作確認
Web Serverにアクセス
てきとうにアクセスしてみてください。
そして、1分ほど待ちます。。。
S3 Bucket上のファイルを確認
コマンド
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"
ファイルの削除
コマンド
aws s3 rm --recursive s3://${BUCKET_NAME}/
結果
(省略)
コマンド
cd ..
rm -r data03
以上