Edited at

[JAWS-UG CLI] Amazon Kinesis Firehose re:入門 (3) レコードの登録

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

DELIVERY_STREAM_NAME: ${DELIVERY_STREAM_NAME}
BUCKET_NAME:
${BUCKET_NAME}

ETX



1. 単一レコードの登録


1.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}



1.2. データの登録


変数の確認


コマンド

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.3. データの確認


ファイルの確認

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



1.4. ファイルの削除


ファイルの削除


コマンド

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. 複数レコードの一括登録


2.1. データの生成


ファイル名の指定


コマンド

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}



2.2. データの登録


コマンド

aws firehose put-record-batch \

--delivery-stream-name ${DELIVERY_STREAM_NAME} \
--records file://${MULTI_RECORDS_FILE_NAME}


結果

{

"FailedPutCount": 0,
"RequestResponses": [
{
"RecordId": "********************************************************************************************************************************************************************************************************************************"
},
{
"RecordId": "********************************************************************************************************************************************************************************************************************************"
},
{
"RecordId": "********************************************************************************************************************************************************************************************************************************"
},
{
"RecordId": "********************************************************************************************************************************************************************************************************************************"
}
]
}


2.3. データの確認


ファイルの確認

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


2.4. ファイルの削除


ファイルの削除


コマンド

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

以上