この記事について
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. 単一レコードの登録
データの生成
ファイル名の指定
コマンド
SINGLE_RECORD_FILE_NAME="record.json"
ファイルの生成
コマンド
cat << EOF > ${SINGLE_RECORD_FILE_NAME}
{
"Data": "blob\n"
}
EOF
cat ${SINGLE_RECORD_FILE_NAME}
ファイルの検証
コマンド
jsonlint -q ${SINGLE_RECORD_FILE_NAME}
データの登録
変数の確認
コマンド
cat << ETX
DELIVERY_STREAM_NAME: ${DELIVERY_STREAM_NAME}
SINGLE_RECORD_FILE_NAME: ${SINGLE_RECORD_FILE_NAME}
ETX
結果
DELIVERY_STREAM_NAME: jawsug-cli-stream
SINGLE_RECORD_FILE_NAME: record.json
データの登録
コマンド
aws firehose put-record \
--delivery-stream-name ${DELIVERY_STREAM_NAME} \
--record file://${SINGLE_RECORD_FILE_NAME}
結果
{
"RecordId": "********************************************************************************************************************************************************************************************************************************"
}
データの確認
ファイルの確認
1分(BUFFER_INTERVALで指定した時間)待ちましょう。
コマンド
aws s3 ls s3://${BUCKET_NAME} --recursive
結果
2016-11-05 07:21:54 4 2016/11/05/07/jawsug-cli-stream-1-2016-11-05-07-21-53-60e3ea4c-5e75-4fbd-8ce2-11406f55a930
ファイルのダウンロード
コマンド
mkdir data01
cd data01
コマンド
aws s3 sync s3://${BUCKET_NAME} .
結果
download: s3://jawsug-cli-firehose-************/2016/11/23/11/jawsug-cli-stream-1-2016-11-23-11-18-58-947ea60d-041c-4750-ab31-cff260b7cf58 to 2016/11/23/11/jawsug-cli-stream-1-2016-11-23-11-18-58-947ea60d-041c-4750-ab31-cff260b7cf58
ファイルの確認
コマンド
cat (ダウンロードしたファイルのパス)
結果
blob
ファイルの削除
コマンド
aws s3 rm --recursive s3://${BUCKET_NAME}/
結果
delete: s3://jawsug-cli-firehose-************/2016/11/05/07/jawsug-cli-stream-1-2016-11-05-07-21-53-60e3ea4c-5e75-4fbd-8ce2-11406f55a930
コマンド
cd ..
rm -r data01
2. 複数レコードの一括登録
データの生成
ファイル名の指定
コマンド
MULTI_RECORDS_FILE_NAME="records.json"
ファイルの生成
コマンド
cat << EOF > ${MULTI_RECORDS_FILE_NAME}
[
{
"Data": "blob1\n"
},
{
"Data": "blob2\n"
},
{
"Data": "blob3\n"
},
{
"Data": "blob4\n"
}
]
EOF
cat ${MULTI_RECORDS_FILE_NAME}
ファイルの検証
コマンド
jsonlint -q ${MULTI_RECORDS_FILE_NAME}
データの登録
コマンド
aws firehose put-record-batch \
--delivery-stream-name ${DELIVERY_STREAM_NAME} \
--records file://${MULTI_RECORDS_FILE_NAME}
結果
{
"FailedPutCount": 0,
"RequestResponses": [
{
"RecordId": "********************************************************************************************************************************************************************************************************************************"
},
{
"RecordId": "********************************************************************************************************************************************************************************************************************************"
},
{
"RecordId": "********************************************************************************************************************************************************************************************************************************"
},
{
"RecordId": "********************************************************************************************************************************************************************************************************************************"
}
]
}
データの確認
ファイルの確認
1分(BUFFER_INTERVALで指定した時間)待ちましょう。
コマンド
aws s3 ls s3://${BUCKET_NAME} --recursive
結果
2016-11-23 11:33:36 24 2016/11/23/11/jawsug-cli-stream-1-2016-11-23-11-33-35-e3f2b6dd-7923-4f54-aeff-301ddc998006
ファイルのダウンロード
コマンド
mkdir data02
cd data02
コマンド
aws s3 sync s3://${BUCKET_NAME} .
結果
download: s3://jawsug-cli-firehose-************/2016/11/23/11/jawsug-cli-stream-1-2016-11-23-11-18-58-947ea60d-041c-4750-ab31-cff260b7cf58 to 2016/11/23/11/jawsug-cli-stream-1-2016-11-23-11-18-58-947ea60d-041c-4750-ab31-cff260b7cf58
ファイルの確認
コマンド
cat (ダウンロードしたファイルのパス)
結果
blob1
blob2
blob3
blob4
ファイルの削除
コマンド
aws s3 rm --recursive s3://${BUCKET_NAME}/
結果
delete: s3://jawsug-cli-firehose-************/2016/11/23/11/jawsug-cli-stream-1-2016-11-23-11-33-35-e3f2b6dd-7923-4f54-aeff-301ddc998006
コマンド
cd ..
rm -r data02