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